@apiteam/twa-bridge 0.0.2-beta.3 → 7.0.0-beta.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 +56 -0
- package/package.json +2 -2
- package/solid/index.d.ts +97 -49
- package/solid/index.js +1 -1
- package/solid/index.mjs +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
## SDK
|
|
2
|
+
[](https://www.npmjs.com/package/@apiteam/twa-bridge)
|
|
3
|
+
|
|
4
|
+
npm package for [Telegram Web Apps (TWA)](https://core.telegram.org/bots/webapps) SDK.
|
|
5
|
+
|
|
6
|
+
```
|
|
7
|
+
npm i @apiteam/twa-bridge
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
### Motivation
|
|
11
|
+
Telegram distributes SDK via [link](https://core.telegram.org/bots/webapps#initializing-web-apps). It's kinda old fashion way to work with a library:
|
|
12
|
+
|
|
13
|
+
```html
|
|
14
|
+
<html lang="en">
|
|
15
|
+
<head>
|
|
16
|
+
<title>TWA</title>
|
|
17
|
+
<meta charset="UTF-8">
|
|
18
|
+
<script src="https://telegram.org/js/telegram-web-app.js"></script>
|
|
19
|
+
<script>
|
|
20
|
+
window.Telegram.WebApp.showPopup({ message: 'message' });
|
|
21
|
+
</script>
|
|
22
|
+
</head>
|
|
23
|
+
<body></body>
|
|
24
|
+
</html>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
This package allows to work with SDK as with a npm package:
|
|
28
|
+
|
|
29
|
+
```js
|
|
30
|
+
import { bridgeOpenPopup } from '@apiteam/twa-bridge/solid'
|
|
31
|
+
|
|
32
|
+
bridgeOpenPopup({ message: 'message' })
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
And yes, it supports TS.
|
|
36
|
+
|
|
37
|
+
### Solid
|
|
38
|
+
```js
|
|
39
|
+
import { createIsViewportChanged } from '@apiteam/twa-bridge/solid'
|
|
40
|
+
|
|
41
|
+
const viewport = createIsViewportChanged()
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Errors
|
|
45
|
+
|
|
46
|
+
| ID | Description |
|
|
47
|
+
| --- | ----------------------------------------------------------------- |
|
|
48
|
+
| 1 | Method not supported |
|
|
49
|
+
| 2 | Ooof! Something is wrong. Init data is missing |
|
|
50
|
+
| 3 | Title too long, maximum length 64 characters |
|
|
51
|
+
| 4 | Your message is too short, at least 1 character |
|
|
52
|
+
| 5 | Your message is too long, maximum 256 characters |
|
|
53
|
+
| 6 | You are passing too few buttons, at least 1 button |
|
|
54
|
+
| 7 | You are passing too many buttons, maximum 3 buttons |
|
|
55
|
+
| 8 | The button text ignores the following values: "ok, close, cancel" |
|
|
56
|
+
| 9 | EDIT_MESSAGE
|
package/package.json
CHANGED
package/solid/index.d.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import * as solid_js from 'solid-js';
|
|
2
2
|
|
|
3
|
+
declare const createIsViewportChanged: () => solid_js.Accessor<{
|
|
4
|
+
height: number;
|
|
5
|
+
width?: number | undefined;
|
|
6
|
+
is_expanded: boolean;
|
|
7
|
+
is_state_stable: boolean;
|
|
8
|
+
}>;
|
|
9
|
+
|
|
3
10
|
type Close = () => {
|
|
4
|
-
status: boolean |
|
|
11
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
5
12
|
};
|
|
6
13
|
/**
|
|
7
14
|
* Closes Mini App.
|
|
@@ -15,7 +22,7 @@ declare const close: Close;
|
|
|
15
22
|
declare const supportClose: () => boolean;
|
|
16
23
|
|
|
17
24
|
type CloseScanQrPopup = () => {
|
|
18
|
-
status: boolean |
|
|
25
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
19
26
|
};
|
|
20
27
|
/**
|
|
21
28
|
* Closes a QR scanner. The Telegram application creates the scan_qr_popup_closed event.
|
|
@@ -34,7 +41,7 @@ type DataSend = (eventData: {
|
|
|
34
41
|
*/
|
|
35
42
|
data: string;
|
|
36
43
|
}) => {
|
|
37
|
-
status: boolean |
|
|
44
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
38
45
|
};
|
|
39
46
|
/**
|
|
40
47
|
* Sends data to the bot. When this method is called, a service message is sent to the bot containing the data of the length up to 4096 bytes.
|
|
@@ -52,7 +59,7 @@ declare const dataSend: DataSend;
|
|
|
52
59
|
declare const supportDataSend: () => boolean;
|
|
53
60
|
|
|
54
61
|
type Expand = () => {
|
|
55
|
-
status: boolean |
|
|
62
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
56
63
|
};
|
|
57
64
|
/**
|
|
58
65
|
* Closes Mini App.
|
|
@@ -69,7 +76,7 @@ type IframeReady = (eventData: {
|
|
|
69
76
|
*/
|
|
70
77
|
reload_supported?: boolean;
|
|
71
78
|
}) => {
|
|
72
|
-
status: boolean |
|
|
79
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
73
80
|
};
|
|
74
81
|
/**
|
|
75
82
|
* Notifies parent iframe about the current frame is ready.
|
|
@@ -85,7 +92,7 @@ declare const iframeReady: IframeReady;
|
|
|
85
92
|
declare const supportIframeReady: () => boolean;
|
|
86
93
|
|
|
87
94
|
type IframeWillReload = () => {
|
|
88
|
-
status: boolean |
|
|
95
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
89
96
|
};
|
|
90
97
|
/**
|
|
91
98
|
* Notifies parent iframe about the current iframe is going to reload.
|
|
@@ -101,8 +108,10 @@ declare const supportIframeWillReload: () => boolean;
|
|
|
101
108
|
type InvokeCustomMethod = (eventData: {
|
|
102
109
|
/**
|
|
103
110
|
* Current invocation unique identifier.
|
|
111
|
+
*
|
|
112
|
+
* Default: () => randomReqId
|
|
104
113
|
*/
|
|
105
|
-
req_id
|
|
114
|
+
req_id?: string;
|
|
106
115
|
/**
|
|
107
116
|
* Method name.
|
|
108
117
|
*/
|
|
@@ -111,9 +120,10 @@ type InvokeCustomMethod = (eventData: {
|
|
|
111
120
|
* Parameters according to method.
|
|
112
121
|
*/
|
|
113
122
|
params: unknown;
|
|
114
|
-
}) => {
|
|
115
|
-
status: boolean |
|
|
116
|
-
|
|
123
|
+
}) => Promise<{
|
|
124
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
125
|
+
data?: EventsData[typeof EventCustomMethodInvoked];
|
|
126
|
+
}>;
|
|
117
127
|
/**
|
|
118
128
|
* Original: https://docs.telegram-mini-apps.com/platform/apps-communication/methods#web-app-invoke-custom-method
|
|
119
129
|
*/
|
|
@@ -129,7 +139,7 @@ type OpenInvoice = (eventData: {
|
|
|
129
139
|
*/
|
|
130
140
|
slug: string;
|
|
131
141
|
}) => {
|
|
132
|
-
status: boolean |
|
|
142
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
133
143
|
};
|
|
134
144
|
/**
|
|
135
145
|
* Opens an invoice by its specified slug.
|
|
@@ -154,7 +164,7 @@ type OpenLink = (eventData: {
|
|
|
154
164
|
*/
|
|
155
165
|
try_instant_view?: boolean;
|
|
156
166
|
}) => {
|
|
157
|
-
status: boolean |
|
|
167
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
158
168
|
};
|
|
159
169
|
/**
|
|
160
170
|
* Opens link in the default browser.
|
|
@@ -193,9 +203,10 @@ type OpenPopup = (eventData: {
|
|
|
193
203
|
* List of buttons to be displayed in the popup, 1-3 buttons
|
|
194
204
|
*/
|
|
195
205
|
buttons: PopupButton[];
|
|
196
|
-
}) => {
|
|
197
|
-
status: boolean |
|
|
198
|
-
|
|
206
|
+
}) => Promise<{
|
|
207
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
208
|
+
data?: EventsData['popup_closed'];
|
|
209
|
+
}>;
|
|
199
210
|
/**
|
|
200
211
|
* Opens a new popup. When user closes the popup, Telegram creates the popup_closed event.
|
|
201
212
|
*
|
|
@@ -217,10 +228,8 @@ type OpenScanQrPopup = (eventData: {
|
|
|
217
228
|
*/
|
|
218
229
|
is_close?: boolean;
|
|
219
230
|
}) => Promise<{
|
|
220
|
-
status: boolean |
|
|
221
|
-
data
|
|
222
|
-
data?: string;
|
|
223
|
-
};
|
|
231
|
+
status: boolean | typeof NOT_SUPPORTED | 'closed';
|
|
232
|
+
data?: EventsData[typeof EventQrTextReceived];
|
|
224
233
|
}>;
|
|
225
234
|
/**
|
|
226
235
|
* Opens a QR scanner.
|
|
@@ -245,7 +254,7 @@ type OpenTgLink = (eventData: {
|
|
|
245
254
|
*/
|
|
246
255
|
path_full: string;
|
|
247
256
|
}) => {
|
|
248
|
-
status: boolean |
|
|
257
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
249
258
|
};
|
|
250
259
|
/**
|
|
251
260
|
* Opens the Telegram link by its pathname and query parameters.
|
|
@@ -263,11 +272,14 @@ declare const supportOpenTgLink: () => boolean;
|
|
|
263
272
|
type ReadTextFromClipboard = (eventData: {
|
|
264
273
|
/**
|
|
265
274
|
* Unique request identifier. Should be any unique string to handle the generated event appropriately.
|
|
275
|
+
*
|
|
276
|
+
* Default: () => randomReqId
|
|
266
277
|
*/
|
|
267
|
-
req_id
|
|
268
|
-
}) => {
|
|
269
|
-
status: boolean |
|
|
270
|
-
|
|
278
|
+
req_id?: string;
|
|
279
|
+
}) => Promise<{
|
|
280
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
281
|
+
data?: EventsData[typeof EventClipboardTextReceived];
|
|
282
|
+
}>;
|
|
271
283
|
/**
|
|
272
284
|
* Reads text from the clipboard.
|
|
273
285
|
*
|
|
@@ -282,7 +294,7 @@ declare const readTextFromClipboard: ReadTextFromClipboard;
|
|
|
282
294
|
declare const supportReadTextFromClipboard: () => boolean;
|
|
283
295
|
|
|
284
296
|
type Ready = () => {
|
|
285
|
-
status: boolean |
|
|
297
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
286
298
|
};
|
|
287
299
|
/**
|
|
288
300
|
* Notifies Telegram about current application is ready to be shown.
|
|
@@ -298,7 +310,7 @@ declare const ready: Ready;
|
|
|
298
310
|
declare const supportReady: () => boolean;
|
|
299
311
|
|
|
300
312
|
type RequestPhone = () => Promise<{
|
|
301
|
-
status: boolean |
|
|
313
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
302
314
|
}>;
|
|
303
315
|
/**
|
|
304
316
|
* Requests access to current user's phone.
|
|
@@ -312,7 +324,7 @@ declare const requestPhone: RequestPhone;
|
|
|
312
324
|
declare const supportRequestPhone: () => boolean;
|
|
313
325
|
|
|
314
326
|
type RequestTheme = () => {
|
|
315
|
-
status: boolean |
|
|
327
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
316
328
|
};
|
|
317
329
|
/**
|
|
318
330
|
* Requests current theme from Telegram.
|
|
@@ -328,7 +340,7 @@ declare const requestTheme: RequestTheme;
|
|
|
328
340
|
declare const supportRequestTheme: () => boolean;
|
|
329
341
|
|
|
330
342
|
type RequestViewport = () => {
|
|
331
|
-
status: boolean |
|
|
343
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
332
344
|
};
|
|
333
345
|
/**
|
|
334
346
|
* Requests current viewport information from Telegram.
|
|
@@ -344,7 +356,7 @@ declare const requestViewport: RequestViewport;
|
|
|
344
356
|
declare const supportRequestViewport: () => boolean;
|
|
345
357
|
|
|
346
358
|
type RequestWriteAccess = () => {
|
|
347
|
-
status: boolean |
|
|
359
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
348
360
|
};
|
|
349
361
|
/**
|
|
350
362
|
* Requests write message access to current user.
|
|
@@ -363,7 +375,7 @@ type SetBackgroundColor = (eventData: {
|
|
|
363
375
|
*/
|
|
364
376
|
color: string;
|
|
365
377
|
}) => {
|
|
366
|
-
status: boolean |
|
|
378
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
367
379
|
};
|
|
368
380
|
/**
|
|
369
381
|
* Updates the Mini App background color.
|
|
@@ -386,7 +398,7 @@ type SetHeaderColor = (eventData: {
|
|
|
386
398
|
*/
|
|
387
399
|
color: string;
|
|
388
400
|
}) => {
|
|
389
|
-
status: boolean |
|
|
401
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
390
402
|
};
|
|
391
403
|
/**
|
|
392
404
|
* Updates the Mini App header color. This method should accept color_key or color property.
|
|
@@ -405,7 +417,7 @@ type SetupBackButton = (eventData: {
|
|
|
405
417
|
*/
|
|
406
418
|
is_visible: boolean;
|
|
407
419
|
}) => {
|
|
408
|
-
status: boolean |
|
|
420
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
409
421
|
};
|
|
410
422
|
/**
|
|
411
423
|
* Updates the Back Button settings.
|
|
@@ -424,7 +436,7 @@ type SetupClosingBehavior = (eventData: {
|
|
|
424
436
|
*/
|
|
425
437
|
need_confirmation: boolean;
|
|
426
438
|
}) => {
|
|
427
|
-
status: boolean |
|
|
439
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
428
440
|
};
|
|
429
441
|
/**
|
|
430
442
|
* Updates current closing behavior.
|
|
@@ -463,7 +475,7 @@ type SetupMainButton = (eventData: {
|
|
|
463
475
|
*/
|
|
464
476
|
text_color?: string;
|
|
465
477
|
}) => {
|
|
466
|
-
status: boolean |
|
|
478
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
467
479
|
};
|
|
468
480
|
/**
|
|
469
481
|
* Updates the Main Button settings.
|
|
@@ -482,7 +494,7 @@ type SetupSettingsButton = (eventData: {
|
|
|
482
494
|
*/
|
|
483
495
|
is_visible: boolean;
|
|
484
496
|
}) => {
|
|
485
|
-
status: boolean |
|
|
497
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
486
498
|
};
|
|
487
499
|
/**
|
|
488
500
|
* Updates current state of Settings Button.
|
|
@@ -507,7 +519,7 @@ type SwitchInlineQuery = (eventData: {
|
|
|
507
519
|
*/
|
|
508
520
|
chat_types: ['users', 'bots', 'groups', 'channels'];
|
|
509
521
|
}) => {
|
|
510
|
-
status: boolean |
|
|
522
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
511
523
|
};
|
|
512
524
|
/**
|
|
513
525
|
* Inserts the bot's username and the specified inline query in the current chat's input field.
|
|
@@ -560,7 +572,7 @@ type TriggerHapticFeedback = (eventData: {
|
|
|
560
572
|
*/
|
|
561
573
|
notification_type: 'error' | 'success' | 'warning';
|
|
562
574
|
}) => {
|
|
563
|
-
status: boolean |
|
|
575
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
564
576
|
};
|
|
565
577
|
/**
|
|
566
578
|
* Generates the haptic feedback event.
|
|
@@ -708,13 +720,6 @@ type GetInitData = () => null | {
|
|
|
708
720
|
*/
|
|
709
721
|
declare const getInitData: GetInitData;
|
|
710
722
|
|
|
711
|
-
declare const createIsViewportChanged: () => solid_js.Accessor<{
|
|
712
|
-
height: number;
|
|
713
|
-
width?: number | undefined;
|
|
714
|
-
is_expanded: boolean;
|
|
715
|
-
is_state_stable: boolean;
|
|
716
|
-
}>;
|
|
717
|
-
|
|
718
723
|
type Sender = (eventType: string, eventData?: any) => void;
|
|
719
724
|
/**
|
|
720
725
|
* EDIT
|
|
@@ -724,7 +729,7 @@ type Sender = (eventType: string, eventData?: any) => void;
|
|
|
724
729
|
*/
|
|
725
730
|
declare const sender: Sender;
|
|
726
731
|
|
|
727
|
-
type Debug = (
|
|
732
|
+
type Debug = (methondName: string, errorId: number) => void;
|
|
728
733
|
declare const debug: Debug;
|
|
729
734
|
|
|
730
735
|
type EventsData = {
|
|
@@ -895,23 +900,66 @@ declare global {
|
|
|
895
900
|
};
|
|
896
901
|
}
|
|
897
902
|
}
|
|
898
|
-
declare const listenerStart: () => void;
|
|
899
903
|
type Listened = <T extends EventsData, E extends keyof T, D extends T[E]>(eventName: E, callback: (eventData: D) => void) => void;
|
|
900
904
|
declare const on: Listened;
|
|
901
905
|
declare const off: Listened;
|
|
902
906
|
declare const once: Listened;
|
|
903
907
|
|
|
904
908
|
type listener_EventsData = EventsData;
|
|
905
|
-
declare const listener_listenerStart: typeof listenerStart;
|
|
906
909
|
declare const listener_off: typeof off;
|
|
907
910
|
declare const listener_on: typeof on;
|
|
908
911
|
declare const listener_once: typeof once;
|
|
909
912
|
declare namespace listener {
|
|
910
|
-
export { type listener_EventsData as EventsData,
|
|
913
|
+
export { type listener_EventsData as EventsData, listener_off as off, listener_on as on, listener_once as once };
|
|
911
914
|
}
|
|
912
915
|
|
|
913
916
|
declare const TG_WEB = "web";
|
|
914
917
|
declare const TG_PHONE = "phone";
|
|
915
918
|
declare const TG_DESKTOP = "desktop";
|
|
916
919
|
|
|
917
|
-
|
|
920
|
+
declare const NOT_SUPPORTED = "not_supported";
|
|
921
|
+
|
|
922
|
+
declare const MethodInvokeCustomMethod = "web_app_invoke_custom_method";
|
|
923
|
+
declare const MethodOpenScanQrPopup = "web_app_open_scan_qr_popup";
|
|
924
|
+
declare const MethodReadTextFromClipboard = "web_app_read_text_from_clipboard";
|
|
925
|
+
declare const MethodRequestPhone = "web_app_request_phone";
|
|
926
|
+
declare const MethodClose = "web_app_close";
|
|
927
|
+
declare const MethodCloseScanQrPopup = "web_app_close_scan_qr_popup";
|
|
928
|
+
declare const MethodDataSend = "web_app_data_send";
|
|
929
|
+
declare const MethodExpand = "web_app_expand";
|
|
930
|
+
declare const MethodIframeReady = "iframe_ready";
|
|
931
|
+
declare const MethodIframeWillReload = "iframe_will_reload";
|
|
932
|
+
declare const MethodOpenInvoice = "web_app_open_invoice";
|
|
933
|
+
declare const MethodOpenLink = "web_app_open_link";
|
|
934
|
+
declare const MethodOpenPopup = "web_app_open_popup";
|
|
935
|
+
declare const MethodOpenTgLink = "web_app_open_tg_link";
|
|
936
|
+
declare const MethodReady = "web_app_ready";
|
|
937
|
+
declare const MethodRequestTheme = "web_app_request_theme";
|
|
938
|
+
declare const MethodRequestViewport = "web_app_request_viewport";
|
|
939
|
+
declare const MethodRequestWriteAccess = "web_app_request_write_access";
|
|
940
|
+
declare const MethodSetBackgroundColor = "web_app_set_background_color";
|
|
941
|
+
declare const MethodSetHeaderColor = "web_app_set_header_color";
|
|
942
|
+
declare const MethodSetupBackButton = "web_app_setup_back_button";
|
|
943
|
+
declare const MethodSetupClosingBehavior = "web_app_setup_closing_behavior";
|
|
944
|
+
declare const MethodSetupMainButton = "web_app_setup_main_button";
|
|
945
|
+
declare const MethodSetupSettingsButton = "web_app_setup_settings_button";
|
|
946
|
+
declare const MethodSwitchInlineQuery = "web_app_switch_inline_query";
|
|
947
|
+
declare const MethodTriggerHapticFeedback = "web_app_trigger_haptic_feedback";
|
|
948
|
+
|
|
949
|
+
declare const EventBackButtonPressed = "back_button_pressed";
|
|
950
|
+
declare const EventClipboardTextReceived = "clipboard_text_received";
|
|
951
|
+
declare const EventCustomMethodInvoked = "custom_method_invoked";
|
|
952
|
+
declare const EventInvoiceClosed = "invoice_closed";
|
|
953
|
+
declare const EventMainButtonPressed = "main_button_pressed";
|
|
954
|
+
declare const EventPhoneRequested = "phone_requested";
|
|
955
|
+
declare const EventPopupClosed = "popup_closed";
|
|
956
|
+
declare const EventReloadIframe = "reload_iframe";
|
|
957
|
+
declare const EventQrTextReceived = "qr_text_received";
|
|
958
|
+
declare const EventScanQrPopupClosed = "scan_qr_popup_closed";
|
|
959
|
+
declare const EventSetCustomStyle = "set_custom_style";
|
|
960
|
+
declare const EventSettingsButtonPressed = "settings_button_pressed";
|
|
961
|
+
declare const EventThemeChanged = "theme_changed";
|
|
962
|
+
declare const EventViewportChanged = "viewport_changed";
|
|
963
|
+
declare const EventWriteAccessRequested = "write_access_requested";
|
|
964
|
+
|
|
965
|
+
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, setBackgroundColor as bridgeSetBackgroundColor, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupMainButton as bridgeSetupMainButton, setupSettingsButton as bridgeSetupSettingsButton, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, createIsViewportChanged, debug, listener, sender, supportClose, supportCloseScanQrPopup, supportDataSend, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestPhone, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSetBackgroundColor, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupMainButton, supportSetupSettingsButton, supportSwitchInlineQuery, supportTriggerHapticFeedback };
|
package/solid/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("solid-js");const t=
|
|
1
|
+
"use strict";var e=require("solid-js");const t="web",s="phone",o="desktop",r="not_supported",p=(e,r)=>{const p=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(p)>=e&&-1!==r.indexOf((()=>{const e=window.location.hash.slice(1),r=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?s:["tdesktop","macos"].includes(r)?o:t})())},a=()=>Math.random().toString(36).substring(3,9),n=()=>p(0,[t,o,s]),u=()=>i()?(Q($),{status:!0}):(W($,1),{status:r}),i=()=>p(6.4,[s]),d=()=>p(0,[t,o,s]),_=()=>p(0,[s]),c=()=>p(0,[t]),x=()=>p(0,[t]),l="web_app_invoke_custom_method",g=()=>p(6.9,[t,o,s]),b=()=>p(6.1,[t,o,s]),h=()=>p(6.4,[t,o,s]),w=()=>p(6.2,[t,o,s]),m=()=>p(6.4,[s]),v=()=>p(7,[t,o,s]),S=()=>p(6.4,[t,o,s]),f=()=>p(6.9,[t,o,s]),M=()=>p(6.9,[t,o,s]),P=()=>p(0,[t,o,s]),q=()=>p(0,[t,o,s]),R=()=>p(6.9,[t,o,s]),k=()=>p(6.1,[t,o,s]),C=()=>p(6.1,[t,o,s]),y=()=>p(6.1,[t,o,s]),E=()=>p(0,[t,o,s]),O=()=>p(0,[t,o,s]),T=()=>p(6.1,[t,o,s]),B=()=>p(6.7,[t,o,s]),I=()=>p(6.1,[s]);var W=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};var Q=(e,t)=>{window.TelegramWebviewProxy?window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t)):window.external&&"notify"in window.external&&window.external.notify(JSON.stringify({eventType:e,eventData:t}))};const D=((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){D.emit(e,t),D.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const L=(e,t)=>{D.on(e,t)},N=(e,t)=>{D.off(e,t)},V=(e,t)=>{D.once(e,t)};var A=Object.freeze({__proto__:null,off:N,on:L,once:V});const H="web_app_open_scan_qr_popup",F="web_app_read_text_from_clipboard",G="web_app_request_phone",U="web_app_close",$="web_app_close_scan_qr_popup",J="web_app_data_send",j="web_app_expand",z="iframe_ready",K="web_app_open_invoice",X="web_app_open_link",Y="web_app_open_popup",Z="web_app_open_tg_link",ee="web_app_ready",te="web_app_request_theme",se="web_app_request_viewport",oe="web_app_request_write_access",re="web_app_set_background_color",pe="web_app_set_header_color",ae="web_app_setup_back_button",ne="web_app_setup_closing_behavior",ue="web_app_setup_main_button",ie="web_app_setup_settings_button",de="web_app_switch_inline_query",_e="web_app_trigger_haptic_feedback",ce="clipboard_text_received",xe="custom_method_invoked",le="phone_requested",ge="popup_closed",be="qr_text_received",he="scan_qr_popup_closed",we="viewport_changed";exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=ce,exports.EventCustomMethodInvoked=xe,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=le,exports.EventPopupClosed=ge,exports.EventQrTextReceived=be,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=he,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged="theme_changed",exports.EventViewportChanged=we,exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=U,exports.MethodCloseScanQrPopup=$,exports.MethodDataSend=J,exports.MethodExpand=j,exports.MethodIframeReady=z,exports.MethodIframeWillReload="iframe_will_reload",exports.MethodInvokeCustomMethod="web_app_invoke_custom_method",exports.MethodOpenInvoice=K,exports.MethodOpenLink=X,exports.MethodOpenPopup=Y,exports.MethodOpenScanQrPopup=H,exports.MethodOpenTgLink=Z,exports.MethodReadTextFromClipboard=F,exports.MethodReady=ee,exports.MethodRequestPhone=G,exports.MethodRequestTheme=te,exports.MethodRequestViewport=se,exports.MethodRequestWriteAccess=oe,exports.MethodSetBackgroundColor=re,exports.MethodSetHeaderColor=pe,exports.MethodSetupBackButton=ae,exports.MethodSetupClosingBehavior=ne,exports.MethodSetupMainButton=ue,exports.MethodSetupSettingsButton=ie,exports.MethodSwitchInlineQuery=de,exports.MethodTriggerHapticFeedback=_e,exports.NOT_SUPPORTED=r,exports.TG_DESKTOP=o,exports.TG_PHONE=s,exports.TG_WEB=t,exports.bridgeClose=()=>n()?(Q(U),{status:!0}):(W(U,1),{status:r}),exports.bridgeCloseScanQrPopup=u,exports.bridgeDataSend=e=>d()?(Q(J,e),{status:!0}):(W(J,1),{status:r}),exports.bridgeExpand=()=>_()?(Q(j),{status:!0}):(W(j,1),{status:r}),exports.bridgeGetInitData=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return W("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=>c()?(Q(z,e),{status:!0}):(W(z,1),{status:r}),exports.bridgeIframeWillReload=()=>x()?(Q(z),{status:!0}):(W(z,1),{status:r}),exports.bridgeInvokeCustomMethod=async e=>g()?(void 0===e.req_id&&(e.req_id=a()),Q(l,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),N(xe,o))};L(xe,o)}))):(W(l,1),{status:r}),exports.bridgeOpenInvoice=e=>b()?(Q(K,e),{status:!0}):(W(K,1),{status:r}),exports.bridgeOpenLink=e=>h()?(Q(X,e),{status:!0}):(W(X,1),{status:r}),exports.bridgeOpenPopup=async e=>w()?(e.title.length>64&&W(Y,3),e.message.length<1&&W(Y,4),e.message.length>256&&W(Y,5),e.buttons.length<1&&W(Y,6),e.buttons.length>3&&W(Y,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&W(Y,8),Q(Y,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),N(ge,o)};L(ge,o)}))):(W(Y,1),{status:r}),exports.bridgeOpenScanQrPopup=async e=>m()?(Q(H,e),new Promise(((t,s)=>{V(be,(s=>{e.is_close&&u(),t({status:!0,data:s})})),V(he,(()=>{t({status:"closed"})}))}))):(W(H,1),{status:r}),exports.bridgeOpenTgLink=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),v()?(Q(Z,e),{status:!0}):(W(Z,1),{status:r})),exports.bridgeReadTextFromClipboard=async e=>S()?(void 0===e.req_id&&(e.req_id=a()),Q(F,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),N(ce,o))};L(ce,o)}))):(W(F,1),{status:r}),exports.bridgeReady=()=>f()?(Q(ee),{status:!0}):(W(ee,1),{status:r}),exports.bridgeRequestPhone=async()=>M()?(Q(G),new Promise(((e,t)=>{V(le,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(W(G,1),{status:r}),exports.bridgeRequestTheme=()=>P()?(Q(te),{status:!0}):(W(te,1),{status:r}),exports.bridgeRequestViewport=()=>q()?(Q(se),{status:!0}):(W(se,1),{status:r}),exports.bridgeRequestWriteAccess=()=>R()?(Q(oe),{status:!0}):(W(oe,1),{status:r}),exports.bridgeSetBackgroundColor=e=>k()?(Q(re,e),{status:!0}):(W(re,1),{status:r}),exports.bridgeSetHeaderColor=e=>C()?(Q(pe,e),{status:!0}):(W(pe,1),{status:r}),exports.bridgeSetupBackButton=e=>y()?(Q(ae,e),{status:!0}):(W(ae,1),{status:r}),exports.bridgeSetupClosingBehavior=e=>E()?(Q(ne,e),{status:!0}):(W(ne,1),{status:r}),exports.bridgeSetupMainButton=e=>O()?(Q(ue,e),{status:!0}):(W(ue,1),{status:r}),exports.bridgeSetupSettingsButton=e=>T()?(Q(ie,e),{status:!0}):(W(ie,1),{status:r}),exports.bridgeSwitchInlineQuery=e=>B()?(e.query.length>256&&W(de,9),Q(de,e),{status:!0}):(W(de,1),{status:r}),exports.bridgeTriggerHapticFeedback=e=>I()?(Q(_e,e),{status:!0}):(W(_e,1),{status:r}),exports.createIsViewportChanged=()=>{const[t,s]=e.createSignal({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>s(e);return e.onMount((()=>{L(we,o),Q(se)})),e.onCleanup((()=>{N(we,o)})),t},exports.debug=W,exports.listener=A,exports.sender=Q,exports.supportClose=n,exports.supportCloseScanQrPopup=i,exports.supportDataSend=d,exports.supportExpand=_,exports.supportIframeReady=c,exports.supportIframeWillReload=x,exports.supportInvokeCustomMethod=g,exports.supportOpenInvoice=b,exports.supportOpenLink=h,exports.supportOpenPopup=w,exports.supportOpenScanQrPopup=m,exports.supportOpenTgLink=v,exports.supportReadTextFromClipboard=S,exports.supportReady=f,exports.supportRequestPhone=M,exports.supportRequestTheme=P,exports.supportRequestViewport=q,exports.supportRequestWriteAccess=R,exports.supportSetBackgroundColor=k,exports.supportSetHeaderColor=C,exports.supportSetupBackButton=y,exports.supportSetupClosingBehavior=E,exports.supportSetupMainButton=O,exports.supportSetupSettingsButton=T,exports.supportSwitchInlineQuery=B,exports.supportTriggerHapticFeedback=I;
|
package/solid/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createSignal as e,onMount as t,onCleanup as s}from"solid-js";const a=e=>{},o="web",
|
|
1
|
+
import{createSignal as e,onMount as t,onCleanup as s}from"solid-js";const a=()=>{const[a,n]=e({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>n(e);return t((()=>{be(st,o),de(Ie)})),s((()=>{le(st,o)})),a},n="web",o="phone",r="desktop",i="not_supported",_=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s)>=e&&-1!==t.indexOf((()=>{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:n})())},p=()=>Math.random().toString(36).substring(3,9),u=()=>d()?(de(qe),{status:!0}):(pe(qe,1),{status:i}),d=()=>_(0,[n,r,o]),c=()=>b()?(de(ye),{status:!0}):(pe(ye,1),{status:i}),b=()=>_(6.4,[o]),l=e=>g()?(de(xe,e),{status:!0}):(pe(xe,1),{status:i}),g=()=>_(0,[n,r,o]),w=()=>m()?(de(Se),{status:!0}):(pe(Se,1),{status:i}),m=()=>_(0,[o]),h=e=>f()?(de(ke,e),{status:!0}):(pe(ke,1),{status:i}),f=()=>_(0,[n]),v=()=>q()?(de(ke),{status:!0}):(pe(ke,1),{status:i}),q=()=>_(0,[n]),y="web_app_invoke_custom_method",x=async e=>S()?(void 0===e.req_id&&(e.req_id=p()),de(y,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),le(Qe,a))};be(Qe,a)}))):(pe(y,1),{status:i}),S=()=>_(6.9,[n,r,o]),k=e=>P()?(de(Oe,e),{status:!0}):(pe(Oe,1),{status:i}),P=()=>_(6.1,[n,r,o]),O=e=>R()?(de(Re,e),{status:!0}):(pe(Re,1),{status:i}),R=()=>_(6.4,[n,r,o]),T=async e=>E()?(e.title.length>64&&pe(Te,3),e.message.length<1&&pe(Te,4),e.message.length>256&&pe(Te,5),e.buttons.length<1&&pe(Te,6),e.buttons.length>3&&pe(Te,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&pe(Te,8),de(Te,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),le(ze,a)};be(ze,a)}))):(pe(Te,1),{status:i}),E=()=>_(6.2,[n,r,o]),W=async e=>C()?(de(he,e),new Promise(((t,s)=>{ge(Xe,(s=>{e.is_close&&c(),t({status:!0,data:s})})),ge(Ye,(()=>{t({status:"closed"})}))}))):(pe(he,1),{status:i}),C=()=>_(6.4,[o]),I=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),B()?(de(Ee,e),{status:!0}):(pe(Ee,1),{status:i})),B=()=>_(7,[n,r,o]),D=async e=>L()?(void 0===e.req_id&&(e.req_id=p()),de(fe,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),le(Je,a))};be(Je,a)}))):(pe(fe,1),{status:i}),L=()=>_(6.4,[n,r,o]),N=()=>A()?(de(We),{status:!0}):(pe(We,1),{status:i}),A=()=>_(6.9,[n,r,o]),M=async()=>U()?(de(ve),new Promise(((e,t)=>{ge(He,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(pe(ve,1),{status:i}),U=()=>_(6.9,[n,r,o]),V=()=>$()?(de(Ce),{status:!0}):(pe(Ce,1),{status:i}),$=()=>_(0,[n,r,o]),G=()=>J()?(de(Ie),{status:!0}):(pe(Ie,1),{status:i}),J=()=>_(0,[n,r,o]),Q=()=>j()?(de(Be),{status:!0}):(pe(Be,1),{status:i}),j=()=>_(6.9,[n,r,o]),F=e=>H()?(de(De,e),{status:!0}):(pe(De,1),{status:i}),H=()=>_(6.1,[n,r,o]),z=e=>K()?(de(Le,e),{status:!0}):(pe(Le,1),{status:i}),K=()=>_(6.1,[n,r,o]),X=e=>Y()?(de(Ne,e),{status:!0}):(pe(Ne,1),{status:i}),Y=()=>_(6.1,[n,r,o]),Z=e=>ee()?(de(Ae,e),{status:!0}):(pe(Ae,1),{status:i}),ee=()=>_(0,[n,r,o]),te=e=>se()?(de(Me,e),{status:!0}):(pe(Me,1),{status:i}),se=()=>_(0,[n,r,o]),ae=e=>ne()?(de(Ue,e),{status:!0}):(pe(Ue,1),{status:i}),ne=()=>_(6.1,[n,r,o]),oe=e=>re()?(e.query.length>256&&pe(Ve,9),de(Ve,e),{status:!0}):(pe(Ve,1),{status:i}),re=()=>_(6.7,[n,r,o]),ie=e=>_e()?(de($e,e),{status:!0}):(pe($e,1),{status:i}),_e=()=>_(6.1,[o]);var pe=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const ue=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return pe("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 de=(e,t)=>{window.TelegramWebviewProxy?window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t)):window.external&&"notify"in window.external&&window.external.notify(JSON.stringify({eventType:e,eventData:t}))};const ce=((e=new Map)=>({once:(t,s,a=e.get(t),n=(e=>{s(e),a&&a.splice(a.indexOf(s)>>>0,1)}))=>a?a.push(n):e.set(t,[n]),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){ce.emit(e,t),ce.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const be=(e,t)=>{ce.on(e,t)},le=(e,t)=>{ce.off(e,t)},ge=(e,t)=>{ce.once(e,t)};var we=Object.freeze({__proto__:null,off:le,on:be,once:ge});const me="web_app_invoke_custom_method",he="web_app_open_scan_qr_popup",fe="web_app_read_text_from_clipboard",ve="web_app_request_phone",qe="web_app_close",ye="web_app_close_scan_qr_popup",xe="web_app_data_send",Se="web_app_expand",ke="iframe_ready",Pe="iframe_will_reload",Oe="web_app_open_invoice",Re="web_app_open_link",Te="web_app_open_popup",Ee="web_app_open_tg_link",We="web_app_ready",Ce="web_app_request_theme",Ie="web_app_request_viewport",Be="web_app_request_write_access",De="web_app_set_background_color",Le="web_app_set_header_color",Ne="web_app_setup_back_button",Ae="web_app_setup_closing_behavior",Me="web_app_setup_main_button",Ue="web_app_setup_settings_button",Ve="web_app_switch_inline_query",$e="web_app_trigger_haptic_feedback",Ge="back_button_pressed",Je="clipboard_text_received",Qe="custom_method_invoked",je="invoice_closed",Fe="main_button_pressed",He="phone_requested",ze="popup_closed",Ke="reload_iframe",Xe="qr_text_received",Ye="scan_qr_popup_closed",Ze="set_custom_style",et="settings_button_pressed",tt="theme_changed",st="viewport_changed",at="write_access_requested";export{Ge as EventBackButtonPressed,Je as EventClipboardTextReceived,Qe as EventCustomMethodInvoked,je as EventInvoiceClosed,Fe as EventMainButtonPressed,He as EventPhoneRequested,ze as EventPopupClosed,Xe as EventQrTextReceived,Ke as EventReloadIframe,Ye as EventScanQrPopupClosed,Ze as EventSetCustomStyle,et as EventSettingsButtonPressed,tt as EventThemeChanged,st as EventViewportChanged,at as EventWriteAccessRequested,qe as MethodClose,ye as MethodCloseScanQrPopup,xe as MethodDataSend,Se as MethodExpand,ke as MethodIframeReady,Pe as MethodIframeWillReload,me as MethodInvokeCustomMethod,Oe as MethodOpenInvoice,Re as MethodOpenLink,Te as MethodOpenPopup,he as MethodOpenScanQrPopup,Ee as MethodOpenTgLink,fe as MethodReadTextFromClipboard,We as MethodReady,ve as MethodRequestPhone,Ce as MethodRequestTheme,Ie as MethodRequestViewport,Be as MethodRequestWriteAccess,De as MethodSetBackgroundColor,Le as MethodSetHeaderColor,Ne as MethodSetupBackButton,Ae as MethodSetupClosingBehavior,Me as MethodSetupMainButton,Ue as MethodSetupSettingsButton,Ve as MethodSwitchInlineQuery,$e as MethodTriggerHapticFeedback,i as NOT_SUPPORTED,r as TG_DESKTOP,o as TG_PHONE,n as TG_WEB,u as bridgeClose,c as bridgeCloseScanQrPopup,l as bridgeDataSend,w as bridgeExpand,ue as bridgeGetInitData,h as bridgeIframeReady,v as bridgeIframeWillReload,x as bridgeInvokeCustomMethod,k as bridgeOpenInvoice,O as bridgeOpenLink,T as bridgeOpenPopup,W as bridgeOpenScanQrPopup,I as bridgeOpenTgLink,D as bridgeReadTextFromClipboard,N as bridgeReady,M as bridgeRequestPhone,V as bridgeRequestTheme,G as bridgeRequestViewport,Q as bridgeRequestWriteAccess,F as bridgeSetBackgroundColor,z as bridgeSetHeaderColor,X as bridgeSetupBackButton,Z as bridgeSetupClosingBehavior,te as bridgeSetupMainButton,ae as bridgeSetupSettingsButton,oe as bridgeSwitchInlineQuery,ie as bridgeTriggerHapticFeedback,a as createIsViewportChanged,pe as debug,we as listener,de as sender,d as supportClose,b as supportCloseScanQrPopup,g as supportDataSend,m as supportExpand,f as supportIframeReady,q as supportIframeWillReload,S as supportInvokeCustomMethod,P as supportOpenInvoice,R as supportOpenLink,E as supportOpenPopup,C as supportOpenScanQrPopup,B as supportOpenTgLink,L as supportReadTextFromClipboard,A as supportReady,U as supportRequestPhone,$ as supportRequestTheme,J as supportRequestViewport,j as supportRequestWriteAccess,H as supportSetBackgroundColor,K as supportSetHeaderColor,Y as supportSetupBackButton,ee as supportSetupClosingBehavior,se as supportSetupMainButton,ne as supportSetupSettingsButton,re as supportSwitchInlineQuery,_e as supportTriggerHapticFeedback};
|