@apiteam/twa-bridge 8.0.5 → 8.0.7

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/README.md CHANGED
@@ -1,5 +1,3 @@
1
- # Telegram Bridge
2
-
3
1
  ## Описание
4
2
 
5
3
  Библиотека для работы с Telegram WebApp API, предоставляющая удобный интерфейс для взаимодействия с функциями Telegram Mini Apps. Реализована на TypeScript с поддержкой строгой типизации.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apiteam/twa-bridge",
3
- "version": "8.0.5",
3
+ "version": "8.0.7",
4
4
  "description": "Telegram bridge",
5
5
  "license": "MIT",
6
6
  "types": "index.ts",
package/solid/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as solid_js from 'solid-js';
2
2
  import { Context, JSX, Component } from 'solid-js';
3
+ import { NOT_SUPPORTED as NOT_SUPPORTED$1, EventsData as EventsData$1, EventBiometryAuthRequested as EventBiometryAuthRequested$1, EventBiometryTokenUpdated as EventBiometryTokenUpdated$1, EventBiometryInfoReceived as EventBiometryInfoReceived$1 } from 'solid';
3
4
 
4
5
  declare const createIsViewportChanged: () => solid_js.Accessor<{
5
6
  height: number;
@@ -114,9 +115,9 @@ type RequestViewport = (eventData?: SenderData[typeof MethodRequestViewport]) =>
114
115
  declare const requestViewport: RequestViewport;
115
116
  declare const supportRequestViewport: () => boolean;
116
117
 
117
- type RequestWriteAccess = (eventData?: SenderData[typeof MethodRequestWriteAccess]) => {
118
+ type RequestWriteAccess = (eventData?: SenderData[typeof MethodRequestWriteAccess]) => Promise<{
118
119
  status: boolean | typeof NOT_SUPPORTED;
119
- };
120
+ }>;
120
121
  declare const requestWriteAccess: RequestWriteAccess;
121
122
  declare const supportRequestWriteAccess: () => boolean;
122
123
 
@@ -208,7 +209,7 @@ declare const supportShareToStory: () => boolean;
208
209
 
209
210
  type CheckHomeScreen = (eventData: SenderData[typeof MethodCheckHomeScreen]) => Promise<{
210
211
  status: boolean | typeof NOT_SUPPORTED;
211
- data?: EventsData[typeof EventCheckHomeScreen];
212
+ data?: EventsData[typeof EventHomeScreenChecked];
212
213
  }>;
213
214
  declare const checkHomeScreen: CheckHomeScreen;
214
215
  declare const supportCheckHomeScreen: () => boolean;
@@ -267,193 +268,6 @@ type DownloadFile = (eventData?: SenderData[typeof MethodRequestFileDownload]) =
267
268
  declare const downloadFile: DownloadFile;
268
269
  declare const supportDownloadFile: () => boolean;
269
270
 
270
- type User = {
271
- added_to_attachment_menu?: boolean;
272
- allows_write_to_pm?: boolean;
273
- is_premium?: boolean;
274
- first_name: string;
275
- id: number;
276
- is_bot?: boolean;
277
- last_name?: string;
278
- language_code: string;
279
- photo_url?: string;
280
- username?: string;
281
- };
282
- type Chat = {
283
- id: number;
284
- type: 'group' | 'supergroup' | 'channel';
285
- title: string;
286
- photo_url?: string;
287
- username?: string;
288
- };
289
- type GetInitData = {
290
- auth_date: number;
291
- can_send_after?: number;
292
- chat?: Chat;
293
- chat_type?: 'sender' | 'private' | 'group' | 'supergroup' | 'channel';
294
- chat_instance?: string;
295
- hash: string;
296
- query_id?: string;
297
- receiver?: User;
298
- start_param?: string;
299
- user?: User;
300
- } | undefined;
301
- declare const getInitData: () => GetInitData;
302
-
303
- type ThemeParams = {
304
- bg_color: string;
305
- text_color: string;
306
- hint_color: string;
307
- link_color: string;
308
- button_color: string;
309
- button_text_color: string;
310
- secondary_bg_color: string;
311
- header_bg_color: string;
312
- bottom_bar_bg_color: string;
313
- accent_text_color: string;
314
- section_bg_color: string;
315
- section_header_text_color: string;
316
- section_separator_color: string;
317
- subtitle_text_color: string;
318
- destructive_text_color: string;
319
- };
320
- declare const getThemeParams: (theme_params?: ThemeParams) => ThemeParams;
321
-
322
- type Sender = (eventType: string, eventData?: any) => void;
323
- declare const sender: Sender;
324
-
325
- declare const EventBackButtonPressed = "back_button_pressed";
326
- declare const EventClipboardTextReceived = "clipboard_text_received";
327
- declare const EventCustomMethodInvoked = "custom_method_invoked";
328
- declare const EventInvoiceClosed = "invoice_closed";
329
- declare const EventMainButtonPressed = "main_button_pressed";
330
- declare const EventPhoneRequested = "phone_requested";
331
- declare const EventPopupClosed = "popup_closed";
332
- declare const EventReloadIframe = "reload_iframe";
333
- declare const EventQrTextReceived = "qr_text_received";
334
- declare const EventScanQrPopupClosed = "scan_qr_popup_closed";
335
- declare const EventSetCustomStyle = "set_custom_style";
336
- declare const EventSettingsButtonPressed = "settings_button_pressed";
337
- declare const EventThemeChanged = "theme_changed";
338
- declare const EventViewportChanged = "viewport_changed";
339
- declare const EventWriteAccessRequested = "write_access_requested";
340
- declare const EventSafeAreaChanged = "safe_area_changed";
341
- declare const EventContentSafeAreaChanged = "content_safe_area_changed";
342
- declare const EventCheckHomeScreen = "web_app_check_home_screen";
343
- declare const EventPreparedMessageSent = "prepared_message_sent";
344
- declare const EventPreparedMessageFailed = "prepared_message_failed";
345
- declare const EventEmojiStatusSet = "emoji_status_set";
346
- declare const EventEmojiStatusFailed = "emoji_status_failed";
347
- declare const EventEmojiStatusAccessRequested = "emoji_status_access_requested";
348
- declare const EventFileDownloadRequested = "file_download_requested";
349
-
350
- type GetPlatform = () => 'phone' | 'web' | 'desktop';
351
- declare const TG_WEB = "web";
352
- declare const TG_PHONE = "phone";
353
- declare const TG_DESKTOP = "desktop";
354
- declare const getPlatform: GetPlatform;
355
-
356
- declare const NOT_SUPPORTED = "not_supported";
357
-
358
- type EventsData = {
359
- back_button_pressed: undefined;
360
- clipboard_text_received: {
361
- req_id: string;
362
- data?: string | null;
363
- };
364
- custom_method_invoked: {
365
- req_id: string;
366
- result?: unknown;
367
- error?: string;
368
- };
369
- invoice_closed: {
370
- slug: string;
371
- status: 'paid' | 'failed' | 'pending' | 'cancelled';
372
- };
373
- main_button_pressed: undefined;
374
- phone_requested: {
375
- status: 'sent';
376
- };
377
- popup_closed: {
378
- button_id?: string;
379
- };
380
- reload_iframe: undefined;
381
- qr_text_received: {
382
- data?: string;
383
- };
384
- scan_qr_popup_closed: undefined;
385
- set_custom_style: undefined;
386
- settings_button_pressed: undefined;
387
- theme_changed: {
388
- theme_params: ThemeParams;
389
- };
390
- viewport_changed: {
391
- height: number;
392
- width?: number;
393
- is_expanded: boolean;
394
- is_state_stable: boolean;
395
- };
396
- write_access_requested: {
397
- status: 'allowed';
398
- };
399
- [EventCheckHomeScreen]: {
400
- status: 'unsupported' | 'unknown' | 'added' | 'missed';
401
- };
402
- [EventSafeAreaChanged]: {
403
- top: number;
404
- bottom: number;
405
- left: number;
406
- right: number;
407
- };
408
- [EventContentSafeAreaChanged]: {
409
- top: number;
410
- bottom: number;
411
- left: number;
412
- right: number;
413
- };
414
- [EventPreparedMessageSent]: undefined;
415
- [EventPreparedMessageFailed]: undefined;
416
- [EventEmojiStatusSet]: undefined;
417
- [EventEmojiStatusFailed]: undefined;
418
- [EventEmojiStatusAccessRequested]: {
419
- status: 'allowed';
420
- };
421
- [EventFileDownloadRequested]: {
422
- status: 'downloading';
423
- };
424
- };
425
- interface TelegramGameProxy {
426
- receiveEvent: (event: string, data: string) => void;
427
- }
428
- interface TelegramWebviewProxy {
429
- postEvent: (event: string, data: string) => void;
430
- }
431
- declare global {
432
- interface External {
433
- notify: (event: string) => void;
434
- }
435
- interface Window {
436
- TelegramWebviewProxy: TelegramWebviewProxy;
437
- TelegramGameProxy: TelegramGameProxy;
438
- TelegramGameProxy_receiveEvent: TelegramGameProxy['receiveEvent'];
439
- Telegram: {
440
- WebView: TelegramGameProxy;
441
- };
442
- }
443
- }
444
- type Listened = <T extends EventsData, E extends keyof T, D extends T[E]>(eventName: E, callback: (eventData: D) => void) => void;
445
- declare const on: Listened;
446
- declare const off: Listened;
447
- declare const once: Listened;
448
-
449
- type listener_EventsData = EventsData;
450
- declare const listener_off: typeof off;
451
- declare const listener_on: typeof on;
452
- declare const listener_once: typeof once;
453
- declare namespace listener {
454
- export { type listener_EventsData as EventsData, listener_off as off, listener_on as on, listener_once as once };
455
- }
456
-
457
271
  declare const MethodInvokeCustomMethod = "web_app_invoke_custom_method";
458
272
  declare const MethodOpenScanQrPopup = "web_app_open_scan_qr_popup";
459
273
  declare const MethodReadTextFromClipboard = "web_app_read_text_from_clipboard";
@@ -494,6 +308,10 @@ declare const MethodSendPreparedMessage = "web_app_send_prepared_message";
494
308
  declare const MethodSetEmojiStatus = "web_app_set_emoji_status";
495
309
  declare const MethodRequestEmojiStatusAccess = "web_app_request_emoji_status_access";
496
310
  declare const MethodRequestFileDownload = "web_app_request_file_download";
311
+ declare const MethodBiometryOpenSettings = "web_app_biometry_open_settings";
312
+ declare const MethodBiometryRequestAccess = "web_app_biometry_request_access";
313
+ declare const MethodBiometryRequestAuth = "web_app_biometry_request_auth";
314
+ declare const MethodBiometryUpdateToken = "web_app_biometry_update_token";
497
315
  declare enum Method {
498
316
  InvokeCustomMethod = "web_app_invoke_custom_method",
499
317
  OpenScanQrPopup = "web_app_open_scan_qr_popup",
@@ -671,7 +489,286 @@ type SenderData = {
671
489
  url: string;
672
490
  file_name: string;
673
491
  };
492
+ [MethodBiometryRequestAccess]: {
493
+ reason?: string;
494
+ };
495
+ [MethodBiometryRequestAuth]: {
496
+ reason?: string;
497
+ };
498
+ [MethodBiometryUpdateToken]: {
499
+ token: string;
500
+ };
501
+ [MethodBiometryOpenSettings]: undefined;
502
+ };
503
+
504
+ type Store = {
505
+ isInited: boolean;
506
+ isBiometricAvailable: boolean;
507
+ isAccessGranted: boolean;
508
+ isAccessRequested: boolean;
509
+ isBiometricTokenSaved: boolean;
510
+ biometricType: EventsData$1[typeof EventBiometryInfoReceived$1]['type'];
511
+ deviceId: EventsData$1[typeof EventBiometryInfoReceived$1]['device_id'];
512
+ };
513
+ type BiometricManager = {
514
+ isInited: Store['isInited'];
515
+ isBiometricAvailable: Store['isBiometricAvailable'];
516
+ isAccessGranted: Store['isAccessGranted'];
517
+ isAccessRequested: Store['isAccessRequested'];
518
+ isBiometricTokenSaved: Store['isBiometricTokenSaved'];
519
+ biometricType: Store['biometricType'];
520
+ deviceId: Store['deviceId'];
521
+ init: () => Promise<{
522
+ status: boolean | typeof NOT_SUPPORTED$1;
523
+ data?: Store;
524
+ }>;
525
+ requestAccess: (eventData: SenderData[typeof MethodBiometryRequestAccess]) => Promise<{
526
+ status: boolean | typeof NOT_SUPPORTED$1;
527
+ data?: Store;
528
+ }>;
529
+ authenticate: (eventData: SenderData[typeof MethodBiometryRequestAuth]) => Promise<{
530
+ status: boolean | typeof NOT_SUPPORTED$1;
531
+ data?: EventsData$1[typeof EventBiometryAuthRequested$1];
532
+ }>;
533
+ updateToken: (eventData: SenderData[typeof MethodBiometryUpdateToken]) => Promise<{
534
+ status: boolean | typeof NOT_SUPPORTED$1;
535
+ data?: EventsData$1[typeof EventBiometryTokenUpdated$1];
536
+ }>;
537
+ openSettings: (eventData: SenderData[typeof MethodBiometryOpenSettings]) => {
538
+ status: boolean | typeof NOT_SUPPORTED$1;
539
+ };
540
+ };
541
+ declare const BiometricManager: BiometricManager;
542
+
543
+ declare const supportBiometricManager: () => boolean;
544
+
545
+ type User = {
546
+ added_to_attachment_menu?: boolean;
547
+ allows_write_to_pm?: boolean;
548
+ is_premium?: boolean;
549
+ first_name: string;
550
+ id: number;
551
+ is_bot?: boolean;
552
+ last_name?: string;
553
+ language_code: string;
554
+ photo_url?: string;
555
+ username?: string;
556
+ };
557
+ type Chat = {
558
+ id: number;
559
+ type: 'group' | 'supergroup' | 'channel';
560
+ title: string;
561
+ photo_url?: string;
562
+ username?: string;
563
+ };
564
+ type GetInitData = {
565
+ auth_date: number;
566
+ can_send_after?: number;
567
+ chat?: Chat;
568
+ chat_type?: 'sender' | 'private' | 'group' | 'supergroup' | 'channel';
569
+ chat_instance?: string;
570
+ hash: string;
571
+ query_id?: string;
572
+ receiver?: User;
573
+ start_param?: string;
574
+ user?: User;
575
+ } | undefined;
576
+ declare const getInitData: () => GetInitData;
577
+
578
+ type ThemeParams = {
579
+ bg_color: string;
580
+ text_color: string;
581
+ hint_color: string;
582
+ link_color: string;
583
+ button_color: string;
584
+ button_text_color: string;
585
+ secondary_bg_color: string;
586
+ header_bg_color: string;
587
+ bottom_bar_bg_color: string;
588
+ accent_text_color: string;
589
+ section_bg_color: string;
590
+ section_header_text_color: string;
591
+ section_separator_color: string;
592
+ subtitle_text_color: string;
593
+ destructive_text_color: string;
594
+ };
595
+ declare const getThemeParams: (theme_params?: ThemeParams) => ThemeParams;
596
+
597
+ type Sender = (eventType: string, eventData?: any) => void;
598
+ declare const sender: Sender;
599
+
600
+ declare const EventBackButtonPressed = "back_button_pressed";
601
+ declare const EventClipboardTextReceived = "clipboard_text_received";
602
+ declare const EventCustomMethodInvoked = "custom_method_invoked";
603
+ declare const EventInvoiceClosed = "invoice_closed";
604
+ declare const EventMainButtonPressed = "main_button_pressed";
605
+ declare const EventPhoneRequested = "phone_requested";
606
+ declare const EventPopupClosed = "popup_closed";
607
+ declare const EventReloadIframe = "reload_iframe";
608
+ declare const EventQrTextReceived = "qr_text_received";
609
+ declare const EventScanQrPopupClosed = "scan_qr_popup_closed";
610
+ declare const EventSetCustomStyle = "set_custom_style";
611
+ declare const EventSettingsButtonPressed = "settings_button_pressed";
612
+ declare const EventThemeChanged = "theme_changed";
613
+ declare const EventViewportChanged = "viewport_changed";
614
+ declare const EventWriteAccessRequested = "write_access_requested";
615
+ declare const EventSafeAreaChanged = "safe_area_changed";
616
+ declare const EventContentSafeAreaChanged = "content_safe_area_changed";
617
+ declare const EventPreparedMessageSent = "prepared_message_sent";
618
+ declare const EventPreparedMessageFailed = "prepared_message_failed";
619
+ declare const EventEmojiStatusSet = "emoji_status_set";
620
+ declare const EventEmojiStatusFailed = "emoji_status_failed";
621
+ declare const EventEmojiStatusAccessRequested = "emoji_status_access_requested";
622
+ declare const EventFileDownloadRequested = "file_download_requested";
623
+ declare const EventAccelerometerChanged = "accelerometer_changed";
624
+ declare const EventAccelerometerFailed = "accelerometer_failed";
625
+ declare const EventAccelerometerStarted = "accelerometer_started";
626
+ declare const EventAccelerometerStopped = "accelerometer_stopped";
627
+ declare const EventBiometryAuthRequested = "biometry_auth_requested";
628
+ declare const EventBiometryInfoReceived = "biometry_info_received";
629
+ declare const EventBiometryTokenUpdated = "biometry_token_updated";
630
+ declare const EventDeviceOrientationChanged = "device_orientation_changed";
631
+ declare const EventDeviceOrientationFailed = "device_orientation_failed";
632
+ declare const EventDeviceOrientationStarted = "device_orientation_started";
633
+ declare const EventDeviceOrientationStopped = "device_orientation_stopped";
634
+ declare const EventFullscreenChanged = "fullscreen_changed";
635
+ declare const EventFullscreenFailed = "fullscreen_failed";
636
+ declare const EventGyroscopeChanged = "gyroscope_changed";
637
+ declare const EventGyroscopeFailed = "gyroscope_failed";
638
+ declare const EventGyroscopeStarted = "gyroscope_started";
639
+ declare const EventGyroscopeStopped = "gyroscope_stopped";
640
+ declare const EventHomeScreenAdded = "home_screen_added";
641
+ declare const EventHomeScreenChecked = "home_screen_checked";
642
+ declare const EventHomeScreenFailed = "home_screen_failed";
643
+ declare const EventLocationChecked = "location_checked";
644
+ declare const EventLocationRequested = "location_requested";
645
+ declare const EventSecondaryButtonPressed = "secondary_button_pressed";
646
+ declare const EventVisibilityChanged = "visibility_changed";
647
+
648
+ type GetPlatform = () => 'phone' | 'web' | 'desktop';
649
+ declare const TG_WEB = "web";
650
+ declare const TG_PHONE = "phone";
651
+ declare const TG_DESKTOP = "desktop";
652
+ declare const getPlatform: GetPlatform;
653
+
654
+ declare const NOT_SUPPORTED = "not_supported";
655
+
656
+ type EventsData = {
657
+ back_button_pressed: undefined;
658
+ clipboard_text_received: {
659
+ req_id: string;
660
+ data?: string | null;
661
+ };
662
+ custom_method_invoked: {
663
+ req_id: string;
664
+ result?: unknown;
665
+ error?: string;
666
+ };
667
+ invoice_closed: {
668
+ slug: string;
669
+ status: 'paid' | 'failed' | 'pending' | 'cancelled';
670
+ };
671
+ main_button_pressed: undefined;
672
+ phone_requested: {
673
+ status: 'sent';
674
+ };
675
+ popup_closed: {
676
+ button_id?: string;
677
+ };
678
+ reload_iframe: undefined;
679
+ qr_text_received: {
680
+ data?: string;
681
+ };
682
+ scan_qr_popup_closed: undefined;
683
+ set_custom_style: undefined;
684
+ settings_button_pressed: undefined;
685
+ theme_changed: {
686
+ theme_params: ThemeParams;
687
+ };
688
+ viewport_changed: {
689
+ height: number;
690
+ width?: number;
691
+ is_expanded: boolean;
692
+ is_state_stable: boolean;
693
+ };
694
+ [EventHomeScreenChecked]: {
695
+ status: 'unsupported' | 'unknown' | 'added' | 'missed';
696
+ };
697
+ [EventSafeAreaChanged]: {
698
+ top: number;
699
+ bottom: number;
700
+ left: number;
701
+ right: number;
702
+ };
703
+ [EventContentSafeAreaChanged]: {
704
+ top: number;
705
+ bottom: number;
706
+ left: number;
707
+ right: number;
708
+ };
709
+ [EventPreparedMessageSent]: undefined;
710
+ [EventPreparedMessageFailed]: undefined;
711
+ [EventEmojiStatusSet]: undefined;
712
+ [EventEmojiStatusFailed]: undefined;
713
+ [EventEmojiStatusAccessRequested]: {
714
+ status: 'allowed';
715
+ };
716
+ [EventFileDownloadRequested]: {
717
+ status: 'downloading';
718
+ };
719
+ [EventWriteAccessRequested]: {
720
+ status: 'allowed';
721
+ };
722
+ [EventBiometryInfoReceived]: {
723
+ available: boolean;
724
+ access_requested: boolean;
725
+ access_granted: boolean;
726
+ device_id: string;
727
+ token_saved: boolean;
728
+ type: 'face' | 'finger' | 'unknown';
729
+ };
730
+ [EventBiometryTokenUpdated]: {
731
+ status: 'updated' | 'removed';
732
+ };
733
+ [EventBiometryAuthRequested]: {
734
+ status: 'failed';
735
+ token: undefined;
736
+ } | {
737
+ status: 'authorized';
738
+ token: string;
739
+ };
674
740
  };
741
+ interface TelegramGameProxy {
742
+ receiveEvent: (event: string, data: string) => void;
743
+ }
744
+ interface TelegramWebviewProxy {
745
+ postEvent: (event: string, data: string) => void;
746
+ }
747
+ declare global {
748
+ interface External {
749
+ notify: (event: string) => void;
750
+ }
751
+ interface Window {
752
+ TelegramWebviewProxy: TelegramWebviewProxy;
753
+ TelegramGameProxy: TelegramGameProxy;
754
+ TelegramGameProxy_receiveEvent: TelegramGameProxy['receiveEvent'];
755
+ Telegram: {
756
+ WebView: TelegramGameProxy;
757
+ };
758
+ }
759
+ }
760
+ type Listened = <T extends EventsData, E extends keyof T, D extends T[E]>(eventName: E, callback: (eventData: D) => void) => void;
761
+ declare const on: Listened;
762
+ declare const off: Listened;
763
+ declare const once: Listened;
764
+
765
+ type listener_EventsData = EventsData;
766
+ declare const listener_off: typeof off;
767
+ declare const listener_on: typeof on;
768
+ declare const listener_once: typeof once;
769
+ declare namespace listener {
770
+ export { type listener_EventsData as EventsData, listener_off as off, listener_on as on, listener_once as once };
771
+ }
675
772
 
676
773
  type Debug = (methondName: string, errorId: number) => void;
677
774
  declare const debug: Debug;
@@ -690,4 +787,4 @@ interface ProviderTWA extends JSX.HTMLAttributes<HTMLDivElement> {
690
787
  }
691
788
  declare const ProviderTWA: Component<ProviderTWA>;
692
789
 
693
- export { ContextTwa, EventBackButtonPressed, EventCheckHomeScreen, EventClipboardTextReceived, EventContentSafeAreaChanged, EventCustomMethodInvoked, EventEmojiStatusAccessRequested, EventEmojiStatusFailed, EventEmojiStatusSet, EventFileDownloadRequested, EventInvoiceClosed, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventPreparedMessageFailed, EventPreparedMessageSent, 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, MethodRequestEmojiStatusAccess, MethodRequestFileDownload, MethodRequestFullscreen, MethodRequestPhone, MethodRequestSafeArea, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSendPreparedMessage, MethodSetBackgroundColor, MethodSetBottomBarColor, MethodSetEmojiStatus, MethodSetHeaderColor, MethodSetupBackButton, MethodSetupClosingBehavior, MethodSetupMainButton, MethodSetupSettingsButton, MethodSetupSwipeBehavior, MethodShareToStory, MethodSwitchInlineQuery, MethodToggleOrientationLock, MethodTriggerHapticFeedback, NOT_SUPPORTED, type PopupButton, ProviderTWA, type SenderData, TG_DESKTOP, TG_PHONE, TG_WEB, type ThemeParams, addToHomeScreen as bridgeAddToHomeScreen, checkHomeScreen as bridgeCheckHomeScreen, close as bridgeClose, closeScanQrPopup as bridgeCloseScanQrPopup, dataSend as bridgeDataSend, downloadFile as bridgeDownloadFile, expand as bridgeExpand, getInitData as bridgeGetInitData, getThemeParams as bridgeGetThemeParams, iframeReady as bridgeIframeReady, iframeWillReload as bridgeIframeWillReload, invokeCustomMethod as bridgeInvokeCustomMethod, openInvoice as bridgeOpenInvoice, openLink as bridgeOpenLink, openPopup as bridgeOpenPopup, openScanQrPopup as bridgeOpenScanQrPopup, openTgLink as bridgeOpenTgLink, readTextFromClipboard as bridgeReadTextFromClipboard, ready as bridgeReady, requestContentSafeAreaInset as bridgeRequestContentSafeAreaInset, requestEmojiStatus as bridgeRequestEmojiStatus, requestPhone as bridgeRequestPhone, requestSafeAreaInset as bridgeRequestSafeAreaInset, requestTheme as bridgeRequestTheme, requestViewport as bridgeRequestViewport, requestWriteAccess as bridgeRequestWriteAccess, sender as bridgeSend, sessionStorageGet as bridgeSessionStorageGet, sessionStorageSet as bridgeSessionStorageSet, setBackgroundColor as bridgeSetBackgroundColor, setBottomBarColor as bridgeSetBottomBarColor, setEmojiStatus as bridgeSetEmojiStatus, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupFullScreen as bridgeSetupFullScreen, setupMainButton as bridgeSetupMainButton, setupOrientation as bridgeSetupOrientation, setupSettingsButton as bridgeSetupSettingsButton, setupSwipeBehavior as bridgeSetupSwipeBehavior, shareMessage as bridgeShareMessage, shareToStory as bridgeShareToStory, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, createIsViewportChanged, debug, getAppData, getPlatform, listener, sender, supportAddToHomeScreen, supportCheckHomeScreen, supportClose, supportCloseScanQrPopup, supportDataSend, supportDownloadFile, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestContentSafeAreaInset, supportRequestEmojiStatus, supportRequestPhone, supportRequestSafeAreaInset, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSessionStorageGet, supportSessionStorageSet, supportSetBackgroundColor, supportSetBottomBarColor, supportSetEmojiStatus, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupFullScreen, supportSetupMainButton, supportSetupOrientation, supportSetupSettingsButton, supportSetupSwipeBehavior, supportShareMessage, supportShareToStory, supportSwitchInlineQuery, supportTriggerHapticFeedback };
790
+ export { BiometricManager, ContextTwa, EventAccelerometerChanged, EventAccelerometerFailed, EventAccelerometerStarted, EventAccelerometerStopped, EventBackButtonPressed, EventBiometryAuthRequested, EventBiometryInfoReceived, EventBiometryTokenUpdated, EventClipboardTextReceived, EventContentSafeAreaChanged, EventCustomMethodInvoked, EventDeviceOrientationChanged, EventDeviceOrientationFailed, EventDeviceOrientationStarted, EventDeviceOrientationStopped, EventEmojiStatusAccessRequested, EventEmojiStatusFailed, EventEmojiStatusSet, EventFileDownloadRequested, EventFullscreenChanged, EventFullscreenFailed, EventGyroscopeChanged, EventGyroscopeFailed, EventGyroscopeStarted, EventGyroscopeStopped, EventHomeScreenAdded, EventHomeScreenChecked, EventHomeScreenFailed, EventInvoiceClosed, EventLocationChecked, EventLocationRequested, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventPreparedMessageFailed, EventPreparedMessageSent, EventQrTextReceived, EventReloadIframe, EventSafeAreaChanged, EventScanQrPopupClosed, EventSecondaryButtonPressed, EventSetCustomStyle, EventSettingsButtonPressed, EventThemeChanged, EventViewportChanged, EventVisibilityChanged, EventWriteAccessRequested, type EventsData, type GetInitData, Method, MethodAddToHomeScreen, MethodCheckHomeScreen, MethodClose, MethodCloseScanQrPopup, MethodDataSend, MethodExitFullscreen, MethodExpand, MethodIframeReady, MethodIframeWillReload, MethodInvokeCustomMethod, MethodOpenInvoice, MethodOpenLink, MethodOpenPopup, MethodOpenScanQrPopup, MethodOpenTgLink, MethodReadTextFromClipboard, MethodReady, MethodRequestContentSafeArea, MethodRequestEmojiStatusAccess, MethodRequestFileDownload, MethodRequestFullscreen, MethodRequestPhone, MethodRequestSafeArea, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSendPreparedMessage, MethodSetBackgroundColor, MethodSetBottomBarColor, MethodSetEmojiStatus, MethodSetHeaderColor, MethodSetupBackButton, MethodSetupClosingBehavior, MethodSetupMainButton, MethodSetupSettingsButton, MethodSetupSwipeBehavior, MethodShareToStory, MethodSwitchInlineQuery, MethodToggleOrientationLock, MethodTriggerHapticFeedback, NOT_SUPPORTED, type PopupButton, ProviderTWA, type SenderData, TG_DESKTOP, TG_PHONE, TG_WEB, type ThemeParams, addToHomeScreen as bridgeAddToHomeScreen, checkHomeScreen as bridgeCheckHomeScreen, close as bridgeClose, closeScanQrPopup as bridgeCloseScanQrPopup, dataSend as bridgeDataSend, downloadFile as bridgeDownloadFile, expand as bridgeExpand, getInitData as bridgeGetInitData, getThemeParams as bridgeGetThemeParams, iframeReady as bridgeIframeReady, iframeWillReload as bridgeIframeWillReload, invokeCustomMethod as bridgeInvokeCustomMethod, openInvoice as bridgeOpenInvoice, openLink as bridgeOpenLink, openPopup as bridgeOpenPopup, openScanQrPopup as bridgeOpenScanQrPopup, openTgLink as bridgeOpenTgLink, readTextFromClipboard as bridgeReadTextFromClipboard, ready as bridgeReady, requestContentSafeAreaInset as bridgeRequestContentSafeAreaInset, requestEmojiStatus as bridgeRequestEmojiStatus, requestPhone as bridgeRequestPhone, requestSafeAreaInset as bridgeRequestSafeAreaInset, requestTheme as bridgeRequestTheme, requestViewport as bridgeRequestViewport, requestWriteAccess as bridgeRequestWriteAccess, sender as bridgeSend, sessionStorageGet as bridgeSessionStorageGet, sessionStorageSet as bridgeSessionStorageSet, setBackgroundColor as bridgeSetBackgroundColor, setBottomBarColor as bridgeSetBottomBarColor, setEmojiStatus as bridgeSetEmojiStatus, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupFullScreen as bridgeSetupFullScreen, setupMainButton as bridgeSetupMainButton, setupOrientation as bridgeSetupOrientation, setupSettingsButton as bridgeSetupSettingsButton, setupSwipeBehavior as bridgeSetupSwipeBehavior, shareMessage as bridgeShareMessage, shareToStory as bridgeShareToStory, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, createIsViewportChanged, debug, getAppData, getPlatform, listener, sender, supportAddToHomeScreen, supportBiometricManager, supportCheckHomeScreen, supportClose, supportCloseScanQrPopup, supportDataSend, supportDownloadFile, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestContentSafeAreaInset, supportRequestEmojiStatus, supportRequestPhone, supportRequestSafeAreaInset, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSessionStorageGet, supportSessionStorageSet, supportSetBackgroundColor, supportSetBottomBarColor, supportSetEmojiStatus, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupFullScreen, supportSetupMainButton, supportSetupOrientation, supportSetupSettingsButton, supportSetupSwipeBehavior, supportShareMessage, supportShareToStory, supportSwitchInlineQuery, supportTriggerHapticFeedback };
package/solid/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("solid-js"),t=require("solid-js/store");const s="web",o="phone",r="desktop",a=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?o:["tdesktop","macos"].includes(t)?r:s},p="not_supported",n=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(a())},i=()=>Math.random().toString(36).substring(3,9),u=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),o=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((o<16?"0":"")+o.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},d=e=>{const t=window.location.hash.slice(1),s=new URLSearchParams(t),o=JSON.parse(s.get("tgWebAppThemeParams")??""),r=e||o;for(var a of Object.keys(r)){var p=u(r[a]);"string"==typeof p&&(r[a]=p)}return"#1c1c1d"==r?.bg_color&&r?.bg_color==r?.secondary_bg_color&&(r.secondary_bg_color="#2c2c2e"),r},c=e=>_()?(Me(Te,e),{status:!0}):(qe(Te,1),{status:p}),_=()=>n(0,[s,r,o]),l=e=>x()?(Me(Be,e),{status:!0}):(qe(Be,1),{status:p}),x=()=>n(6.4,[o]),g=e=>S()?(Me(Oe,e),{status:!0}):(qe(Oe,1),{status:p}),S=()=>n(0,[s,r,o]),h=e=>m()?(Me(Ie,e),{status:!0}):(qe(Ie,1),{status:p}),m=()=>n(0,[o]),w=e=>b()?(Me(Ae,e),{status:!0}):(qe(Ae,1),{status:p}),b=()=>n(0,[s]),v=()=>f()?(Me(Ae),{status:!0}):(qe(Ae,1),{status:p}),f=()=>n(0,[s]),R=async e=>q()?(void 0===e.req_id&&(e.req_id=i()),Me(ke,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Tt(gt,o))};Et(gt,o)}))):(qe(ke,1),{status:p}),q=()=>n(6.9,[s,r,o]),C=e=>M()?(Me(Le,e),{status:!0}):(qe(Le,1),{status:p}),M=()=>n(6.1,[s,r,o]),k=e=>y()?(Me(je,e),{status:!0}):(qe(je,1),{status:p}),y=()=>n(6.4,[s,r,o]),P=async e=>E()?(e.title.length>64&&qe(He,3),e.message.length<1&&qe(He,4),e.message.length>256&&qe(He,5),e.buttons.length<1&&qe(He,6),e.buttons.length>3&&qe(He,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&qe(He,8),Me(He,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Tt(ht,o)};Et(ht,o)}))):(qe(He,1),{status:p}),E=()=>n(6.2,[s,r,o]),T=async e=>B()?(Me(ye,e),new Promise(((t,s)=>{Bt(mt,(s=>{e.is_close&&l(),t({status:!0,data:s})})),Bt(wt,(()=>{t({status:"closed"})}))}))):(qe(ye,1),{status:p}),B=()=>n(6.4,[o]),O=e=>{const t=function(e){try{return new URL(e)}catch(t){try{return new URL(e,"https://t.me")}catch(t){return e.startsWith("/")||(e="/"+e),new URL(e,"https://t.me")}}}(e.path_full);return e.path_full=t.pathname=t.search,I()?(Me(We,e),{status:!0}):(qe(We,1),{status:p})},I=()=>n(7,[s,r,o]);const A=async e=>F()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=i()),Me(Pe,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),Tt(xt,o))};Et(xt,o)}))):(qe(Pe,1),{status:p}),F=()=>n(6.4,[s,r,o]),L=e=>j()?(Me(De,e),{status:!0}):(qe(De,1),{status:p}),j=()=>n(6.9,[s,r,o]),H=async()=>W()?(Me(Ee),new Promise(((e,t)=>{Bt(St,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(qe(Ee,1),{status:p}),W=()=>n(6.9,[s,r,o]),D=e=>Q()?(Me(Qe,e),{status:!0}):(qe(Qe,1),{status:p}),Q=()=>n(0,[s,r,o]),N=e=>U()?(Me(Ne,e),{status:!0}):(qe(Ne,1),{status:p}),U=()=>n(0,[s,r,o]),V=()=>G()?(Me(Ue),{status:!0}):(qe(Ue,1),{status:p}),G=()=>n(6.9,[s,r,o]),$=e=>J()?(Me(Ve,e),{status:!0}):(qe(Ve,1),{status:p}),J=()=>n(6.1,[s,r,o]),z=e=>K()?(Me(Ge,e),{status:!0}):(qe(Ge,1),{status:p}),K=()=>n(6.1,[s,r,o]),X=e=>Y()?(Me($e,{color:e?.color||e?.color_key}),{status:!0}):(qe($e,1),{status:p}),Y=()=>n(7.1,[s,r,o]),Z=e=>ee()?(Me(Je,e),{status:!0}):(qe(Je,1),{status:p}),ee=()=>n(6.1,[s,r,o]),te=e=>se()?(Me(ze,e),{status:!0}):(qe(ze,1),{status:p}),se=()=>n(6.2,[s,r,o]),oe=e=>re()?(Me(Ke,e),{status:!0}):(qe(Ke,1),{status:p}),re=()=>n(0,[s,r,o]),ae=e=>pe()?(Me(Xe,e),{status:!0}):(qe(Xe,1),{status:p}),pe=()=>n(6.1,[s,r,o]),ne=e=>ie()?(e.query.length>256&&qe(Ye,9),Me(Ye,e),{status:!0}):(qe(Ye,1),{status:p}),ie=()=>n(6.7,[s,r,o]),ue=e=>de()?(Me(Ze,e),{status:!0}):(qe(Ze,1),{status:p}),de=()=>n(6.1,[o]),ce=e=>_e()?(Me(et,e),{status:!0}):(qe(et,1),{status:p}),_e=()=>n(7.7,[s,r,o]),le=()=>n(7.8,[s,r,o]),xe=()=>n(8,[r,o]),ge=()=>n(8,[r,o]),Se=()=>n(8,[s,r,o]),he=()=>n(8,[s,r,o]),me=()=>n(8,[s,r,o]),we=()=>n(8,[s,r,o]),be=()=>n(8,[s,r,o]),ve=()=>n(8,[s,r,o]),fe=()=>n(8,[s,r,o]),Re=()=>n(8,[s,r,o]),qe=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)},Ce=()=>{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 o={};return s.forEach(((e,t)=>{if(o[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{o[t]=JSON.parse(e)}catch{}})),o},Me=(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)}},ke="web_app_invoke_custom_method",ye="web_app_open_scan_qr_popup",Pe="web_app_read_text_from_clipboard",Ee="web_app_request_phone",Te="web_app_close",Be="web_app_close_scan_qr_popup",Oe="web_app_data_send",Ie="web_app_expand",Ae="iframe_ready",Fe="iframe_will_reload",Le="web_app_open_invoice",je="web_app_open_link",He="web_app_open_popup",We="web_app_open_tg_link",De="web_app_ready",Qe="web_app_request_theme",Ne="web_app_request_viewport",Ue="web_app_request_write_access",Ve="web_app_set_background_color",Ge="web_app_set_header_color",$e="web_app_set_bottom_bar_color",Je="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",st="web_app_request_safe_area",ot="web_app_request_content_safe_area",rt="web_app_request_fullscreen",at="web_app_exit_fullscreen",pt="web_app_toggle_orientation_lock",nt="web_app_add_to_home_screen",it="web_app_check_home_screen",ut="web_app_send_prepared_message",dt="web_app_set_emoji_status",ct="web_app_request_emoji_status_access",_t="web_app_request_file_download";var lt=(e=>(e[e.InvokeCustomMethod=ke]="InvokeCustomMethod",e[e.OpenScanQrPopup=ye]="OpenScanQrPopup",e[e.ReadTextFromClipboard=Pe]="ReadTextFromClipboard",e[e.RequestPhone=Ee]="RequestPhone",e[e.Close=Te]="Close",e[e.CloseScanQrPopup=Be]="CloseScanQrPopup",e[e.DataSend=Oe]="DataSend",e[e.Expand=Ie]="Expand",e[e.IframeReady=Ae]="IframeReady",e[e.IframeWillReload=Fe]="IframeWillReload",e[e.OpenInvoice=Le]="OpenInvoice",e[e.OpenLink=je]="OpenLink",e[e.OpenPopup=He]="OpenPopup",e[e.OpenTgLink=We]="OpenTgLink",e[e.Ready=De]="Ready",e[e.RequestTheme=Qe]="RequestTheme",e[e.RequestViewport=Ne]="RequestViewport",e[e.RequestWriteAccess=Ue]="RequestWriteAccess",e[e.SetBackgroundColor=Ve]="SetBackgroundColor",e[e.SetHeaderColor=Ge]="SetHeaderColor",e[e.SetBottomBarColor=$e]="SetBottomBarColor",e[e.SetupBackButton=Je]="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[e.RequestSafeArea=st]="RequestSafeArea",e[e.RequestContentSafeArea=ot]="RequestContentSafeArea",e[e.RequestFullscreen=rt]="RequestFullscreen",e[e.ExitFullscreen=at]="ExitFullscreen",e[e.ToggleOrientationLock=pt]="ToggleOrientationLock",e[e.AddToHomeScreen=nt]="AddToHomeScreen",e[e.CheckHomeScreen=it]="CheckHomeScreen",e[e.SendPreparedMessage=ut]="SendPreparedMessage",e[e.SetEmojiStatus=dt]="SetEmojiStatus",e[e.RequestEmojiStatusAccess=ct]="RequestEmojiStatusAccess",e[e.RequestFileDownload=_t]="RequestFileDownload",e))(lt||{});const xt="clipboard_text_received",gt="custom_method_invoked",St="phone_requested",ht="popup_closed",mt="qr_text_received",wt="scan_qr_popup_closed",bt="theme_changed",vt="viewport_changed",ft="web_app_check_home_screen",Rt="prepared_message_sent",qt="prepared_message_failed",Ct="emoji_status_set",Mt="emoji_status_failed",kt="emoji_status_access_requested",yt="file_download_requested",Pt=((e=new Map)=>({once:(t,s,o=e.get(t),r=e=>{s(e),o&&o.splice(o.indexOf(s)>>>0,1)})=>o?o.push(r):e.set(t,[r]),on:(t,s,o=e.get(t))=>o?o.push(s):e.set(t,[s]),off:(t,s,o=e.get(t))=>o&&s?o.splice(o.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,o=e.get(t)||[])=>{for(const e of o)e(s)}}))();(()=>{function e(e,t){e===bt&&(t.theme_params=d(t.theme_params)),Pt.emit(e,t),Pt.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Et=(e,t)=>{Pt.on(e,t)},Tt=(e,t)=>{Pt.off(e,t)},Bt=(e,t)=>{Pt.once(e,t)};var Ot=Object.freeze({__proto__:null,off:Tt,on:Et,once:Bt});const It=e.createContext({viewport:void 0,theme:void 0,init:void 0});exports.ContextTwa=It,exports.EventBackButtonPressed="back_button_pressed",exports.EventCheckHomeScreen=ft,exports.EventClipboardTextReceived=xt,exports.EventContentSafeAreaChanged="content_safe_area_changed",exports.EventCustomMethodInvoked=gt,exports.EventEmojiStatusAccessRequested=kt,exports.EventEmojiStatusFailed=Mt,exports.EventEmojiStatusSet=Ct,exports.EventFileDownloadRequested=yt,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=St,exports.EventPopupClosed=ht,exports.EventPreparedMessageFailed=qt,exports.EventPreparedMessageSent=Rt,exports.EventQrTextReceived=mt,exports.EventReloadIframe="reload_iframe",exports.EventSafeAreaChanged="safe_area_changed",exports.EventScanQrPopupClosed=wt,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=bt,exports.EventViewportChanged=vt,exports.EventWriteAccessRequested="write_access_requested",exports.Method=lt,exports.MethodAddToHomeScreen=nt,exports.MethodCheckHomeScreen=it,exports.MethodClose=Te,exports.MethodCloseScanQrPopup=Be,exports.MethodDataSend=Oe,exports.MethodExitFullscreen=at,exports.MethodExpand=Ie,exports.MethodIframeReady=Ae,exports.MethodIframeWillReload=Fe,exports.MethodInvokeCustomMethod=ke,exports.MethodOpenInvoice=Le,exports.MethodOpenLink=je,exports.MethodOpenPopup=He,exports.MethodOpenScanQrPopup=ye,exports.MethodOpenTgLink=We,exports.MethodReadTextFromClipboard=Pe,exports.MethodReady=De,exports.MethodRequestContentSafeArea=ot,exports.MethodRequestEmojiStatusAccess=ct,exports.MethodRequestFileDownload=_t,exports.MethodRequestFullscreen=rt,exports.MethodRequestPhone=Ee,exports.MethodRequestSafeArea=st,exports.MethodRequestTheme=Qe,exports.MethodRequestViewport=Ne,exports.MethodRequestWriteAccess=Ue,exports.MethodSendPreparedMessage=ut,exports.MethodSetBackgroundColor=Ve,exports.MethodSetBottomBarColor=$e,exports.MethodSetEmojiStatus=dt,exports.MethodSetHeaderColor=Ge,exports.MethodSetupBackButton=Je,exports.MethodSetupClosingBehavior=ze,exports.MethodSetupMainButton=Ke,exports.MethodSetupSettingsButton=Xe,exports.MethodSetupSwipeBehavior=et,exports.MethodShareToStory=tt,exports.MethodSwitchInlineQuery=Ye,exports.MethodToggleOrientationLock=pt,exports.MethodTriggerHapticFeedback=Ze,exports.NOT_SUPPORTED=p,exports.ProviderTWA=s=>{const[o,r]=t.createStore({viewport:void 0,theme:void 0,init:void 0});return e.createEffect((()=>{const t=()=>{r("init",Ce())};t();const s=e=>{t(),r("viewport",e)};Et(vt,s),N();const o=e=>{t(),r("theme",e)};return Et(bt,o),N(),e.onCleanup((()=>{Tt(vt,s),Tt(bt,o)})),()=>{Tt(vt,s),Tt(bt,o)}})),It.Provider({value:o,children:s.children})},exports.TG_DESKTOP=r,exports.TG_PHONE=o,exports.TG_WEB=s,exports.bridgeAddToHomeScreen=()=>ge()?(Me(nt),{status:!0}):(qe(nt,1),{status:p}),exports.bridgeCheckHomeScreen=async e=>xe()?(Me(it,e),new Promise(((e,t)=>{const s=t=>{e({status:!0,data:t}),Tt(ft,s)};Et(ft,s)}))):(qe(it,1),{status:p,data:void 0}),exports.bridgeClose=c,exports.bridgeCloseScanQrPopup=l,exports.bridgeDataSend=g,exports.bridgeDownloadFile=async e=>Re()?new Promise(((t,s)=>{Bt(yt,(function(e){t({status:"downloading"===e.status})})),Me(_t,e)})):(qe(_t,1),{status:p}),exports.bridgeExpand=h,exports.bridgeGetInitData=Ce,exports.bridgeGetThemeParams=d,exports.bridgeIframeReady=w,exports.bridgeIframeWillReload=v,exports.bridgeInvokeCustomMethod=R,exports.bridgeOpenInvoice=C,exports.bridgeOpenLink=k,exports.bridgeOpenPopup=P,exports.bridgeOpenScanQrPopup=T,exports.bridgeOpenTgLink=O,exports.bridgeReadTextFromClipboard=A,exports.bridgeReady=L,exports.bridgeRequestContentSafeAreaInset=()=>he()?(Me(ot),{status:!0}):(qe(ot,1),{status:p}),exports.bridgeRequestEmojiStatus=async e=>be()?new Promise(((t,s)=>{Bt(kt,(function(e){t({status:"allowed"===e.status})})),Me(ct,e)})):(qe(ct,1),{status:p}),exports.bridgeRequestPhone=H,exports.bridgeRequestSafeAreaInset=()=>Se()?(Me(st),{status:!0}):(qe(st,1),{status:p}),exports.bridgeRequestTheme=D,exports.bridgeRequestViewport=N,exports.bridgeRequestWriteAccess=V,exports.bridgeSend=Me,exports.bridgeSessionStorageGet=({key:e})=>{try{return{is_json:!0,value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(t){return{is_json:!1,value:window.sessionStorage.getItem("__telegram__"+e)??"",status:!0}}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(s){return window.sessionStorage.setItem("__telegram__"+e,t),{status:!0}}},exports.bridgeSetBackgroundColor=$,exports.bridgeSetBottomBarColor=X,exports.bridgeSetEmojiStatus=async e=>ve()?new Promise(((t,s)=>{Bt(Ct,(()=>t({status:!0}))),Bt(Mt,(()=>t({status:!1}))),Me(dt,e)})):(qe(dt,1),{status:p}),exports.bridgeSetHeaderColor=z,exports.bridgeSetupBackButton=Z,exports.bridgeSetupClosingBehavior=te,exports.bridgeSetupFullScreen=e=>{const t=e?.is_full||!1;return me()?(Me(t?rt:at),{status:!0}):(qe(t?rt:at,1),{status:p})},exports.bridgeSetupMainButton=oe,exports.bridgeSetupOrientation=e=>we()?(Me(pt,e),{status:!0}):(qe(pt,1),{status:p}),exports.bridgeSetupSettingsButton=ae,exports.bridgeSetupSwipeBehavior=ce,exports.bridgeShareMessage=async e=>fe()?new Promise(((t,s)=>{Bt(Rt,(()=>t({status:!0}))),Bt(qt,(()=>t({status:!1}))),Me(ut,e)})):(qe(ut,1),{status:p}),exports.bridgeShareToStory=e=>le()?e?.text&&e?.text.length>2048?(console.warn(`[@apiteam/twa-bridge](${tt}) | Text is too long`),{status:!1,error_id:1}):e?.widget_link?.name&&e?.widget_link.name.length>48?(console.warn(`[@apiteam/twa-bridge](${tt}) | Link name is too long`),{status:!1,error_id:2}):(Me(tt,e),{status:!0}):(qe(tt,1),{status:p}),exports.bridgeSwitchInlineQuery=ne,exports.bridgeTriggerHapticFeedback=ue,exports.createIsViewportChanged=()=>{const[t,s]=e.createSignal({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>s(e);return e.onMount((()=>{Et(vt,o),Me(Ne)})),e.onCleanup((()=>{Tt(vt,o)})),t},exports.debug=qe,exports.getAppData=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},exports.getPlatform=a,exports.listener=Ot,exports.sender=Me,exports.supportAddToHomeScreen=ge,exports.supportCheckHomeScreen=xe,exports.supportClose=_,exports.supportCloseScanQrPopup=x,exports.supportDataSend=S,exports.supportDownloadFile=Re,exports.supportExpand=m,exports.supportIframeReady=b,exports.supportIframeWillReload=f,exports.supportInvokeCustomMethod=q,exports.supportOpenInvoice=M,exports.supportOpenLink=y,exports.supportOpenPopup=E,exports.supportOpenScanQrPopup=B,exports.supportOpenTgLink=I,exports.supportReadTextFromClipboard=F,exports.supportReady=j,exports.supportRequestContentSafeAreaInset=he,exports.supportRequestEmojiStatus=be,exports.supportRequestPhone=W,exports.supportRequestSafeAreaInset=Se,exports.supportRequestTheme=Q,exports.supportRequestViewport=U,exports.supportRequestWriteAccess=G,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=J,exports.supportSetBottomBarColor=Y,exports.supportSetEmojiStatus=ve,exports.supportSetHeaderColor=K,exports.supportSetupBackButton=ee,exports.supportSetupClosingBehavior=se,exports.supportSetupFullScreen=me,exports.supportSetupMainButton=re,exports.supportSetupOrientation=we,exports.supportSetupSettingsButton=pe,exports.supportSetupSwipeBehavior=_e,exports.supportShareMessage=fe,exports.supportShareToStory=le,exports.supportSwitchInlineQuery=ie,exports.supportTriggerHapticFeedback=de;
1
+ "use strict";var e=require("solid"),t=require("solid-js"),s=require("solid-js/store");const o="web",r="phone",a="desktop",n=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?r:["tdesktop","macos"].includes(t)?a:o},i="not_supported",p=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(n())},d=()=>Math.random().toString(36).substring(3,9),u=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),o=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((o<16?"0":"")+o.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},c=e=>{const t=window.location.hash.slice(1),s=new URLSearchParams(t),o=JSON.parse(s.get("tgWebAppThemeParams")??""),r=e||o;for(var a of Object.keys(r)){var n=u(r[a]);"string"==typeof n&&(r[a]=n)}return"#1c1c1d"==r?.bg_color&&r?.bg_color==r?.secondary_bg_color&&(r.secondary_bg_color="#2c2c2e"),r},_=e=>l()?(Et(ke,e),{status:!0}):(yt(ke,1),{status:i}),l=()=>p(0,[o,a,r]),m=e=>x()?(Et(Pe,e),{status:!0}):(yt(Pe,1),{status:i}),x=()=>p(6.4,[r]),g=e=>v()?(Et(Ae,e),{status:!0}):(yt(Ae,1),{status:i}),v=()=>p(0,[o,a,r]),S=e=>h()?(Et(Ce,e),{status:!0}):(yt(Ce,1),{status:i}),h=()=>p(0,[r]),b=e=>w()?(Et(Me,e),{status:!0}):(yt(Me,1),{status:i}),w=()=>p(0,[o]),f=()=>y()?(Et(Me),{status:!0}):(yt(Me,1),{status:i}),y=()=>p(0,[o]),R=async e=>E()?(void 0===e.req_id&&(e.req_id=d()),Et(Ee,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Nt(Bt,o))};Ut(Bt,o)}))):(yt(Ee,1),{status:i}),E=()=>p(6.9,[o,a,r]),q=e=>B()?(Et(Ie,e),{status:!0}):(yt(Ie,1),{status:i}),B=()=>p(6.1,[o,a,r]),T=e=>k()?(Et(Fe,e),{status:!0}):(yt(Fe,1),{status:i}),k=()=>p(6.4,[o,a,r]),P=async e=>A()?(e.title.length>64&&yt(De,3),e.message.length<1&&yt(De,4),e.message.length>256&&yt(De,5),e.buttons.length<1&&yt(De,6),e.buttons.length>3&&yt(De,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&yt(De,8),Et(De,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Nt(kt,o)};Ut(kt,o)}))):(yt(De,1),{status:i}),A=()=>p(6.2,[o,a,r]),C=async e=>M()?(Et(qe,e),new Promise(((t,s)=>{Qt(Pt,(s=>{e.is_close&&m(),t({status:!0,data:s})})),Qt(At,(()=>{t({status:"closed"})}))}))):(yt(qe,1),{status:i}),M=()=>p(6.4,[r]),O=e=>{const t=function(e){try{return new URL(e)}catch(t){try{return new URL(e,"https://t.me")}catch(t){return e.startsWith("/")||(e="/"+e),new URL(e,"https://t.me")}}}(e.path_full);return e.path_full=t.pathname=t.search,I()?(Et(We,e),{status:!0}):(yt(We,1),{status:i})},I=()=>p(7,[o,a,r]);const F=async e=>D()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=d()),Et(Be,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),Nt(qt,o))};Ut(qt,o)}))):(yt(Be,1),{status:i}),D=()=>p(6.4,[o,a,r]),W=e=>L()?(Et(Le,e),{status:!0}):(yt(Le,1),{status:i}),L=()=>p(6.9,[o,a,r]),G=async()=>H()?(Et(Te),new Promise(((e,t)=>{Qt(Tt,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(yt(Te,1),{status:i}),H=()=>p(6.9,[o,a,r]),j=e=>U()?(Et(Ge,e),{status:!0}):(yt(Ge,1),{status:i}),U=()=>p(0,[o,a,r]),N=e=>Q()?(Et(He,e),{status:!0}):(yt(He,1),{status:i}),Q=()=>p(0,[o,a,r]),V=()=>new Promise(((e,t)=>{if(!$())return yt(je,1),void e({status:i});const s=t=>{e({status:"allowed"===t.status}),Nt(Ot,s)};Ut(Ot,s),Et(je)})),$=()=>p(6.9,[o,a,r]),J=e=>K()?(Et(Ue,e),{status:!0}):(yt(Ue,1),{status:i}),K=()=>p(6.1,[o,a,r]),z=e=>X()?(Et(Ne,e),{status:!0}):(yt(Ne,1),{status:i}),X=()=>p(6.1,[o,a,r]),Y=e=>Z()?(Et(Qe,{color:e?.color||e?.color_key}),{status:!0}):(yt(Qe,1),{status:i}),Z=()=>p(7.1,[o,a,r]),ee=e=>te()?(Et(Ve,e),{status:!0}):(yt(Ve,1),{status:i}),te=()=>p(6.1,[o,a,r]),se=e=>oe()?(Et($e,e),{status:!0}):(yt($e,1),{status:i}),oe=()=>p(6.2,[o,a,r]),re=e=>ae()?(Et(Je,e),{status:!0}):(yt(Je,1),{status:i}),ae=()=>p(0,[o,a,r]),ne=e=>ie()?(Et(Ke,e),{status:!0}):(yt(Ke,1),{status:i}),ie=()=>p(6.1,[o,a,r]),pe=e=>de()?(e.query.length>256&&yt(ze,9),Et(ze,e),{status:!0}):(yt(ze,1),{status:i}),de=()=>p(6.7,[o,a,r]),ue=e=>ce()?(Et(Xe,e),{status:!0}):(yt(Xe,1),{status:i}),ce=()=>p(6.1,[r]),_e=e=>le()?(Et(Ye,e),{status:!0}):(yt(Ye,1),{status:i}),le=()=>p(7.7,[o,a,r]),me=()=>p(7.8,[o,a,r]),xe=()=>p(8,[a,r]),ge=()=>p(8,[a,r]),ve=()=>p(8,[o,a,r]),Se=()=>p(8,[o,a,r]),he=()=>p(8,[o,a,r]),be=()=>p(8,[o,a,r]),we=()=>p(8,[o,a,r]),fe=()=>p(8,[o,a,r]),ye=()=>p(8,[o,a,r]),Re=()=>p(8,[o,a,r]),Ee="web_app_invoke_custom_method",qe="web_app_open_scan_qr_popup",Be="web_app_read_text_from_clipboard",Te="web_app_request_phone",ke="web_app_close",Pe="web_app_close_scan_qr_popup",Ae="web_app_data_send",Ce="web_app_expand",Me="iframe_ready",Oe="iframe_will_reload",Ie="web_app_open_invoice",Fe="web_app_open_link",De="web_app_open_popup",We="web_app_open_tg_link",Le="web_app_ready",Ge="web_app_request_theme",He="web_app_request_viewport",je="web_app_request_write_access",Ue="web_app_set_background_color",Ne="web_app_set_header_color",Qe="web_app_set_bottom_bar_color",Ve="web_app_setup_back_button",$e="web_app_setup_closing_behavior",Je="web_app_setup_main_button",Ke="web_app_setup_settings_button",ze="web_app_switch_inline_query",Xe="web_app_trigger_haptic_feedback",Ye="web_app_setup_swipe_behavior",Ze="web_app_share_to_story",et="web_app_request_safe_area",tt="web_app_request_content_safe_area",st="web_app_request_fullscreen",ot="web_app_exit_fullscreen",rt="web_app_toggle_orientation_lock",at="web_app_add_to_home_screen",nt="web_app_check_home_screen",it="web_app_send_prepared_message",pt="web_app_set_emoji_status",dt="web_app_request_emoji_status_access",ut="web_app_request_file_download",ct="web_app_biometry_get_info",_t="web_app_biometry_open_settings",lt="web_app_biometry_request_access",mt="web_app_biometry_request_auth",xt="web_app_biometry_update_token";var gt=(e=>(e[e.InvokeCustomMethod=Ee]="InvokeCustomMethod",e[e.OpenScanQrPopup=qe]="OpenScanQrPopup",e[e.ReadTextFromClipboard=Be]="ReadTextFromClipboard",e[e.RequestPhone=Te]="RequestPhone",e[e.Close=ke]="Close",e[e.CloseScanQrPopup=Pe]="CloseScanQrPopup",e[e.DataSend=Ae]="DataSend",e[e.Expand=Ce]="Expand",e[e.IframeReady=Me]="IframeReady",e[e.IframeWillReload=Oe]="IframeWillReload",e[e.OpenInvoice=Ie]="OpenInvoice",e[e.OpenLink=Fe]="OpenLink",e[e.OpenPopup=De]="OpenPopup",e[e.OpenTgLink=We]="OpenTgLink",e[e.Ready=Le]="Ready",e[e.RequestTheme=Ge]="RequestTheme",e[e.RequestViewport=He]="RequestViewport",e[e.RequestWriteAccess=je]="RequestWriteAccess",e[e.SetBackgroundColor=Ue]="SetBackgroundColor",e[e.SetHeaderColor=Ne]="SetHeaderColor",e[e.SetBottomBarColor=Qe]="SetBottomBarColor",e[e.SetupBackButton=Ve]="SetupBackButton",e[e.SetupClosingBehavior=$e]="SetupClosingBehavior",e[e.SetupMainButton=Je]="SetupMainButton",e[e.SetupSettingsButton=Ke]="SetupSettingsButton",e[e.SwitchInlineQuery=ze]="SwitchInlineQuery",e[e.TriggerHapticFeedback=Xe]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=Ye]="SetupSwipeBehavior",e[e.ShareToStory=Ze]="ShareToStory",e[e.RequestSafeArea=et]="RequestSafeArea",e[e.RequestContentSafeArea=tt]="RequestContentSafeArea",e[e.RequestFullscreen=st]="RequestFullscreen",e[e.ExitFullscreen=ot]="ExitFullscreen",e[e.ToggleOrientationLock=rt]="ToggleOrientationLock",e[e.AddToHomeScreen=at]="AddToHomeScreen",e[e.CheckHomeScreen=nt]="CheckHomeScreen",e[e.SendPreparedMessage=it]="SendPreparedMessage",e[e.SetEmojiStatus=pt]="SetEmojiStatus",e[e.RequestEmojiStatusAccess=dt]="RequestEmojiStatusAccess",e[e.RequestFileDownload=ut]="RequestFileDownload",e))(gt||{});const[vt,St]=s.createStore({isInited:!1,isBiometricAvailable:!1,isAccessGranted:!1,isAccessRequested:!1,isBiometricTokenSaved:!1,biometricType:"unknown",deviceId:""}),ht={isInited:vt.isInited,isBiometricAvailable:vt.isBiometricAvailable,isAccessGranted:vt.isAccessGranted,isAccessRequested:vt.isAccessRequested,isBiometricTokenSaved:vt.isBiometricTokenSaved,biometricType:vt.biometricType,deviceId:vt.deviceId,init:()=>new Promise(((t,s)=>{if(!bt())return e.debug(ct,1),void t({status:e.NOT_SUPPORTED,data:void 0});const o=s=>{wt(s),t({status:!0,data:vt}),e.listener.off(e.EventBiometryInfoReceived,o)};e.listener.on(e.EventBiometryInfoReceived,o),e.sender(ct)})),requestAccess:t=>new Promise(((s,o)=>{if(!bt())return e.debug(lt,1),void s({status:e.NOT_SUPPORTED,data:void 0});if(t.reason&&t.reason.length>128)return console.error(`[${lt}] Biometric reason is too long`,t.reason),void s({status:!1,data:void 0});const r=t=>{wt(t),s({status:!0,data:vt}),e.listener.off(e.EventBiometryInfoReceived,r)};e.listener.on(e.EventBiometryInfoReceived,r),e.sender(lt,t)})),authenticate:t=>new Promise(((s,o)=>{if(!bt())return e.debug(mt,1),void s({status:e.NOT_SUPPORTED,data:void 0});if(!vt.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void s({status:!1,data:void 0});if(!vt.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void s({status:!1,data:void 0});const r=t=>{s({status:!0,data:t}),e.listener.off(e.EventBiometryAuthRequested,r)};e.listener.on(e.EventBiometryAuthRequested,r),e.sender(mt,t)})),updateToken:t=>new Promise(((s,o)=>{if(!bt())return e.debug(xt,1),void s({status:e.NOT_SUPPORTED,data:void 0});if(!vt.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void s({status:!1,data:void 0});if(!vt.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void s({status:!1,data:void 0});const r=t=>{s({status:!0,data:t}),e.listener.off(e.EventBiometryTokenUpdated,r)};e.listener.on(e.EventBiometryTokenUpdated,r),e.sender(xt,t)})),openSettings:t=>bt()?vt.isBiometricAvailable?vt.isAccessRequested?vt.isAccessGranted?(console.warn("[Telegram.WebApp] Biometric access was granted by the user, no need to go to settings."),{status:!1}):(e.sender(_t,t),{status:!0}):(console.error("[Telegram.WebApp] Biometric access was not granted by the user."),{status:!1}):(console.error("[Telegram.WebApp] Biometrics is not available on this device."),{status:!1}):(e.debug(_t,1),{status:e.NOT_SUPPORTED})},bt=()=>p(7.2,[e.TG_DESKTOP,e.TG_PHONE,e.TG_WEB]),wt=e=>{St(s.produce((t=>(e.available?(t.isBiometricAvailable=!0,t.biometricType=e.type||"",e.access_requested?(t.isAccessRequested=!0,t.isAccessGranted=!!e.access_granted,t.isBiometricTokenSaved=!!e.token_saved):(t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1)):(t.isBiometricAvailable=!1,t.biometricType="unknown",t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1),t.deviceId=e.device_id||"",t.isInited=!0,t))))},ft=e=>{St(s.produce((t=>(t.isBiometricAvailable&&t.isAccessRequested&&("updated"===e.status?t.isBiometricTokenSaved=!0:"removed"===e.status&&(t.isBiometricTokenSaved=!1)),t))))};t.onMount((()=>{e.listener.on(e.EventBiometryInfoReceived,wt),e.listener.on(e.EventBiometryTokenUpdated,ft),t.onCleanup((()=>{e.listener.off(e.EventBiometryInfoReceived,wt),e.listener.off(e.EventBiometryTokenUpdated,ft)}))}));const yt=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)},Rt=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void yt("getInitData",2);const s=new URLSearchParams(t);let o={};return s.forEach(((e,t)=>{if(o[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{o[t]=JSON.parse(e)}catch{}})),o},Et=(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){yt("postMessage Iframe",10)}},qt="clipboard_text_received",Bt="custom_method_invoked",Tt="phone_requested",kt="popup_closed",Pt="qr_text_received",At="scan_qr_popup_closed",Ct="theme_changed",Mt="viewport_changed",Ot="write_access_requested",It="prepared_message_sent",Ft="prepared_message_failed",Dt="emoji_status_set",Wt="emoji_status_failed",Lt="emoji_status_access_requested",Gt="file_download_requested",Ht="home_screen_checked",jt=((e=new Map)=>({once:(t,s,o=e.get(t),r=e=>{s(e),o&&o.splice(o.indexOf(s)>>>0,1)})=>o?o.push(r):e.set(t,[r]),on:(t,s,o=e.get(t))=>o?o.push(s):e.set(t,[s]),off:(t,s,o=e.get(t))=>o&&s?o.splice(o.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,o=e.get(t)||[])=>{for(const e of o)e(s)}}))();(()=>{function e(e,t){e===Ct&&(t.theme_params=c(t.theme_params)),jt.emit(e,t),jt.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Ut=(e,t)=>{jt.on(e,t)},Nt=(e,t)=>{jt.off(e,t)},Qt=(e,t)=>{jt.once(e,t)};var Vt=Object.freeze({__proto__:null,off:Nt,on:Ut,once:Qt});const $t=t.createContext({viewport:void 0,theme:void 0,init:void 0});exports.BiometricManager=ht,exports.ContextTwa=$t,exports.EventAccelerometerChanged="accelerometer_changed",exports.EventAccelerometerFailed="accelerometer_failed",exports.EventAccelerometerStarted="accelerometer_started",exports.EventAccelerometerStopped="accelerometer_stopped",exports.EventBackButtonPressed="back_button_pressed",exports.EventBiometryAuthRequested="biometry_auth_requested",exports.EventBiometryInfoReceived="biometry_info_received",exports.EventBiometryTokenUpdated="biometry_token_updated",exports.EventClipboardTextReceived=qt,exports.EventContentSafeAreaChanged="content_safe_area_changed",exports.EventCustomMethodInvoked=Bt,exports.EventDeviceOrientationChanged="device_orientation_changed",exports.EventDeviceOrientationFailed="device_orientation_failed",exports.EventDeviceOrientationStarted="device_orientation_started",exports.EventDeviceOrientationStopped="device_orientation_stopped",exports.EventEmojiStatusAccessRequested=Lt,exports.EventEmojiStatusFailed=Wt,exports.EventEmojiStatusSet=Dt,exports.EventFileDownloadRequested=Gt,exports.EventFullscreenChanged="fullscreen_changed",exports.EventFullscreenFailed="fullscreen_failed",exports.EventGyroscopeChanged="gyroscope_changed",exports.EventGyroscopeFailed="gyroscope_failed",exports.EventGyroscopeStarted="gyroscope_started",exports.EventGyroscopeStopped="gyroscope_stopped",exports.EventHomeScreenAdded="home_screen_added",exports.EventHomeScreenChecked=Ht,exports.EventHomeScreenFailed="home_screen_failed",exports.EventInvoiceClosed="invoice_closed",exports.EventLocationChecked="location_checked",exports.EventLocationRequested="location_requested",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=Tt,exports.EventPopupClosed=kt,exports.EventPreparedMessageFailed=Ft,exports.EventPreparedMessageSent=It,exports.EventQrTextReceived=Pt,exports.EventReloadIframe="reload_iframe",exports.EventSafeAreaChanged="safe_area_changed",exports.EventScanQrPopupClosed=At,exports.EventSecondaryButtonPressed="secondary_button_pressed",exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=Ct,exports.EventViewportChanged=Mt,exports.EventVisibilityChanged="visibility_changed",exports.EventWriteAccessRequested=Ot,exports.Method=gt,exports.MethodAddToHomeScreen=at,exports.MethodCheckHomeScreen=nt,exports.MethodClose=ke,exports.MethodCloseScanQrPopup=Pe,exports.MethodDataSend=Ae,exports.MethodExitFullscreen=ot,exports.MethodExpand=Ce,exports.MethodIframeReady=Me,exports.MethodIframeWillReload=Oe,exports.MethodInvokeCustomMethod=Ee,exports.MethodOpenInvoice=Ie,exports.MethodOpenLink=Fe,exports.MethodOpenPopup=De,exports.MethodOpenScanQrPopup=qe,exports.MethodOpenTgLink=We,exports.MethodReadTextFromClipboard=Be,exports.MethodReady=Le,exports.MethodRequestContentSafeArea=tt,exports.MethodRequestEmojiStatusAccess=dt,exports.MethodRequestFileDownload=ut,exports.MethodRequestFullscreen=st,exports.MethodRequestPhone=Te,exports.MethodRequestSafeArea=et,exports.MethodRequestTheme=Ge,exports.MethodRequestViewport=He,exports.MethodRequestWriteAccess=je,exports.MethodSendPreparedMessage=it,exports.MethodSetBackgroundColor=Ue,exports.MethodSetBottomBarColor=Qe,exports.MethodSetEmojiStatus=pt,exports.MethodSetHeaderColor=Ne,exports.MethodSetupBackButton=Ve,exports.MethodSetupClosingBehavior=$e,exports.MethodSetupMainButton=Je,exports.MethodSetupSettingsButton=Ke,exports.MethodSetupSwipeBehavior=Ye,exports.MethodShareToStory=Ze,exports.MethodSwitchInlineQuery=ze,exports.MethodToggleOrientationLock=rt,exports.MethodTriggerHapticFeedback=Xe,exports.NOT_SUPPORTED=i,exports.ProviderTWA=e=>{const[o,r]=s.createStore({viewport:void 0,theme:void 0,init:void 0});return t.createEffect((()=>{const e=()=>{r("init",Rt())};e();const s=t=>{e(),r("viewport",t)};Ut(Mt,s),N();const o=t=>{e(),r("theme",t)};return Ut(Ct,o),N(),t.onCleanup((()=>{Nt(Mt,s),Nt(Ct,o)})),()=>{Nt(Mt,s),Nt(Ct,o)}})),$t.Provider({value:o,children:e.children})},exports.TG_DESKTOP=a,exports.TG_PHONE=r,exports.TG_WEB=o,exports.bridgeAddToHomeScreen=()=>ge()?(Et(at),{status:!0}):(yt(at,1),{status:i}),exports.bridgeCheckHomeScreen=async e=>new Promise(((t,s)=>{if(!xe())return yt(nt,1),void t({status:i,data:void 0});const o=e=>{e.status=e.status||"unknown",t({status:!0,data:e}),Nt(Ht,o)};Ut(Ht,o),Et(nt,e)})),exports.bridgeClose=_,exports.bridgeCloseScanQrPopup=m,exports.bridgeDataSend=g,exports.bridgeDownloadFile=async e=>Re()?new Promise(((t,s)=>{Qt(Gt,(function(e){t({status:"downloading"===e.status})})),Et(ut,e)})):(yt(ut,1),{status:i}),exports.bridgeExpand=S,exports.bridgeGetInitData=Rt,exports.bridgeGetThemeParams=c,exports.bridgeIframeReady=b,exports.bridgeIframeWillReload=f,exports.bridgeInvokeCustomMethod=R,exports.bridgeOpenInvoice=q,exports.bridgeOpenLink=T,exports.bridgeOpenPopup=P,exports.bridgeOpenScanQrPopup=C,exports.bridgeOpenTgLink=O,exports.bridgeReadTextFromClipboard=F,exports.bridgeReady=W,exports.bridgeRequestContentSafeAreaInset=()=>Se()?(Et(tt),{status:!0}):(yt(tt,1),{status:i}),exports.bridgeRequestEmojiStatus=async e=>we()?new Promise(((t,s)=>{Qt(Lt,(function(e){t({status:"allowed"===e.status})})),Et(dt,e)})):(yt(dt,1),{status:i}),exports.bridgeRequestPhone=G,exports.bridgeRequestSafeAreaInset=()=>ve()?(Et(et),{status:!0}):(yt(et,1),{status:i}),exports.bridgeRequestTheme=j,exports.bridgeRequestViewport=N,exports.bridgeRequestWriteAccess=V,exports.bridgeSend=Et,exports.bridgeSessionStorageGet=({key:e})=>{try{return{is_json:!0,value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(t){return{is_json:!1,value:window.sessionStorage.getItem("__telegram__"+e)??"",status:!0}}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(s){return window.sessionStorage.setItem("__telegram__"+e,t),{status:!0}}},exports.bridgeSetBackgroundColor=J,exports.bridgeSetBottomBarColor=Y,exports.bridgeSetEmojiStatus=async e=>fe()?new Promise(((t,s)=>{Qt(Dt,(()=>t({status:!0}))),Qt(Wt,(()=>t({status:!1}))),Et(pt,e)})):(yt(pt,1),{status:i}),exports.bridgeSetHeaderColor=z,exports.bridgeSetupBackButton=ee,exports.bridgeSetupClosingBehavior=se,exports.bridgeSetupFullScreen=e=>{const t=e?.is_full||!1;return he()?(Et(t?st:ot),{status:!0}):(yt(t?st:ot,1),{status:i})},exports.bridgeSetupMainButton=re,exports.bridgeSetupOrientation=e=>be()?(Et(rt,e),{status:!0}):(yt(rt,1),{status:i}),exports.bridgeSetupSettingsButton=ne,exports.bridgeSetupSwipeBehavior=_e,exports.bridgeShareMessage=async e=>ye()?new Promise(((t,s)=>{Qt(It,(()=>t({status:!0}))),Qt(Ft,(()=>t({status:!1}))),Et(it,e)})):(yt(it,1),{status:i}),exports.bridgeShareToStory=e=>me()?e?.text&&e?.text.length>2048?(console.warn(`[@apiteam/twa-bridge](${Ze}) | Text is too long`),{status:!1,error_id:1}):e?.widget_link?.name&&e?.widget_link.name.length>48?(console.warn(`[@apiteam/twa-bridge](${Ze}) | Link name is too long`),{status:!1,error_id:2}):(Et(Ze,e),{status:!0}):(yt(Ze,1),{status:i}),exports.bridgeSwitchInlineQuery=pe,exports.bridgeTriggerHapticFeedback=ue,exports.createIsViewportChanged=()=>{const[e,s]=t.createSignal({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>s(e);return t.onMount((()=>{Ut(Mt,o),Et(He)})),t.onCleanup((()=>{Nt(Mt,o)})),e},exports.debug=yt,exports.getAppData=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},exports.getPlatform=n,exports.listener=Vt,exports.sender=Et,exports.supportAddToHomeScreen=ge,exports.supportBiometricManager=bt,exports.supportCheckHomeScreen=xe,exports.supportClose=l,exports.supportCloseScanQrPopup=x,exports.supportDataSend=v,exports.supportDownloadFile=Re,exports.supportExpand=h,exports.supportIframeReady=w,exports.supportIframeWillReload=y,exports.supportInvokeCustomMethod=E,exports.supportOpenInvoice=B,exports.supportOpenLink=k,exports.supportOpenPopup=A,exports.supportOpenScanQrPopup=M,exports.supportOpenTgLink=I,exports.supportReadTextFromClipboard=D,exports.supportReady=L,exports.supportRequestContentSafeAreaInset=Se,exports.supportRequestEmojiStatus=we,exports.supportRequestPhone=H,exports.supportRequestSafeAreaInset=ve,exports.supportRequestTheme=U,exports.supportRequestViewport=Q,exports.supportRequestWriteAccess=$,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=K,exports.supportSetBottomBarColor=Z,exports.supportSetEmojiStatus=fe,exports.supportSetHeaderColor=X,exports.supportSetupBackButton=te,exports.supportSetupClosingBehavior=oe,exports.supportSetupFullScreen=he,exports.supportSetupMainButton=ae,exports.supportSetupOrientation=be,exports.supportSetupSettingsButton=ie,exports.supportSetupSwipeBehavior=le,exports.supportShareMessage=ye,exports.supportShareToStory=me,exports.supportSwitchInlineQuery=de,exports.supportTriggerHapticFeedback=ce;
package/solid/index.mjs CHANGED
@@ -1 +1 @@
1
- import{createSignal as e,onMount as t,onCleanup as s,createContext as a,createEffect as r}from"solid-js";import{createStore as o}from"solid-js/store";const n=()=>{const[a,r]=e({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>r(e);return t((()=>{os(Vt,o),Je(_t)})),s((()=>{ns(Vt,o)})),a},i="web",u="phone",_="desktop",p=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?u:["tdesktop","macos"].includes(t)?_: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(p())},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},w=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},b=e=>m()?(Je(Xe,e),{status:!0}):(Ue(Xe,1),{status:d}),m=()=>c(0,[i,_,u]),S=e=>h()?(Je(Ye,e),{status:!0}):(Ue(Ye,1),{status:d}),h=()=>c(6.4,[u]),f=e=>v()?(Je(Ze,e),{status:!0}):(Ue(Ze,1),{status:d}),v=()=>c(0,[i,_,u]),q=e=>y()?(Je(et,e),{status:!0}):(Ue(et,1),{status:d}),y=()=>c(0,[u]),R=e=>k()?(Je(tt,e),{status:!0}):(Ue(tt,1),{status:d}),k=()=>c(0,[i]),P=()=>x()?(Je(tt),{status:!0}):(Ue(tt,1),{status:d}),x=()=>c(0,[i]),C=async e=>O()?(void 0===e.req_id&&(e.req_id=l()),Je(Ve,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),ns(jt,a))};os(jt,a)}))):(Ue(Ve,1),{status:d}),O=()=>c(6.9,[i,_,u]),T=e=>B()?(Je(at,e),{status:!0}):(Ue(at,1),{status:d}),B=()=>c(6.1,[i,_,u]),I=e=>L()?(Je(rt,e),{status:!0}):(Ue(rt,1),{status:d}),L=()=>c(6.4,[i,_,u]),A=async e=>E()?(e.title.length>64&&Ue(ot,3),e.message.length<1&&Ue(ot,4),e.message.length>256&&Ue(ot,5),e.buttons.length<1&&Ue(ot,6),e.buttons.length>3&&Ue(ot,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&Ue(ot,8),Je(ot,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),ns(Mt,a)};os(Mt,a)}))):(Ue(ot,1),{status:d}),E=()=>c(6.2,[i,_,u]),j=async e=>W()?(Je(Ge,e),new Promise(((t,s)=>{is(Nt,(s=>{e.is_close&&S(),t({status:!0,data:s})})),is(Qt,(()=>{t({status:"closed"})}))}))):(Ue(Ge,1),{status:d}),W=()=>c(6.4,[u]),F=e=>{const t=function(e){try{return new URL(e)}catch(t){try{return new URL(e,"https://t.me")}catch(t){return e.startsWith("/")||(e="/"+e),new URL(e,"https://t.me")}}}(e.path_full);return e.path_full=t.pathname=t.search,D()?(Je(nt,e),{status:!0}):(Ue(nt,1),{status:d})},D=()=>c(7,[i,_,u]);const M=async e=>H()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=l()),Je(ze,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),ns(Et,a))};os(Et,a)}))):(Ue(ze,1),{status:d}),H=()=>c(6.4,[i,_,u]),N=e=>Q()?(Je(it,e),{status:!0}):(Ue(it,1),{status:d}),Q=()=>c(6.9,[i,_,u]),U=async()=>$()?(Je(Ke),new Promise(((e,t)=>{is(Dt,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(Ue(Ke,1),{status:d}),$=()=>c(6.9,[i,_,u]),J=e=>V()?(Je(ut,e),{status:!0}):(Ue(ut,1),{status:d}),V=()=>c(0,[i,_,u]),G=e=>z()?(Je(_t,e),{status:!0}):(Ue(_t,1),{status:d}),z=()=>c(0,[i,_,u]),K=()=>X()?(Je(pt),{status:!0}):(Ue(pt,1),{status:d}),X=()=>c(6.9,[i,_,u]),Y=e=>Z()?(Je(dt,e),{status:!0}):(Ue(dt,1),{status:d}),Z=()=>c(6.1,[i,_,u]),ee=e=>te()?(Je(ct,e),{status:!0}):(Ue(ct,1),{status:d}),te=()=>c(6.1,[i,_,u]),se=e=>ae()?(Je(lt,{color:e?.color||e?.color_key}),{status:!0}):(Ue(lt,1),{status:d}),ae=()=>c(7.1,[i,_,u]),re=e=>oe()?(Je(gt,e),{status:!0}):(Ue(gt,1),{status:d}),oe=()=>c(6.1,[i,_,u]),ne=e=>ie()?(Je(wt,e),{status:!0}):(Ue(wt,1),{status:d}),ie=()=>c(6.2,[i,_,u]),ue=e=>_e()?(Je(bt,e),{status:!0}):(Ue(bt,1),{status:d}),_e=()=>c(0,[i,_,u]),pe=e=>de()?(Je(mt,e),{status:!0}):(Ue(mt,1),{status:d}),de=()=>c(6.1,[i,_,u]),ce=e=>le()?(e.query.length>256&&Ue(St,9),Je(St,e),{status:!0}):(Ue(St,1),{status:d}),le=()=>c(6.7,[i,_,u]),ge=e=>we()?(Je(ht,e),{status:!0}):(Ue(ht,1),{status:d}),we=()=>c(6.1,[u]),be=({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,Se=({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}}},he=()=>!0,fe=e=>ve()?(Je(ft,e),{status:!0}):(Ue(ft,1),{status:d}),ve=()=>c(7.7,[i,_,u]),qe=e=>ye()?e?.text&&e?.text.length>2048?(console.warn(`[@apiteam/twa-bridge](${vt}) | Text is too long`),{status:!1,error_id:1}):e?.widget_link?.name&&e?.widget_link.name.length>48?(console.warn(`[@apiteam/twa-bridge](${vt}) | Link name is too long`),{status:!1,error_id:2}):(Je(vt,e),{status:!0}):(Ue(vt,1),{status:d}),ye=()=>c(7.8,[i,_,u]),Re=async e=>ke()?(Je(Ct,e),new Promise(((e,t)=>{const s=t=>{e({status:!0,data:t}),ns(Xt,s)};os(Xt,s)}))):(Ue(Ct,1),{status:d,data:void 0}),ke=()=>c(8,[_,u]),Pe=()=>xe()?(Je(xt),{status:!0}):(Ue(xt,1),{status:d}),xe=()=>c(8,[_,u]),Ce=()=>Oe()?(Je(qt),{status:!0}):(Ue(qt,1),{status:d}),Oe=()=>c(8,[i,_,u]),Te=()=>Be()?(Je(yt),{status:!0}):(Ue(yt,1),{status:d}),Be=()=>c(8,[i,_,u]),Ie=e=>{const t=e?.is_full||!1;return Le()?(Je(t?Rt:kt),{status:!0}):(Ue(t?Rt:kt,1),{status:d})},Le=()=>c(8,[i,_,u]),Ae=e=>Ee()?(Je(Pt,e),{status:!0}):(Ue(Pt,1),{status:d}),Ee=()=>c(8,[i,_,u]),je=async e=>We()?new Promise(((t,s)=>{is(ss,(function(e){t({status:"allowed"===e.status})})),Je(Bt,e)})):(Ue(Bt,1),{status:d}),We=()=>c(8,[i,_,u]),Fe=async e=>De()?new Promise(((t,s)=>{is(es,(()=>t({status:!0}))),is(ts,(()=>t({status:!1}))),Je(Tt,e)})):(Ue(Tt,1),{status:d}),De=()=>c(8,[i,_,u]),Me=async e=>He()?new Promise(((t,s)=>{is(Yt,(()=>t({status:!0}))),is(Zt,(()=>t({status:!1}))),Je(Ot,e)})):(Ue(Ot,1),{status:d}),He=()=>c(8,[i,_,u]),Ne=async e=>Qe()?new Promise(((t,s)=>{is(as,(function(e){t({status:"downloading"===e.status})})),Je(It,e)})):(Ue(It,1),{status:d}),Qe=()=>c(8,[i,_,u]),Ue=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)},$e=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void Ue("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},Je=(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){Ue("postMessage Iframe",10)}},Ve="web_app_invoke_custom_method",Ge="web_app_open_scan_qr_popup",ze="web_app_read_text_from_clipboard",Ke="web_app_request_phone",Xe="web_app_close",Ye="web_app_close_scan_qr_popup",Ze="web_app_data_send",et="web_app_expand",tt="iframe_ready",st="iframe_will_reload",at="web_app_open_invoice",rt="web_app_open_link",ot="web_app_open_popup",nt="web_app_open_tg_link",it="web_app_ready",ut="web_app_request_theme",_t="web_app_request_viewport",pt="web_app_request_write_access",dt="web_app_set_background_color",ct="web_app_set_header_color",lt="web_app_set_bottom_bar_color",gt="web_app_setup_back_button",wt="web_app_setup_closing_behavior",bt="web_app_setup_main_button",mt="web_app_setup_settings_button",St="web_app_switch_inline_query",ht="web_app_trigger_haptic_feedback",ft="web_app_setup_swipe_behavior",vt="web_app_share_to_story",qt="web_app_request_safe_area",yt="web_app_request_content_safe_area",Rt="web_app_request_fullscreen",kt="web_app_exit_fullscreen",Pt="web_app_toggle_orientation_lock",xt="web_app_add_to_home_screen",Ct="web_app_check_home_screen",Ot="web_app_send_prepared_message",Tt="web_app_set_emoji_status",Bt="web_app_request_emoji_status_access",It="web_app_request_file_download";var Lt=(e=>(e[e.InvokeCustomMethod=Ve]="InvokeCustomMethod",e[e.OpenScanQrPopup=Ge]="OpenScanQrPopup",e[e.ReadTextFromClipboard=ze]="ReadTextFromClipboard",e[e.RequestPhone=Ke]="RequestPhone",e[e.Close=Xe]="Close",e[e.CloseScanQrPopup=Ye]="CloseScanQrPopup",e[e.DataSend=Ze]="DataSend",e[e.Expand=et]="Expand",e[e.IframeReady=tt]="IframeReady",e[e.IframeWillReload=st]="IframeWillReload",e[e.OpenInvoice=at]="OpenInvoice",e[e.OpenLink=rt]="OpenLink",e[e.OpenPopup=ot]="OpenPopup",e[e.OpenTgLink=nt]="OpenTgLink",e[e.Ready=it]="Ready",e[e.RequestTheme=ut]="RequestTheme",e[e.RequestViewport=_t]="RequestViewport",e[e.RequestWriteAccess=pt]="RequestWriteAccess",e[e.SetBackgroundColor=dt]="SetBackgroundColor",e[e.SetHeaderColor=ct]="SetHeaderColor",e[e.SetBottomBarColor=lt]="SetBottomBarColor",e[e.SetupBackButton=gt]="SetupBackButton",e[e.SetupClosingBehavior=wt]="SetupClosingBehavior",e[e.SetupMainButton=bt]="SetupMainButton",e[e.SetupSettingsButton=mt]="SetupSettingsButton",e[e.SwitchInlineQuery=St]="SwitchInlineQuery",e[e.TriggerHapticFeedback=ht]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=ft]="SetupSwipeBehavior",e[e.ShareToStory=vt]="ShareToStory",e[e.RequestSafeArea=qt]="RequestSafeArea",e[e.RequestContentSafeArea=yt]="RequestContentSafeArea",e[e.RequestFullscreen=Rt]="RequestFullscreen",e[e.ExitFullscreen=kt]="ExitFullscreen",e[e.ToggleOrientationLock=Pt]="ToggleOrientationLock",e[e.AddToHomeScreen=xt]="AddToHomeScreen",e[e.CheckHomeScreen=Ct]="CheckHomeScreen",e[e.SendPreparedMessage=Ot]="SendPreparedMessage",e[e.SetEmojiStatus=Tt]="SetEmojiStatus",e[e.RequestEmojiStatusAccess=Bt]="RequestEmojiStatusAccess",e[e.RequestFileDownload=It]="RequestFileDownload",e))(Lt||{});const At="back_button_pressed",Et="clipboard_text_received",jt="custom_method_invoked",Wt="invoice_closed",Ft="main_button_pressed",Dt="phone_requested",Mt="popup_closed",Ht="reload_iframe",Nt="qr_text_received",Qt="scan_qr_popup_closed",Ut="set_custom_style",$t="settings_button_pressed",Jt="theme_changed",Vt="viewport_changed",Gt="write_access_requested",zt="safe_area_changed",Kt="content_safe_area_changed",Xt="web_app_check_home_screen",Yt="prepared_message_sent",Zt="prepared_message_failed",es="emoji_status_set",ts="emoji_status_failed",ss="emoji_status_access_requested",as="file_download_requested",rs=((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===Jt&&(t.theme_params=w(t.theme_params)),rs.emit(e,t),rs.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const os=(e,t)=>{rs.on(e,t)},ns=(e,t)=>{rs.off(e,t)},is=(e,t)=>{rs.once(e,t)};var us=Object.freeze({__proto__:null,off:ns,on:os,once:is});const _s=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},ps=a({viewport:void 0,theme:void 0,init:void 0}),ds=e=>{const[t,a]=o({viewport:void 0,theme:void 0,init:void 0});return r((()=>{const e=()=>{a("init",$e())};e();const t=t=>{e(),a("viewport",t)};os(Vt,t),G();const r=t=>{e(),a("theme",t)};return os(Jt,r),G(),s((()=>{ns(Vt,t),ns(Jt,r)})),()=>{ns(Vt,t),ns(Jt,r)}})),ps.Provider({value:t,children:e.children})};export{ps as ContextTwa,At as EventBackButtonPressed,Xt as EventCheckHomeScreen,Et as EventClipboardTextReceived,Kt as EventContentSafeAreaChanged,jt as EventCustomMethodInvoked,ss as EventEmojiStatusAccessRequested,ts as EventEmojiStatusFailed,es as EventEmojiStatusSet,as as EventFileDownloadRequested,Wt as EventInvoiceClosed,Ft as EventMainButtonPressed,Dt as EventPhoneRequested,Mt as EventPopupClosed,Zt as EventPreparedMessageFailed,Yt as EventPreparedMessageSent,Nt as EventQrTextReceived,Ht as EventReloadIframe,zt as EventSafeAreaChanged,Qt as EventScanQrPopupClosed,Ut as EventSetCustomStyle,$t as EventSettingsButtonPressed,Jt as EventThemeChanged,Vt as EventViewportChanged,Gt as EventWriteAccessRequested,Lt as Method,xt as MethodAddToHomeScreen,Ct as MethodCheckHomeScreen,Xe as MethodClose,Ye as MethodCloseScanQrPopup,Ze as MethodDataSend,kt as MethodExitFullscreen,et as MethodExpand,tt as MethodIframeReady,st as MethodIframeWillReload,Ve as MethodInvokeCustomMethod,at as MethodOpenInvoice,rt as MethodOpenLink,ot as MethodOpenPopup,Ge as MethodOpenScanQrPopup,nt as MethodOpenTgLink,ze as MethodReadTextFromClipboard,it as MethodReady,yt as MethodRequestContentSafeArea,Bt as MethodRequestEmojiStatusAccess,It as MethodRequestFileDownload,Rt as MethodRequestFullscreen,Ke as MethodRequestPhone,qt as MethodRequestSafeArea,ut as MethodRequestTheme,_t as MethodRequestViewport,pt as MethodRequestWriteAccess,Ot as MethodSendPreparedMessage,dt as MethodSetBackgroundColor,lt as MethodSetBottomBarColor,Tt as MethodSetEmojiStatus,ct as MethodSetHeaderColor,gt as MethodSetupBackButton,wt as MethodSetupClosingBehavior,bt as MethodSetupMainButton,mt as MethodSetupSettingsButton,ft as MethodSetupSwipeBehavior,vt as MethodShareToStory,St as MethodSwitchInlineQuery,Pt as MethodToggleOrientationLock,ht as MethodTriggerHapticFeedback,d as NOT_SUPPORTED,ds as ProviderTWA,_ as TG_DESKTOP,u as TG_PHONE,i as TG_WEB,Pe as bridgeAddToHomeScreen,Re as bridgeCheckHomeScreen,b as bridgeClose,S as bridgeCloseScanQrPopup,f as bridgeDataSend,Ne as bridgeDownloadFile,q as bridgeExpand,$e as bridgeGetInitData,w as bridgeGetThemeParams,R as bridgeIframeReady,P as bridgeIframeWillReload,C as bridgeInvokeCustomMethod,T as bridgeOpenInvoice,I as bridgeOpenLink,A as bridgeOpenPopup,j as bridgeOpenScanQrPopup,F as bridgeOpenTgLink,M as bridgeReadTextFromClipboard,N as bridgeReady,Te as bridgeRequestContentSafeAreaInset,je as bridgeRequestEmojiStatus,U as bridgeRequestPhone,Ce as bridgeRequestSafeAreaInset,J as bridgeRequestTheme,G as bridgeRequestViewport,K as bridgeRequestWriteAccess,Je as bridgeSend,Se as bridgeSessionStorageGet,be as bridgeSessionStorageSet,Y as bridgeSetBackgroundColor,se as bridgeSetBottomBarColor,Fe as bridgeSetEmojiStatus,ee as bridgeSetHeaderColor,re as bridgeSetupBackButton,ne as bridgeSetupClosingBehavior,Ie as bridgeSetupFullScreen,ue as bridgeSetupMainButton,Ae as bridgeSetupOrientation,pe as bridgeSetupSettingsButton,fe as bridgeSetupSwipeBehavior,Me as bridgeShareMessage,qe as bridgeShareToStory,ce as bridgeSwitchInlineQuery,ge as bridgeTriggerHapticFeedback,n as createIsViewportChanged,Ue as debug,_s as getAppData,p as getPlatform,us as listener,Je as sender,xe as supportAddToHomeScreen,ke as supportCheckHomeScreen,m as supportClose,h as supportCloseScanQrPopup,v as supportDataSend,Qe as supportDownloadFile,y as supportExpand,k as supportIframeReady,x as supportIframeWillReload,O as supportInvokeCustomMethod,B as supportOpenInvoice,L as supportOpenLink,E as supportOpenPopup,W as supportOpenScanQrPopup,D as supportOpenTgLink,H as supportReadTextFromClipboard,Q as supportReady,Be as supportRequestContentSafeAreaInset,We as supportRequestEmojiStatus,$ as supportRequestPhone,Oe as supportRequestSafeAreaInset,V as supportRequestTheme,z as supportRequestViewport,X as supportRequestWriteAccess,he as supportSessionStorageGet,me as supportSessionStorageSet,Z as supportSetBackgroundColor,ae as supportSetBottomBarColor,De as supportSetEmojiStatus,te as supportSetHeaderColor,oe as supportSetupBackButton,ie as supportSetupClosingBehavior,Le as supportSetupFullScreen,_e as supportSetupMainButton,Ee as supportSetupOrientation,de as supportSetupSettingsButton,ve as supportSetupSwipeBehavior,He as supportShareMessage,ye as supportShareToStory,le as supportSwitchInlineQuery,we as supportTriggerHapticFeedback};
1
+ import{debug as e,NOT_SUPPORTED as t,listener as s,EventBiometryInfoReceived as a,sender as o,EventBiometryAuthRequested as r,EventBiometryTokenUpdated as i,TG_DESKTOP as n,TG_PHONE as d,TG_WEB as c}from"solid";import{createSignal as u,onMount as _,onCleanup as p,createContext as l,createEffect as m}from"solid-js";import{createStore as g,produce as b}from"solid-js/store";const w=()=>{const[e,t]=u({height:0,is_expanded:!1,is_state_stable:!1}),s=e=>t(e);return _((()=>{Ks(gs,s),ts(wt)})),p((()=>{Xs(gs,s)})),e},v="web",h="phone",S="desktop",f=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?h:["tdesktop","macos"].includes(t)?S:v},y="not_supported",q=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(f())},k=()=>Math.random().toString(36).substring(3,9),T=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},R=e=>{const t=window.location.hash.slice(1),s=new URLSearchParams(t),a=JSON.parse(s.get("tgWebAppThemeParams")??""),o=e||a;for(var r of Object.keys(o)){var i=T(o[r]);"string"==typeof i&&(o[r]=i)}return"#1c1c1d"==o?.bg_color&&o?.bg_color==o?.secondary_bg_color&&(o.secondary_bg_color="#2c2c2e"),o},B=e=>A()?(ts(rt,e),{status:!0}):(Zt(rt,1),{status:y}),A=()=>q(0,[v,S,h]),P=e=>I()?(ts(it,e),{status:!0}):(Zt(it,1),{status:y}),I=()=>q(6.4,[h]),O=e=>x()?(ts(nt,e),{status:!0}):(Zt(nt,1),{status:y}),x=()=>q(0,[v,S,h]),C=e=>E()?(ts(dt,e),{status:!0}):(Zt(dt,1),{status:y}),E=()=>q(0,[h]),W=e=>L()?(ts(ct,e),{status:!0}):(Zt(ct,1),{status:y}),L=()=>q(0,[v]),j=()=>G()?(ts(ct),{status:!0}):(Zt(ct,1),{status:y}),G=()=>q(0,[v]),D=async e=>F()?(void 0===e.req_id&&(e.req_id=k()),ts(tt,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Xs(os,a))};Ks(os,a)}))):(Zt(tt,1),{status:y}),F=()=>q(6.9,[v,S,h]),H=e=>M()?(ts(_t,e),{status:!0}):(Zt(_t,1),{status:y}),M=()=>q(6.1,[v,S,h]),N=e=>U()?(ts(pt,e),{status:!0}):(Zt(pt,1),{status:y}),U=()=>q(6.4,[v,S,h]),$=async e=>Q()?(e.title.length>64&&Zt(lt,3),e.message.length<1&&Zt(lt,4),e.message.length>256&&Zt(lt,5),e.buttons.length<1&&Zt(lt,6),e.buttons.length>3&&Zt(lt,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&Zt(lt,8),ts(lt,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Xs(ds,a)};Ks(ds,a)}))):(Zt(lt,1),{status:y}),Q=()=>q(6.2,[v,S,h]),J=async e=>V()?(ts(st,e),new Promise(((t,s)=>{Ys(us,(s=>{e.is_close&&P(),t({status:!0,data:s})})),Ys(_s,(()=>{t({status:"closed"})}))}))):(Zt(st,1),{status:y}),V=()=>q(6.4,[h]),z=e=>{const t=function(e){try{return new URL(e)}catch(t){try{return new URL(e,"https://t.me")}catch(t){return e.startsWith("/")||(e="/"+e),new URL(e,"https://t.me")}}}(e.path_full);return e.path_full=t.pathname=t.search,K()?(ts(mt,e),{status:!0}):(Zt(mt,1),{status:y})},K=()=>q(7,[v,S,h]);const X=async e=>Y()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=k()),ts(at,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),Xs(as,a))};Ks(as,a)}))):(Zt(at,1),{status:y}),Y=()=>q(6.4,[v,S,h]),Z=e=>ee()?(ts(gt,e),{status:!0}):(Zt(gt,1),{status:y}),ee=()=>q(6.9,[v,S,h]),te=async()=>se()?(ts(ot),new Promise(((e,t)=>{Ys(ns,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(Zt(ot,1),{status:y}),se=()=>q(6.9,[v,S,h]),ae=e=>oe()?(ts(bt,e),{status:!0}):(Zt(bt,1),{status:y}),oe=()=>q(0,[v,S,h]),re=e=>ie()?(ts(wt,e),{status:!0}):(Zt(wt,1),{status:y}),ie=()=>q(0,[v,S,h]),ne=()=>new Promise(((e,t)=>{if(!de())return Zt(vt,1),void e({status:y});const s=t=>{e({status:"allowed"===t.status}),Xs(bs,s)};Ks(bs,s),ts(vt)})),de=()=>q(6.9,[v,S,h]),ce=e=>ue()?(ts(ht,e),{status:!0}):(Zt(ht,1),{status:y}),ue=()=>q(6.1,[v,S,h]),_e=e=>pe()?(ts(St,e),{status:!0}):(Zt(St,1),{status:y}),pe=()=>q(6.1,[v,S,h]),le=e=>me()?(ts(ft,{color:e?.color||e?.color_key}),{status:!0}):(Zt(ft,1),{status:y}),me=()=>q(7.1,[v,S,h]),ge=e=>be()?(ts(yt,e),{status:!0}):(Zt(yt,1),{status:y}),be=()=>q(6.1,[v,S,h]),we=e=>ve()?(ts(qt,e),{status:!0}):(Zt(qt,1),{status:y}),ve=()=>q(6.2,[v,S,h]),he=e=>Se()?(ts(kt,e),{status:!0}):(Zt(kt,1),{status:y}),Se=()=>q(0,[v,S,h]),fe=e=>ye()?(ts(Tt,e),{status:!0}):(Zt(Tt,1),{status:y}),ye=()=>q(6.1,[v,S,h]),qe=e=>ke()?(e.query.length>256&&Zt(Rt,9),ts(Rt,e),{status:!0}):(Zt(Rt,1),{status:y}),ke=()=>q(6.7,[v,S,h]),Te=e=>Re()?(ts(Bt,e),{status:!0}):(Zt(Bt,1),{status:y}),Re=()=>q(6.1,[h]),Be=({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}}},Ae=()=>!0,Pe=({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}}},Ie=()=>!0,Oe=e=>xe()?(ts(At,e),{status:!0}):(Zt(At,1),{status:y}),xe=()=>q(7.7,[v,S,h]),Ce=e=>Ee()?e?.text&&e?.text.length>2048?(console.warn(`[@apiteam/twa-bridge](${Pt}) | Text is too long`),{status:!1,error_id:1}):e?.widget_link?.name&&e?.widget_link.name.length>48?(console.warn(`[@apiteam/twa-bridge](${Pt}) | Link name is too long`),{status:!1,error_id:2}):(ts(Pt,e),{status:!0}):(Zt(Pt,1),{status:y}),Ee=()=>q(7.8,[v,S,h]),We=async e=>new Promise(((t,s)=>{if(!Le())return Zt(Lt,1),void t({status:y,data:void 0});const a=e=>{e.status=e.status||"unknown",t({status:!0,data:e}),Xs(Ns,a)};Ks(Ns,a),ts(Lt,e)})),Le=()=>q(8,[S,h]),je=()=>Ge()?(ts(Wt),{status:!0}):(Zt(Wt,1),{status:y}),Ge=()=>q(8,[S,h]),De=()=>Fe()?(ts(It),{status:!0}):(Zt(It,1),{status:y}),Fe=()=>q(8,[v,S,h]),He=()=>Me()?(ts(Ot),{status:!0}):(Zt(Ot,1),{status:y}),Me=()=>q(8,[v,S,h]),Ne=e=>{const t=e?.is_full||!1;return Ue()?(ts(t?xt:Ct),{status:!0}):(Zt(t?xt:Ct,1),{status:y})},Ue=()=>q(8,[v,S,h]),$e=e=>Qe()?(ts(Et,e),{status:!0}):(Zt(Et,1),{status:y}),Qe=()=>q(8,[v,S,h]),Je=async e=>Ve()?new Promise(((t,s)=>{Ys(qs,(function(e){t({status:"allowed"===e.status})})),ts(Dt,e)})):(Zt(Dt,1),{status:y}),Ve=()=>q(8,[v,S,h]),ze=async e=>Ke()?new Promise(((t,s)=>{Ys(fs,(()=>t({status:!0}))),Ys(ys,(()=>t({status:!1}))),ts(Gt,e)})):(Zt(Gt,1),{status:y}),Ke=()=>q(8,[v,S,h]),Xe=async e=>Ye()?new Promise(((t,s)=>{Ys(hs,(()=>t({status:!0}))),Ys(Ss,(()=>t({status:!1}))),ts(jt,e)})):(Zt(jt,1),{status:y}),Ye=()=>q(8,[v,S,h]),Ze=async e=>et()?new Promise(((t,s)=>{Ys(ks,(function(e){t({status:"downloading"===e.status})})),ts(Ft,e)})):(Zt(Ft,1),{status:y}),et=()=>q(8,[v,S,h]),tt="web_app_invoke_custom_method",st="web_app_open_scan_qr_popup",at="web_app_read_text_from_clipboard",ot="web_app_request_phone",rt="web_app_close",it="web_app_close_scan_qr_popup",nt="web_app_data_send",dt="web_app_expand",ct="iframe_ready",ut="iframe_will_reload",_t="web_app_open_invoice",pt="web_app_open_link",lt="web_app_open_popup",mt="web_app_open_tg_link",gt="web_app_ready",bt="web_app_request_theme",wt="web_app_request_viewport",vt="web_app_request_write_access",ht="web_app_set_background_color",St="web_app_set_header_color",ft="web_app_set_bottom_bar_color",yt="web_app_setup_back_button",qt="web_app_setup_closing_behavior",kt="web_app_setup_main_button",Tt="web_app_setup_settings_button",Rt="web_app_switch_inline_query",Bt="web_app_trigger_haptic_feedback",At="web_app_setup_swipe_behavior",Pt="web_app_share_to_story",It="web_app_request_safe_area",Ot="web_app_request_content_safe_area",xt="web_app_request_fullscreen",Ct="web_app_exit_fullscreen",Et="web_app_toggle_orientation_lock",Wt="web_app_add_to_home_screen",Lt="web_app_check_home_screen",jt="web_app_send_prepared_message",Gt="web_app_set_emoji_status",Dt="web_app_request_emoji_status_access",Ft="web_app_request_file_download",Ht="web_app_biometry_get_info",Mt="web_app_biometry_open_settings",Nt="web_app_biometry_request_access",Ut="web_app_biometry_request_auth",$t="web_app_biometry_update_token";var Qt=(e=>(e[e.InvokeCustomMethod=tt]="InvokeCustomMethod",e[e.OpenScanQrPopup=st]="OpenScanQrPopup",e[e.ReadTextFromClipboard=at]="ReadTextFromClipboard",e[e.RequestPhone=ot]="RequestPhone",e[e.Close=rt]="Close",e[e.CloseScanQrPopup=it]="CloseScanQrPopup",e[e.DataSend=nt]="DataSend",e[e.Expand=dt]="Expand",e[e.IframeReady=ct]="IframeReady",e[e.IframeWillReload=ut]="IframeWillReload",e[e.OpenInvoice=_t]="OpenInvoice",e[e.OpenLink=pt]="OpenLink",e[e.OpenPopup=lt]="OpenPopup",e[e.OpenTgLink=mt]="OpenTgLink",e[e.Ready=gt]="Ready",e[e.RequestTheme=bt]="RequestTheme",e[e.RequestViewport=wt]="RequestViewport",e[e.RequestWriteAccess=vt]="RequestWriteAccess",e[e.SetBackgroundColor=ht]="SetBackgroundColor",e[e.SetHeaderColor=St]="SetHeaderColor",e[e.SetBottomBarColor=ft]="SetBottomBarColor",e[e.SetupBackButton=yt]="SetupBackButton",e[e.SetupClosingBehavior=qt]="SetupClosingBehavior",e[e.SetupMainButton=kt]="SetupMainButton",e[e.SetupSettingsButton=Tt]="SetupSettingsButton",e[e.SwitchInlineQuery=Rt]="SwitchInlineQuery",e[e.TriggerHapticFeedback=Bt]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=At]="SetupSwipeBehavior",e[e.ShareToStory=Pt]="ShareToStory",e[e.RequestSafeArea=It]="RequestSafeArea",e[e.RequestContentSafeArea=Ot]="RequestContentSafeArea",e[e.RequestFullscreen=xt]="RequestFullscreen",e[e.ExitFullscreen=Ct]="ExitFullscreen",e[e.ToggleOrientationLock=Et]="ToggleOrientationLock",e[e.AddToHomeScreen=Wt]="AddToHomeScreen",e[e.CheckHomeScreen=Lt]="CheckHomeScreen",e[e.SendPreparedMessage=jt]="SendPreparedMessage",e[e.SetEmojiStatus=Gt]="SetEmojiStatus",e[e.RequestEmojiStatusAccess=Dt]="RequestEmojiStatusAccess",e[e.RequestFileDownload=Ft]="RequestFileDownload",e))(Qt||{});const[Jt,Vt]=g({isInited:!1,isBiometricAvailable:!1,isAccessGranted:!1,isAccessRequested:!1,isBiometricTokenSaved:!1,biometricType:"unknown",deviceId:""}),zt={isInited:Jt.isInited,isBiometricAvailable:Jt.isBiometricAvailable,isAccessGranted:Jt.isAccessGranted,isAccessRequested:Jt.isAccessRequested,isBiometricTokenSaved:Jt.isBiometricTokenSaved,biometricType:Jt.biometricType,deviceId:Jt.deviceId,init:()=>new Promise(((r,i)=>{if(!Kt())return e(Ht,1),void r({status:t,data:void 0});const n=e=>{Xt(e),r({status:!0,data:Jt}),s.off(a,n)};s.on(a,n),o(Ht)})),requestAccess:r=>new Promise(((i,n)=>{if(!Kt())return e(Nt,1),void i({status:t,data:void 0});if(r.reason&&r.reason.length>128)return console.error(`[${Nt}] Biometric reason is too long`,r.reason),void i({status:!1,data:void 0});const d=e=>{Xt(e),i({status:!0,data:Jt}),s.off(a,d)};s.on(a,d),o(Nt,r)})),authenticate:a=>new Promise(((i,n)=>{if(!Kt())return e(Ut,1),void i({status:t,data:void 0});if(!Jt.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void i({status:!1,data:void 0});if(!Jt.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void i({status:!1,data:void 0});const d=e=>{i({status:!0,data:e}),s.off(r,d)};s.on(r,d),o(Ut,a)})),updateToken:a=>new Promise(((r,n)=>{if(!Kt())return e($t,1),void r({status:t,data:void 0});if(!Jt.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void r({status:!1,data:void 0});if(!Jt.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void r({status:!1,data:void 0});const d=e=>{r({status:!0,data:e}),s.off(i,d)};s.on(i,d),o($t,a)})),openSettings:s=>Kt()?Jt.isBiometricAvailable?Jt.isAccessRequested?Jt.isAccessGranted?(console.warn("[Telegram.WebApp] Biometric access was granted by the user, no need to go to settings."),{status:!1}):(o(Mt,s),{status:!0}):(console.error("[Telegram.WebApp] Biometric access was not granted by the user."),{status:!1}):(console.error("[Telegram.WebApp] Biometrics is not available on this device."),{status:!1}):(e(Mt,1),{status:t})},Kt=()=>q(7.2,[n,d,c]),Xt=e=>{Vt(b((t=>(e.available?(t.isBiometricAvailable=!0,t.biometricType=e.type||"",e.access_requested?(t.isAccessRequested=!0,t.isAccessGranted=!!e.access_granted,t.isBiometricTokenSaved=!!e.token_saved):(t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1)):(t.isBiometricAvailable=!1,t.biometricType="unknown",t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1),t.deviceId=e.device_id||"",t.isInited=!0,t))))},Yt=e=>{Vt(b((t=>(t.isBiometricAvailable&&t.isAccessRequested&&("updated"===e.status?t.isBiometricTokenSaved=!0:"removed"===e.status&&(t.isBiometricTokenSaved=!1)),t))))};_((()=>{s.on(a,Xt),s.on(i,Yt),p((()=>{s.off(a,Xt),s.off(i,Yt)}))}));const Zt=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)},es=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void Zt("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},ts=(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){Zt("postMessage Iframe",10)}},ss="back_button_pressed",as="clipboard_text_received",os="custom_method_invoked",rs="invoice_closed",is="main_button_pressed",ns="phone_requested",ds="popup_closed",cs="reload_iframe",us="qr_text_received",_s="scan_qr_popup_closed",ps="set_custom_style",ls="settings_button_pressed",ms="theme_changed",gs="viewport_changed",bs="write_access_requested",ws="safe_area_changed",vs="content_safe_area_changed",hs="prepared_message_sent",Ss="prepared_message_failed",fs="emoji_status_set",ys="emoji_status_failed",qs="emoji_status_access_requested",ks="file_download_requested",Ts="accelerometer_changed",Rs="accelerometer_failed",Bs="accelerometer_started",As="accelerometer_stopped",Ps="biometry_auth_requested",Is="biometry_info_received",Os="biometry_token_updated",xs="device_orientation_changed",Cs="device_orientation_failed",Es="device_orientation_started",Ws="device_orientation_stopped",Ls="fullscreen_changed",js="fullscreen_failed",Gs="gyroscope_changed",Ds="gyroscope_failed",Fs="gyroscope_started",Hs="gyroscope_stopped",Ms="home_screen_added",Ns="home_screen_checked",Us="home_screen_failed",$s="location_checked",Qs="location_requested",Js="secondary_button_pressed",Vs="visibility_changed",zs=((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===ms&&(t.theme_params=R(t.theme_params)),zs.emit(e,t),zs.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Ks=(e,t)=>{zs.on(e,t)},Xs=(e,t)=>{zs.off(e,t)},Ys=(e,t)=>{zs.once(e,t)};var Zs=Object.freeze({__proto__:null,off:Xs,on:Ks,once:Ys});const ea=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},ta=l({viewport:void 0,theme:void 0,init:void 0}),sa=e=>{const[t,s]=g({viewport:void 0,theme:void 0,init:void 0});return m((()=>{const e=()=>{s("init",es())};e();const t=t=>{e(),s("viewport",t)};Ks(gs,t),re();const a=t=>{e(),s("theme",t)};return Ks(ms,a),re(),p((()=>{Xs(gs,t),Xs(ms,a)})),()=>{Xs(gs,t),Xs(ms,a)}})),ta.Provider({value:t,children:e.children})};export{zt as BiometricManager,ta as ContextTwa,Ts as EventAccelerometerChanged,Rs as EventAccelerometerFailed,Bs as EventAccelerometerStarted,As as EventAccelerometerStopped,ss as EventBackButtonPressed,Ps as EventBiometryAuthRequested,Is as EventBiometryInfoReceived,Os as EventBiometryTokenUpdated,as as EventClipboardTextReceived,vs as EventContentSafeAreaChanged,os as EventCustomMethodInvoked,xs as EventDeviceOrientationChanged,Cs as EventDeviceOrientationFailed,Es as EventDeviceOrientationStarted,Ws as EventDeviceOrientationStopped,qs as EventEmojiStatusAccessRequested,ys as EventEmojiStatusFailed,fs as EventEmojiStatusSet,ks as EventFileDownloadRequested,Ls as EventFullscreenChanged,js as EventFullscreenFailed,Gs as EventGyroscopeChanged,Ds as EventGyroscopeFailed,Fs as EventGyroscopeStarted,Hs as EventGyroscopeStopped,Ms as EventHomeScreenAdded,Ns as EventHomeScreenChecked,Us as EventHomeScreenFailed,rs as EventInvoiceClosed,$s as EventLocationChecked,Qs as EventLocationRequested,is as EventMainButtonPressed,ns as EventPhoneRequested,ds as EventPopupClosed,Ss as EventPreparedMessageFailed,hs as EventPreparedMessageSent,us as EventQrTextReceived,cs as EventReloadIframe,ws as EventSafeAreaChanged,_s as EventScanQrPopupClosed,Js as EventSecondaryButtonPressed,ps as EventSetCustomStyle,ls as EventSettingsButtonPressed,ms as EventThemeChanged,gs as EventViewportChanged,Vs as EventVisibilityChanged,bs as EventWriteAccessRequested,Qt as Method,Wt as MethodAddToHomeScreen,Lt as MethodCheckHomeScreen,rt as MethodClose,it as MethodCloseScanQrPopup,nt as MethodDataSend,Ct as MethodExitFullscreen,dt as MethodExpand,ct as MethodIframeReady,ut as MethodIframeWillReload,tt as MethodInvokeCustomMethod,_t as MethodOpenInvoice,pt as MethodOpenLink,lt as MethodOpenPopup,st as MethodOpenScanQrPopup,mt as MethodOpenTgLink,at as MethodReadTextFromClipboard,gt as MethodReady,Ot as MethodRequestContentSafeArea,Dt as MethodRequestEmojiStatusAccess,Ft as MethodRequestFileDownload,xt as MethodRequestFullscreen,ot as MethodRequestPhone,It as MethodRequestSafeArea,bt as MethodRequestTheme,wt as MethodRequestViewport,vt as MethodRequestWriteAccess,jt as MethodSendPreparedMessage,ht as MethodSetBackgroundColor,ft as MethodSetBottomBarColor,Gt as MethodSetEmojiStatus,St as MethodSetHeaderColor,yt as MethodSetupBackButton,qt as MethodSetupClosingBehavior,kt as MethodSetupMainButton,Tt as MethodSetupSettingsButton,At as MethodSetupSwipeBehavior,Pt as MethodShareToStory,Rt as MethodSwitchInlineQuery,Et as MethodToggleOrientationLock,Bt as MethodTriggerHapticFeedback,y as NOT_SUPPORTED,sa as ProviderTWA,S as TG_DESKTOP,h as TG_PHONE,v as TG_WEB,je as bridgeAddToHomeScreen,We as bridgeCheckHomeScreen,B as bridgeClose,P as bridgeCloseScanQrPopup,O as bridgeDataSend,Ze as bridgeDownloadFile,C as bridgeExpand,es as bridgeGetInitData,R as bridgeGetThemeParams,W as bridgeIframeReady,j as bridgeIframeWillReload,D as bridgeInvokeCustomMethod,H as bridgeOpenInvoice,N as bridgeOpenLink,$ as bridgeOpenPopup,J as bridgeOpenScanQrPopup,z as bridgeOpenTgLink,X as bridgeReadTextFromClipboard,Z as bridgeReady,He as bridgeRequestContentSafeAreaInset,Je as bridgeRequestEmojiStatus,te as bridgeRequestPhone,De as bridgeRequestSafeAreaInset,ae as bridgeRequestTheme,re as bridgeRequestViewport,ne as bridgeRequestWriteAccess,ts as bridgeSend,Pe as bridgeSessionStorageGet,Be as bridgeSessionStorageSet,ce as bridgeSetBackgroundColor,le as bridgeSetBottomBarColor,ze as bridgeSetEmojiStatus,_e as bridgeSetHeaderColor,ge as bridgeSetupBackButton,we as bridgeSetupClosingBehavior,Ne as bridgeSetupFullScreen,he as bridgeSetupMainButton,$e as bridgeSetupOrientation,fe as bridgeSetupSettingsButton,Oe as bridgeSetupSwipeBehavior,Xe as bridgeShareMessage,Ce as bridgeShareToStory,qe as bridgeSwitchInlineQuery,Te as bridgeTriggerHapticFeedback,w as createIsViewportChanged,Zt as debug,ea as getAppData,f as getPlatform,Zs as listener,ts as sender,Ge as supportAddToHomeScreen,Kt as supportBiometricManager,Le as supportCheckHomeScreen,A as supportClose,I as supportCloseScanQrPopup,x as supportDataSend,et as supportDownloadFile,E as supportExpand,L as supportIframeReady,G as supportIframeWillReload,F as supportInvokeCustomMethod,M as supportOpenInvoice,U as supportOpenLink,Q as supportOpenPopup,V as supportOpenScanQrPopup,K as supportOpenTgLink,Y as supportReadTextFromClipboard,ee as supportReady,Me as supportRequestContentSafeAreaInset,Ve as supportRequestEmojiStatus,se as supportRequestPhone,Fe as supportRequestSafeAreaInset,oe as supportRequestTheme,ie as supportRequestViewport,de as supportRequestWriteAccess,Ie as supportSessionStorageGet,Ae as supportSessionStorageSet,ue as supportSetBackgroundColor,me as supportSetBottomBarColor,Ke as supportSetEmojiStatus,pe as supportSetHeaderColor,be as supportSetupBackButton,ve as supportSetupClosingBehavior,Ue as supportSetupFullScreen,Se as supportSetupMainButton,Qe as supportSetupOrientation,ye as supportSetupSettingsButton,xe as supportSetupSwipeBehavior,Ye as supportShareMessage,Ee as supportShareToStory,ke as supportSwitchInlineQuery,Re as supportTriggerHapticFeedback};