@apiteam/twa-bridge 8.0.6 → 8.0.8

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