@apiteam/twa-bridge 7.1.12 → 7.1.14

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": "7.1.12",
3
+ "version": "7.1.14",
4
4
  "description": "Telegram bridge",
5
5
  "license": "MIT",
6
6
  "types": "index.ts",
package/solid/index.d.ts CHANGED
@@ -250,7 +250,7 @@ type ThemeParams = {
250
250
  subtitle_text_color: string;
251
251
  destructive_text_color: string;
252
252
  };
253
- declare const getThemeParams: (theme_params: ThemeParams) => Record<string, string>;
253
+ declare const getThemeParams: (theme_params?: ThemeParams) => ThemeParams;
254
254
 
255
255
  type Sender = (eventType: string, eventData?: any) => void;
256
256
  declare const sender: Sender;
@@ -283,6 +283,36 @@ declare const MethodSetupSettingsButton = "web_app_setup_settings_button";
283
283
  declare const MethodSwitchInlineQuery = "web_app_switch_inline_query";
284
284
  declare const MethodTriggerHapticFeedback = "web_app_trigger_haptic_feedback";
285
285
  declare const MethodSetupSwipeBehavior = "web_app_setup_swipe_behavior";
286
+ declare enum Method {
287
+ InvokeCustomMethod = "web_app_invoke_custom_method",
288
+ OpenScanQrPopup = "web_app_open_scan_qr_popup",
289
+ ReadTextFromClipboard = "web_app_read_text_from_clipboard",
290
+ RequestPhone = "web_app_request_phone",
291
+ Close = "web_app_close",
292
+ CloseScanQrPopup = "web_app_close_scan_qr_popup",
293
+ DataSend = "web_app_data_send",
294
+ Expand = "web_app_expand",
295
+ IframeReady = "iframe_ready",
296
+ IframeWillReload = "iframe_will_reload",
297
+ OpenInvoice = "web_app_open_invoice",
298
+ OpenLink = "web_app_open_link",
299
+ OpenPopup = "web_app_open_popup",
300
+ OpenTgLink = "web_app_open_tg_link",
301
+ Ready = "web_app_ready",
302
+ RequestTheme = "web_app_request_theme",
303
+ RequestViewport = "web_app_request_viewport",
304
+ RequestWriteAccess = "web_app_request_write_access",
305
+ SetBackgroundColor = "web_app_set_background_color",
306
+ SetHeaderColor = "web_app_set_header_color",
307
+ SetBottomBarColor = "web_app_set_bottom_bar_color",
308
+ SetupBackButton = "web_app_setup_back_button",
309
+ SetupClosingBehavior = "web_app_setup_closing_behavior",
310
+ SetupMainButton = "web_app_setup_main_button",
311
+ SetupSettingsButton = "web_app_setup_settings_button",
312
+ SwitchInlineQuery = "web_app_switch_inline_query",
313
+ TriggerHapticFeedback = "web_app_trigger_haptic_feedback",
314
+ SetupSwipeBehavior = "web_app_setup_swipe_behavior"
315
+ }
286
316
  type PopupButton = {
287
317
  id: string;
288
318
  type: 'default' | 'destructive' | 'ok' | 'close' | 'cancel';
@@ -470,6 +500,8 @@ declare namespace listener {
470
500
  export { type listener_EventsData as EventsData, listener_off as off, listener_on as on, listener_once as once };
471
501
  }
472
502
 
503
+ declare const getAppData: () => string | null;
504
+
473
505
  type Value = {
474
506
  viewport?: EventsData[typeof EventViewportChanged] & {
475
507
  safe_area_bottom: number;
@@ -498,4 +530,4 @@ declare const EventThemeChanged = "theme_changed";
498
530
  declare const EventViewportChanged = "viewport_changed";
499
531
  declare const EventWriteAccessRequested = "write_access_requested";
500
532
 
501
- export { ContextTwa, EventBackButtonPressed, EventClipboardTextReceived, EventCustomMethodInvoked, EventInvoiceClosed, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventQrTextReceived, EventReloadIframe, EventScanQrPopupClosed, EventSetCustomStyle, EventSettingsButtonPressed, EventThemeChanged, EventViewportChanged, EventWriteAccessRequested, type EventsData, type GetInitData, MethodClose, MethodCloseScanQrPopup, MethodDataSend, MethodExpand, MethodIframeReady, MethodIframeWillReload, MethodInvokeCustomMethod, MethodOpenInvoice, MethodOpenLink, MethodOpenPopup, MethodOpenScanQrPopup, MethodOpenTgLink, MethodReadTextFromClipboard, MethodReady, MethodRequestPhone, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSetBackgroundColor, MethodSetBottomBarColor, MethodSetHeaderColor, MethodSetupBackButton, MethodSetupClosingBehavior, MethodSetupMainButton, MethodSetupSettingsButton, MethodSetupSwipeBehavior, MethodSwitchInlineQuery, MethodTriggerHapticFeedback, NOT_SUPPORTED, type PopupButton, ProviderTWA, type SenderData, TG_DESKTOP, TG_PHONE, TG_WEB, type ThemeParams, close as bridgeClose, closeScanQrPopup as bridgeCloseScanQrPopup, dataSend as bridgeDataSend, 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, requestPhone as bridgeRequestPhone, requestTheme as bridgeRequestTheme, requestViewport as bridgeRequestViewport, requestWriteAccess as bridgeRequestWriteAccess, sender as bridgeSend, sessionStorageGet as bridgeSessionStorageGet, sessionStorageSet as bridgeSessionStorageSet, setBackgroundColor as bridgeSetBackgroundColor, setBottomBarColor as bridgeSetBottomBarColor, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupMainButton as bridgeSetupMainButton, setupSettingsButton as bridgeSetupSettingsButton, setupSwipeBehavior as bridgeSetupSwipeBehavior, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, createIsViewportChanged, debug, getPlatform, listener, sender, supportClose, supportCloseScanQrPopup, supportDataSend, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestPhone, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSessionStorageGet, supportSessionStorageSet, supportSetBackgroundColor, supportSetBottomBarColor, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupMainButton, supportSetupSettingsButton, supportSetupSwipeBehavior, supportSwitchInlineQuery, supportTriggerHapticFeedback };
533
+ export { ContextTwa, EventBackButtonPressed, EventClipboardTextReceived, EventCustomMethodInvoked, EventInvoiceClosed, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventQrTextReceived, EventReloadIframe, EventScanQrPopupClosed, EventSetCustomStyle, EventSettingsButtonPressed, EventThemeChanged, EventViewportChanged, EventWriteAccessRequested, type EventsData, type GetInitData, Method, MethodClose, MethodCloseScanQrPopup, MethodDataSend, MethodExpand, MethodIframeReady, MethodIframeWillReload, MethodInvokeCustomMethod, MethodOpenInvoice, MethodOpenLink, MethodOpenPopup, MethodOpenScanQrPopup, MethodOpenTgLink, MethodReadTextFromClipboard, MethodReady, MethodRequestPhone, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSetBackgroundColor, MethodSetBottomBarColor, MethodSetHeaderColor, MethodSetupBackButton, MethodSetupClosingBehavior, MethodSetupMainButton, MethodSetupSettingsButton, MethodSetupSwipeBehavior, MethodSwitchInlineQuery, MethodTriggerHapticFeedback, NOT_SUPPORTED, type PopupButton, ProviderTWA, type SenderData, TG_DESKTOP, TG_PHONE, TG_WEB, type ThemeParams, close as bridgeClose, closeScanQrPopup as bridgeCloseScanQrPopup, dataSend as bridgeDataSend, 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, requestPhone as bridgeRequestPhone, requestTheme as bridgeRequestTheme, requestViewport as bridgeRequestViewport, requestWriteAccess as bridgeRequestWriteAccess, sender as bridgeSend, sessionStorageGet as bridgeSessionStorageGet, sessionStorageSet as bridgeSessionStorageSet, setBackgroundColor as bridgeSetBackgroundColor, setBottomBarColor as bridgeSetBottomBarColor, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupMainButton as bridgeSetupMainButton, setupSettingsButton as bridgeSetupSettingsButton, setupSwipeBehavior as bridgeSetupSwipeBehavior, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, createIsViewportChanged, debug, getAppData, getPlatform, listener, sender, supportClose, supportCloseScanQrPopup, supportDataSend, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestPhone, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSessionStorageGet, supportSessionStorageSet, supportSetBackgroundColor, supportSetBottomBarColor, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupMainButton, supportSetupSettingsButton, supportSetupSwipeBehavior, supportSwitchInlineQuery, supportTriggerHapticFeedback };
package/solid/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("solid-js"),t=require("solid-js/store");const s="web",o="phone",r="desktop",p=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?o:["tdesktop","macos"].includes(t)?r:s},a="not_supported",n=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(p())},i=()=>Math.random().toString(36).substring(3,9),u=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},d=e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var o=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r of Object.keys(e)){var p=u(e[r]);"string"==typeof p&&(o[r]=p)}return o},_=e=>c()?(le(ve,e),{status:!0}):(xe(ve,1),{status:a}),c=()=>n(0,[s,r,o]),x=e=>g()?(le(Se,e),{status:!0}):(xe(Se,1),{status:a}),g=()=>n(6.4,[o]),l=e=>h()?(le(fe,e),{status:!0}):(xe(fe,1),{status:a}),h=()=>n(0,[s,r,o]),b=e=>w()?(le(ye,e),{status:!0}):(xe(ye,1),{status:a}),w=()=>n(0,[o]),m=e=>v()?(le(Pe,e),{status:!0}):(xe(Pe,1),{status:a}),v=()=>n(0,[s]),S=()=>f()?(le(Pe),{status:!0}):(xe(Pe,1),{status:a}),f=()=>n(0,[s]),y=async e=>P()?(void 0===e.req_id&&(e.req_id=i()),le(he,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),et($e,o))};Ze($e,o)}))):(xe(he,1),{status:a}),P=()=>n(6.9,[s,r,o]),M=e=>C()?(le(Ce,e),{status:!0}):(xe(Ce,1),{status:a}),C=()=>n(6.1,[s,r,o]),q=e=>k()?(le(qe,e),{status:!0}):(xe(qe,1),{status:a}),k=()=>n(6.4,[s,r,o]),R=async e=>B()?(e.title.length>64&&xe(ke,3),e.message.length<1&&xe(ke,4),e.message.length>256&&xe(ke,5),e.buttons.length<1&&xe(ke,6),e.buttons.length>3&&xe(ke,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&xe(ke,8),le(ke,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),et(Fe,o)};Ze(Fe,o)}))):(xe(ke,1),{status:a}),B=()=>n(6.2,[s,r,o]),O=async e=>T()?(le(be,e),new Promise(((t,s)=>{tt(Ue,(s=>{e.is_close&&x(),t({status:!0,data:s})})),tt(ze,(()=>{t({status:"closed"})}))}))):(xe(be,1),{status:a}),T=()=>n(6.4,[o]),E=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),I()?(le(Re,e),{status:!0}):(xe(Re,1),{status:a})),I=()=>n(7,[s,r,o]),W=async e=>L()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=i()),le(we,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),et(Je,o))};Ze(Je,o)}))):(xe(we,1),{status:a}),L=()=>n(6.4,[s,r,o]),N=e=>D()?(le(Be,e),{status:!0}):(xe(Be,1),{status:a}),D=()=>n(6.9,[s,r,o]),Q=async()=>A()?(le(me),new Promise(((e,t)=>{tt(je,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(xe(me,1),{status:a}),A=()=>n(6.9,[s,r,o]),G=e=>H()?(le(Oe,e),{status:!0}):(xe(Oe,1),{status:a}),H=()=>n(0,[s,r,o]),V=e=>J()?(le(Te,e),{status:!0}):(xe(Te,1),{status:a}),J=()=>n(0,[s,r,o]),$=()=>j()?(le(Ee),{status:!0}):(xe(Ee,1),{status:a}),j=()=>n(6.9,[s,r,o]),F=e=>U()?(le(Ie,e),{status:!0}):(xe(Ie,1),{status:a}),U=()=>n(6.1,[s,r,o]),z=e=>K()?(le(We,e),{status:!0}):(xe(We,1),{status:a}),K=()=>n(6.1,[s,r,o]),X=e=>Y()?(le(Le,{color:e?.color||e?.color_key}),{status:!0}):(xe(Le,1),{status:a}),Y=()=>n(710,[s,r,o]),Z=e=>ee()?(le(Ne,e),{status:!0}):(xe(Ne,1),{status:a}),ee=()=>n(6.1,[s,r,o]),te=e=>se()?(le(De,e),{status:!0}):(xe(De,1),{status:a}),se=()=>n(0,[s,r,o]),oe=e=>re()?(le(Qe,e),{status:!0}):(xe(Qe,1),{status:a}),re=()=>n(0,[s,r,o]),pe=e=>ae()?(le(Ae,e),{status:!0}):(xe(Ae,1),{status:a}),ae=()=>n(6.1,[s,r,o]),ne=e=>ie()?(e.query.length>256&&xe(Ge,9),le(Ge,e),{status:!0}):(xe(Ge,1),{status:a}),ie=()=>n(6.7,[s,r,o]),ue=e=>de()?(le(He,e),{status:!0}):(xe(He,1),{status:a}),de=()=>n(6.1,[o]),_e=e=>ce()?(le(Ve,e),{status:!0}):(xe(Ve,1),{status:a}),ce=()=>n(7.7,[s,r,o]);var xe=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const ge=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void xe("getInitData",2);const s=new URLSearchParams(t);let o={};return s.forEach(((e,t)=>{if(o[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{o[t]=JSON.parse(e)}catch{}})),o};var le=(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){xe("postMessage Iframe",10)}};const he="web_app_invoke_custom_method",be="web_app_open_scan_qr_popup",we="web_app_read_text_from_clipboard",me="web_app_request_phone",ve="web_app_close",Se="web_app_close_scan_qr_popup",fe="web_app_data_send",ye="web_app_expand",Pe="iframe_ready",Me="iframe_will_reload",Ce="web_app_open_invoice",qe="web_app_open_link",ke="web_app_open_popup",Re="web_app_open_tg_link",Be="web_app_ready",Oe="web_app_request_theme",Te="web_app_request_viewport",Ee="web_app_request_write_access",Ie="web_app_set_background_color",We="web_app_set_header_color",Le="web_app_set_bottom_bar_color",Ne="web_app_setup_back_button",De="web_app_setup_closing_behavior",Qe="web_app_setup_main_button",Ae="web_app_setup_settings_button",Ge="web_app_switch_inline_query",He="web_app_trigger_haptic_feedback",Ve="web_app_setup_swipe_behavior";const Je="clipboard_text_received",$e="custom_method_invoked",je="phone_requested",Fe="popup_closed",Ue="qr_text_received",ze="scan_qr_popup_closed",Ke="theme_changed",Xe="viewport_changed",Ye=((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===Ke&&(t.theme_params=d(t.theme_params)),Ye.emit(e,t),Ye.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Ze=(e,t)=>{Ye.on(e,t)},et=(e,t)=>{Ye.off(e,t)},tt=(e,t)=>{Ye.once(e,t)};var st=Object.freeze({__proto__:null,off:et,on:Ze,once:tt});const ot=e.createContext({viewport:void 0,theme:void 0,init:void 0});exports.ContextTwa=ot,exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=Je,exports.EventCustomMethodInvoked=$e,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=je,exports.EventPopupClosed=Fe,exports.EventQrTextReceived=Ue,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=ze,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=Ke,exports.EventViewportChanged=Xe,exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=ve,exports.MethodCloseScanQrPopup=Se,exports.MethodDataSend=fe,exports.MethodExpand=ye,exports.MethodIframeReady=Pe,exports.MethodIframeWillReload=Me,exports.MethodInvokeCustomMethod=he,exports.MethodOpenInvoice=Ce,exports.MethodOpenLink=qe,exports.MethodOpenPopup=ke,exports.MethodOpenScanQrPopup=be,exports.MethodOpenTgLink=Re,exports.MethodReadTextFromClipboard=we,exports.MethodReady=Be,exports.MethodRequestPhone=me,exports.MethodRequestTheme=Oe,exports.MethodRequestViewport=Te,exports.MethodRequestWriteAccess=Ee,exports.MethodSetBackgroundColor=Ie,exports.MethodSetBottomBarColor=Le,exports.MethodSetHeaderColor=We,exports.MethodSetupBackButton=Ne,exports.MethodSetupClosingBehavior=De,exports.MethodSetupMainButton=Qe,exports.MethodSetupSettingsButton=Ae,exports.MethodSetupSwipeBehavior=Ve,exports.MethodSwitchInlineQuery=Ge,exports.MethodTriggerHapticFeedback=He,exports.NOT_SUPPORTED=a,exports.ProviderTWA=s=>{const[o,r]=t.createStore({viewport:void 0,theme:void 0,init:void 0});return e.createEffect((()=>{const t=()=>{r("init",ge())};t();const s=e=>{t(),r("viewport",{...e,safe_area_bottom:e.is_expanded&&e.is_state_stable?window.outerHeight-e.height:0})};Ze(Xe,s),V();const o=e=>{t(),r("theme",e)};return Ze(Ke,o),V(),e.onCleanup((()=>{et(Xe,s),et(Ke,o)})),()=>{et(Xe,s),et(Ke,o)}})),ot.Provider({value:o,children:s.children})},exports.TG_DESKTOP=r,exports.TG_PHONE=o,exports.TG_WEB=s,exports.bridgeClose=_,exports.bridgeCloseScanQrPopup=x,exports.bridgeDataSend=l,exports.bridgeExpand=b,exports.bridgeGetInitData=ge,exports.bridgeGetThemeParams=d,exports.bridgeIframeReady=m,exports.bridgeIframeWillReload=S,exports.bridgeInvokeCustomMethod=y,exports.bridgeOpenInvoice=M,exports.bridgeOpenLink=q,exports.bridgeOpenPopup=R,exports.bridgeOpenScanQrPopup=O,exports.bridgeOpenTgLink=E,exports.bridgeReadTextFromClipboard=W,exports.bridgeReady=N,exports.bridgeRequestPhone=Q,exports.bridgeRequestTheme=G,exports.bridgeRequestViewport=V,exports.bridgeRequestWriteAccess=$,exports.bridgeSend=le,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=F,exports.bridgeSetBottomBarColor=X,exports.bridgeSetHeaderColor=z,exports.bridgeSetupBackButton=Z,exports.bridgeSetupClosingBehavior=te,exports.bridgeSetupMainButton=oe,exports.bridgeSetupSettingsButton=pe,exports.bridgeSetupSwipeBehavior=_e,exports.bridgeSwitchInlineQuery=ne,exports.bridgeTriggerHapticFeedback=ue,exports.createIsViewportChanged=()=>{const[t,s]=e.createSignal({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>s(e);return e.onMount((()=>{Ze(Xe,o),le(Te)})),e.onCleanup((()=>{et(Xe,o)})),t},exports.debug=xe,exports.getPlatform=p,exports.listener=st,exports.sender=le,exports.supportClose=c,exports.supportCloseScanQrPopup=g,exports.supportDataSend=h,exports.supportExpand=w,exports.supportIframeReady=v,exports.supportIframeWillReload=f,exports.supportInvokeCustomMethod=P,exports.supportOpenInvoice=C,exports.supportOpenLink=k,exports.supportOpenPopup=B,exports.supportOpenScanQrPopup=T,exports.supportOpenTgLink=I,exports.supportReadTextFromClipboard=L,exports.supportReady=D,exports.supportRequestPhone=A,exports.supportRequestTheme=H,exports.supportRequestViewport=J,exports.supportRequestWriteAccess=j,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=U,exports.supportSetBottomBarColor=Y,exports.supportSetHeaderColor=K,exports.supportSetupBackButton=ee,exports.supportSetupClosingBehavior=se,exports.supportSetupMainButton=re,exports.supportSetupSettingsButton=ae,exports.supportSetupSwipeBehavior=ce,exports.supportSwitchInlineQuery=ie,exports.supportTriggerHapticFeedback=de;
1
+ "use strict";var e=require("solid-js"),t=require("solid-js/store");const o="web",s="phone",r="desktop",p=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?s:["tdesktop","macos"].includes(t)?r:o},a="not_supported",n=(e,t)=>{const o=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(o?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(p())},i=()=>Math.random().toString(36).substring(3,9),u=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 o=parseInt(t[1]),s=parseInt(t[2]),r=parseInt(t[3]);return"#"+((o<16?"0":"")+o.toString(16))+((s<16?"0":"")+s.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},d=e=>{const t=window.location.hash.slice(1),o=new URLSearchParams(t),s=JSON.parse(o.get("tgWebAppThemeParams")??""),r=e||s;for(var p of Object.keys(r)){var a=u(r[p]);"string"==typeof a&&(r[p]=a)}return"#1c1c1d"==r?.bg_color&&r?.bg_color==r?.secondary_bg_color&&(r.secondary_bg_color="#2c2c2e"),r.bottom_bar_bg_color,r},c=e=>_()?(ge(me,e),{status:!0}):(le(me,1),{status:a}),_=()=>n(0,[o,r,s]),l=e=>x()?(ge(ve,e),{status:!0}):(le(ve,1),{status:a}),x=()=>n(6.4,[s]),g=e=>h()?(ge(fe,e),{status:!0}):(le(fe,1),{status:a}),h=()=>n(0,[o,r,s]),b=e=>w()?(ge(Ce,e),{status:!0}):(le(Ce,1),{status:a}),w=()=>n(0,[s]),S=e=>m()?(ge(Re,e),{status:!0}):(le(Re,1),{status:a}),m=()=>n(0,[o]),v=()=>f()?(ge(Re),{status:!0}):(le(Re,1),{status:a}),f=()=>n(0,[o]),C=async e=>R()?(void 0===e.req_id&&(e.req_id=i()),ge(he,e),new Promise(((t,o)=>{const s=o=>{o.req_id===e.req_id&&(t({status:!0,data:o}),tt(Ue,s))};et(Ue,s)}))):(le(he,1),{status:a}),R=()=>n(6.9,[o,r,s]),P=e=>B()?(ge(Be,e),{status:!0}):(le(Be,1),{status:a}),B=()=>n(6.1,[o,r,s]),y=e=>k()?(ge(ye,e),{status:!0}):(le(ye,1),{status:a}),k=()=>n(6.4,[o,r,s]),M=async e=>q()?(e.title.length>64&&le(ke,3),e.message.length<1&&le(ke,4),e.message.length>256&&le(ke,5),e.buttons.length<1&&le(ke,6),e.buttons.length>3&&le(ke,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&le(ke,8),ge(ke,e),new Promise(((t,o)=>{const s=o=>{t({status:!!e.buttons.find((e=>e.id===o?.button_id)),data:o}),tt(je,s)};et(je,s)}))):(le(ke,1),{status:a}),q=()=>n(6.2,[o,r,s]),O=async e=>T()?(ge(be,e),new Promise(((t,o)=>{ot(ze,(o=>{e.is_close&&l(),t({status:!0,data:o})})),ot(Ke,(()=>{t({status:"closed"})}))}))):(le(be,1),{status:a}),T=()=>n(6.4,[s]),I=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),E()?(ge(Me,e),{status:!0}):(le(Me,1),{status:a})),E=()=>n(7,[o,r,s]),W=async e=>L()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=i()),ge(we,e),new Promise(((t,o)=>{const s=o=>{o.req_id===e?.req_id&&(t({status:!0,data:o}),tt(Je,s))};et(Je,s)}))):(le(we,1),{status:a}),L=()=>n(6.4,[o,r,s]),Q=e=>D()?(ge(qe,e),{status:!0}):(le(qe,1),{status:a}),D=()=>n(6.9,[o,r,s]),A=async()=>N()?(ge(Se),new Promise(((e,t)=>{ot($e,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(le(Se,1),{status:a}),N=()=>n(6.9,[o,r,s]),H=e=>F()?(ge(Oe,e),{status:!0}):(le(Oe,1),{status:a}),F=()=>n(0,[o,r,s]),V=e=>G()?(ge(Te,e),{status:!0}):(le(Te,1),{status:a}),G=()=>n(0,[o,r,s]),J=()=>U()?(ge(Ie),{status:!0}):(le(Ie,1),{status:a}),U=()=>n(6.9,[o,r,s]),$=e=>j()?(ge(Ee,e),{status:!0}):(le(Ee,1),{status:a}),j=()=>n(6.1,[o,r,s]),z=e=>K()?(ge(We,e),{status:!0}):(le(We,1),{status:a}),K=()=>n(6.1,[o,r,s]),X=e=>Y()?(ge(Le,{color:e?.color||e?.color_key}),{status:!0}):(le(Le,1),{status:a}),Y=()=>n(710,[o,r,s]),Z=e=>ee()?(ge(Qe,e),{status:!0}):(le(Qe,1),{status:a}),ee=()=>n(6.1,[o,r,s]),te=e=>oe()?(ge(De,e),{status:!0}):(le(De,1),{status:a}),oe=()=>n(0,[o,r,s]),se=e=>re()?(ge(Ae,e),{status:!0}):(le(Ae,1),{status:a}),re=()=>n(0,[o,r,s]),pe=e=>ae()?(ge(Ne,e),{status:!0}):(le(Ne,1),{status:a}),ae=()=>n(6.1,[o,r,s]),ne=e=>ie()?(e.query.length>256&&le(He,9),ge(He,e),{status:!0}):(le(He,1),{status:a}),ie=()=>n(6.7,[o,r,s]),ue=e=>de()?(ge(Fe,e),{status:!0}):(le(Fe,1),{status:a}),de=()=>n(6.1,[s]),ce=e=>_e()?(ge(Ve,e),{status:!0}):(le(Ve,1),{status:a}),_e=()=>n(7.7,[o,r,s]);var le=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const xe=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void le("getInitData",2);const o=new URLSearchParams(t);let s={};return o.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s};var ge=(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){le("postMessage Iframe",10)}};const he="web_app_invoke_custom_method",be="web_app_open_scan_qr_popup",we="web_app_read_text_from_clipboard",Se="web_app_request_phone",me="web_app_close",ve="web_app_close_scan_qr_popup",fe="web_app_data_send",Ce="web_app_expand",Re="iframe_ready",Pe="iframe_will_reload",Be="web_app_open_invoice",ye="web_app_open_link",ke="web_app_open_popup",Me="web_app_open_tg_link",qe="web_app_ready",Oe="web_app_request_theme",Te="web_app_request_viewport",Ie="web_app_request_write_access",Ee="web_app_set_background_color",We="web_app_set_header_color",Le="web_app_set_bottom_bar_color",Qe="web_app_setup_back_button",De="web_app_setup_closing_behavior",Ae="web_app_setup_main_button",Ne="web_app_setup_settings_button",He="web_app_switch_inline_query",Fe="web_app_trigger_haptic_feedback",Ve="web_app_setup_swipe_behavior";var Ge=(e=>(e[e.InvokeCustomMethod=he]="InvokeCustomMethod",e[e.OpenScanQrPopup=be]="OpenScanQrPopup",e[e.ReadTextFromClipboard=we]="ReadTextFromClipboard",e[e.RequestPhone=Se]="RequestPhone",e[e.Close=me]="Close",e[e.CloseScanQrPopup=ve]="CloseScanQrPopup",e[e.DataSend=fe]="DataSend",e[e.Expand=Ce]="Expand",e[e.IframeReady=Re]="IframeReady",e[e.IframeWillReload=Pe]="IframeWillReload",e[e.OpenInvoice=Be]="OpenInvoice",e[e.OpenLink=ye]="OpenLink",e[e.OpenPopup=ke]="OpenPopup",e[e.OpenTgLink=Me]="OpenTgLink",e[e.Ready=qe]="Ready",e[e.RequestTheme=Oe]="RequestTheme",e[e.RequestViewport=Te]="RequestViewport",e[e.RequestWriteAccess=Ie]="RequestWriteAccess",e[e.SetBackgroundColor=Ee]="SetBackgroundColor",e[e.SetHeaderColor=We]="SetHeaderColor",e[e.SetBottomBarColor=Le]="SetBottomBarColor",e[e.SetupBackButton=Qe]="SetupBackButton",e[e.SetupClosingBehavior=De]="SetupClosingBehavior",e[e.SetupMainButton=Ae]="SetupMainButton",e[e.SetupSettingsButton=Ne]="SetupSettingsButton",e[e.SwitchInlineQuery=He]="SwitchInlineQuery",e[e.TriggerHapticFeedback=Fe]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=Ve]="SetupSwipeBehavior",e))(Ge||{});const Je="clipboard_text_received",Ue="custom_method_invoked",$e="phone_requested",je="popup_closed",ze="qr_text_received",Ke="scan_qr_popup_closed",Xe="theme_changed",Ye="viewport_changed",Ze=((e=new Map)=>({once:(t,o,s=e.get(t),r=(e=>{o(e),s&&s.splice(s.indexOf(o)>>>0,1)}))=>s?s.push(r):e.set(t,[r]),on:(t,o,s=e.get(t))=>s?s.push(o):e.set(t,[o]),off:(t,o,s=e.get(t))=>s&&o?s.splice(s.indexOf(o)>>>0,1):e.set(t,[]),emit:(t,o,s=e.get(t)||[])=>{for(const e of s)e(o)}}))();(()=>{function e(e,t){e===Xe&&(t.theme_params=d(t.theme_params)),Ze.emit(e,t),Ze.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const et=(e,t)=>{Ze.on(e,t)},tt=(e,t)=>{Ze.off(e,t)},ot=(e,t)=>{Ze.once(e,t)};var st=Object.freeze({__proto__:null,off:tt,on:et,once:ot});const rt=e.createContext({viewport:void 0,theme:void 0,init:void 0});exports.ContextTwa=rt,exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=Je,exports.EventCustomMethodInvoked=Ue,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=$e,exports.EventPopupClosed=je,exports.EventQrTextReceived=ze,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=Ke,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=Xe,exports.EventViewportChanged=Ye,exports.EventWriteAccessRequested="write_access_requested",exports.Method=Ge,exports.MethodClose=me,exports.MethodCloseScanQrPopup=ve,exports.MethodDataSend=fe,exports.MethodExpand=Ce,exports.MethodIframeReady=Re,exports.MethodIframeWillReload=Pe,exports.MethodInvokeCustomMethod=he,exports.MethodOpenInvoice=Be,exports.MethodOpenLink=ye,exports.MethodOpenPopup=ke,exports.MethodOpenScanQrPopup=be,exports.MethodOpenTgLink=Me,exports.MethodReadTextFromClipboard=we,exports.MethodReady=qe,exports.MethodRequestPhone=Se,exports.MethodRequestTheme=Oe,exports.MethodRequestViewport=Te,exports.MethodRequestWriteAccess=Ie,exports.MethodSetBackgroundColor=Ee,exports.MethodSetBottomBarColor=Le,exports.MethodSetHeaderColor=We,exports.MethodSetupBackButton=Qe,exports.MethodSetupClosingBehavior=De,exports.MethodSetupMainButton=Ae,exports.MethodSetupSettingsButton=Ne,exports.MethodSetupSwipeBehavior=Ve,exports.MethodSwitchInlineQuery=He,exports.MethodTriggerHapticFeedback=Fe,exports.NOT_SUPPORTED=a,exports.ProviderTWA=o=>{const[s,r]=t.createStore({viewport:void 0,theme:void 0,init:void 0});return e.createEffect((()=>{const t=()=>{r("init",xe())};t();const o=e=>{t(),r("viewport",{...e,safe_area_bottom:e.is_expanded&&e.is_state_stable?window.outerHeight-e.height:0})};et(Ye,o),V();const s=e=>{t(),r("theme",e)};return et(Xe,s),V(),e.onCleanup((()=>{tt(Ye,o),tt(Xe,s)})),()=>{tt(Ye,o),tt(Xe,s)}})),rt.Provider({value:s,children:o.children})},exports.TG_DESKTOP=r,exports.TG_PHONE=s,exports.TG_WEB=o,exports.bridgeClose=c,exports.bridgeCloseScanQrPopup=l,exports.bridgeDataSend=g,exports.bridgeExpand=b,exports.bridgeGetInitData=xe,exports.bridgeGetThemeParams=d,exports.bridgeIframeReady=S,exports.bridgeIframeWillReload=v,exports.bridgeInvokeCustomMethod=C,exports.bridgeOpenInvoice=P,exports.bridgeOpenLink=y,exports.bridgeOpenPopup=M,exports.bridgeOpenScanQrPopup=O,exports.bridgeOpenTgLink=I,exports.bridgeReadTextFromClipboard=W,exports.bridgeReady=Q,exports.bridgeRequestPhone=A,exports.bridgeRequestTheme=H,exports.bridgeRequestViewport=V,exports.bridgeRequestWriteAccess=J,exports.bridgeSend=ge,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(o){return window.sessionStorage.setItem("__telegram__"+e,t),{status:!0}}},exports.bridgeSetBackgroundColor=$,exports.bridgeSetBottomBarColor=X,exports.bridgeSetHeaderColor=z,exports.bridgeSetupBackButton=Z,exports.bridgeSetupClosingBehavior=te,exports.bridgeSetupMainButton=se,exports.bridgeSetupSettingsButton=pe,exports.bridgeSetupSwipeBehavior=ce,exports.bridgeSwitchInlineQuery=ne,exports.bridgeTriggerHapticFeedback=ue,exports.createIsViewportChanged=()=>{const[t,o]=e.createSignal({height:0,is_expanded:!1,is_state_stable:!1}),s=e=>o(e);return e.onMount((()=>{et(Ye,s),ge(Te)})),e.onCleanup((()=>{tt(Ye,s)})),t},exports.debug=le,exports.getAppData=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},exports.getPlatform=p,exports.listener=st,exports.sender=ge,exports.supportClose=_,exports.supportCloseScanQrPopup=x,exports.supportDataSend=h,exports.supportExpand=w,exports.supportIframeReady=m,exports.supportIframeWillReload=f,exports.supportInvokeCustomMethod=R,exports.supportOpenInvoice=B,exports.supportOpenLink=k,exports.supportOpenPopup=q,exports.supportOpenScanQrPopup=T,exports.supportOpenTgLink=E,exports.supportReadTextFromClipboard=L,exports.supportReady=D,exports.supportRequestPhone=N,exports.supportRequestTheme=F,exports.supportRequestViewport=G,exports.supportRequestWriteAccess=U,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=j,exports.supportSetBottomBarColor=Y,exports.supportSetHeaderColor=K,exports.supportSetupBackButton=ee,exports.supportSetupClosingBehavior=oe,exports.supportSetupMainButton=re,exports.supportSetupSettingsButton=ae,exports.supportSetupSwipeBehavior=_e,exports.supportSwitchInlineQuery=ie,exports.supportTriggerHapticFeedback=de;
package/solid/index.mjs CHANGED
@@ -1 +1 @@
1
- import{createSignal as e,onMount as t,onCleanup as s,createContext as a,createEffect as r}from"solid-js";import{createStore as o}from"solid-js/store";const i=()=>{const[a,r]=e({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>r(e);return t((()=>{lt(ct,o),xe(Me)})),s((()=>{wt(ct,o)})),a},n="web",_="phone",p="desktop",d=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?_:["tdesktop","macos"].includes(t)?p:n},u="not_supported",c=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(d())},g=()=>Math.random().toString(36).substring(3,9),b=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]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((a<16?"0":"")+a.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},l=e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var a=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r of Object.keys(e)){var o=b(e[r]);"string"==typeof o&&(a[r]=o)}return a},w=e=>m()?(xe(Re,e),{status:!0}):(ye(Re,1),{status:u}),m=()=>c(0,[n,p,_]),h=e=>v()?(xe(Te,e),{status:!0}):(ye(Te,1),{status:u}),v=()=>c(6.4,[_]),f=e=>S()?(xe(Ne,e),{status:!0}):(ye(Ne,1),{status:u}),S=()=>c(0,[n,p,_]),y=e=>q()?(xe(Ce,e),{status:!0}):(ye(Ce,1),{status:u}),q=()=>c(0,[_]),x=e=>P()?(xe(Be,e),{status:!0}):(ye(Be,1),{status:u}),P=()=>c(0,[n]),k=()=>O()?(xe(Be),{status:!0}):(ye(Be,1),{status:u}),O=()=>c(0,[n]),I=async e=>R()?(void 0===e.req_id&&(e.req_id=g()),xe(Pe,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),wt(tt,a))};lt(tt,a)}))):(ye(Pe,1),{status:u}),R=()=>c(6.9,[n,p,_]),T=e=>N()?(xe(We,e),{status:!0}):(ye(We,1),{status:u}),N=()=>c(6.1,[n,p,_]),C=e=>B()?(xe(Ee,e),{status:!0}):(ye(Ee,1),{status:u}),B=()=>c(6.4,[n,p,_]),L=async e=>W()?(e.title.length>64&&ye(De,3),e.message.length<1&&ye(De,4),e.message.length>256&&ye(De,5),e.buttons.length<1&&ye(De,6),e.buttons.length>3&&ye(De,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&ye(De,8),xe(De,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),wt(ot,a)};lt(ot,a)}))):(ye(De,1),{status:u}),W=()=>c(6.2,[n,p,_]),E=async e=>D()?(xe(ke,e),new Promise(((t,s)=>{mt(nt,(s=>{e.is_close&&h(),t({status:!0,data:s})})),mt(_t,(()=>{t({status:"closed"})}))}))):(ye(ke,1),{status:u}),D=()=>c(6.4,[_]),J=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),$()?(xe(Je,e),{status:!0}):(ye(Je,1),{status:u})),$=()=>c(7,[n,p,_]),j=async e=>M()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=g()),xe(Oe,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),wt(et,a))};lt(et,a)}))):(ye(Oe,1),{status:u}),M=()=>c(6.4,[n,p,_]),A=e=>G()?(xe($e,e),{status:!0}):(ye($e,1),{status:u}),G=()=>c(6.9,[n,p,_]),U=async()=>V()?(xe(Ie),new Promise(((e,t)=>{mt(rt,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(ye(Ie,1),{status:u}),V=()=>c(6.9,[n,p,_]),H=e=>Q()?(xe(je,e),{status:!0}):(ye(je,1),{status:u}),Q=()=>c(0,[n,p,_]),F=e=>z()?(xe(Me,e),{status:!0}):(ye(Me,1),{status:u}),z=()=>c(0,[n,p,_]),K=()=>X()?(xe(Ae),{status:!0}):(ye(Ae,1),{status:u}),X=()=>c(6.9,[n,p,_]),Y=e=>Z()?(xe(Ge,e),{status:!0}):(ye(Ge,1),{status:u}),Z=()=>c(6.1,[n,p,_]),ee=e=>te()?(xe(Ue,e),{status:!0}):(ye(Ue,1),{status:u}),te=()=>c(6.1,[n,p,_]),se=e=>ae()?(xe(Ve,{color:e?.color||e?.color_key}),{status:!0}):(ye(Ve,1),{status:u}),ae=()=>c(710,[n,p,_]),re=e=>oe()?(xe(He,e),{status:!0}):(ye(He,1),{status:u}),oe=()=>c(6.1,[n,p,_]),ie=e=>ne()?(xe(Qe,e),{status:!0}):(ye(Qe,1),{status:u}),ne=()=>c(0,[n,p,_]),_e=e=>pe()?(xe(Fe,e),{status:!0}):(ye(Fe,1),{status:u}),pe=()=>c(0,[n,p,_]),de=e=>ue()?(xe(ze,e),{status:!0}):(ye(ze,1),{status:u}),ue=()=>c(6.1,[n,p,_]),ce=e=>ge()?(e.query.length>256&&ye(Ke,9),xe(Ke,e),{status:!0}):(ye(Ke,1),{status:u}),ge=()=>c(6.7,[n,p,_]),be=e=>le()?(xe(Xe,e),{status:!0}):(ye(Xe,1),{status:u}),le=()=>c(6.1,[_]),we=({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}}},me=()=>!0,he=({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}}},ve=()=>!0,fe=e=>Se()?(xe(Ye,e),{status:!0}):(ye(Ye,1),{status:u}),Se=()=>c(7.7,[n,p,_]);var ye=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const qe=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void ye("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};var xe=(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){ye("postMessage Iframe",10)}};const Pe="web_app_invoke_custom_method",ke="web_app_open_scan_qr_popup",Oe="web_app_read_text_from_clipboard",Ie="web_app_request_phone",Re="web_app_close",Te="web_app_close_scan_qr_popup",Ne="web_app_data_send",Ce="web_app_expand",Be="iframe_ready",Le="iframe_will_reload",We="web_app_open_invoice",Ee="web_app_open_link",De="web_app_open_popup",Je="web_app_open_tg_link",$e="web_app_ready",je="web_app_request_theme",Me="web_app_request_viewport",Ae="web_app_request_write_access",Ge="web_app_set_background_color",Ue="web_app_set_header_color",Ve="web_app_set_bottom_bar_color",He="web_app_setup_back_button",Qe="web_app_setup_closing_behavior",Fe="web_app_setup_main_button",ze="web_app_setup_settings_button",Ke="web_app_switch_inline_query",Xe="web_app_trigger_haptic_feedback",Ye="web_app_setup_swipe_behavior";const Ze="back_button_pressed",et="clipboard_text_received",tt="custom_method_invoked",st="invoice_closed",at="main_button_pressed",rt="phone_requested",ot="popup_closed",it="reload_iframe",nt="qr_text_received",_t="scan_qr_popup_closed",pt="set_custom_style",dt="settings_button_pressed",ut="theme_changed",ct="viewport_changed",gt="write_access_requested",bt=((e=new Map)=>({once:(t,s,a=e.get(t),r=(e=>{s(e),a&&a.splice(a.indexOf(s)>>>0,1)}))=>a?a.push(r):e.set(t,[r]),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===ut&&(t.theme_params=l(t.theme_params)),bt.emit(e,t),bt.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const lt=(e,t)=>{bt.on(e,t)},wt=(e,t)=>{bt.off(e,t)},mt=(e,t)=>{bt.once(e,t)};var ht=Object.freeze({__proto__:null,off:wt,on:lt,once:mt});const vt=a({viewport:void 0,theme:void 0,init:void 0}),ft=e=>{const[t,a]=o({viewport:void 0,theme:void 0,init:void 0});return r((()=>{const e=()=>{a("init",qe())};e();const t=t=>{e(),a("viewport",{...t,safe_area_bottom:t.is_expanded&&t.is_state_stable?window.outerHeight-t.height:0})};lt(ct,t),F();const r=t=>{e(),a("theme",t)};return lt(ut,r),F(),s((()=>{wt(ct,t),wt(ut,r)})),()=>{wt(ct,t),wt(ut,r)}})),vt.Provider({value:t,children:e.children})};export{vt as ContextTwa,Ze as EventBackButtonPressed,et as EventClipboardTextReceived,tt as EventCustomMethodInvoked,st as EventInvoiceClosed,at as EventMainButtonPressed,rt as EventPhoneRequested,ot as EventPopupClosed,nt as EventQrTextReceived,it as EventReloadIframe,_t as EventScanQrPopupClosed,pt as EventSetCustomStyle,dt as EventSettingsButtonPressed,ut as EventThemeChanged,ct as EventViewportChanged,gt as EventWriteAccessRequested,Re as MethodClose,Te as MethodCloseScanQrPopup,Ne as MethodDataSend,Ce as MethodExpand,Be as MethodIframeReady,Le as MethodIframeWillReload,Pe as MethodInvokeCustomMethod,We as MethodOpenInvoice,Ee as MethodOpenLink,De as MethodOpenPopup,ke as MethodOpenScanQrPopup,Je as MethodOpenTgLink,Oe as MethodReadTextFromClipboard,$e as MethodReady,Ie as MethodRequestPhone,je as MethodRequestTheme,Me as MethodRequestViewport,Ae as MethodRequestWriteAccess,Ge as MethodSetBackgroundColor,Ve as MethodSetBottomBarColor,Ue as MethodSetHeaderColor,He as MethodSetupBackButton,Qe as MethodSetupClosingBehavior,Fe as MethodSetupMainButton,ze as MethodSetupSettingsButton,Ye as MethodSetupSwipeBehavior,Ke as MethodSwitchInlineQuery,Xe as MethodTriggerHapticFeedback,u as NOT_SUPPORTED,ft as ProviderTWA,p as TG_DESKTOP,_ as TG_PHONE,n as TG_WEB,w as bridgeClose,h as bridgeCloseScanQrPopup,f as bridgeDataSend,y as bridgeExpand,qe as bridgeGetInitData,l as bridgeGetThemeParams,x as bridgeIframeReady,k as bridgeIframeWillReload,I as bridgeInvokeCustomMethod,T as bridgeOpenInvoice,C as bridgeOpenLink,L as bridgeOpenPopup,E as bridgeOpenScanQrPopup,J as bridgeOpenTgLink,j as bridgeReadTextFromClipboard,A as bridgeReady,U as bridgeRequestPhone,H as bridgeRequestTheme,F as bridgeRequestViewport,K as bridgeRequestWriteAccess,xe as bridgeSend,he as bridgeSessionStorageGet,we as bridgeSessionStorageSet,Y as bridgeSetBackgroundColor,se as bridgeSetBottomBarColor,ee as bridgeSetHeaderColor,re as bridgeSetupBackButton,ie as bridgeSetupClosingBehavior,_e as bridgeSetupMainButton,de as bridgeSetupSettingsButton,fe as bridgeSetupSwipeBehavior,ce as bridgeSwitchInlineQuery,be as bridgeTriggerHapticFeedback,i as createIsViewportChanged,ye as debug,d as getPlatform,ht as listener,xe as sender,m as supportClose,v as supportCloseScanQrPopup,S as supportDataSend,q as supportExpand,P as supportIframeReady,O as supportIframeWillReload,R as supportInvokeCustomMethod,N as supportOpenInvoice,B as supportOpenLink,W as supportOpenPopup,D as supportOpenScanQrPopup,$ as supportOpenTgLink,M as supportReadTextFromClipboard,G as supportReady,V as supportRequestPhone,Q as supportRequestTheme,z as supportRequestViewport,X as supportRequestWriteAccess,ve as supportSessionStorageGet,me as supportSessionStorageSet,Z as supportSetBackgroundColor,ae as supportSetBottomBarColor,te as supportSetHeaderColor,oe as supportSetupBackButton,ne as supportSetupClosingBehavior,pe as supportSetupMainButton,ue as supportSetupSettingsButton,Se as supportSetupSwipeBehavior,ge as supportSwitchInlineQuery,le 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}from"solid-js/store";const n=()=>{const[a,o]=e({height:0,is_expanded:!1,is_state_stable:!1}),r=e=>o(e);return t((()=>{wt(gt,r),qe(He)})),s((()=>{mt(gt,r)})),a},i="web",p="phone",u="desktop",_=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?p:["tdesktop","macos"].includes(t)?u:i},d="not_supported",c=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(_())},g=()=>Math.random().toString(36).substring(3,9),l=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},b=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 n=l(o[r]);"string"==typeof n&&(o[r]=n)}return"#1c1c1d"==o?.bg_color&&o?.bg_color==o?.secondary_bg_color&&(o.secondary_bg_color="#2c2c2e"),o.bottom_bar_bg_color,o},w=e=>m()?(qe(Be,e),{status:!0}):(ye(Be,1),{status:d}),m=()=>c(0,[i,u,p]),h=e=>S()?(qe(Ce,e),{status:!0}):(ye(Ce,1),{status:d}),S=()=>c(6.4,[p]),v=e=>f()?(qe(Ie,e),{status:!0}):(ye(Ie,1),{status:d}),f=()=>c(0,[i,u,p]),y=e=>k()?(qe(Te,e),{status:!0}):(ye(Te,1),{status:d}),k=()=>c(0,[p]),q=e=>P()?(qe(Le,e),{status:!0}):(ye(Le,1),{status:d}),P=()=>c(0,[i]),R=()=>O()?(qe(Le),{status:!0}):(ye(Le,1),{status:d}),O=()=>c(0,[i]),x=async e=>B()?(void 0===e.req_id&&(e.req_id=g()),qe(Pe,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),mt(st,a))};wt(st,a)}))):(ye(Pe,1),{status:d}),B=()=>c(6.9,[i,u,p]),C=e=>I()?(qe(Ne,e),{status:!0}):(ye(Ne,1),{status:d}),I=()=>c(6.1,[i,u,p]),T=e=>L()?(qe(De,e),{status:!0}):(ye(De,1),{status:d}),L=()=>c(6.4,[i,u,p]),W=async e=>N()?(e.title.length>64&&ye(Ee,3),e.message.length<1&&ye(Ee,4),e.message.length>256&&ye(Ee,5),e.buttons.length<1&&ye(Ee,6),e.buttons.length>3&&ye(Ee,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&ye(Ee,8),qe(Ee,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),mt(nt,a)};wt(nt,a)}))):(ye(Ee,1),{status:d}),N=()=>c(6.2,[i,u,p]),D=async e=>E()?(qe(Re,e),new Promise(((t,s)=>{ht(pt,(s=>{e.is_close&&h(),t({status:!0,data:s})})),ht(ut,(()=>{t({status:"closed"})}))}))):(ye(Re,1),{status:d}),E=()=>c(6.4,[p]),M=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),Q()?(qe(Me,e),{status:!0}):(ye(Me,1),{status:d})),Q=()=>c(7,[i,u,p]),A=async e=>H()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=g()),qe(Oe,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),mt(tt,a))};wt(tt,a)}))):(ye(Oe,1),{status:d}),H=()=>c(6.4,[i,u,p]),J=e=>$()?(qe(Qe,e),{status:!0}):(ye(Qe,1),{status:d}),$=()=>c(6.9,[i,u,p]),j=async()=>F()?(qe(xe),new Promise(((e,t)=>{ht(rt,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(ye(xe,1),{status:d}),F=()=>c(6.9,[i,u,p]),U=e=>V()?(qe(Ae,e),{status:!0}):(ye(Ae,1),{status:d}),V=()=>c(0,[i,u,p]),G=e=>z()?(qe(He,e),{status:!0}):(ye(He,1),{status:d}),z=()=>c(0,[i,u,p]),K=()=>X()?(qe(Je),{status:!0}):(ye(Je,1),{status:d}),X=()=>c(6.9,[i,u,p]),Y=e=>Z()?(qe($e,e),{status:!0}):(ye($e,1),{status:d}),Z=()=>c(6.1,[i,u,p]),ee=e=>te()?(qe(je,e),{status:!0}):(ye(je,1),{status:d}),te=()=>c(6.1,[i,u,p]),se=e=>ae()?(qe(Fe,{color:e?.color||e?.color_key}),{status:!0}):(ye(Fe,1),{status:d}),ae=()=>c(710,[i,u,p]),oe=e=>re()?(qe(Ue,e),{status:!0}):(ye(Ue,1),{status:d}),re=()=>c(6.1,[i,u,p]),ne=e=>ie()?(qe(Ve,e),{status:!0}):(ye(Ve,1),{status:d}),ie=()=>c(0,[i,u,p]),pe=e=>ue()?(qe(Ge,e),{status:!0}):(ye(Ge,1),{status:d}),ue=()=>c(0,[i,u,p]),_e=e=>de()?(qe(ze,e),{status:!0}):(ye(ze,1),{status:d}),de=()=>c(6.1,[i,u,p]),ce=e=>ge()?(e.query.length>256&&ye(Ke,9),qe(Ke,e),{status:!0}):(ye(Ke,1),{status:d}),ge=()=>c(6.7,[i,u,p]),le=e=>be()?(qe(Xe,e),{status:!0}):(ye(Xe,1),{status:d}),be=()=>c(6.1,[p]),we=({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}}},me=()=>!0,he=({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}}},Se=()=>!0,ve=e=>fe()?(qe(Ye,e),{status:!0}):(ye(Ye,1),{status:d}),fe=()=>c(7.7,[i,u,p]);var ye=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const ke=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void ye("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};var qe=(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){ye("postMessage Iframe",10)}};const Pe="web_app_invoke_custom_method",Re="web_app_open_scan_qr_popup",Oe="web_app_read_text_from_clipboard",xe="web_app_request_phone",Be="web_app_close",Ce="web_app_close_scan_qr_popup",Ie="web_app_data_send",Te="web_app_expand",Le="iframe_ready",We="iframe_will_reload",Ne="web_app_open_invoice",De="web_app_open_link",Ee="web_app_open_popup",Me="web_app_open_tg_link",Qe="web_app_ready",Ae="web_app_request_theme",He="web_app_request_viewport",Je="web_app_request_write_access",$e="web_app_set_background_color",je="web_app_set_header_color",Fe="web_app_set_bottom_bar_color",Ue="web_app_setup_back_button",Ve="web_app_setup_closing_behavior",Ge="web_app_setup_main_button",ze="web_app_setup_settings_button",Ke="web_app_switch_inline_query",Xe="web_app_trigger_haptic_feedback",Ye="web_app_setup_swipe_behavior";var Ze=(e=>(e[e.InvokeCustomMethod=Pe]="InvokeCustomMethod",e[e.OpenScanQrPopup=Re]="OpenScanQrPopup",e[e.ReadTextFromClipboard=Oe]="ReadTextFromClipboard",e[e.RequestPhone=xe]="RequestPhone",e[e.Close=Be]="Close",e[e.CloseScanQrPopup=Ce]="CloseScanQrPopup",e[e.DataSend=Ie]="DataSend",e[e.Expand=Te]="Expand",e[e.IframeReady=Le]="IframeReady",e[e.IframeWillReload=We]="IframeWillReload",e[e.OpenInvoice=Ne]="OpenInvoice",e[e.OpenLink=De]="OpenLink",e[e.OpenPopup=Ee]="OpenPopup",e[e.OpenTgLink=Me]="OpenTgLink",e[e.Ready=Qe]="Ready",e[e.RequestTheme=Ae]="RequestTheme",e[e.RequestViewport=He]="RequestViewport",e[e.RequestWriteAccess=Je]="RequestWriteAccess",e[e.SetBackgroundColor=$e]="SetBackgroundColor",e[e.SetHeaderColor=je]="SetHeaderColor",e[e.SetBottomBarColor=Fe]="SetBottomBarColor",e[e.SetupBackButton=Ue]="SetupBackButton",e[e.SetupClosingBehavior=Ve]="SetupClosingBehavior",e[e.SetupMainButton=Ge]="SetupMainButton",e[e.SetupSettingsButton=ze]="SetupSettingsButton",e[e.SwitchInlineQuery=Ke]="SwitchInlineQuery",e[e.TriggerHapticFeedback=Xe]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=Ye]="SetupSwipeBehavior",e))(Ze||{});const et="back_button_pressed",tt="clipboard_text_received",st="custom_method_invoked",at="invoice_closed",ot="main_button_pressed",rt="phone_requested",nt="popup_closed",it="reload_iframe",pt="qr_text_received",ut="scan_qr_popup_closed",_t="set_custom_style",dt="settings_button_pressed",ct="theme_changed",gt="viewport_changed",lt="write_access_requested",bt=((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===ct&&(t.theme_params=b(t.theme_params)),bt.emit(e,t),bt.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const wt=(e,t)=>{bt.on(e,t)},mt=(e,t)=>{bt.off(e,t)},ht=(e,t)=>{bt.once(e,t)};var St=Object.freeze({__proto__:null,off:mt,on:wt,once:ht});const vt=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},ft=a({viewport:void 0,theme:void 0,init:void 0}),yt=e=>{const[t,a]=r({viewport:void 0,theme:void 0,init:void 0});return o((()=>{const e=()=>{a("init",ke())};e();const t=t=>{e(),a("viewport",{...t,safe_area_bottom:t.is_expanded&&t.is_state_stable?window.outerHeight-t.height:0})};wt(gt,t),G();const o=t=>{e(),a("theme",t)};return wt(ct,o),G(),s((()=>{mt(gt,t),mt(ct,o)})),()=>{mt(gt,t),mt(ct,o)}})),ft.Provider({value:t,children:e.children})};export{ft as ContextTwa,et as EventBackButtonPressed,tt as EventClipboardTextReceived,st as EventCustomMethodInvoked,at as EventInvoiceClosed,ot as EventMainButtonPressed,rt as EventPhoneRequested,nt as EventPopupClosed,pt as EventQrTextReceived,it as EventReloadIframe,ut as EventScanQrPopupClosed,_t as EventSetCustomStyle,dt as EventSettingsButtonPressed,ct as EventThemeChanged,gt as EventViewportChanged,lt as EventWriteAccessRequested,Ze as Method,Be as MethodClose,Ce as MethodCloseScanQrPopup,Ie as MethodDataSend,Te as MethodExpand,Le as MethodIframeReady,We as MethodIframeWillReload,Pe as MethodInvokeCustomMethod,Ne as MethodOpenInvoice,De as MethodOpenLink,Ee as MethodOpenPopup,Re as MethodOpenScanQrPopup,Me as MethodOpenTgLink,Oe as MethodReadTextFromClipboard,Qe as MethodReady,xe as MethodRequestPhone,Ae as MethodRequestTheme,He as MethodRequestViewport,Je as MethodRequestWriteAccess,$e as MethodSetBackgroundColor,Fe as MethodSetBottomBarColor,je as MethodSetHeaderColor,Ue as MethodSetupBackButton,Ve as MethodSetupClosingBehavior,Ge as MethodSetupMainButton,ze as MethodSetupSettingsButton,Ye as MethodSetupSwipeBehavior,Ke as MethodSwitchInlineQuery,Xe as MethodTriggerHapticFeedback,d as NOT_SUPPORTED,yt as ProviderTWA,u as TG_DESKTOP,p as TG_PHONE,i as TG_WEB,w as bridgeClose,h as bridgeCloseScanQrPopup,v as bridgeDataSend,y as bridgeExpand,ke as bridgeGetInitData,b as bridgeGetThemeParams,q as bridgeIframeReady,R as bridgeIframeWillReload,x as bridgeInvokeCustomMethod,C as bridgeOpenInvoice,T as bridgeOpenLink,W as bridgeOpenPopup,D as bridgeOpenScanQrPopup,M as bridgeOpenTgLink,A as bridgeReadTextFromClipboard,J as bridgeReady,j as bridgeRequestPhone,U as bridgeRequestTheme,G as bridgeRequestViewport,K as bridgeRequestWriteAccess,qe as bridgeSend,he as bridgeSessionStorageGet,we as bridgeSessionStorageSet,Y as bridgeSetBackgroundColor,se as bridgeSetBottomBarColor,ee as bridgeSetHeaderColor,oe as bridgeSetupBackButton,ne as bridgeSetupClosingBehavior,pe as bridgeSetupMainButton,_e as bridgeSetupSettingsButton,ve as bridgeSetupSwipeBehavior,ce as bridgeSwitchInlineQuery,le as bridgeTriggerHapticFeedback,n as createIsViewportChanged,ye as debug,vt as getAppData,_ as getPlatform,St as listener,qe as sender,m as supportClose,S as supportCloseScanQrPopup,f as supportDataSend,k as supportExpand,P as supportIframeReady,O as supportIframeWillReload,B as supportInvokeCustomMethod,I as supportOpenInvoice,L as supportOpenLink,N as supportOpenPopup,E as supportOpenScanQrPopup,Q as supportOpenTgLink,H as supportReadTextFromClipboard,$ as supportReady,F as supportRequestPhone,V as supportRequestTheme,z as supportRequestViewport,X as supportRequestWriteAccess,Se as supportSessionStorageGet,me as supportSessionStorageSet,Z as supportSetBackgroundColor,ae as supportSetBottomBarColor,te as supportSetHeaderColor,re as supportSetupBackButton,ie as supportSetupClosingBehavior,ue as supportSetupMainButton,de as supportSetupSettingsButton,fe as supportSetupSwipeBehavior,ge as supportSwitchInlineQuery,be as supportTriggerHapticFeedback};