@apiteam/twa-bridge 7.8.0 → 8.0.0-beta

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.8.0",
3
+ "version": "8.0.0-beta",
4
4
  "description": "Telegram bridge",
5
5
  "license": "MIT",
6
6
  "types": "index.ts",
package/solid/index.d.ts CHANGED
@@ -206,6 +206,43 @@ type ShareToStory = (eventData?: SenderData[typeof MethodShareToStory]) => {
206
206
  declare const shareToStory: ShareToStory;
207
207
  declare const supportShareToStory: () => boolean;
208
208
 
209
+ type CheckHomeScreen = (eventData: SenderData[typeof MethodCheckHomeScreen]) => Promise<{
210
+ status: boolean | typeof NOT_SUPPORTED;
211
+ data?: EventsData[typeof EventCheckHomeScreen];
212
+ }>;
213
+ declare const checkHomeScreen: CheckHomeScreen;
214
+ declare const supportCheckHomeScreen: () => boolean;
215
+
216
+ type AddToHomeScreen = (eventData?: SenderData[typeof MethodAddToHomeScreen]) => {
217
+ status: boolean | typeof NOT_SUPPORTED;
218
+ };
219
+ declare const addToHomeScreen: AddToHomeScreen;
220
+ declare const supportAddToHomeScreen: () => boolean;
221
+
222
+ type RequestSafeAreaInset = (eventData?: SenderData[typeof MethodRequestSafeArea]) => {
223
+ status: boolean | typeof NOT_SUPPORTED;
224
+ };
225
+ declare const requestSafeAreaInset: RequestSafeAreaInset;
226
+ declare const supportRequestSafeAreaInset: () => boolean;
227
+
228
+ type RequestContentSafeAreaInset = (eventData?: SenderData[typeof MethodRequestContentSafeArea]) => {
229
+ status: boolean | typeof NOT_SUPPORTED;
230
+ };
231
+ declare const requestContentSafeAreaInset: RequestContentSafeAreaInset;
232
+ declare const supportRequestContentSafeAreaInset: () => boolean;
233
+
234
+ type SetupFullScreen = (eventData?: SenderData[typeof MethodRequestFullscreen]) => {
235
+ status: boolean | typeof NOT_SUPPORTED;
236
+ };
237
+ declare const setupFullScreen: SetupFullScreen;
238
+ declare const supportSetupFullScreen: () => boolean;
239
+
240
+ type SetupOrientation = (eventData?: SenderData[typeof MethodToggleOrientationLock]) => {
241
+ status: boolean | typeof NOT_SUPPORTED;
242
+ };
243
+ declare const setupOrientation: SetupOrientation;
244
+ declare const supportSetupOrientation: () => boolean;
245
+
209
246
  type User = {
210
247
  added_to_attachment_menu?: boolean;
211
248
  allows_write_to_pm?: boolean;
@@ -261,6 +298,25 @@ declare const getThemeParams: (theme_params?: ThemeParams) => ThemeParams;
261
298
  type Sender = (eventType: string, eventData?: any) => void;
262
299
  declare const sender: Sender;
263
300
 
301
+ declare const EventBackButtonPressed = "back_button_pressed";
302
+ declare const EventClipboardTextReceived = "clipboard_text_received";
303
+ declare const EventCustomMethodInvoked = "custom_method_invoked";
304
+ declare const EventInvoiceClosed = "invoice_closed";
305
+ declare const EventMainButtonPressed = "main_button_pressed";
306
+ declare const EventPhoneRequested = "phone_requested";
307
+ declare const EventPopupClosed = "popup_closed";
308
+ declare const EventReloadIframe = "reload_iframe";
309
+ declare const EventQrTextReceived = "qr_text_received";
310
+ declare const EventScanQrPopupClosed = "scan_qr_popup_closed";
311
+ declare const EventSetCustomStyle = "set_custom_style";
312
+ declare const EventSettingsButtonPressed = "settings_button_pressed";
313
+ declare const EventThemeChanged = "theme_changed";
314
+ declare const EventViewportChanged = "viewport_changed";
315
+ declare const EventWriteAccessRequested = "write_access_requested";
316
+ declare const EventSafeAreaChanged = "safe_area_changed";
317
+ declare const EventContentSafeAreaChanged = "content_safe_area_changed";
318
+ declare const EventCheckHomeScreen = "web_app_check_home_screen";
319
+
264
320
  type GetPlatform = () => 'phone' | 'web' | 'desktop';
265
321
  declare const TG_WEB = "web";
266
322
  declare const TG_PHONE = "phone";
@@ -310,6 +366,9 @@ type EventsData = {
310
366
  write_access_requested: {
311
367
  status: 'allowed';
312
368
  };
369
+ [EventCheckHomeScreen]: {
370
+ status: 'unsupported' | 'unknown' | 'added' | 'missed';
371
+ };
313
372
  };
314
373
  interface TelegramGameProxy {
315
374
  receiveEvent: (event: string, data: string) => void;
@@ -372,6 +431,13 @@ declare const MethodSwitchInlineQuery = "web_app_switch_inline_query";
372
431
  declare const MethodTriggerHapticFeedback = "web_app_trigger_haptic_feedback";
373
432
  declare const MethodSetupSwipeBehavior = "web_app_setup_swipe_behavior";
374
433
  declare const MethodShareToStory = "web_app_share_to_story";
434
+ declare const MethodRequestSafeArea = "web_app_request_safe_area";
435
+ declare const MethodRequestContentSafeArea = "web_app_request_content_safe_area";
436
+ declare const MethodRequestFullscreen = "web_app_request_fullscreen";
437
+ declare const MethodExitFullscreen = "web_app_exit_fullscreen";
438
+ declare const MethodToggleOrientationLock = "web_app_toggle_orientation_lock";
439
+ declare const MethodAddToHomeScreen = "web_app_add_to_home_screen";
440
+ declare const MethodCheckHomeScreen = "web_app_check_home_screen";
375
441
  declare enum Method {
376
442
  InvokeCustomMethod = "web_app_invoke_custom_method",
377
443
  OpenScanQrPopup = "web_app_open_scan_qr_popup",
@@ -401,7 +467,14 @@ declare enum Method {
401
467
  SwitchInlineQuery = "web_app_switch_inline_query",
402
468
  TriggerHapticFeedback = "web_app_trigger_haptic_feedback",
403
469
  SetupSwipeBehavior = "web_app_setup_swipe_behavior",
404
- ShareToStory = "web_app_share_to_story"
470
+ ShareToStory = "web_app_share_to_story",
471
+ RequestSafeArea = "web_app_request_safe_area",
472
+ RequestContentSafeArea = "web_app_request_content_safe_area",
473
+ RequestFullscreen = "web_app_request_fullscreen",
474
+ ExitFullscreen = "web_app_exit_fullscreen",
475
+ ToggleOrientationLock = "web_app_toggle_orientation_lock",
476
+ AddToHomeScreen = "web_app_add_to_home_screen",
477
+ CheckHomeScreen = "web_app_check_home_screen"
405
478
  }
406
479
  type PopupButton = {
407
480
  id: string;
@@ -511,6 +584,19 @@ type SenderData = {
511
584
  name: string;
512
585
  };
513
586
  };
587
+ [MethodRequestSafeArea]: undefined;
588
+ [MethodRequestContentSafeArea]: undefined;
589
+ [MethodRequestFullscreen]: {
590
+ is_full: boolean;
591
+ };
592
+ [MethodExitFullscreen]: {
593
+ is_full: boolean;
594
+ };
595
+ [MethodToggleOrientationLock]: {
596
+ locked: boolean;
597
+ };
598
+ [MethodAddToHomeScreen]: undefined;
599
+ [MethodCheckHomeScreen]: undefined;
514
600
  };
515
601
 
516
602
  type Debug = (methondName: string, errorId: number) => void;
@@ -530,20 +616,4 @@ interface ProviderTWA extends JSX.HTMLAttributes<HTMLDivElement> {
530
616
  }
531
617
  declare const ProviderTWA: Component<ProviderTWA>;
532
618
 
533
- declare const EventBackButtonPressed = "back_button_pressed";
534
- declare const EventClipboardTextReceived = "clipboard_text_received";
535
- declare const EventCustomMethodInvoked = "custom_method_invoked";
536
- declare const EventInvoiceClosed = "invoice_closed";
537
- declare const EventMainButtonPressed = "main_button_pressed";
538
- declare const EventPhoneRequested = "phone_requested";
539
- declare const EventPopupClosed = "popup_closed";
540
- declare const EventReloadIframe = "reload_iframe";
541
- declare const EventQrTextReceived = "qr_text_received";
542
- declare const EventScanQrPopupClosed = "scan_qr_popup_closed";
543
- declare const EventSetCustomStyle = "set_custom_style";
544
- declare const EventSettingsButtonPressed = "settings_button_pressed";
545
- declare const EventThemeChanged = "theme_changed";
546
- declare const EventViewportChanged = "viewport_changed";
547
- declare const EventWriteAccessRequested = "write_access_requested";
548
-
549
- 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, MethodShareToStory, 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, shareToStory as bridgeShareToStory, 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, supportShareToStory, supportSwitchInlineQuery, supportTriggerHapticFeedback };
619
+ export { ContextTwa, EventBackButtonPressed, EventCheckHomeScreen, EventClipboardTextReceived, EventContentSafeAreaChanged, EventCustomMethodInvoked, EventInvoiceClosed, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventQrTextReceived, EventReloadIframe, EventSafeAreaChanged, EventScanQrPopupClosed, EventSetCustomStyle, EventSettingsButtonPressed, EventThemeChanged, EventViewportChanged, EventWriteAccessRequested, type EventsData, type GetInitData, Method, MethodAddToHomeScreen, MethodCheckHomeScreen, MethodClose, MethodCloseScanQrPopup, MethodDataSend, MethodExitFullscreen, MethodExpand, MethodIframeReady, MethodIframeWillReload, MethodInvokeCustomMethod, MethodOpenInvoice, MethodOpenLink, MethodOpenPopup, MethodOpenScanQrPopup, MethodOpenTgLink, MethodReadTextFromClipboard, MethodReady, MethodRequestContentSafeArea, MethodRequestFullscreen, MethodRequestPhone, MethodRequestSafeArea, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSetBackgroundColor, MethodSetBottomBarColor, 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, checkHomeScreen as bridgeCheckHomeScreen, 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, requestContentSafeAreaInset as bridgeRequestContentSafeAreaInset, 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, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupFullScreen as bridgeSetupFullScreen, setupMainButton as bridgeSetupMainButton, setupOrientation as bridgeSetupOrientation, setupSettingsButton as bridgeSetupSettingsButton, setupSwipeBehavior as bridgeSetupSwipeBehavior, shareToStory as bridgeShareToStory, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, createIsViewportChanged, debug, getAppData, getPlatform, listener, sender, supportAddToHomeScreen, supportCheckHomeScreen, supportClose, supportCloseScanQrPopup, supportDataSend, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestContentSafeAreaInset, supportRequestPhone, supportRequestSafeAreaInset, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSessionStorageGet, supportSessionStorageSet, supportSetBackgroundColor, supportSetBottomBarColor, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupFullScreen, supportSetupMainButton, supportSetupOrientation, supportSetupSettingsButton, supportSetupSwipeBehavior, supportShareToStory, supportSwitchInlineQuery, supportTriggerHapticFeedback };
package/solid/index.js CHANGED
@@ -1 +1 @@
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},c=e=>_()?(he(ve,e),{status:!0}):(le(ve,1),{status:a}),_=()=>n(0,[o,r,s]),x=e=>l()?(he(fe,e),{status:!0}):(le(fe,1),{status:a}),l=()=>n(6.4,[s]),g=e=>h()?(he(ye,e),{status:!0}):(le(ye,1),{status:a}),h=()=>n(0,[o,r,s]),S=e=>b()?(he(Ce,e),{status:!0}):(le(Ce,1),{status:a}),b=()=>n(0,[s]),w=e=>m()?(he(Re,e),{status:!0}):(le(Re,1),{status:a}),m=()=>n(0,[o]),v=()=>f()?(he(Re),{status:!0}):(le(Re,1),{status:a}),f=()=>n(0,[o]),y=async e=>C()?(void 0===e.req_id&&(e.req_id=i()),he(Se,e),new Promise(((t,o)=>{const s=o=>{o.req_id===e.req_id&&(t({status:!0,data:o}),st(je,s))};ot(je,s)}))):(le(Se,1),{status:a}),C=()=>n(6.9,[o,r,s]),R=e=>P()?(he(Be,e),{status:!0}):(le(Be,1),{status:a}),P=()=>n(6.1,[o,r,s]),B=e=>k()?(he(ke,e),{status:!0}):(le(ke,1),{status:a}),k=()=>n(6.4,[o,r,s]),M=async e=>q()?(e.title.length>64&&le(Me,3),e.message.length<1&&le(Me,4),e.message.length>256&&le(Me,5),e.buttons.length<1&&le(Me,6),e.buttons.length>3&&le(Me,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&le(Me,8),he(Me,e),new Promise(((t,o)=>{const s=o=>{t({status:!!e.buttons.find((e=>e.id===o?.button_id)),data:o}),st(Ke,s)};ot(Ke,s)}))):(le(Me,1),{status:a}),q=()=>n(6.2,[o,r,s]),T=async e=>O()?(he(be,e),new Promise(((t,o)=>{rt(Xe,(o=>{e.is_close&&x(),t({status:!0,data:o})})),rt(Ye,(()=>{t({status:"closed"})}))}))):(le(be,1),{status:a}),O=()=>n(6.4,[s]),I=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),E()?(he(qe,e),{status:!0}):(le(qe,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()),he(we,e),new Promise(((t,o)=>{const s=o=>{o.req_id===e?.req_id&&(t({status:!0,data:o}),st($e,s))};ot($e,s)}))):(le(we,1),{status:a}),L=()=>n(6.4,[o,r,s]),Q=e=>D()?(he(Te,e),{status:!0}):(le(Te,1),{status:a}),D=()=>n(6.9,[o,r,s]),A=async()=>N()?(he(me),new Promise(((e,t)=>{rt(ze,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(le(me,1),{status:a}),N=()=>n(6.9,[o,r,s]),H=e=>F()?(he(Oe,e),{status:!0}):(le(Oe,1),{status:a}),F=()=>n(0,[o,r,s]),V=e=>G()?(he(Ie,e),{status:!0}):(le(Ie,1),{status:a}),G=()=>n(0,[o,r,s]),J=()=>U()?(he(Ee),{status:!0}):(le(Ee,1),{status:a}),U=()=>n(6.9,[o,r,s]),$=e=>j()?(he(We,e),{status:!0}):(le(We,1),{status:a}),j=()=>n(6.1,[o,r,s]),z=e=>K()?(he(Le,e),{status:!0}):(le(Le,1),{status:a}),K=()=>n(6.1,[o,r,s]),X=e=>Y()?(he(Qe,{color:e?.color||e?.color_key}),{status:!0}):(le(Qe,1),{status:a}),Y=()=>n(710,[o,r,s]),Z=e=>ee()?(he(De,e),{status:!0}):(le(De,1),{status:a}),ee=()=>n(6.1,[o,r,s]),te=e=>oe()?(he(Ae,e),{status:!0}):(le(Ae,1),{status:a}),oe=()=>n(0,[o,r,s]),se=e=>re()?(he(Ne,e),{status:!0}):(le(Ne,1),{status:a}),re=()=>n(0,[o,r,s]),pe=e=>ae()?(he(He,e),{status:!0}):(le(He,1),{status:a}),ae=()=>n(6.1,[o,r,s]),ne=e=>ie()?(e.query.length>256&&le(Fe,9),he(Fe,e),{status:!0}):(le(Fe,1),{status:a}),ie=()=>n(6.7,[o,r,s]),ue=e=>de()?(he(Ve,e),{status:!0}):(le(Ve,1),{status:a}),de=()=>n(6.1,[s]),ce=e=>_e()?(he(Ge,e),{status:!0}):(le(Ge,1),{status:a}),_e=()=>n(7.7,[o,r,s]),xe=()=>n(7.8,[o,r,s]),le=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)},ge=()=>{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},he=(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)}},Se="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",fe="web_app_close_scan_qr_popup",ye="web_app_data_send",Ce="web_app_expand",Re="iframe_ready",Pe="iframe_will_reload",Be="web_app_open_invoice",ke="web_app_open_link",Me="web_app_open_popup",qe="web_app_open_tg_link",Te="web_app_ready",Oe="web_app_request_theme",Ie="web_app_request_viewport",Ee="web_app_request_write_access",We="web_app_set_background_color",Le="web_app_set_header_color",Qe="web_app_set_bottom_bar_color",De="web_app_setup_back_button",Ae="web_app_setup_closing_behavior",Ne="web_app_setup_main_button",He="web_app_setup_settings_button",Fe="web_app_switch_inline_query",Ve="web_app_trigger_haptic_feedback",Ge="web_app_setup_swipe_behavior",Je="web_app_share_to_story";var Ue=(e=>(e[e.InvokeCustomMethod=Se]="InvokeCustomMethod",e[e.OpenScanQrPopup=be]="OpenScanQrPopup",e[e.ReadTextFromClipboard=we]="ReadTextFromClipboard",e[e.RequestPhone=me]="RequestPhone",e[e.Close=ve]="Close",e[e.CloseScanQrPopup=fe]="CloseScanQrPopup",e[e.DataSend=ye]="DataSend",e[e.Expand=Ce]="Expand",e[e.IframeReady=Re]="IframeReady",e[e.IframeWillReload=Pe]="IframeWillReload",e[e.OpenInvoice=Be]="OpenInvoice",e[e.OpenLink=ke]="OpenLink",e[e.OpenPopup=Me]="OpenPopup",e[e.OpenTgLink=qe]="OpenTgLink",e[e.Ready=Te]="Ready",e[e.RequestTheme=Oe]="RequestTheme",e[e.RequestViewport=Ie]="RequestViewport",e[e.RequestWriteAccess=Ee]="RequestWriteAccess",e[e.SetBackgroundColor=We]="SetBackgroundColor",e[e.SetHeaderColor=Le]="SetHeaderColor",e[e.SetBottomBarColor=Qe]="SetBottomBarColor",e[e.SetupBackButton=De]="SetupBackButton",e[e.SetupClosingBehavior=Ae]="SetupClosingBehavior",e[e.SetupMainButton=Ne]="SetupMainButton",e[e.SetupSettingsButton=He]="SetupSettingsButton",e[e.SwitchInlineQuery=Fe]="SwitchInlineQuery",e[e.TriggerHapticFeedback=Ve]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=Ge]="SetupSwipeBehavior",e[e.ShareToStory=Je]="ShareToStory",e))(Ue||{});const $e="clipboard_text_received",je="custom_method_invoked",ze="phone_requested",Ke="popup_closed",Xe="qr_text_received",Ye="scan_qr_popup_closed",Ze="theme_changed",et="viewport_changed",tt=((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===Ze&&(t.theme_params=d(t.theme_params)),tt.emit(e,t),tt.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const ot=(e,t)=>{tt.on(e,t)},st=(e,t)=>{tt.off(e,t)},rt=(e,t)=>{tt.once(e,t)};var pt=Object.freeze({__proto__:null,off:st,on:ot,once:rt});const at=e.createContext({viewport:void 0,theme:void 0,init:void 0});exports.ContextTwa=at,exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=$e,exports.EventCustomMethodInvoked=je,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=ze,exports.EventPopupClosed=Ke,exports.EventQrTextReceived=Xe,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=Ye,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=Ze,exports.EventViewportChanged=et,exports.EventWriteAccessRequested="write_access_requested",exports.Method=Ue,exports.MethodClose=ve,exports.MethodCloseScanQrPopup=fe,exports.MethodDataSend=ye,exports.MethodExpand=Ce,exports.MethodIframeReady=Re,exports.MethodIframeWillReload=Pe,exports.MethodInvokeCustomMethod=Se,exports.MethodOpenInvoice=Be,exports.MethodOpenLink=ke,exports.MethodOpenPopup=Me,exports.MethodOpenScanQrPopup=be,exports.MethodOpenTgLink=qe,exports.MethodReadTextFromClipboard=we,exports.MethodReady=Te,exports.MethodRequestPhone=me,exports.MethodRequestTheme=Oe,exports.MethodRequestViewport=Ie,exports.MethodRequestWriteAccess=Ee,exports.MethodSetBackgroundColor=We,exports.MethodSetBottomBarColor=Qe,exports.MethodSetHeaderColor=Le,exports.MethodSetupBackButton=De,exports.MethodSetupClosingBehavior=Ae,exports.MethodSetupMainButton=Ne,exports.MethodSetupSettingsButton=He,exports.MethodSetupSwipeBehavior=Ge,exports.MethodShareToStory=Je,exports.MethodSwitchInlineQuery=Fe,exports.MethodTriggerHapticFeedback=Ve,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",ge())};t();const o=e=>{t(),r("viewport",{...e,safe_area_bottom:e.is_expanded&&e.is_state_stable?window.outerHeight-e.height:0})};ot(et,o),V();const s=e=>{t(),r("theme",e)};return ot(Ze,s),V(),e.onCleanup((()=>{st(et,o),st(Ze,s)})),()=>{st(et,o),st(Ze,s)}})),at.Provider({value:s,children:o.children})},exports.TG_DESKTOP=r,exports.TG_PHONE=s,exports.TG_WEB=o,exports.bridgeClose=c,exports.bridgeCloseScanQrPopup=x,exports.bridgeDataSend=g,exports.bridgeExpand=S,exports.bridgeGetInitData=ge,exports.bridgeGetThemeParams=d,exports.bridgeIframeReady=w,exports.bridgeIframeWillReload=v,exports.bridgeInvokeCustomMethod=y,exports.bridgeOpenInvoice=R,exports.bridgeOpenLink=B,exports.bridgeOpenPopup=M,exports.bridgeOpenScanQrPopup=T,exports.bridgeOpenTgLink=I,exports.bridgeReadTextFromClipboard=W,exports.bridgeReady=Q,exports.bridgeRequestPhone=A,exports.bridgeRequestTheme=H,exports.bridgeRequestViewport=V,exports.bridgeRequestWriteAccess=J,exports.bridgeSend=he,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.bridgeShareToStory=e=>xe()?(he(Je,e),{status:!0}):(le(Je,1),{status:a}),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((()=>{ot(et,s),he(Ie)})),e.onCleanup((()=>{st(et,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=pt,exports.sender=he,exports.supportClose=_,exports.supportCloseScanQrPopup=l,exports.supportDataSend=h,exports.supportExpand=b,exports.supportIframeReady=m,exports.supportIframeWillReload=f,exports.supportInvokeCustomMethod=C,exports.supportOpenInvoice=P,exports.supportOpenLink=k,exports.supportOpenPopup=q,exports.supportOpenScanQrPopup=O,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.supportShareToStory=xe,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},c=e=>_()?(fe(ye,e),{status:!0}):(me(ye,1),{status:a}),_=()=>n(0,[o,r,s]),l=e=>x()?(fe(Me,e),{status:!0}):(me(Me,1),{status:a}),x=()=>n(6.4,[s]),g=e=>h()?(fe(Te,e),{status:!0}):(me(Te,1),{status:a}),h=()=>n(0,[o,r,s]),S=e=>b()?(fe(Pe,e),{status:!0}):(me(Pe,1),{status:a}),b=()=>n(0,[s]),w=e=>m()?(fe(Be,e),{status:!0}):(me(Be,1),{status:a}),m=()=>n(0,[o]),v=()=>f()?(fe(Be),{status:!0}):(me(Be,1),{status:a}),f=()=>n(0,[o]),C=async e=>R()?(void 0===e.req_id&&(e.req_id=i()),fe(Ce,e),new Promise(((t,o)=>{const s=o=>{o.req_id===e.req_id&&(t({status:!0,data:o}),St(nt,s))};ht(nt,s)}))):(me(Ce,1),{status:a}),R=()=>n(6.9,[o,r,s]),q=e=>k()?(fe(Ie,e),{status:!0}):(me(Ie,1),{status:a}),k=()=>n(6.1,[o,r,s]),y=e=>M()?(fe(Ee,e),{status:!0}):(me(Ee,1),{status:a}),M=()=>n(6.4,[o,r,s]),T=async e=>P()?(e.title.length>64&&me(Ae,3),e.message.length<1&&me(Ae,4),e.message.length>256&&me(Ae,5),e.buttons.length<1&&me(Ae,6),e.buttons.length>3&&me(Ae,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&me(Ae,8),fe(Ae,e),new Promise(((t,o)=>{const s=o=>{t({status:!!e.buttons.find((e=>e.id===o?.button_id)),data:o}),St(ut,s)};ht(ut,s)}))):(me(Ae,1),{status:a}),P=()=>n(6.2,[o,r,s]),B=async e=>O()?(fe(Re,e),new Promise(((t,o)=>{bt(dt,(o=>{e.is_close&&l(),t({status:!0,data:o})})),bt(ct,(()=>{t({status:"closed"})}))}))):(me(Re,1),{status:a}),O=()=>n(6.4,[s]),I=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),E()?(fe(He,e),{status:!0}):(me(He,1),{status:a})),E=()=>n(7,[o,r,s]),A=async e=>H()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=i()),fe(qe,e),new Promise(((t,o)=>{const s=o=>{o.req_id===e?.req_id&&(t({status:!0,data:o}),St(at,s))};ht(at,s)}))):(me(qe,1),{status:a}),H=()=>n(6.4,[o,r,s]),L=e=>W()?(fe(Le,e),{status:!0}):(me(Le,1),{status:a}),W=()=>n(6.9,[o,r,s]),F=async()=>Q()?(fe(ke),new Promise(((e,t)=>{bt(it,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(me(ke,1),{status:a}),Q=()=>n(6.9,[o,r,s]),D=e=>N()?(fe(We,e),{status:!0}):(me(We,1),{status:a}),N=()=>n(0,[o,r,s]),V=e=>G()?(fe(Fe,e),{status:!0}):(me(Fe,1),{status:a}),G=()=>n(0,[o,r,s]),J=()=>U()?(fe(Qe),{status:!0}):(me(Qe,1),{status:a}),U=()=>n(6.9,[o,r,s]),$=e=>j()?(fe(De,e),{status:!0}):(me(De,1),{status:a}),j=()=>n(6.1,[o,r,s]),z=e=>K()?(fe(Ne,e),{status:!0}):(me(Ne,1),{status:a}),K=()=>n(6.1,[o,r,s]),X=e=>Y()?(fe(Ve,{color:e?.color||e?.color_key}),{status:!0}):(me(Ve,1),{status:a}),Y=()=>n(710,[o,r,s]),Z=e=>ee()?(fe(Ge,e),{status:!0}):(me(Ge,1),{status:a}),ee=()=>n(6.1,[o,r,s]),te=e=>oe()?(fe(Je,e),{status:!0}):(me(Je,1),{status:a}),oe=()=>n(0,[o,r,s]),se=e=>re()?(fe(Ue,e),{status:!0}):(me(Ue,1),{status:a}),re=()=>n(0,[o,r,s]),pe=e=>ae()?(fe($e,e),{status:!0}):(me($e,1),{status:a}),ae=()=>n(6.1,[o,r,s]),ne=e=>ie()?(e.query.length>256&&me(je,9),fe(je,e),{status:!0}):(me(je,1),{status:a}),ie=()=>n(6.7,[o,r,s]),ue=e=>de()?(fe(ze,e),{status:!0}):(me(ze,1),{status:a}),de=()=>n(6.1,[s]),ce=e=>_e()?(fe(Ke,e),{status:!0}):(me(Ke,1),{status:a}),_e=()=>n(7.7,[o,r,s]),le=()=>n(7.8,[o,r,s]),xe=()=>n(8,[r,s]),ge=()=>n(8,[r,s]),he=()=>n(8,[o,r,s]),Se=()=>n(8,[o,r,s]),be=()=>n(8,[o,r,s]),we=()=>n(8,[o,r,s]),me=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)},ve=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void me("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},fe=(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){me("postMessage Iframe",10)}},Ce="web_app_invoke_custom_method",Re="web_app_open_scan_qr_popup",qe="web_app_read_text_from_clipboard",ke="web_app_request_phone",ye="web_app_close",Me="web_app_close_scan_qr_popup",Te="web_app_data_send",Pe="web_app_expand",Be="iframe_ready",Oe="iframe_will_reload",Ie="web_app_open_invoice",Ee="web_app_open_link",Ae="web_app_open_popup",He="web_app_open_tg_link",Le="web_app_ready",We="web_app_request_theme",Fe="web_app_request_viewport",Qe="web_app_request_write_access",De="web_app_set_background_color",Ne="web_app_set_header_color",Ve="web_app_set_bottom_bar_color",Ge="web_app_setup_back_button",Je="web_app_setup_closing_behavior",Ue="web_app_setup_main_button",$e="web_app_setup_settings_button",je="web_app_switch_inline_query",ze="web_app_trigger_haptic_feedback",Ke="web_app_setup_swipe_behavior",Xe="web_app_share_to_story",Ye="web_app_request_safe_area",Ze="web_app_request_content_safe_area",et="web_app_request_fullscreen",tt="web_app_exit_fullscreen",ot="web_app_toggle_orientation_lock",st="web_app_add_to_home_screen",rt="web_app_check_home_screen";var pt=(e=>(e[e.InvokeCustomMethod=Ce]="InvokeCustomMethod",e[e.OpenScanQrPopup=Re]="OpenScanQrPopup",e[e.ReadTextFromClipboard=qe]="ReadTextFromClipboard",e[e.RequestPhone=ke]="RequestPhone",e[e.Close=ye]="Close",e[e.CloseScanQrPopup=Me]="CloseScanQrPopup",e[e.DataSend=Te]="DataSend",e[e.Expand=Pe]="Expand",e[e.IframeReady=Be]="IframeReady",e[e.IframeWillReload=Oe]="IframeWillReload",e[e.OpenInvoice=Ie]="OpenInvoice",e[e.OpenLink=Ee]="OpenLink",e[e.OpenPopup=Ae]="OpenPopup",e[e.OpenTgLink=He]="OpenTgLink",e[e.Ready=Le]="Ready",e[e.RequestTheme=We]="RequestTheme",e[e.RequestViewport=Fe]="RequestViewport",e[e.RequestWriteAccess=Qe]="RequestWriteAccess",e[e.SetBackgroundColor=De]="SetBackgroundColor",e[e.SetHeaderColor=Ne]="SetHeaderColor",e[e.SetBottomBarColor=Ve]="SetBottomBarColor",e[e.SetupBackButton=Ge]="SetupBackButton",e[e.SetupClosingBehavior=Je]="SetupClosingBehavior",e[e.SetupMainButton=Ue]="SetupMainButton",e[e.SetupSettingsButton=$e]="SetupSettingsButton",e[e.SwitchInlineQuery=je]="SwitchInlineQuery",e[e.TriggerHapticFeedback=ze]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=Ke]="SetupSwipeBehavior",e[e.ShareToStory=Xe]="ShareToStory",e[e.RequestSafeArea=Ye]="RequestSafeArea",e[e.RequestContentSafeArea=Ze]="RequestContentSafeArea",e[e.RequestFullscreen=et]="RequestFullscreen",e[e.ExitFullscreen=tt]="ExitFullscreen",e[e.ToggleOrientationLock=ot]="ToggleOrientationLock",e[e.AddToHomeScreen=st]="AddToHomeScreen",e[e.CheckHomeScreen=rt]="CheckHomeScreen",e))(pt||{});const at="clipboard_text_received",nt="custom_method_invoked",it="phone_requested",ut="popup_closed",dt="qr_text_received",ct="scan_qr_popup_closed",_t="theme_changed",lt="viewport_changed",xt="web_app_check_home_screen",gt=((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===_t&&(t.theme_params=d(t.theme_params)),gt.emit(e,t),gt.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const ht=(e,t)=>{gt.on(e,t)},St=(e,t)=>{gt.off(e,t)},bt=(e,t)=>{gt.once(e,t)};var wt=Object.freeze({__proto__:null,off:St,on:ht,once:bt});const mt=e.createContext({viewport:void 0,theme:void 0,init:void 0});exports.ContextTwa=mt,exports.EventBackButtonPressed="back_button_pressed",exports.EventCheckHomeScreen=xt,exports.EventClipboardTextReceived=at,exports.EventContentSafeAreaChanged="content_safe_area_changed",exports.EventCustomMethodInvoked=nt,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=it,exports.EventPopupClosed=ut,exports.EventQrTextReceived=dt,exports.EventReloadIframe="reload_iframe",exports.EventSafeAreaChanged="safe_area_changed",exports.EventScanQrPopupClosed=ct,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=_t,exports.EventViewportChanged=lt,exports.EventWriteAccessRequested="write_access_requested",exports.Method=pt,exports.MethodAddToHomeScreen=st,exports.MethodCheckHomeScreen=rt,exports.MethodClose=ye,exports.MethodCloseScanQrPopup=Me,exports.MethodDataSend=Te,exports.MethodExitFullscreen=tt,exports.MethodExpand=Pe,exports.MethodIframeReady=Be,exports.MethodIframeWillReload=Oe,exports.MethodInvokeCustomMethod=Ce,exports.MethodOpenInvoice=Ie,exports.MethodOpenLink=Ee,exports.MethodOpenPopup=Ae,exports.MethodOpenScanQrPopup=Re,exports.MethodOpenTgLink=He,exports.MethodReadTextFromClipboard=qe,exports.MethodReady=Le,exports.MethodRequestContentSafeArea=Ze,exports.MethodRequestFullscreen=et,exports.MethodRequestPhone=ke,exports.MethodRequestSafeArea=Ye,exports.MethodRequestTheme=We,exports.MethodRequestViewport=Fe,exports.MethodRequestWriteAccess=Qe,exports.MethodSetBackgroundColor=De,exports.MethodSetBottomBarColor=Ve,exports.MethodSetHeaderColor=Ne,exports.MethodSetupBackButton=Ge,exports.MethodSetupClosingBehavior=Je,exports.MethodSetupMainButton=Ue,exports.MethodSetupSettingsButton=$e,exports.MethodSetupSwipeBehavior=Ke,exports.MethodShareToStory=Xe,exports.MethodSwitchInlineQuery=je,exports.MethodToggleOrientationLock=ot,exports.MethodTriggerHapticFeedback=ze,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",ve())};t();const o=e=>{t(),r("viewport",{...e,safe_area_bottom:e.is_expanded&&e.is_state_stable?window.outerHeight-e.height:0})};ht(lt,o),V();const s=e=>{t(),r("theme",e)};return ht(_t,s),V(),e.onCleanup((()=>{St(lt,o),St(_t,s)})),()=>{St(lt,o),St(_t,s)}})),mt.Provider({value:s,children:o.children})},exports.TG_DESKTOP=r,exports.TG_PHONE=s,exports.TG_WEB=o,exports.bridgeAddToHomeScreen=()=>ge()?(fe(st),{status:!0}):(me(st,1),{status:a}),exports.bridgeCheckHomeScreen=async e=>xe()?(fe(rt,e),new Promise(((e,t)=>{const o=t=>{e({status:!0,data:t}),St(xt,o)};ht(xt,o)}))):(me(rt,1),{status:a,data:void 0}),exports.bridgeClose=c,exports.bridgeCloseScanQrPopup=l,exports.bridgeDataSend=g,exports.bridgeExpand=S,exports.bridgeGetInitData=ve,exports.bridgeGetThemeParams=d,exports.bridgeIframeReady=w,exports.bridgeIframeWillReload=v,exports.bridgeInvokeCustomMethod=C,exports.bridgeOpenInvoice=q,exports.bridgeOpenLink=y,exports.bridgeOpenPopup=T,exports.bridgeOpenScanQrPopup=B,exports.bridgeOpenTgLink=I,exports.bridgeReadTextFromClipboard=A,exports.bridgeReady=L,exports.bridgeRequestContentSafeAreaInset=()=>Se()?(fe(Ze),{status:!0}):(me(Ze,1),{status:a}),exports.bridgeRequestPhone=F,exports.bridgeRequestSafeAreaInset=()=>he()?(fe(Ye),{status:!0}):(me(Ye,1),{status:a}),exports.bridgeRequestTheme=D,exports.bridgeRequestViewport=V,exports.bridgeRequestWriteAccess=J,exports.bridgeSend=fe,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.bridgeSetupFullScreen=e=>{const t=e?.is_full||!1;return be()?(fe(t?et:tt),{status:!0}):(me(t?et:tt,1),{status:a})},exports.bridgeSetupMainButton=se,exports.bridgeSetupOrientation=e=>we()?(fe(ot),{status:!0}):(me(ot,1),{status:a}),exports.bridgeSetupSettingsButton=pe,exports.bridgeSetupSwipeBehavior=ce,exports.bridgeShareToStory=e=>le()?(fe(Xe,e),{status:!0}):(me(Xe,1),{status:a}),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((()=>{ht(lt,s),fe(Fe)})),e.onCleanup((()=>{St(lt,s)})),t},exports.debug=me,exports.getAppData=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},exports.getPlatform=p,exports.listener=wt,exports.sender=fe,exports.supportAddToHomeScreen=ge,exports.supportCheckHomeScreen=xe,exports.supportClose=_,exports.supportCloseScanQrPopup=x,exports.supportDataSend=h,exports.supportExpand=b,exports.supportIframeReady=m,exports.supportIframeWillReload=f,exports.supportInvokeCustomMethod=R,exports.supportOpenInvoice=k,exports.supportOpenLink=M,exports.supportOpenPopup=P,exports.supportOpenScanQrPopup=O,exports.supportOpenTgLink=E,exports.supportReadTextFromClipboard=H,exports.supportReady=W,exports.supportRequestContentSafeAreaInset=Se,exports.supportRequestPhone=Q,exports.supportRequestSafeAreaInset=he,exports.supportRequestTheme=N,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.supportSetupFullScreen=be,exports.supportSetupMainButton=re,exports.supportSetupOrientation=we,exports.supportSetupSettingsButton=ae,exports.supportSetupSwipeBehavior=_e,exports.supportShareToStory=le,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 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((()=>{St(wt,r),Re($e)})),s((()=>{vt(wt,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},w=e=>m()?(Re(Ie,e),{status:!0}):(qe(Ie,1),{status:d}),m=()=>c(0,[i,u,p]),h=e=>S()?(Re(Te,e),{status:!0}):(qe(Te,1),{status:d}),S=()=>c(6.4,[p]),v=e=>f()?(Re(Le,e),{status:!0}):(qe(Le,1),{status:d}),f=()=>c(0,[i,u,p]),y=e=>k()?(Re(We,e),{status:!0}):(qe(We,1),{status:d}),k=()=>c(0,[p]),q=e=>P()?(Re(Ne,e),{status:!0}):(qe(Ne,1),{status:d}),P=()=>c(0,[i]),R=()=>O()?(Re(Ne),{status:!0}):(qe(Ne,1),{status:d}),O=()=>c(0,[i]),x=async e=>B()?(void 0===e.req_id&&(e.req_id=g()),Re(Oe,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),vt(rt,a))};St(rt,a)}))):(qe(Oe,1),{status:d}),B=()=>c(6.9,[i,u,p]),C=e=>I()?(Re(Ee,e),{status:!0}):(qe(Ee,1),{status:d}),I=()=>c(6.1,[i,u,p]),T=e=>L()?(Re(Me,e),{status:!0}):(qe(Me,1),{status:d}),L=()=>c(6.4,[i,u,p]),W=async e=>N()?(e.title.length>64&&qe(Qe,3),e.message.length<1&&qe(Qe,4),e.message.length>256&&qe(Qe,5),e.buttons.length<1&&qe(Qe,6),e.buttons.length>3&&qe(Qe,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&qe(Qe,8),Re(Qe,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),vt(ut,a)};St(ut,a)}))):(qe(Qe,1),{status:d}),N=()=>c(6.2,[i,u,p]),D=async e=>E()?(Re(xe,e),new Promise(((t,s)=>{ft(dt,(s=>{e.is_close&&h(),t({status:!0,data:s})})),ft(ct,(()=>{t({status:"closed"})}))}))):(qe(xe,1),{status:d}),E=()=>c(6.4,[p]),M=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),Q()?(Re(Ae,e),{status:!0}):(qe(Ae,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()),Re(Be,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),vt(ot,a))};St(ot,a)}))):(qe(Be,1),{status:d}),H=()=>c(6.4,[i,u,p]),J=e=>$()?(Re(He,e),{status:!0}):(qe(He,1),{status:d}),$=()=>c(6.9,[i,u,p]),j=async()=>F()?(Re(Ce),new Promise(((e,t)=>{ft(pt,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(qe(Ce,1),{status:d}),F=()=>c(6.9,[i,u,p]),U=e=>V()?(Re(Je,e),{status:!0}):(qe(Je,1),{status:d}),V=()=>c(0,[i,u,p]),G=e=>z()?(Re($e,e),{status:!0}):(qe($e,1),{status:d}),z=()=>c(0,[i,u,p]),K=()=>X()?(Re(je),{status:!0}):(qe(je,1),{status:d}),X=()=>c(6.9,[i,u,p]),Y=e=>Z()?(Re(Fe,e),{status:!0}):(qe(Fe,1),{status:d}),Z=()=>c(6.1,[i,u,p]),ee=e=>te()?(Re(Ue,e),{status:!0}):(qe(Ue,1),{status:d}),te=()=>c(6.1,[i,u,p]),se=e=>ae()?(Re(Ve,{color:e?.color||e?.color_key}),{status:!0}):(qe(Ve,1),{status:d}),ae=()=>c(710,[i,u,p]),oe=e=>re()?(Re(Ge,e),{status:!0}):(qe(Ge,1),{status:d}),re=()=>c(6.1,[i,u,p]),ne=e=>ie()?(Re(ze,e),{status:!0}):(qe(ze,1),{status:d}),ie=()=>c(0,[i,u,p]),pe=e=>ue()?(Re(Ke,e),{status:!0}):(qe(Ke,1),{status:d}),ue=()=>c(0,[i,u,p]),_e=e=>de()?(Re(Xe,e),{status:!0}):(qe(Xe,1),{status:d}),de=()=>c(6.1,[i,u,p]),ce=e=>ge()?(e.query.length>256&&qe(Ye,9),Re(Ye,e),{status:!0}):(qe(Ye,1),{status:d}),ge=()=>c(6.7,[i,u,p]),le=e=>be()?(Re(Ze,e),{status:!0}):(qe(Ze,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()?(Re(et,e),{status:!0}):(qe(et,1),{status:d}),fe=()=>c(7.7,[i,u,p]),ye=e=>ke()?(Re(tt,e),{status:!0}):(qe(tt,1),{status:d}),ke=()=>c(7.8,[i,u,p]),qe=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)},Pe=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void qe("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},Re=(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){qe("postMessage Iframe",10)}},Oe="web_app_invoke_custom_method",xe="web_app_open_scan_qr_popup",Be="web_app_read_text_from_clipboard",Ce="web_app_request_phone",Ie="web_app_close",Te="web_app_close_scan_qr_popup",Le="web_app_data_send",We="web_app_expand",Ne="iframe_ready",De="iframe_will_reload",Ee="web_app_open_invoice",Me="web_app_open_link",Qe="web_app_open_popup",Ae="web_app_open_tg_link",He="web_app_ready",Je="web_app_request_theme",$e="web_app_request_viewport",je="web_app_request_write_access",Fe="web_app_set_background_color",Ue="web_app_set_header_color",Ve="web_app_set_bottom_bar_color",Ge="web_app_setup_back_button",ze="web_app_setup_closing_behavior",Ke="web_app_setup_main_button",Xe="web_app_setup_settings_button",Ye="web_app_switch_inline_query",Ze="web_app_trigger_haptic_feedback",et="web_app_setup_swipe_behavior",tt="web_app_share_to_story";var st=(e=>(e[e.InvokeCustomMethod=Oe]="InvokeCustomMethod",e[e.OpenScanQrPopup=xe]="OpenScanQrPopup",e[e.ReadTextFromClipboard=Be]="ReadTextFromClipboard",e[e.RequestPhone=Ce]="RequestPhone",e[e.Close=Ie]="Close",e[e.CloseScanQrPopup=Te]="CloseScanQrPopup",e[e.DataSend=Le]="DataSend",e[e.Expand=We]="Expand",e[e.IframeReady=Ne]="IframeReady",e[e.IframeWillReload=De]="IframeWillReload",e[e.OpenInvoice=Ee]="OpenInvoice",e[e.OpenLink=Me]="OpenLink",e[e.OpenPopup=Qe]="OpenPopup",e[e.OpenTgLink=Ae]="OpenTgLink",e[e.Ready=He]="Ready",e[e.RequestTheme=Je]="RequestTheme",e[e.RequestViewport=$e]="RequestViewport",e[e.RequestWriteAccess=je]="RequestWriteAccess",e[e.SetBackgroundColor=Fe]="SetBackgroundColor",e[e.SetHeaderColor=Ue]="SetHeaderColor",e[e.SetBottomBarColor=Ve]="SetBottomBarColor",e[e.SetupBackButton=Ge]="SetupBackButton",e[e.SetupClosingBehavior=ze]="SetupClosingBehavior",e[e.SetupMainButton=Ke]="SetupMainButton",e[e.SetupSettingsButton=Xe]="SetupSettingsButton",e[e.SwitchInlineQuery=Ye]="SwitchInlineQuery",e[e.TriggerHapticFeedback=Ze]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=et]="SetupSwipeBehavior",e[e.ShareToStory=tt]="ShareToStory",e))(st||{});const at="back_button_pressed",ot="clipboard_text_received",rt="custom_method_invoked",nt="invoice_closed",it="main_button_pressed",pt="phone_requested",ut="popup_closed",_t="reload_iframe",dt="qr_text_received",ct="scan_qr_popup_closed",gt="set_custom_style",lt="settings_button_pressed",bt="theme_changed",wt="viewport_changed",mt="write_access_requested",ht=((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===bt&&(t.theme_params=b(t.theme_params)),ht.emit(e,t),ht.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const St=(e,t)=>{ht.on(e,t)},vt=(e,t)=>{ht.off(e,t)},ft=(e,t)=>{ht.once(e,t)};var yt=Object.freeze({__proto__:null,off:vt,on:St,once:ft});const kt=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},qt=a({viewport:void 0,theme:void 0,init:void 0}),Pt=e=>{const[t,a]=r({viewport:void 0,theme:void 0,init:void 0});return o((()=>{const e=()=>{a("init",Pe())};e();const t=t=>{e(),a("viewport",{...t,safe_area_bottom:t.is_expanded&&t.is_state_stable?window.outerHeight-t.height:0})};St(wt,t),G();const o=t=>{e(),a("theme",t)};return St(bt,o),G(),s((()=>{vt(wt,t),vt(bt,o)})),()=>{vt(wt,t),vt(bt,o)}})),qt.Provider({value:t,children:e.children})};export{qt as ContextTwa,at as EventBackButtonPressed,ot as EventClipboardTextReceived,rt as EventCustomMethodInvoked,nt as EventInvoiceClosed,it as EventMainButtonPressed,pt as EventPhoneRequested,ut as EventPopupClosed,dt as EventQrTextReceived,_t as EventReloadIframe,ct as EventScanQrPopupClosed,gt as EventSetCustomStyle,lt as EventSettingsButtonPressed,bt as EventThemeChanged,wt as EventViewportChanged,mt as EventWriteAccessRequested,st as Method,Ie as MethodClose,Te as MethodCloseScanQrPopup,Le as MethodDataSend,We as MethodExpand,Ne as MethodIframeReady,De as MethodIframeWillReload,Oe as MethodInvokeCustomMethod,Ee as MethodOpenInvoice,Me as MethodOpenLink,Qe as MethodOpenPopup,xe as MethodOpenScanQrPopup,Ae as MethodOpenTgLink,Be as MethodReadTextFromClipboard,He as MethodReady,Ce as MethodRequestPhone,Je as MethodRequestTheme,$e as MethodRequestViewport,je as MethodRequestWriteAccess,Fe as MethodSetBackgroundColor,Ve as MethodSetBottomBarColor,Ue as MethodSetHeaderColor,Ge as MethodSetupBackButton,ze as MethodSetupClosingBehavior,Ke as MethodSetupMainButton,Xe as MethodSetupSettingsButton,et as MethodSetupSwipeBehavior,tt as MethodShareToStory,Ye as MethodSwitchInlineQuery,Ze as MethodTriggerHapticFeedback,d as NOT_SUPPORTED,Pt 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,Pe 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,Re 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,ye as bridgeShareToStory,ce as bridgeSwitchInlineQuery,le as bridgeTriggerHapticFeedback,n as createIsViewportChanged,qe as debug,kt as getAppData,_ as getPlatform,yt as listener,Re 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,ke as supportShareToStory,ge as supportSwitchInlineQuery,be as supportTriggerHapticFeedback};
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 n=()=>{const[a,r]=e({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>r(e);return t((()=>{Mt(Wt,o),Fe(tt)})),s((()=>{Qt(Wt,o)})),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(_())},l=()=>Math.random().toString(36).substring(3,9),g=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},b=e=>{const t=window.location.hash.slice(1),s=new URLSearchParams(t),a=JSON.parse(s.get("tgWebAppThemeParams")??""),r=e||a;for(var o of Object.keys(r)){var n=g(r[o]);"string"==typeof n&&(r[o]=n)}return"#1c1c1d"==r?.bg_color&&r?.bg_color==r?.secondary_bg_color&&(r.secondary_bg_color="#2c2c2e"),r},w=e=>m()?(Fe(Je,e),{status:!0}):(He(Je,1),{status:d}),m=()=>c(0,[i,u,p]),h=e=>S()?(Fe($e,e),{status:!0}):(He($e,1),{status:d}),S=()=>c(6.4,[p]),f=e=>v()?(Fe(je,e),{status:!0}):(He(je,1),{status:d}),v=()=>c(0,[i,u,p]),y=e=>q()?(Fe(Ue,e),{status:!0}):(He(Ue,1),{status:d}),q=()=>c(0,[p]),k=e=>R()?(Fe(Ve,e),{status:!0}):(He(Ve,1),{status:d}),R=()=>c(0,[i]),C=()=>P()?(Fe(Ve),{status:!0}):(He(Ve,1),{status:d}),P=()=>c(0,[i]),O=async e=>x()?(void 0===e.req_id&&(e.req_id=l()),Fe(Ne,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Qt(kt,a))};Mt(kt,a)}))):(He(Ne,1),{status:d}),x=()=>c(6.9,[i,u,p]),T=e=>B()?(Fe(ze,e),{status:!0}):(He(ze,1),{status:d}),B=()=>c(6.1,[i,u,p]),I=e=>A()?(Fe(Ke,e),{status:!0}):(He(Ke,1),{status:d}),A=()=>c(6.4,[i,u,p]),L=async e=>W()?(e.title.length>64&&He(Xe,3),e.message.length<1&&He(Xe,4),e.message.length>256&&He(Xe,5),e.buttons.length<1&&He(Xe,6),e.buttons.length>3&&He(Xe,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&He(Xe,8),Fe(Xe,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Qt(Ot,a)};Mt(Ot,a)}))):(He(Xe,1),{status:d}),W=()=>c(6.2,[i,u,p]),H=async e=>E()?(Fe(De,e),new Promise(((t,s)=>{Jt(Tt,(s=>{e.is_close&&h(),t({status:!0,data:s})})),Jt(Bt,(()=>{t({status:"closed"})}))}))):(He(De,1),{status:d}),E=()=>c(6.4,[p]),F=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),N()?(Fe(Ye,e),{status:!0}):(He(Ye,1),{status:d})),N=()=>c(7,[i,u,p]),D=async e=>M()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=l()),Fe(Me,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),Qt(qt,a))};Mt(qt,a)}))):(He(Me,1),{status:d}),M=()=>c(6.4,[i,u,p]),Q=e=>J()?(Fe(Ze,e),{status:!0}):(He(Ze,1),{status:d}),J=()=>c(6.9,[i,u,p]),$=async()=>j()?(Fe(Qe),new Promise(((e,t)=>{Jt(Pt,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(He(Qe,1),{status:d}),j=()=>c(6.9,[i,u,p]),U=e=>V()?(Fe(et,e),{status:!0}):(He(et,1),{status:d}),V=()=>c(0,[i,u,p]),G=e=>z()?(Fe(tt,e),{status:!0}):(He(tt,1),{status:d}),z=()=>c(0,[i,u,p]),K=()=>X()?(Fe(st),{status:!0}):(He(st,1),{status:d}),X=()=>c(6.9,[i,u,p]),Y=e=>Z()?(Fe(at,e),{status:!0}):(He(at,1),{status:d}),Z=()=>c(6.1,[i,u,p]),ee=e=>te()?(Fe(rt,e),{status:!0}):(He(rt,1),{status:d}),te=()=>c(6.1,[i,u,p]),se=e=>ae()?(Fe(ot,{color:e?.color||e?.color_key}),{status:!0}):(He(ot,1),{status:d}),ae=()=>c(710,[i,u,p]),re=e=>oe()?(Fe(nt,e),{status:!0}):(He(nt,1),{status:d}),oe=()=>c(6.1,[i,u,p]),ne=e=>ie()?(Fe(it,e),{status:!0}):(He(it,1),{status:d}),ie=()=>c(0,[i,u,p]),pe=e=>ue()?(Fe(pt,e),{status:!0}):(He(pt,1),{status:d}),ue=()=>c(0,[i,u,p]),_e=e=>de()?(Fe(ut,e),{status:!0}):(He(ut,1),{status:d}),de=()=>c(6.1,[i,u,p]),ce=e=>le()?(e.query.length>256&&He(_t,9),Fe(_t,e),{status:!0}):(He(_t,1),{status:d}),le=()=>c(6.7,[i,u,p]),ge=e=>be()?(Fe(dt,e),{status:!0}):(He(dt,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,fe=e=>ve()?(Fe(ct,e),{status:!0}):(He(ct,1),{status:d}),ve=()=>c(7.7,[i,u,p]),ye=e=>qe()?(Fe(lt,e),{status:!0}):(He(lt,1),{status:d}),qe=()=>c(7.8,[i,u,p]),ke=async e=>Re()?(Fe(ft,e),new Promise(((e,t)=>{const s=t=>{e({status:!0,data:t}),Qt(Nt,s)};Mt(Nt,s)}))):(He(ft,1),{status:d,data:void 0}),Re=()=>c(8,[u,p]),Ce=()=>Pe()?(Fe(St),{status:!0}):(He(St,1),{status:d}),Pe=()=>c(8,[u,p]),Oe=()=>xe()?(Fe(gt),{status:!0}):(He(gt,1),{status:d}),xe=()=>c(8,[i,u,p]),Te=()=>Be()?(Fe(bt),{status:!0}):(He(bt,1),{status:d}),Be=()=>c(8,[i,u,p]),Ie=e=>{const t=e?.is_full||!1;return Ae()?(Fe(t?wt:mt),{status:!0}):(He(t?wt:mt,1),{status:d})},Ae=()=>c(8,[i,u,p]),Le=e=>We()?(Fe(ht),{status:!0}):(He(ht,1),{status:d}),We=()=>c(8,[i,u,p]),He=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)},Ee=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void He("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},Fe=(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){He("postMessage Iframe",10)}},Ne="web_app_invoke_custom_method",De="web_app_open_scan_qr_popup",Me="web_app_read_text_from_clipboard",Qe="web_app_request_phone",Je="web_app_close",$e="web_app_close_scan_qr_popup",je="web_app_data_send",Ue="web_app_expand",Ve="iframe_ready",Ge="iframe_will_reload",ze="web_app_open_invoice",Ke="web_app_open_link",Xe="web_app_open_popup",Ye="web_app_open_tg_link",Ze="web_app_ready",et="web_app_request_theme",tt="web_app_request_viewport",st="web_app_request_write_access",at="web_app_set_background_color",rt="web_app_set_header_color",ot="web_app_set_bottom_bar_color",nt="web_app_setup_back_button",it="web_app_setup_closing_behavior",pt="web_app_setup_main_button",ut="web_app_setup_settings_button",_t="web_app_switch_inline_query",dt="web_app_trigger_haptic_feedback",ct="web_app_setup_swipe_behavior",lt="web_app_share_to_story",gt="web_app_request_safe_area",bt="web_app_request_content_safe_area",wt="web_app_request_fullscreen",mt="web_app_exit_fullscreen",ht="web_app_toggle_orientation_lock",St="web_app_add_to_home_screen",ft="web_app_check_home_screen";var vt=(e=>(e[e.InvokeCustomMethod=Ne]="InvokeCustomMethod",e[e.OpenScanQrPopup=De]="OpenScanQrPopup",e[e.ReadTextFromClipboard=Me]="ReadTextFromClipboard",e[e.RequestPhone=Qe]="RequestPhone",e[e.Close=Je]="Close",e[e.CloseScanQrPopup=$e]="CloseScanQrPopup",e[e.DataSend=je]="DataSend",e[e.Expand=Ue]="Expand",e[e.IframeReady=Ve]="IframeReady",e[e.IframeWillReload=Ge]="IframeWillReload",e[e.OpenInvoice=ze]="OpenInvoice",e[e.OpenLink=Ke]="OpenLink",e[e.OpenPopup=Xe]="OpenPopup",e[e.OpenTgLink=Ye]="OpenTgLink",e[e.Ready=Ze]="Ready",e[e.RequestTheme=et]="RequestTheme",e[e.RequestViewport=tt]="RequestViewport",e[e.RequestWriteAccess=st]="RequestWriteAccess",e[e.SetBackgroundColor=at]="SetBackgroundColor",e[e.SetHeaderColor=rt]="SetHeaderColor",e[e.SetBottomBarColor=ot]="SetBottomBarColor",e[e.SetupBackButton=nt]="SetupBackButton",e[e.SetupClosingBehavior=it]="SetupClosingBehavior",e[e.SetupMainButton=pt]="SetupMainButton",e[e.SetupSettingsButton=ut]="SetupSettingsButton",e[e.SwitchInlineQuery=_t]="SwitchInlineQuery",e[e.TriggerHapticFeedback=dt]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=ct]="SetupSwipeBehavior",e[e.ShareToStory=lt]="ShareToStory",e[e.RequestSafeArea=gt]="RequestSafeArea",e[e.RequestContentSafeArea=bt]="RequestContentSafeArea",e[e.RequestFullscreen=wt]="RequestFullscreen",e[e.ExitFullscreen=mt]="ExitFullscreen",e[e.ToggleOrientationLock=ht]="ToggleOrientationLock",e[e.AddToHomeScreen=St]="AddToHomeScreen",e[e.CheckHomeScreen=ft]="CheckHomeScreen",e))(vt||{});const yt="back_button_pressed",qt="clipboard_text_received",kt="custom_method_invoked",Rt="invoice_closed",Ct="main_button_pressed",Pt="phone_requested",Ot="popup_closed",xt="reload_iframe",Tt="qr_text_received",Bt="scan_qr_popup_closed",It="set_custom_style",At="settings_button_pressed",Lt="theme_changed",Wt="viewport_changed",Ht="write_access_requested",Et="safe_area_changed",Ft="content_safe_area_changed",Nt="web_app_check_home_screen",Dt=((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===Lt&&(t.theme_params=b(t.theme_params)),Dt.emit(e,t),Dt.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Mt=(e,t)=>{Dt.on(e,t)},Qt=(e,t)=>{Dt.off(e,t)},Jt=(e,t)=>{Dt.once(e,t)};var $t=Object.freeze({__proto__:null,off:Qt,on:Mt,once:Jt});const jt=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},Ut=a({viewport:void 0,theme:void 0,init:void 0}),Vt=e=>{const[t,a]=o({viewport:void 0,theme:void 0,init:void 0});return r((()=>{const e=()=>{a("init",Ee())};e();const t=t=>{e(),a("viewport",{...t,safe_area_bottom:t.is_expanded&&t.is_state_stable?window.outerHeight-t.height:0})};Mt(Wt,t),G();const r=t=>{e(),a("theme",t)};return Mt(Lt,r),G(),s((()=>{Qt(Wt,t),Qt(Lt,r)})),()=>{Qt(Wt,t),Qt(Lt,r)}})),Ut.Provider({value:t,children:e.children})};export{Ut as ContextTwa,yt as EventBackButtonPressed,Nt as EventCheckHomeScreen,qt as EventClipboardTextReceived,Ft as EventContentSafeAreaChanged,kt as EventCustomMethodInvoked,Rt as EventInvoiceClosed,Ct as EventMainButtonPressed,Pt as EventPhoneRequested,Ot as EventPopupClosed,Tt as EventQrTextReceived,xt as EventReloadIframe,Et as EventSafeAreaChanged,Bt as EventScanQrPopupClosed,It as EventSetCustomStyle,At as EventSettingsButtonPressed,Lt as EventThemeChanged,Wt as EventViewportChanged,Ht as EventWriteAccessRequested,vt as Method,St as MethodAddToHomeScreen,ft as MethodCheckHomeScreen,Je as MethodClose,$e as MethodCloseScanQrPopup,je as MethodDataSend,mt as MethodExitFullscreen,Ue as MethodExpand,Ve as MethodIframeReady,Ge as MethodIframeWillReload,Ne as MethodInvokeCustomMethod,ze as MethodOpenInvoice,Ke as MethodOpenLink,Xe as MethodOpenPopup,De as MethodOpenScanQrPopup,Ye as MethodOpenTgLink,Me as MethodReadTextFromClipboard,Ze as MethodReady,bt as MethodRequestContentSafeArea,wt as MethodRequestFullscreen,Qe as MethodRequestPhone,gt as MethodRequestSafeArea,et as MethodRequestTheme,tt as MethodRequestViewport,st as MethodRequestWriteAccess,at as MethodSetBackgroundColor,ot as MethodSetBottomBarColor,rt as MethodSetHeaderColor,nt as MethodSetupBackButton,it as MethodSetupClosingBehavior,pt as MethodSetupMainButton,ut as MethodSetupSettingsButton,ct as MethodSetupSwipeBehavior,lt as MethodShareToStory,_t as MethodSwitchInlineQuery,ht as MethodToggleOrientationLock,dt as MethodTriggerHapticFeedback,d as NOT_SUPPORTED,Vt as ProviderTWA,u as TG_DESKTOP,p as TG_PHONE,i as TG_WEB,Ce as bridgeAddToHomeScreen,ke as bridgeCheckHomeScreen,w as bridgeClose,h as bridgeCloseScanQrPopup,f as bridgeDataSend,y as bridgeExpand,Ee as bridgeGetInitData,b as bridgeGetThemeParams,k as bridgeIframeReady,C as bridgeIframeWillReload,O as bridgeInvokeCustomMethod,T as bridgeOpenInvoice,I as bridgeOpenLink,L as bridgeOpenPopup,H as bridgeOpenScanQrPopup,F as bridgeOpenTgLink,D as bridgeReadTextFromClipboard,Q as bridgeReady,Te as bridgeRequestContentSafeAreaInset,$ as bridgeRequestPhone,Oe as bridgeRequestSafeAreaInset,U as bridgeRequestTheme,G as bridgeRequestViewport,K as bridgeRequestWriteAccess,Fe as bridgeSend,he as bridgeSessionStorageGet,we as bridgeSessionStorageSet,Y as bridgeSetBackgroundColor,se as bridgeSetBottomBarColor,ee as bridgeSetHeaderColor,re as bridgeSetupBackButton,ne as bridgeSetupClosingBehavior,Ie as bridgeSetupFullScreen,pe as bridgeSetupMainButton,Le as bridgeSetupOrientation,_e as bridgeSetupSettingsButton,fe as bridgeSetupSwipeBehavior,ye as bridgeShareToStory,ce as bridgeSwitchInlineQuery,ge as bridgeTriggerHapticFeedback,n as createIsViewportChanged,He as debug,jt as getAppData,_ as getPlatform,$t as listener,Fe as sender,Pe as supportAddToHomeScreen,Re as supportCheckHomeScreen,m as supportClose,S as supportCloseScanQrPopup,v as supportDataSend,q as supportExpand,R as supportIframeReady,P as supportIframeWillReload,x as supportInvokeCustomMethod,B as supportOpenInvoice,A as supportOpenLink,W as supportOpenPopup,E as supportOpenScanQrPopup,N as supportOpenTgLink,M as supportReadTextFromClipboard,J as supportReady,Be as supportRequestContentSafeAreaInset,j as supportRequestPhone,xe as supportRequestSafeAreaInset,V as supportRequestTheme,z as supportRequestViewport,X as supportRequestWriteAccess,Se as supportSessionStorageGet,me as supportSessionStorageSet,Z as supportSetBackgroundColor,ae as supportSetBottomBarColor,te as supportSetHeaderColor,oe as supportSetupBackButton,ie as supportSetupClosingBehavior,Ae as supportSetupFullScreen,ue as supportSetupMainButton,We as supportSetupOrientation,de as supportSetupSettingsButton,ve as supportSetupSwipeBehavior,qe as supportShareToStory,le as supportSwitchInlineQuery,be as supportTriggerHapticFeedback};