@apiteam/twa-bridge 7.0.0-beta.9 → 7.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -3
- package/package.json +1 -1
- package/react/index.d.ts +112 -50
- package/react/index.js +1 -1
- package/react/index.mjs +1 -1
- package/solid/index.d.ts +461 -300
- package/solid/index.js +1 -1
- package/solid/index.mjs +1 -1
package/README.md
CHANGED
|
@@ -36,9 +36,43 @@ And yes, it supports TS.
|
|
|
36
36
|
|
|
37
37
|
### Solid
|
|
38
38
|
```js
|
|
39
|
-
import {
|
|
39
|
+
import {
|
|
40
|
+
listener,
|
|
41
|
+
EventViewportChanged,
|
|
42
|
+
bridgeRequestViewport
|
|
43
|
+
} from '@apiteam/twa-bridge/solid'
|
|
44
|
+
|
|
45
|
+
const onRequestViewport = (
|
|
46
|
+
eventData: EventsData[typeof EventViewportChanged]
|
|
47
|
+
) => {
|
|
48
|
+
console.log({eventData})
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
listener.on(EventViewportChanged, onRequestViewport)
|
|
52
|
+
bridgeRequestViewport()
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
### Use Context
|
|
56
|
+
```js
|
|
57
|
+
import {
|
|
58
|
+
ProviderTWA,
|
|
59
|
+
ContextTwa
|
|
60
|
+
} from '@apiteam/twa-bridge/solid'
|
|
61
|
+
|
|
62
|
+
const Provider = () => {
|
|
63
|
+
return (
|
|
64
|
+
<ProviderTWA>
|
|
65
|
+
<App />
|
|
66
|
+
</ProviderTWA>
|
|
67
|
+
)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const App = () => {
|
|
71
|
+
const context = useContext(ContextTwa)
|
|
72
|
+
|
|
73
|
+
return <div>FisrtName: {context.init?.user?.first_name}</div>
|
|
74
|
+
}
|
|
40
75
|
|
|
41
|
-
const viewport = createIsViewportChanged()
|
|
42
76
|
```
|
|
43
77
|
|
|
44
78
|
### Errors
|
|
@@ -53,4 +87,4 @@ const viewport = createIsViewportChanged()
|
|
|
53
87
|
| 6 | You are passing too few buttons, at least 1 button |
|
|
54
88
|
| 7 | You are passing too many buttons, maximum 3 buttons |
|
|
55
89
|
| 8 | The button text ignores the following values: "ok, close, cancel" |
|
|
56
|
-
| 9 | EDIT_MESSAGE
|
|
90
|
+
| 9 | EDIT_MESSAGE |
|
package/package.json
CHANGED
package/react/index.d.ts
CHANGED
|
@@ -606,6 +606,20 @@ declare const sessionStorageGet: SessionStorageGet;
|
|
|
606
606
|
*/
|
|
607
607
|
declare const supportSessionStorageGet: () => boolean;
|
|
608
608
|
|
|
609
|
+
type SetupSwipeBehavior = ({ allow_vertical_swipe, }: {
|
|
610
|
+
allow_vertical_swipe: boolean;
|
|
611
|
+
}) => {
|
|
612
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
613
|
+
};
|
|
614
|
+
/**
|
|
615
|
+
* sessions storage set.
|
|
616
|
+
*/
|
|
617
|
+
declare const setupSwipeBehavior: SetupSwipeBehavior;
|
|
618
|
+
/**
|
|
619
|
+
* Method support check
|
|
620
|
+
*/
|
|
621
|
+
declare const supportSetupSwipeBehavior: () => boolean;
|
|
622
|
+
|
|
609
623
|
type User = {
|
|
610
624
|
/**
|
|
611
625
|
* Optional. True, if this user added the bot to the attachment menu.
|
|
@@ -753,15 +767,68 @@ declare const sender: Sender;
|
|
|
753
767
|
type Debug = (methondName: string, errorId: number) => void;
|
|
754
768
|
declare const debug: Debug;
|
|
755
769
|
|
|
770
|
+
type GetPlatform = () => 'phone' | 'web' | 'desktop';
|
|
771
|
+
declare const TG_WEB = "web";
|
|
772
|
+
declare const TG_PHONE = "phone";
|
|
773
|
+
declare const TG_DESKTOP = "desktop";
|
|
774
|
+
declare const getPlatform: GetPlatform;
|
|
775
|
+
|
|
776
|
+
declare const NOT_SUPPORTED = "not_supported";
|
|
777
|
+
|
|
778
|
+
type ThemeParams = {
|
|
779
|
+
bg_color: string;
|
|
780
|
+
text_color: string;
|
|
781
|
+
hint_color: string;
|
|
782
|
+
link_color: string;
|
|
783
|
+
button_color: string;
|
|
784
|
+
button_text_color: string;
|
|
785
|
+
/**
|
|
786
|
+
* Bot API 6.1+
|
|
787
|
+
*/
|
|
788
|
+
secondary_bg_color: string;
|
|
789
|
+
/**
|
|
790
|
+
* Bot API 7.0+
|
|
791
|
+
*/
|
|
792
|
+
header_bg_color: string;
|
|
793
|
+
/**
|
|
794
|
+
* Bot API 7.10+
|
|
795
|
+
*/
|
|
796
|
+
bottom_bar_bg_color: string;
|
|
797
|
+
/**
|
|
798
|
+
* Bot API 7.0+
|
|
799
|
+
*/
|
|
800
|
+
accent_text_color: string;
|
|
801
|
+
/**
|
|
802
|
+
* Bot API 7.0+
|
|
803
|
+
*/
|
|
804
|
+
section_bg_color: string;
|
|
805
|
+
/**
|
|
806
|
+
* Bot API 7.0+
|
|
807
|
+
*/
|
|
808
|
+
section_header_text_color: string;
|
|
809
|
+
/**
|
|
810
|
+
* Bot API 7.6+
|
|
811
|
+
*/
|
|
812
|
+
section_separator_color: string;
|
|
813
|
+
/**
|
|
814
|
+
* Bot API 7.0+
|
|
815
|
+
*/
|
|
816
|
+
subtitle_text_color: string;
|
|
817
|
+
/**
|
|
818
|
+
* Bot API 7.0+
|
|
819
|
+
*/
|
|
820
|
+
destructive_text_color: string;
|
|
821
|
+
};
|
|
822
|
+
|
|
756
823
|
type EventsData = {
|
|
757
824
|
/**
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
825
|
+
* User clicked the Back Button.
|
|
826
|
+
*/
|
|
827
|
+
back_button_pressed: undefined;
|
|
761
828
|
/**
|
|
762
829
|
* Telegram application attempted to extract text from clipboard.
|
|
763
830
|
*/
|
|
764
|
-
|
|
831
|
+
clipboard_text_received: {
|
|
765
832
|
/**
|
|
766
833
|
* Passed during the web_app_read_text_from_clipboard method invocation req_id value.
|
|
767
834
|
*/
|
|
@@ -772,9 +839,9 @@ type EventsData = {
|
|
|
772
839
|
data?: string | null;
|
|
773
840
|
};
|
|
774
841
|
/**
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
842
|
+
* Custom method invocation completed.
|
|
843
|
+
*/
|
|
844
|
+
custom_method_invoked: {
|
|
778
845
|
/**
|
|
779
846
|
* Unique identifier of this invocation.
|
|
780
847
|
*/
|
|
@@ -789,9 +856,9 @@ type EventsData = {
|
|
|
789
856
|
error?: string;
|
|
790
857
|
};
|
|
791
858
|
/**
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
859
|
+
* An invoice was closed.
|
|
860
|
+
*/
|
|
861
|
+
invoice_closed: {
|
|
795
862
|
/**
|
|
796
863
|
* Passed during the web_app_open_invoice method invocation slug value.
|
|
797
864
|
*/
|
|
@@ -810,22 +877,22 @@ type EventsData = {
|
|
|
810
877
|
status: 'paid' | 'failed' | 'pending' | 'cancelled';
|
|
811
878
|
};
|
|
812
879
|
/**
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
880
|
+
* User clicked the Main Button.
|
|
881
|
+
*/
|
|
882
|
+
main_button_pressed: undefined;
|
|
816
883
|
/**
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
884
|
+
* Application received phone access request status.
|
|
885
|
+
*/
|
|
886
|
+
phone_requested: {
|
|
820
887
|
/**
|
|
821
888
|
* Request status. Can only be sent
|
|
822
889
|
*/
|
|
823
890
|
status: 'sent';
|
|
824
891
|
};
|
|
825
892
|
/**
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
893
|
+
* Popup was closed.
|
|
894
|
+
*/
|
|
895
|
+
popup_closed: {
|
|
829
896
|
/**
|
|
830
897
|
* Optional. Identifier of the clicked button.
|
|
831
898
|
*
|
|
@@ -834,47 +901,47 @@ type EventsData = {
|
|
|
834
901
|
button_id?: string;
|
|
835
902
|
};
|
|
836
903
|
/**
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
904
|
+
* Parent iframe requested current iframe reload.
|
|
905
|
+
*/
|
|
906
|
+
reload_iframe: undefined;
|
|
840
907
|
/**
|
|
841
908
|
* The QR scanner scanned some QR and extracted its content.
|
|
842
909
|
*/
|
|
843
|
-
|
|
910
|
+
qr_text_received: {
|
|
844
911
|
/**
|
|
845
912
|
* Optional. Data extracted from the QR.
|
|
846
913
|
*/
|
|
847
914
|
data?: string;
|
|
848
915
|
};
|
|
849
916
|
/**
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
917
|
+
* QR scanner was closed.
|
|
918
|
+
*/
|
|
919
|
+
scan_qr_popup_closed: undefined;
|
|
853
920
|
/**
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
921
|
+
* The event which is usually sent by the Telegram web application.
|
|
922
|
+
*
|
|
923
|
+
* Its payload represents <style/> tag html content, a developer could use. The stylesheet described in the payload will help the developer to stylize the app scrollbar (but he is still able to do it himself).
|
|
924
|
+
*/
|
|
925
|
+
set_custom_style: undefined;
|
|
859
926
|
/**
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
927
|
+
* Occurs when the Settings Button was pressed.
|
|
928
|
+
*/
|
|
929
|
+
settings_button_pressed: undefined;
|
|
863
930
|
/**
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
931
|
+
* Occurs whenever the theme was changed in the user's Telegram app ( including switching to night mode).
|
|
932
|
+
*/
|
|
933
|
+
theme_changed: {
|
|
867
934
|
/**
|
|
868
935
|
* Map where the key is a theme stylesheet key and value is the corresponding color in #RRGGBB format.
|
|
869
936
|
*/
|
|
870
|
-
theme_params:
|
|
937
|
+
theme_params: ThemeParams;
|
|
871
938
|
};
|
|
872
939
|
/**
|
|
873
940
|
* Occurs whenever the viewport has been changed.
|
|
874
941
|
*
|
|
875
942
|
* For example, when the user started dragging the application or called the expansion method.
|
|
876
943
|
*/
|
|
877
|
-
|
|
944
|
+
viewport_changed: {
|
|
878
945
|
/**
|
|
879
946
|
* The viewport height.
|
|
880
947
|
*/
|
|
@@ -893,9 +960,9 @@ type EventsData = {
|
|
|
893
960
|
is_state_stable: boolean;
|
|
894
961
|
};
|
|
895
962
|
/**
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
963
|
+
* Application received write access request status.
|
|
964
|
+
*/
|
|
965
|
+
write_access_requested: {
|
|
899
966
|
/**
|
|
900
967
|
* Request status. Can only be allowed.
|
|
901
968
|
*/
|
|
@@ -915,7 +982,7 @@ declare global {
|
|
|
915
982
|
interface Window {
|
|
916
983
|
TelegramWebviewProxy: TelegramWebviewProxy;
|
|
917
984
|
TelegramGameProxy: TelegramGameProxy;
|
|
918
|
-
TelegramGameProxy_receiveEvent: TelegramGameProxy[
|
|
985
|
+
TelegramGameProxy_receiveEvent: TelegramGameProxy['receiveEvent'];
|
|
919
986
|
Telegram: {
|
|
920
987
|
WebView: TelegramGameProxy;
|
|
921
988
|
};
|
|
@@ -934,12 +1001,6 @@ declare namespace listener {
|
|
|
934
1001
|
export { type listener_EventsData as EventsData, listener_off as off, listener_on as on, listener_once as once };
|
|
935
1002
|
}
|
|
936
1003
|
|
|
937
|
-
declare const TG_WEB = "web";
|
|
938
|
-
declare const TG_PHONE = "phone";
|
|
939
|
-
declare const TG_DESKTOP = "desktop";
|
|
940
|
-
|
|
941
|
-
declare const NOT_SUPPORTED = "not_supported";
|
|
942
|
-
|
|
943
1004
|
declare const MethodInvokeCustomMethod = "web_app_invoke_custom_method";
|
|
944
1005
|
declare const MethodOpenScanQrPopup = "web_app_open_scan_qr_popup";
|
|
945
1006
|
declare const MethodReadTextFromClipboard = "web_app_read_text_from_clipboard";
|
|
@@ -966,6 +1027,7 @@ declare const MethodSetupMainButton = "web_app_setup_main_button";
|
|
|
966
1027
|
declare const MethodSetupSettingsButton = "web_app_setup_settings_button";
|
|
967
1028
|
declare const MethodSwitchInlineQuery = "web_app_switch_inline_query";
|
|
968
1029
|
declare const MethodTriggerHapticFeedback = "web_app_trigger_haptic_feedback";
|
|
1030
|
+
declare const MethodSetupSwipeBehavior = "web_app_setup_swipe_behavior";
|
|
969
1031
|
|
|
970
1032
|
declare const EventBackButtonPressed = "back_button_pressed";
|
|
971
1033
|
declare const EventClipboardTextReceived = "clipboard_text_received";
|
|
@@ -983,4 +1045,4 @@ declare const EventThemeChanged = "theme_changed";
|
|
|
983
1045
|
declare const EventViewportChanged = "viewport_changed";
|
|
984
1046
|
declare const EventWriteAccessRequested = "write_access_requested";
|
|
985
1047
|
|
|
986
|
-
export { EventBackButtonPressed, EventClipboardTextReceived, EventCustomMethodInvoked, EventInvoiceClosed, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventQrTextReceived, EventReloadIframe, EventScanQrPopupClosed, EventSetCustomStyle, EventSettingsButtonPressed, EventThemeChanged, EventViewportChanged, EventWriteAccessRequested, type EventsData, MethodClose, MethodCloseScanQrPopup, MethodDataSend, MethodExpand, MethodIframeReady, MethodIframeWillReload, MethodInvokeCustomMethod, MethodOpenInvoice, MethodOpenLink, MethodOpenPopup, MethodOpenScanQrPopup, MethodOpenTgLink, MethodReadTextFromClipboard, MethodReady, MethodRequestPhone, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSetBackgroundColor, MethodSetHeaderColor, MethodSetupBackButton, MethodSetupClosingBehavior, MethodSetupMainButton, MethodSetupSettingsButton, MethodSwitchInlineQuery, MethodTriggerHapticFeedback, NOT_SUPPORTED, TG_DESKTOP, TG_PHONE, TG_WEB, close as bridgeClose, closeScanQrPopup as bridgeCloseScanQrPopup, dataSend as bridgeDataSend, expand as bridgeExpand, getInitData as bridgeGetInitData, iframeReady as bridgeIframeReady, iframeWillReload as bridgeIframeWillReload, invokeCustomMethod as bridgeInvokeCustomMethod, openInvoice as bridgeOpenInvoice, openLink as bridgeOpenLink, openPopup as bridgeOpenPopup, openScanQrPopup as bridgeOpenScanQrPopup, openTgLink as bridgeOpenTgLink, readTextFromClipboard as bridgeReadTextFromClipboard, ready as bridgeReady, requestPhone as bridgeRequestPhone, requestTheme as bridgeRequestTheme, requestViewport as bridgeRequestViewport, requestWriteAccess as bridgeRequestWriteAccess, sessionStorageGet as bridgeSessionStorageGet, sessionStorageSet as bridgeSessionStorageSet, setBackgroundColor as bridgeSetBackgroundColor, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupMainButton as bridgeSetupMainButton, setupSettingsButton as bridgeSetupSettingsButton, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, debug, listener, sender, supportClose, supportCloseScanQrPopup, supportDataSend, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestPhone, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSessionStorageGet, supportSessionStorageSet, supportSetBackgroundColor, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupMainButton, supportSetupSettingsButton, supportSwitchInlineQuery, supportTriggerHapticFeedback };
|
|
1048
|
+
export { EventBackButtonPressed, EventClipboardTextReceived, EventCustomMethodInvoked, EventInvoiceClosed, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventQrTextReceived, EventReloadIframe, EventScanQrPopupClosed, EventSetCustomStyle, EventSettingsButtonPressed, EventThemeChanged, EventViewportChanged, EventWriteAccessRequested, type EventsData, MethodClose, MethodCloseScanQrPopup, MethodDataSend, MethodExpand, MethodIframeReady, MethodIframeWillReload, MethodInvokeCustomMethod, MethodOpenInvoice, MethodOpenLink, MethodOpenPopup, MethodOpenScanQrPopup, MethodOpenTgLink, MethodReadTextFromClipboard, MethodReady, MethodRequestPhone, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSetBackgroundColor, MethodSetHeaderColor, MethodSetupBackButton, MethodSetupClosingBehavior, MethodSetupMainButton, MethodSetupSettingsButton, MethodSetupSwipeBehavior, MethodSwitchInlineQuery, MethodTriggerHapticFeedback, NOT_SUPPORTED, TG_DESKTOP, TG_PHONE, TG_WEB, close as bridgeClose, closeScanQrPopup as bridgeCloseScanQrPopup, dataSend as bridgeDataSend, expand as bridgeExpand, getInitData as bridgeGetInitData, iframeReady as bridgeIframeReady, iframeWillReload as bridgeIframeWillReload, invokeCustomMethod as bridgeInvokeCustomMethod, openInvoice as bridgeOpenInvoice, openLink as bridgeOpenLink, openPopup as bridgeOpenPopup, openScanQrPopup as bridgeOpenScanQrPopup, openTgLink as bridgeOpenTgLink, readTextFromClipboard as bridgeReadTextFromClipboard, ready as bridgeReady, requestPhone as bridgeRequestPhone, requestTheme as bridgeRequestTheme, requestViewport as bridgeRequestViewport, requestWriteAccess as bridgeRequestWriteAccess, sessionStorageGet as bridgeSessionStorageGet, sessionStorageSet as bridgeSessionStorageSet, setBackgroundColor as bridgeSetBackgroundColor, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupMainButton as bridgeSetupMainButton, setupSettingsButton as bridgeSetupSettingsButton, setupSwipeBehavior as bridgeSetupSwipeBehavior, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, debug, getPlatform, listener, sender, supportClose, supportCloseScanQrPopup, supportDataSend, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestPhone, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSessionStorageGet, supportSessionStorageSet, supportSetBackgroundColor, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupMainButton, supportSetupSettingsButton, supportSetupSwipeBehavior, supportSwitchInlineQuery, supportTriggerHapticFeedback };
|
package/react/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const e="web",t="phone",s="desktop",o=
|
|
1
|
+
"use strict";const e="web",t="phone",s="desktop",o=()=>{const o=window.location.hash.slice(1),r=new URLSearchParams(o).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?t:["tdesktop","macos"].includes(r)?s:e},r="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(o())},a=()=>Math.random().toString(36).substring(3,9),n=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},i=()=>p(0,[e,s,t]),u=()=>d()?(D(se),{status:!0}):(N(se,1),{status:r}),d=()=>p(64,[t]),_=()=>p(0,[e,s,t]),c=()=>p(0,[t]),x=()=>p(0,[e]),g=()=>p(0,[e]),l="web_app_invoke_custom_method",b=()=>p(6.9,[e,s,t]),h=()=>p(6.1,[e,s,t]),w=()=>p(6.4,[e,s,t]),m=()=>p(6.2,[e,s,t]),S=()=>p(6.4,[t]),v=()=>p(7,[e,s,t]),f=()=>p(6.4,[e,s,t]),y=()=>p(6.9,[e,s,t]),M=()=>p(6.9,[e,s,t]),P=()=>p(0,[e,s,t]),k=()=>p(0,[e,s,t]),R=()=>p(6.9,[e,s,t]),q=()=>p(6.1,[e,s,t]),O=()=>p(6.1,[e,s,t]),C=()=>p(6.1,[e,s,t]),E=()=>p(0,[e,s,t]),T=()=>p(0,[e,s,t]),B=()=>p(6.1,[e,s,t]),I=()=>p(6.7,[e,s,t]),W=()=>p(6.1,[t]),L=()=>p(7.7,[e,s,t]);var N=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};var D=(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){N("postMessage Iframe",10)}};const Q="clipboard_text_received",A="custom_method_invoked",G="phone_requested",H="popup_closed",J="qr_text_received",V="scan_qr_popup_closed",$="theme_changed",F=((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===$&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var o=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r of Object.keys(e)){var p=n(e[r]);"string"==typeof p&&(o[r]=p)}return o})(t.theme_params)),F.emit(e,t),F.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const U=(e,t)=>{F.on(e,t)},j=(e,t)=>{F.off(e,t)},z=(e,t)=>{F.once(e,t)};var K=Object.freeze({__proto__:null,off:j,on:U,once:z});const X="web_app_invoke_custom_method",Y="web_app_open_scan_qr_popup",Z="web_app_read_text_from_clipboard",ee="web_app_request_phone",te="web_app_close",se="web_app_close_scan_qr_popup",oe="web_app_data_send",re="web_app_expand",pe="iframe_ready",ae="iframe_will_reload",ne="web_app_open_invoice",ie="web_app_open_link",ue="web_app_open_popup",de="web_app_open_tg_link",_e="web_app_ready",ce="web_app_request_theme",xe="web_app_request_viewport",ge="web_app_request_write_access",le="web_app_set_background_color",be="web_app_set_header_color",he="web_app_setup_back_button",we="web_app_setup_closing_behavior",me="web_app_setup_main_button",Se="web_app_setup_settings_button",ve="web_app_switch_inline_query",fe="web_app_trigger_haptic_feedback",ye="web_app_setup_swipe_behavior";exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=Q,exports.EventCustomMethodInvoked=A,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=G,exports.EventPopupClosed=H,exports.EventQrTextReceived=J,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=V,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=$,exports.EventViewportChanged="viewport_changed",exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=te,exports.MethodCloseScanQrPopup=se,exports.MethodDataSend=oe,exports.MethodExpand=re,exports.MethodIframeReady=pe,exports.MethodIframeWillReload=ae,exports.MethodInvokeCustomMethod=X,exports.MethodOpenInvoice=ne,exports.MethodOpenLink=ie,exports.MethodOpenPopup=ue,exports.MethodOpenScanQrPopup=Y,exports.MethodOpenTgLink=de,exports.MethodReadTextFromClipboard=Z,exports.MethodReady=_e,exports.MethodRequestPhone=ee,exports.MethodRequestTheme=ce,exports.MethodRequestViewport=xe,exports.MethodRequestWriteAccess=ge,exports.MethodSetBackgroundColor=le,exports.MethodSetHeaderColor=be,exports.MethodSetupBackButton=he,exports.MethodSetupClosingBehavior=we,exports.MethodSetupMainButton=me,exports.MethodSetupSettingsButton=Se,exports.MethodSetupSwipeBehavior=ye,exports.MethodSwitchInlineQuery=ve,exports.MethodTriggerHapticFeedback=fe,exports.NOT_SUPPORTED=r,exports.TG_DESKTOP=s,exports.TG_PHONE=t,exports.TG_WEB=e,exports.bridgeClose=()=>i()?(D(te),{status:!0}):(N(te,1),{status:r}),exports.bridgeCloseScanQrPopup=u,exports.bridgeDataSend=e=>_()?(D(oe,e),{status:!0}):(N(oe,1),{status:r}),exports.bridgeExpand=()=>c()?(D(re),{status:!0}):(N(re,1),{status:r}),exports.bridgeGetInitData=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return N("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s},exports.bridgeIframeReady=e=>x()?(D(pe,e),{status:!0}):(N(pe,1),{status:r}),exports.bridgeIframeWillReload=()=>g()?(D(pe),{status:!0}):(N(pe,1),{status:r}),exports.bridgeInvokeCustomMethod=async e=>b()?(void 0===e.req_id&&(e.req_id=a()),D(l,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),j(A,o))};U(A,o)}))):(N(l,1),{status:r}),exports.bridgeOpenInvoice=e=>h()?(D(ne,e),{status:!0}):(N(ne,1),{status:r}),exports.bridgeOpenLink=e=>w()?(D(ie,e),{status:!0}):(N(ie,1),{status:r}),exports.bridgeOpenPopup=async e=>m()?(e.title.length>64&&N(ue,3),e.message.length<1&&N(ue,4),e.message.length>256&&N(ue,5),e.buttons.length<1&&N(ue,6),e.buttons.length>3&&N(ue,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&N(ue,8),D(ue,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),j(H,o)};U(H,o)}))):(N(ue,1),{status:r}),exports.bridgeOpenScanQrPopup=async e=>S()?(D(Y,e),new Promise(((t,s)=>{z(J,(s=>{e.is_close&&u(),t({status:!0,data:s})})),z(V,(()=>{t({status:"closed"})}))}))):(N(Y,1),{status:r}),exports.bridgeOpenTgLink=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),v()?(D(de,e),{status:!0}):(N(de,1),{status:r})),exports.bridgeReadTextFromClipboard=async e=>f()?(void 0===e.req_id&&(e.req_id=a()),D(Z,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),j(Q,o))};U(Q,o)}))):(N(Z,1),{status:r}),exports.bridgeReady=()=>y()?(D(_e),{status:!0}):(N(_e,1),{status:r}),exports.bridgeRequestPhone=async()=>M()?(D(ee),new Promise(((e,t)=>{z(G,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(N(ee,1),{status:r}),exports.bridgeRequestTheme=()=>P()?(D(ce),{status:!0}):(N(ce,1),{status:r}),exports.bridgeRequestViewport=()=>k()?(D(xe),{status:!0}):(N(xe,1),{status:r}),exports.bridgeRequestWriteAccess=()=>R()?(D(ge),{status:!0}):(N(ge,1),{status:r}),exports.bridgeSessionStorageGet=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},exports.bridgeSetBackgroundColor=e=>q()?(D(le,e),{status:!0}):(N(le,1),{status:r}),exports.bridgeSetHeaderColor=e=>O()?(D(be,e),{status:!0}):(N(be,1),{status:r}),exports.bridgeSetupBackButton=e=>C()?(D(he,e),{status:!0}):(N(he,1),{status:r}),exports.bridgeSetupClosingBehavior=e=>E()?(D(we,e),{status:!0}):(N(we,1),{status:r}),exports.bridgeSetupMainButton=e=>T()?(D(me,e),{status:!0}):(N(me,1),{status:r}),exports.bridgeSetupSettingsButton=e=>B()?(D(Se,e),{status:!0}):(N(Se,1),{status:r}),exports.bridgeSetupSwipeBehavior=e=>L()?(D(ye,e),{status:!0}):(N(ye,1),{status:r}),exports.bridgeSwitchInlineQuery=e=>I()?(e.query.length>256&&N(ve,9),D(ve,e),{status:!0}):(N(ve,1),{status:r}),exports.bridgeTriggerHapticFeedback=e=>W()?(D(fe,e),{status:!0}):(N(fe,1),{status:r}),exports.debug=N,exports.getPlatform=o,exports.listener=K,exports.sender=D,exports.supportClose=i,exports.supportCloseScanQrPopup=d,exports.supportDataSend=_,exports.supportExpand=c,exports.supportIframeReady=x,exports.supportIframeWillReload=g,exports.supportInvokeCustomMethod=b,exports.supportOpenInvoice=h,exports.supportOpenLink=w,exports.supportOpenPopup=m,exports.supportOpenScanQrPopup=S,exports.supportOpenTgLink=v,exports.supportReadTextFromClipboard=f,exports.supportReady=y,exports.supportRequestPhone=M,exports.supportRequestTheme=P,exports.supportRequestViewport=k,exports.supportRequestWriteAccess=R,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=q,exports.supportSetHeaderColor=O,exports.supportSetupBackButton=C,exports.supportSetupClosingBehavior=E,exports.supportSetupMainButton=T,exports.supportSetupSettingsButton=B,exports.supportSetupSwipeBehavior=L,exports.supportSwitchInlineQuery=I,exports.supportTriggerHapticFeedback=W;
|
package/react/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e="web",t="phone",s="desktop",a=
|
|
1
|
+
const e="web",t="phone",s="desktop",a=()=>{const a=window.location.hash.slice(1),r=new URLSearchParams(a).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?t:["tdesktop","macos"].includes(r)?s:e},r="not_supported",o=(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())},n=()=>Math.random().toString(36).substring(3,9),i=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),a=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((a<16?"0":"")+a.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},_=()=>p()?(le(Me),{status:!0}):(ge(Me,1),{status:r}),p=()=>o(0,[e,s,t]),u=()=>d()?(le(Ae),{status:!0}):(ge(Ae,1),{status:r}),d=()=>o(64,[t]),c=e=>g()?(le(Ue,e),{status:!0}):(ge(Ue,1),{status:r}),g=()=>o(0,[e,s,t]),b=()=>l()?(le(Ge),{status:!0}):(ge(Ge,1),{status:r}),l=()=>o(0,[t]),w=e=>m()?(le(Ve,e),{status:!0}):(ge(Ve,1),{status:r}),m=()=>o(0,[e]),h=()=>f()?(le(Ve),{status:!0}):(ge(Ve,1),{status:r}),f=()=>o(0,[e]),v="web_app_invoke_custom_method",S=async e=>y()?(void 0===e.req_id&&(e.req_id=n()),le(v,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Le(he,a))};Ce(he,a)}))):(ge(v,1),{status:r}),y=()=>o(6.9,[e,s,t]),q=e=>k()?(le(je,e),{status:!0}):(ge(je,1),{status:r}),k=()=>o(6.1,[e,s,t]),x=e=>P()?(le(Fe,e),{status:!0}):(ge(Fe,1),{status:r}),P=()=>o(6.4,[e,s,t]),O=async e=>I()?(e.title.length>64&&ge(He,3),e.message.length<1&&ge(He,4),e.message.length>256&&ge(He,5),e.buttons.length<1&&ge(He,6),e.buttons.length>3&&ge(He,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&ge(He,8),le(He,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Le(ye,a)};Ce(ye,a)}))):(ge(He,1),{status:r}),I=()=>o(6.2,[e,s,t]),R=async e=>T()?(le(De,e),new Promise(((t,s)=>{We(ke,(s=>{e.is_close&&u(),t({status:!0,data:s})})),We(xe,(()=>{t({status:"closed"})}))}))):(ge(De,1),{status:r}),T=()=>o(6.4,[t]),N=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),C()?(le(ze,e),{status:!0}):(ge(ze,1),{status:r})),C=()=>o(7,[e,s,t]),L=async e=>W()?(void 0===e.req_id&&(e.req_id=n()),le(Je,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Le(me,a))};Ce(me,a)}))):(ge(Je,1),{status:r}),W=()=>o(6.4,[e,s,t]),E=()=>B()?(le(Ke),{status:!0}):(ge(Ke,1),{status:r}),B=()=>o(6.9,[e,s,t]),D=async()=>J()?(le($e),new Promise(((e,t)=>{We(Se,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(ge($e,1),{status:r}),J=()=>o(6.9,[e,s,t]),$=()=>M()?(le(Xe),{status:!0}):(ge(Xe,1),{status:r}),M=()=>o(0,[e,s,t]),A=()=>U()?(le(Ye),{status:!0}):(ge(Ye,1),{status:r}),U=()=>o(0,[e,s,t]),G=()=>V()?(le(Ze),{status:!0}):(ge(Ze,1),{status:r}),V=()=>o(6.9,[e,s,t]),Q=e=>j()?(le(et,e),{status:!0}):(ge(et,1),{status:r}),j=()=>o(6.1,[e,s,t]),F=e=>H()?(le(tt,e),{status:!0}):(ge(tt,1),{status:r}),H=()=>o(6.1,[e,s,t]),z=e=>K()?(le(st,e),{status:!0}):(ge(st,1),{status:r}),K=()=>o(6.1,[e,s,t]),X=e=>Y()?(le(at,e),{status:!0}):(ge(at,1),{status:r}),Y=()=>o(0,[e,s,t]),Z=e=>ee()?(le(rt,e),{status:!0}):(ge(rt,1),{status:r}),ee=()=>o(0,[e,s,t]),te=e=>se()?(le(ot,e),{status:!0}):(ge(ot,1),{status:r}),se=()=>o(6.1,[e,s,t]),ae=e=>re()?(e.query.length>256&&ge(nt,9),le(nt,e),{status:!0}):(ge(nt,1),{status:r}),re=()=>o(6.7,[e,s,t]),oe=e=>ne()?(le(it,e),{status:!0}):(ge(it,1),{status:r}),ne=()=>o(6.1,[t]),ie=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},_e=()=>!0,pe=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},ue=()=>!0,de=e=>ce()?(le(_t,e),{status:!0}):(ge(_t,1),{status:r}),ce=()=>o(7.7,[e,s,t]);var ge=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const be=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return ge("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s};var le=(e,t)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:e,eventData:t}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:e,eventData:t}),"*")}catch(e){ge("postMessage Iframe",10)}};const we="back_button_pressed",me="clipboard_text_received",he="custom_method_invoked",fe="invoice_closed",ve="main_button_pressed",Se="phone_requested",ye="popup_closed",qe="reload_iframe",ke="qr_text_received",xe="scan_qr_popup_closed",Pe="set_custom_style",Oe="settings_button_pressed",Ie="theme_changed",Re="viewport_changed",Te="write_access_requested",Ne=((e=new Map)=>({once:(t,s,a=e.get(t),r=(e=>{s(e),a&&a.splice(a.indexOf(s)>>>0,1)}))=>a?a.push(r):e.set(t,[r]),on:(t,s,a=e.get(t))=>a?a.push(s):e.set(t,[s]),off:(t,s,a=e.get(t))=>a&&s?a.splice(a.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,a=e.get(t)||[])=>{for(const e of a)e(s)}}))();(()=>{function e(e,t){e===Ie&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var a=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r of Object.keys(e)){var o=i(e[r]);"string"==typeof o&&(a[r]=o)}return a})(t.theme_params)),Ne.emit(e,t),Ne.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Ce=(e,t)=>{Ne.on(e,t)},Le=(e,t)=>{Ne.off(e,t)},We=(e,t)=>{Ne.once(e,t)};var Ee=Object.freeze({__proto__:null,off:Le,on:Ce,once:We});const Be="web_app_invoke_custom_method",De="web_app_open_scan_qr_popup",Je="web_app_read_text_from_clipboard",$e="web_app_request_phone",Me="web_app_close",Ae="web_app_close_scan_qr_popup",Ue="web_app_data_send",Ge="web_app_expand",Ve="iframe_ready",Qe="iframe_will_reload",je="web_app_open_invoice",Fe="web_app_open_link",He="web_app_open_popup",ze="web_app_open_tg_link",Ke="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_setup_back_button",at="web_app_setup_closing_behavior",rt="web_app_setup_main_button",ot="web_app_setup_settings_button",nt="web_app_switch_inline_query",it="web_app_trigger_haptic_feedback",_t="web_app_setup_swipe_behavior";export{we as EventBackButtonPressed,me as EventClipboardTextReceived,he as EventCustomMethodInvoked,fe as EventInvoiceClosed,ve as EventMainButtonPressed,Se as EventPhoneRequested,ye as EventPopupClosed,ke as EventQrTextReceived,qe as EventReloadIframe,xe as EventScanQrPopupClosed,Pe as EventSetCustomStyle,Oe as EventSettingsButtonPressed,Ie as EventThemeChanged,Re as EventViewportChanged,Te as EventWriteAccessRequested,Me as MethodClose,Ae as MethodCloseScanQrPopup,Ue as MethodDataSend,Ge as MethodExpand,Ve as MethodIframeReady,Qe as MethodIframeWillReload,Be as MethodInvokeCustomMethod,je as MethodOpenInvoice,Fe as MethodOpenLink,He as MethodOpenPopup,De as MethodOpenScanQrPopup,ze as MethodOpenTgLink,Je as MethodReadTextFromClipboard,Ke as MethodReady,$e as MethodRequestPhone,Xe as MethodRequestTheme,Ye as MethodRequestViewport,Ze as MethodRequestWriteAccess,et as MethodSetBackgroundColor,tt as MethodSetHeaderColor,st as MethodSetupBackButton,at as MethodSetupClosingBehavior,rt as MethodSetupMainButton,ot as MethodSetupSettingsButton,_t as MethodSetupSwipeBehavior,nt as MethodSwitchInlineQuery,it as MethodTriggerHapticFeedback,r as NOT_SUPPORTED,s as TG_DESKTOP,t as TG_PHONE,e as TG_WEB,_ as bridgeClose,u as bridgeCloseScanQrPopup,c as bridgeDataSend,b as bridgeExpand,be as bridgeGetInitData,w as bridgeIframeReady,h as bridgeIframeWillReload,S as bridgeInvokeCustomMethod,q as bridgeOpenInvoice,x as bridgeOpenLink,O as bridgeOpenPopup,R as bridgeOpenScanQrPopup,N as bridgeOpenTgLink,L as bridgeReadTextFromClipboard,E as bridgeReady,D as bridgeRequestPhone,$ as bridgeRequestTheme,A as bridgeRequestViewport,G as bridgeRequestWriteAccess,pe as bridgeSessionStorageGet,ie as bridgeSessionStorageSet,Q as bridgeSetBackgroundColor,F as bridgeSetHeaderColor,z as bridgeSetupBackButton,X as bridgeSetupClosingBehavior,Z as bridgeSetupMainButton,te as bridgeSetupSettingsButton,de as bridgeSetupSwipeBehavior,ae as bridgeSwitchInlineQuery,oe as bridgeTriggerHapticFeedback,ge as debug,a as getPlatform,Ee as listener,le as sender,p as supportClose,d as supportCloseScanQrPopup,g as supportDataSend,l as supportExpand,m as supportIframeReady,f as supportIframeWillReload,y as supportInvokeCustomMethod,k as supportOpenInvoice,P as supportOpenLink,I as supportOpenPopup,T as supportOpenScanQrPopup,C as supportOpenTgLink,W as supportReadTextFromClipboard,B as supportReady,J as supportRequestPhone,M as supportRequestTheme,U as supportRequestViewport,V as supportRequestWriteAccess,ue as supportSessionStorageGet,_e as supportSessionStorageSet,j as supportSetBackgroundColor,H as supportSetHeaderColor,K as supportSetupBackButton,Y as supportSetupClosingBehavior,ee as supportSetupMainButton,se as supportSetupSettingsButton,ce as supportSetupSwipeBehavior,re as supportSwitchInlineQuery,ne as supportTriggerHapticFeedback};
|