@apiteam/twa-bridge 7.8.0 → 8.0.1-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.1-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,15 @@ type EventsData = {
310
366
  write_access_requested: {
311
367
  status: 'allowed';
312
368
  };
369
+ [EventCheckHomeScreen]: {
370
+ status: 'unsupported' | 'unknown' | 'added' | 'missed';
371
+ };
372
+ [EventSafeAreaChanged]: {
373
+ top: number;
374
+ bottom: number;
375
+ left: number;
376
+ right: number;
377
+ };
313
378
  };
314
379
  interface TelegramGameProxy {
315
380
  receiveEvent: (event: string, data: string) => void;
@@ -372,6 +437,13 @@ declare const MethodSwitchInlineQuery = "web_app_switch_inline_query";
372
437
  declare const MethodTriggerHapticFeedback = "web_app_trigger_haptic_feedback";
373
438
  declare const MethodSetupSwipeBehavior = "web_app_setup_swipe_behavior";
374
439
  declare const MethodShareToStory = "web_app_share_to_story";
440
+ declare const MethodRequestSafeArea = "web_app_request_safe_area";
441
+ declare const MethodRequestContentSafeArea = "web_app_request_content_safe_area";
442
+ declare const MethodRequestFullscreen = "web_app_request_fullscreen";
443
+ declare const MethodExitFullscreen = "web_app_exit_fullscreen";
444
+ declare const MethodToggleOrientationLock = "web_app_toggle_orientation_lock";
445
+ declare const MethodAddToHomeScreen = "web_app_add_to_home_screen";
446
+ declare const MethodCheckHomeScreen = "web_app_check_home_screen";
375
447
  declare enum Method {
376
448
  InvokeCustomMethod = "web_app_invoke_custom_method",
377
449
  OpenScanQrPopup = "web_app_open_scan_qr_popup",
@@ -401,7 +473,14 @@ declare enum Method {
401
473
  SwitchInlineQuery = "web_app_switch_inline_query",
402
474
  TriggerHapticFeedback = "web_app_trigger_haptic_feedback",
403
475
  SetupSwipeBehavior = "web_app_setup_swipe_behavior",
404
- ShareToStory = "web_app_share_to_story"
476
+ ShareToStory = "web_app_share_to_story",
477
+ RequestSafeArea = "web_app_request_safe_area",
478
+ RequestContentSafeArea = "web_app_request_content_safe_area",
479
+ RequestFullscreen = "web_app_request_fullscreen",
480
+ ExitFullscreen = "web_app_exit_fullscreen",
481
+ ToggleOrientationLock = "web_app_toggle_orientation_lock",
482
+ AddToHomeScreen = "web_app_add_to_home_screen",
483
+ CheckHomeScreen = "web_app_check_home_screen"
405
484
  }
406
485
  type PopupButton = {
407
486
  id: string;
@@ -511,6 +590,19 @@ type SenderData = {
511
590
  name: string;
512
591
  };
513
592
  };
593
+ [MethodRequestSafeArea]: undefined;
594
+ [MethodRequestContentSafeArea]: undefined;
595
+ [MethodRequestFullscreen]: {
596
+ is_full: boolean;
597
+ };
598
+ [MethodExitFullscreen]: {
599
+ is_full: boolean;
600
+ };
601
+ [MethodToggleOrientationLock]: {
602
+ locked: boolean;
603
+ };
604
+ [MethodAddToHomeScreen]: undefined;
605
+ [MethodCheckHomeScreen]: undefined;
514
606
  };
515
607
 
516
608
  type Debug = (methondName: string, errorId: number) => void;
@@ -530,20 +622,4 @@ interface ProviderTWA extends JSX.HTMLAttributes<HTMLDivElement> {
530
622
  }
531
623
  declare const ProviderTWA: Component<ProviderTWA>;
532
624
 
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 };
625
+ 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};