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