@apiteam/twa-bridge 7.0.0-beta.11 → 7.0.0-beta.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,56 +1,56 @@
1
- ## SDK
2
- [![npm version](https://img.shields.io/npm/v/@apiteam/twa-bridge)](https://www.npmjs.com/package/@apiteam/twa-bridge)
3
-
4
- npm package for [Telegram Web Apps (TWA)](https://core.telegram.org/bots/webapps) SDK.
5
-
6
- ```
7
- npm i @apiteam/twa-bridge
8
- ```
9
-
10
- ### Motivation
11
- Telegram distributes SDK via [link](https://core.telegram.org/bots/webapps#initializing-web-apps). It's kinda old fashion way to work with a library:
12
-
13
- ```html
14
- <html lang="en">
15
- <head>
16
- <title>TWA</title>
17
- <meta charset="UTF-8">
18
- <script src="https://telegram.org/js/telegram-web-app.js"></script>
19
- <script>
20
- window.Telegram.WebApp.showPopup({ message: 'message' });
21
- </script>
22
- </head>
23
- <body></body>
24
- </html>
25
- ```
26
-
27
- This package allows to work with SDK as with a npm package:
28
-
29
- ```js
30
- import { bridgeOpenPopup } from '@apiteam/twa-bridge/solid'
31
-
32
- bridgeOpenPopup({ message: 'message' })
33
- ```
34
-
35
- And yes, it supports TS.
36
-
37
- ### Solid
38
- ```js
39
- import { createIsViewportChanged } from '@apiteam/twa-bridge/solid'
40
-
41
- const viewport = createIsViewportChanged()
42
- ```
43
-
44
- ### Errors
45
-
46
- | ID | Description |
47
- | --- | ----------------------------------------------------------------- |
48
- | 1 | Method not supported |
49
- | 2 | Ooof! Something is wrong. Init data is missing |
50
- | 3 | Title too long, maximum length 64 characters |
51
- | 4 | Your message is too short, at least 1 character |
52
- | 5 | Your message is too long, maximum 256 characters |
53
- | 6 | You are passing too few buttons, at least 1 button |
54
- | 7 | You are passing too many buttons, maximum 3 buttons |
55
- | 8 | The button text ignores the following values: "ok, close, cancel" |
1
+ ## SDK
2
+ [![npm version](https://img.shields.io/npm/v/@apiteam/twa-bridge)](https://www.npmjs.com/package/@apiteam/twa-bridge)
3
+
4
+ npm package for [Telegram Web Apps (TWA)](https://core.telegram.org/bots/webapps) SDK.
5
+
6
+ ```
7
+ npm i @apiteam/twa-bridge
8
+ ```
9
+
10
+ ### Motivation
11
+ Telegram distributes SDK via [link](https://core.telegram.org/bots/webapps#initializing-web-apps). It's kinda old fashion way to work with a library:
12
+
13
+ ```html
14
+ <html lang="en">
15
+ <head>
16
+ <title>TWA</title>
17
+ <meta charset="UTF-8">
18
+ <script src="https://telegram.org/js/telegram-web-app.js"></script>
19
+ <script>
20
+ window.Telegram.WebApp.showPopup({ message: 'message' });
21
+ </script>
22
+ </head>
23
+ <body></body>
24
+ </html>
25
+ ```
26
+
27
+ This package allows to work with SDK as with a npm package:
28
+
29
+ ```js
30
+ import { bridgeOpenPopup } from '@apiteam/twa-bridge/solid'
31
+
32
+ bridgeOpenPopup({ message: 'message' })
33
+ ```
34
+
35
+ And yes, it supports TS.
36
+
37
+ ### Solid
38
+ ```js
39
+ import { createIsViewportChanged } from '@apiteam/twa-bridge/solid'
40
+
41
+ const viewport = createIsViewportChanged()
42
+ ```
43
+
44
+ ### Errors
45
+
46
+ | ID | Description |
47
+ | --- | ----------------------------------------------------------------- |
48
+ | 1 | Method not supported |
49
+ | 2 | Ooof! Something is wrong. Init data is missing |
50
+ | 3 | Title too long, maximum length 64 characters |
51
+ | 4 | Your message is too short, at least 1 character |
52
+ | 5 | Your message is too long, maximum 256 characters |
53
+ | 6 | You are passing too few buttons, at least 1 button |
54
+ | 7 | You are passing too many buttons, maximum 3 buttons |
55
+ | 8 | The button text ignores the following values: "ok, close, cancel" |
56
56
  | 9 | EDIT_MESSAGE
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
- {
2
- "name": "@apiteam/twa-bridge",
3
- "version": "7.0.0-beta.11",
4
- "description": "Telegram bridge",
5
- "license": "MIT",
6
- "types": "index.ts",
7
- "author": {
8
- "name": "Egor Kytyukov",
9
- "url": "https://vk.com/xuserz"
10
- },
11
- "repository": {
12
- "type": "git",
13
- "url": "https://github.com/APITEAMRU/twa-bridge"
14
- },
15
- "contributors": [],
16
- "keywords": [
17
- "twa-sdk",
18
- "telegram sdk",
19
- "telegram",
20
- "tg",
21
- "telegram module"
22
- ]
1
+ {
2
+ "name": "@apiteam/twa-bridge",
3
+ "version": "7.0.0-beta.13",
4
+ "description": "Telegram bridge",
5
+ "license": "MIT",
6
+ "types": "index.ts",
7
+ "author": {
8
+ "name": "Egor Kytyukov",
9
+ "url": "https://vk.com/xuserz"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/APITEAMRU/twa-bridge"
14
+ },
15
+ "contributors": [],
16
+ "keywords": [
17
+ "twa-sdk",
18
+ "telegram sdk",
19
+ "telegram",
20
+ "tg",
21
+ "telegram module"
22
+ ]
23
23
  }
package/react/index.d.ts CHANGED
@@ -934,9 +934,11 @@ declare namespace listener {
934
934
  export { type listener_EventsData as EventsData, listener_off as off, listener_on as on, listener_once as once };
935
935
  }
936
936
 
937
+ type GetPlatform = () => 'phone' | 'web' | 'desktop';
937
938
  declare const TG_WEB = "web";
938
939
  declare const TG_PHONE = "phone";
939
940
  declare const TG_DESKTOP = "desktop";
941
+ declare const getPlatform: GetPlatform;
940
942
 
941
943
  declare const NOT_SUPPORTED = "not_supported";
942
944
 
@@ -983,4 +985,4 @@ declare const EventThemeChanged = "theme_changed";
983
985
  declare const EventViewportChanged = "viewport_changed";
984
986
  declare const EventWriteAccessRequested = "write_access_requested";
985
987
 
986
- export { EventBackButtonPressed, EventClipboardTextReceived, EventCustomMethodInvoked, EventInvoiceClosed, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventQrTextReceived, EventReloadIframe, EventScanQrPopupClosed, EventSetCustomStyle, EventSettingsButtonPressed, EventThemeChanged, EventViewportChanged, EventWriteAccessRequested, type EventsData, MethodClose, MethodCloseScanQrPopup, MethodDataSend, MethodExpand, MethodIframeReady, MethodIframeWillReload, MethodInvokeCustomMethod, MethodOpenInvoice, MethodOpenLink, MethodOpenPopup, MethodOpenScanQrPopup, MethodOpenTgLink, MethodReadTextFromClipboard, MethodReady, MethodRequestPhone, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSetBackgroundColor, MethodSetHeaderColor, MethodSetupBackButton, MethodSetupClosingBehavior, MethodSetupMainButton, MethodSetupSettingsButton, MethodSwitchInlineQuery, MethodTriggerHapticFeedback, NOT_SUPPORTED, TG_DESKTOP, TG_PHONE, TG_WEB, close as bridgeClose, closeScanQrPopup as bridgeCloseScanQrPopup, dataSend as bridgeDataSend, expand as bridgeExpand, getInitData as bridgeGetInitData, iframeReady as bridgeIframeReady, iframeWillReload as bridgeIframeWillReload, invokeCustomMethod as bridgeInvokeCustomMethod, openInvoice as bridgeOpenInvoice, openLink as bridgeOpenLink, openPopup as bridgeOpenPopup, openScanQrPopup as bridgeOpenScanQrPopup, openTgLink as bridgeOpenTgLink, readTextFromClipboard as bridgeReadTextFromClipboard, ready as bridgeReady, requestPhone as bridgeRequestPhone, requestTheme as bridgeRequestTheme, requestViewport as bridgeRequestViewport, requestWriteAccess as bridgeRequestWriteAccess, sessionStorageGet as bridgeSessionStorageGet, sessionStorageSet as bridgeSessionStorageSet, setBackgroundColor as bridgeSetBackgroundColor, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupMainButton as bridgeSetupMainButton, setupSettingsButton as bridgeSetupSettingsButton, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, debug, listener, sender, supportClose, supportCloseScanQrPopup, supportDataSend, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestPhone, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSessionStorageGet, supportSessionStorageSet, supportSetBackgroundColor, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupMainButton, supportSetupSettingsButton, supportSwitchInlineQuery, supportTriggerHapticFeedback };
988
+ export { EventBackButtonPressed, EventClipboardTextReceived, EventCustomMethodInvoked, EventInvoiceClosed, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventQrTextReceived, EventReloadIframe, EventScanQrPopupClosed, EventSetCustomStyle, EventSettingsButtonPressed, EventThemeChanged, EventViewportChanged, EventWriteAccessRequested, type EventsData, MethodClose, MethodCloseScanQrPopup, MethodDataSend, MethodExpand, MethodIframeReady, MethodIframeWillReload, MethodInvokeCustomMethod, MethodOpenInvoice, MethodOpenLink, MethodOpenPopup, MethodOpenScanQrPopup, MethodOpenTgLink, MethodReadTextFromClipboard, MethodReady, MethodRequestPhone, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSetBackgroundColor, MethodSetHeaderColor, MethodSetupBackButton, MethodSetupClosingBehavior, MethodSetupMainButton, MethodSetupSettingsButton, MethodSwitchInlineQuery, MethodTriggerHapticFeedback, NOT_SUPPORTED, TG_DESKTOP, TG_PHONE, TG_WEB, close as bridgeClose, closeScanQrPopup as bridgeCloseScanQrPopup, dataSend as bridgeDataSend, expand as bridgeExpand, getInitData as bridgeGetInitData, iframeReady as bridgeIframeReady, iframeWillReload as bridgeIframeWillReload, invokeCustomMethod as bridgeInvokeCustomMethod, openInvoice as bridgeOpenInvoice, openLink as bridgeOpenLink, openPopup as bridgeOpenPopup, openScanQrPopup as bridgeOpenScanQrPopup, openTgLink as bridgeOpenTgLink, readTextFromClipboard as bridgeReadTextFromClipboard, ready as bridgeReady, requestPhone as bridgeRequestPhone, requestTheme as bridgeRequestTheme, requestViewport as bridgeRequestViewport, requestWriteAccess as bridgeRequestWriteAccess, sessionStorageGet as bridgeSessionStorageGet, sessionStorageSet as bridgeSessionStorageSet, setBackgroundColor as bridgeSetBackgroundColor, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupMainButton as bridgeSetupMainButton, setupSettingsButton as bridgeSetupSettingsButton, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, debug, getPlatform, listener, sender, supportClose, supportCloseScanQrPopup, supportDataSend, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestPhone, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSessionStorageGet, supportSessionStorageSet, supportSetBackgroundColor, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupMainButton, supportSetupSettingsButton, supportSwitchInlineQuery, supportTriggerHapticFeedback };
package/react/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("react");const t="web",s="phone",o="desktop",r="not_supported",p=(e,r)=>{const p=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(p)>=e&&-1!==r.indexOf((()=>{const e=window.location.hash.slice(1),r=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?s:["tdesktop","macos"].includes(r)?o:t})())},a=()=>Math.random().toString(36).substring(3,9),n=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),o=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((o<16?"0":"")+o.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},i=()=>p(0,[t,o,s]),u=()=>d()?(N(ee),{status:!0}):(L(ee,1),{status:r}),d=()=>p(6.4,[s]),_=()=>p(0,[t,o,s]),c=()=>p(0,[s]),x=()=>p(0,[t]),g=()=>p(0,[t]),l="web_app_invoke_custom_method",b=()=>p(6.9,[t,o,s]),h=()=>p(6.1,[t,o,s]),w=()=>p(6.4,[t,o,s]),m=()=>p(6.2,[t,o,s]),v=()=>p(6.4,[s]),S=()=>p(7,[t,o,s]),f=()=>p(6.4,[t,o,s]),y=()=>p(6.9,[t,o,s]),M=()=>p(6.9,[t,o,s]),P=()=>p(0,[t,o,s]),q=()=>p(0,[t,o,s]),R=()=>p(6.9,[t,o,s]),k=()=>p(6.1,[t,o,s]),C=()=>p(6.1,[t,o,s]),O=()=>p(6.1,[t,o,s]),E=()=>p(0,[t,o,s]),T=()=>p(0,[t,o,s]),I=()=>p(6.1,[t,o,s]),B=()=>p(6.7,[t,o,s]),W=()=>p(6.1,[s]);var L=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};var N=(t,s)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(t,JSON.stringify(s));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:t,eventData:s}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:t,eventData:s}),"*")}catch(t){e.debug("postMessage Iframe",10)}};const D="clipboard_text_received",Q="custom_method_invoked",A="phone_requested",G="popup_closed",H="qr_text_received",J="scan_qr_popup_closed",V="theme_changed",$=((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===V&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var o=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r in e){var p=n(e[r]);"string"==typeof p&&(o[r]=p)}return o})(t.theme_params)),$.emit(e,t),$.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const F=(e,t)=>{$.on(e,t)},U=(e,t)=>{$.off(e,t)},j=(e,t)=>{$.once(e,t)};var z=Object.freeze({__proto__:null,off:U,on:F,once:j});const K="web_app_open_scan_qr_popup",X="web_app_read_text_from_clipboard",Y="web_app_request_phone",Z="web_app_close",ee="web_app_close_scan_qr_popup",te="web_app_data_send",se="web_app_expand",oe="iframe_ready",re="web_app_open_invoice",pe="web_app_open_link",ae="web_app_open_popup",ne="web_app_open_tg_link",ie="web_app_ready",ue="web_app_request_theme",de="web_app_request_viewport",_e="web_app_request_write_access",ce="web_app_set_background_color",xe="web_app_set_header_color",ge="web_app_setup_back_button",le="web_app_setup_closing_behavior",be="web_app_setup_main_button",he="web_app_setup_settings_button",we="web_app_switch_inline_query",me="web_app_trigger_haptic_feedback";exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=D,exports.EventCustomMethodInvoked=Q,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=A,exports.EventPopupClosed=G,exports.EventQrTextReceived=H,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=J,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=V,exports.EventViewportChanged="viewport_changed",exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=Z,exports.MethodCloseScanQrPopup=ee,exports.MethodDataSend=te,exports.MethodExpand=se,exports.MethodIframeReady=oe,exports.MethodIframeWillReload="iframe_will_reload",exports.MethodInvokeCustomMethod="web_app_invoke_custom_method",exports.MethodOpenInvoice=re,exports.MethodOpenLink=pe,exports.MethodOpenPopup=ae,exports.MethodOpenScanQrPopup=K,exports.MethodOpenTgLink=ne,exports.MethodReadTextFromClipboard=X,exports.MethodReady=ie,exports.MethodRequestPhone=Y,exports.MethodRequestTheme=ue,exports.MethodRequestViewport=de,exports.MethodRequestWriteAccess=_e,exports.MethodSetBackgroundColor=ce,exports.MethodSetHeaderColor=xe,exports.MethodSetupBackButton=ge,exports.MethodSetupClosingBehavior=le,exports.MethodSetupMainButton=be,exports.MethodSetupSettingsButton=he,exports.MethodSwitchInlineQuery=we,exports.MethodTriggerHapticFeedback=me,exports.NOT_SUPPORTED=r,exports.TG_DESKTOP=o,exports.TG_PHONE=s,exports.TG_WEB=t,exports.bridgeClose=()=>i()?(N(Z),{status:!0}):(L(Z,1),{status:r}),exports.bridgeCloseScanQrPopup=u,exports.bridgeDataSend=e=>_()?(N(te,e),{status:!0}):(L(te,1),{status:r}),exports.bridgeExpand=()=>c()?(N(se),{status:!0}):(L(se,1),{status:r}),exports.bridgeGetInitData=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return L("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s},exports.bridgeIframeReady=e=>x()?(N(oe,e),{status:!0}):(L(oe,1),{status:r}),exports.bridgeIframeWillReload=()=>g()?(N(oe),{status:!0}):(L(oe,1),{status:r}),exports.bridgeInvokeCustomMethod=async e=>b()?(void 0===e.req_id&&(e.req_id=a()),N(l,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),U(Q,o))};F(Q,o)}))):(L(l,1),{status:r}),exports.bridgeOpenInvoice=e=>h()?(N(re,e),{status:!0}):(L(re,1),{status:r}),exports.bridgeOpenLink=e=>w()?(N(pe,e),{status:!0}):(L(pe,1),{status:r}),exports.bridgeOpenPopup=async e=>m()?(e.title.length>64&&L(ae,3),e.message.length<1&&L(ae,4),e.message.length>256&&L(ae,5),e.buttons.length<1&&L(ae,6),e.buttons.length>3&&L(ae,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&L(ae,8),N(ae,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),U(G,o)};F(G,o)}))):(L(ae,1),{status:r}),exports.bridgeOpenScanQrPopup=async e=>v()?(N(K,e),new Promise(((t,s)=>{j(H,(s=>{e.is_close&&u(),t({status:!0,data:s})})),j(J,(()=>{t({status:"closed"})}))}))):(L(K,1),{status:r}),exports.bridgeOpenTgLink=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),S()?(N(ne,e),{status:!0}):(L(ne,1),{status:r})),exports.bridgeReadTextFromClipboard=async e=>f()?(void 0===e.req_id&&(e.req_id=a()),N(X,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),U(D,o))};F(D,o)}))):(L(X,1),{status:r}),exports.bridgeReady=()=>y()?(N(ie),{status:!0}):(L(ie,1),{status:r}),exports.bridgeRequestPhone=async()=>M()?(N(Y),new Promise(((e,t)=>{j(A,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(L(Y,1),{status:r}),exports.bridgeRequestTheme=()=>P()?(N(ue),{status:!0}):(L(ue,1),{status:r}),exports.bridgeRequestViewport=()=>q()?(N(de),{status:!0}):(L(de,1),{status:r}),exports.bridgeRequestWriteAccess=()=>R()?(N(_e),{status:!0}):(L(_e,1),{status:r}),exports.bridgeSessionStorageGet=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},exports.bridgeSetBackgroundColor=e=>k()?(N(ce,e),{status:!0}):(L(ce,1),{status:r}),exports.bridgeSetHeaderColor=e=>C()?(N(xe,e),{status:!0}):(L(xe,1),{status:r}),exports.bridgeSetupBackButton=e=>O()?(N(ge,e),{status:!0}):(L(ge,1),{status:r}),exports.bridgeSetupClosingBehavior=e=>E()?(N(le,e),{status:!0}):(L(le,1),{status:r}),exports.bridgeSetupMainButton=e=>T()?(N(be,e),{status:!0}):(L(be,1),{status:r}),exports.bridgeSetupSettingsButton=e=>I()?(N(he,e),{status:!0}):(L(he,1),{status:r}),exports.bridgeSwitchInlineQuery=e=>B()?(e.query.length>256&&L(we,9),N(we,e),{status:!0}):(L(we,1),{status:r}),exports.bridgeTriggerHapticFeedback=e=>W()?(N(me,e),{status:!0}):(L(me,1),{status:r}),exports.debug=L,exports.listener=z,exports.sender=N,exports.supportClose=i,exports.supportCloseScanQrPopup=d,exports.supportDataSend=_,exports.supportExpand=c,exports.supportIframeReady=x,exports.supportIframeWillReload=g,exports.supportInvokeCustomMethod=b,exports.supportOpenInvoice=h,exports.supportOpenLink=w,exports.supportOpenPopup=m,exports.supportOpenScanQrPopup=v,exports.supportOpenTgLink=S,exports.supportReadTextFromClipboard=f,exports.supportReady=y,exports.supportRequestPhone=M,exports.supportRequestTheme=P,exports.supportRequestViewport=q,exports.supportRequestWriteAccess=R,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=k,exports.supportSetHeaderColor=C,exports.supportSetupBackButton=O,exports.supportSetupClosingBehavior=E,exports.supportSetupMainButton=T,exports.supportSetupSettingsButton=I,exports.supportSwitchInlineQuery=B,exports.supportTriggerHapticFeedback=W;
1
+ "use strict";var e=require("debug");const t="web",s="phone",o="desktop",r=()=>{const e=window.location.hash.slice(1),r=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?s:["tdesktop","macos"].includes(r)?o:t},p="not_supported",a=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s)>=e&&-1!==t.indexOf(r())},n=()=>Math.random().toString(36).substring(3,9),i=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),o=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((o<16?"0":"")+o.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},u=()=>a(0,[t,o,s]),d=()=>_()?(D(te),{status:!0}):(N(te,1),{status:p}),_=()=>a(6.4,[s]),c=()=>a(0,[t,o,s]),x=()=>a(0,[s]),g=()=>a(0,[t]),l=()=>a(0,[t]),b="web_app_invoke_custom_method",h=()=>a(6.9,[t,o,s]),w=()=>a(6.1,[t,o,s]),m=()=>a(6.4,[t,o,s]),v=()=>a(6.2,[t,o,s]),S=()=>a(6.4,[s]),f=()=>a(7,[t,o,s]),y=()=>a(6.4,[t,o,s]),P=()=>a(6.9,[t,o,s]),M=()=>a(6.9,[t,o,s]),q=()=>a(0,[t,o,s]),R=()=>a(0,[t,o,s]),k=()=>a(6.9,[t,o,s]),C=()=>a(6.1,[t,o,s]),O=()=>a(6.1,[t,o,s]),E=()=>a(6.1,[t,o,s]),T=()=>a(0,[t,o,s]),I=()=>a(0,[t,o,s]),B=()=>a(6.1,[t,o,s]),W=()=>a(6.7,[t,o,s]),L=()=>a(6.1,[s]);var N=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};var D=(t,s)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(t,JSON.stringify(s));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:t,eventData:s}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:t,eventData:s}),"*")}catch(t){e("postMessage Iframe",10)}};const Q="clipboard_text_received",A="custom_method_invoked",G="phone_requested",H="popup_closed",J="qr_text_received",V="scan_qr_popup_closed",$="theme_changed",F=((e=new Map)=>({once:(t,s,o=e.get(t),r=(e=>{s(e),o&&o.splice(o.indexOf(s)>>>0,1)}))=>o?o.push(r):e.set(t,[r]),on:(t,s,o=e.get(t))=>o?o.push(s):e.set(t,[s]),off:(t,s,o=e.get(t))=>o&&s?o.splice(o.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,o=e.get(t)||[])=>{for(const e of o)e(s)}}))();(()=>{function e(e,t){e===$&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var o=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r in e){var p=i(e[r]);"string"==typeof p&&(o[r]=p)}return o})(t.theme_params)),F.emit(e,t),F.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const U=(e,t)=>{F.on(e,t)},j=(e,t)=>{F.off(e,t)},z=(e,t)=>{F.once(e,t)};var K=Object.freeze({__proto__:null,off:j,on:U,once:z});const X="web_app_open_scan_qr_popup",Y="web_app_read_text_from_clipboard",Z="web_app_request_phone",ee="web_app_close",te="web_app_close_scan_qr_popup",se="web_app_data_send",oe="web_app_expand",re="iframe_ready",pe="web_app_open_invoice",ae="web_app_open_link",ne="web_app_open_popup",ie="web_app_open_tg_link",ue="web_app_ready",de="web_app_request_theme",_e="web_app_request_viewport",ce="web_app_request_write_access",xe="web_app_set_background_color",ge="web_app_set_header_color",le="web_app_setup_back_button",be="web_app_setup_closing_behavior",he="web_app_setup_main_button",we="web_app_setup_settings_button",me="web_app_switch_inline_query",ve="web_app_trigger_haptic_feedback";exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=Q,exports.EventCustomMethodInvoked=A,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=G,exports.EventPopupClosed=H,exports.EventQrTextReceived=J,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=V,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=$,exports.EventViewportChanged="viewport_changed",exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=ee,exports.MethodCloseScanQrPopup=te,exports.MethodDataSend=se,exports.MethodExpand=oe,exports.MethodIframeReady=re,exports.MethodIframeWillReload="iframe_will_reload",exports.MethodInvokeCustomMethod="web_app_invoke_custom_method",exports.MethodOpenInvoice=pe,exports.MethodOpenLink=ae,exports.MethodOpenPopup=ne,exports.MethodOpenScanQrPopup=X,exports.MethodOpenTgLink=ie,exports.MethodReadTextFromClipboard=Y,exports.MethodReady=ue,exports.MethodRequestPhone=Z,exports.MethodRequestTheme=de,exports.MethodRequestViewport=_e,exports.MethodRequestWriteAccess=ce,exports.MethodSetBackgroundColor=xe,exports.MethodSetHeaderColor=ge,exports.MethodSetupBackButton=le,exports.MethodSetupClosingBehavior=be,exports.MethodSetupMainButton=he,exports.MethodSetupSettingsButton=we,exports.MethodSwitchInlineQuery=me,exports.MethodTriggerHapticFeedback=ve,exports.NOT_SUPPORTED=p,exports.TG_DESKTOP=o,exports.TG_PHONE=s,exports.TG_WEB=t,exports.bridgeClose=()=>u()?(D(ee),{status:!0}):(N(ee,1),{status:p}),exports.bridgeCloseScanQrPopup=d,exports.bridgeDataSend=e=>c()?(D(se,e),{status:!0}):(N(se,1),{status:p}),exports.bridgeExpand=()=>x()?(D(oe),{status:!0}):(N(oe,1),{status:p}),exports.bridgeGetInitData=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return N("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s},exports.bridgeIframeReady=e=>g()?(D(re,e),{status:!0}):(N(re,1),{status:p}),exports.bridgeIframeWillReload=()=>l()?(D(re),{status:!0}):(N(re,1),{status:p}),exports.bridgeInvokeCustomMethod=async e=>h()?(void 0===e.req_id&&(e.req_id=n()),D(b,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),j(A,o))};U(A,o)}))):(N(b,1),{status:p}),exports.bridgeOpenInvoice=e=>w()?(D(pe,e),{status:!0}):(N(pe,1),{status:p}),exports.bridgeOpenLink=e=>m()?(D(ae,e),{status:!0}):(N(ae,1),{status:p}),exports.bridgeOpenPopup=async e=>v()?(e.title.length>64&&N(ne,3),e.message.length<1&&N(ne,4),e.message.length>256&&N(ne,5),e.buttons.length<1&&N(ne,6),e.buttons.length>3&&N(ne,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&N(ne,8),D(ne,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),j(H,o)};U(H,o)}))):(N(ne,1),{status:p}),exports.bridgeOpenScanQrPopup=async e=>S()?(D(X,e),new Promise(((t,s)=>{z(J,(s=>{e.is_close&&d(),t({status:!0,data:s})})),z(V,(()=>{t({status:"closed"})}))}))):(N(X,1),{status:p}),exports.bridgeOpenTgLink=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),f()?(D(ie,e),{status:!0}):(N(ie,1),{status:p})),exports.bridgeReadTextFromClipboard=async e=>y()?(void 0===e.req_id&&(e.req_id=n()),D(Y,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),j(Q,o))};U(Q,o)}))):(N(Y,1),{status:p}),exports.bridgeReady=()=>P()?(D(ue),{status:!0}):(N(ue,1),{status:p}),exports.bridgeRequestPhone=async()=>M()?(D(Z),new Promise(((e,t)=>{z(G,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(N(Z,1),{status:p}),exports.bridgeRequestTheme=()=>q()?(D(de),{status:!0}):(N(de,1),{status:p}),exports.bridgeRequestViewport=()=>R()?(D(_e),{status:!0}):(N(_e,1),{status:p}),exports.bridgeRequestWriteAccess=()=>k()?(D(ce),{status:!0}):(N(ce,1),{status:p}),exports.bridgeSessionStorageGet=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},exports.bridgeSetBackgroundColor=e=>C()?(D(xe,e),{status:!0}):(N(xe,1),{status:p}),exports.bridgeSetHeaderColor=e=>O()?(D(ge,e),{status:!0}):(N(ge,1),{status:p}),exports.bridgeSetupBackButton=e=>E()?(D(le,e),{status:!0}):(N(le,1),{status:p}),exports.bridgeSetupClosingBehavior=e=>T()?(D(be,e),{status:!0}):(N(be,1),{status:p}),exports.bridgeSetupMainButton=e=>I()?(D(he,e),{status:!0}):(N(he,1),{status:p}),exports.bridgeSetupSettingsButton=e=>B()?(D(we,e),{status:!0}):(N(we,1),{status:p}),exports.bridgeSwitchInlineQuery=e=>W()?(e.query.length>256&&N(me,9),D(me,e),{status:!0}):(N(me,1),{status:p}),exports.bridgeTriggerHapticFeedback=e=>L()?(D(ve,e),{status:!0}):(N(ve,1),{status:p}),exports.debug=N,exports.getPlatform=r,exports.listener=K,exports.sender=D,exports.supportClose=u,exports.supportCloseScanQrPopup=_,exports.supportDataSend=c,exports.supportExpand=x,exports.supportIframeReady=g,exports.supportIframeWillReload=l,exports.supportInvokeCustomMethod=h,exports.supportOpenInvoice=w,exports.supportOpenLink=m,exports.supportOpenPopup=v,exports.supportOpenScanQrPopup=S,exports.supportOpenTgLink=f,exports.supportReadTextFromClipboard=y,exports.supportReady=P,exports.supportRequestPhone=M,exports.supportRequestTheme=q,exports.supportRequestViewport=R,exports.supportRequestWriteAccess=k,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=C,exports.supportSetHeaderColor=O,exports.supportSetupBackButton=E,exports.supportSetupClosingBehavior=T,exports.supportSetupMainButton=I,exports.supportSetupSettingsButton=B,exports.supportSwitchInlineQuery=W,exports.supportTriggerHapticFeedback=L;
package/react/index.mjs CHANGED
@@ -1 +1 @@
1
- import{debug as e}from"react";const t="web",s="phone",a="desktop",r="not_supported",o=(e,r)=>{const o=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(o)>=e&&-1!==r.indexOf((()=>{const e=window.location.hash.slice(1),r=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?s:["tdesktop","macos"].includes(r)?a:t})())},n=()=>Math.random().toString(36).substring(3,9),i=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),a=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((a<16?"0":"")+a.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},_=()=>p()?(ge($e),{status:!0}):(de($e,1),{status:r}),p=()=>o(0,[t,a,s]),u=()=>d()?(ge(Be),{status:!0}):(de(Be,1),{status:r}),d=()=>o(6.4,[s]),c=e=>g()?(ge(Me,e),{status:!0}):(de(Me,1),{status:r}),g=()=>o(0,[t,a,s]),b=()=>l()?(ge(Ae),{status:!0}):(de(Ae,1),{status:r}),l=()=>o(0,[s]),w=e=>m()?(ge(Ue,e),{status:!0}):(de(Ue,1),{status:r}),m=()=>o(0,[t]),h=()=>f()?(ge(Ue),{status:!0}):(de(Ue,1),{status:r}),f=()=>o(0,[t]),v="web_app_invoke_custom_method",y=async e=>S()?(void 0===e.req_id&&(e.req_id=n()),ge(v,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Ne(we,a))};Te(we,a)}))):(de(v,1),{status:r}),S=()=>o(6.9,[t,a,s]),q=e=>x()?(ge(Ve,e),{status:!0}):(de(Ve,1),{status:r}),x=()=>o(6.1,[t,a,s]),k=e=>P()?(ge(Qe,e),{status:!0}):(de(Qe,1),{status:r}),P=()=>o(6.4,[t,a,s]),O=async e=>I()?(e.title.length>64&&de(Fe,3),e.message.length<1&&de(Fe,4),e.message.length>256&&de(Fe,5),e.buttons.length<1&&de(Fe,6),e.buttons.length>3&&de(Fe,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&de(Fe,8),ge(Fe,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Ne(ve,a)};Te(ve,a)}))):(de(Fe,1),{status:r}),I=()=>o(6.2,[t,a,s]),R=async e=>T()?(ge(Ee,e),new Promise(((t,s)=>{Ce(Se,(s=>{e.is_close&&u(),t({status:!0,data:s})})),Ce(qe,(()=>{t({status:"closed"})}))}))):(de(Ee,1),{status:r}),T=()=>o(6.4,[s]),N=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),C()?(ge(He,e),{status:!0}):(de(He,1),{status:r})),C=()=>o(7,[t,a,s]),L=async e=>W()?(void 0===e.req_id&&(e.req_id=n()),ge(De,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Ne(le,a))};Te(le,a)}))):(de(De,1),{status:r}),W=()=>o(6.4,[t,a,s]),E=()=>D()?(ge(je),{status:!0}):(de(je,1),{status:r}),D=()=>o(6.9,[t,a,s]),J=async()=>$()?(ge(Je),new Promise(((e,t)=>{Ce(fe,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(de(Je,1),{status:r}),$=()=>o(6.9,[t,a,s]),B=()=>M()?(ge(ze),{status:!0}):(de(ze,1),{status:r}),M=()=>o(0,[t,a,s]),A=()=>U()?(ge(Ke),{status:!0}):(de(Ke,1),{status:r}),U=()=>o(0,[t,a,s]),G=()=>V()?(ge(Xe),{status:!0}):(de(Xe,1),{status:r}),V=()=>o(6.9,[t,a,s]),Q=e=>F()?(ge(Ye,e),{status:!0}):(de(Ye,1),{status:r}),F=()=>o(6.1,[t,a,s]),H=e=>j()?(ge(Ze,e),{status:!0}):(de(Ze,1),{status:r}),j=()=>o(6.1,[t,a,s]),z=e=>K()?(ge(et,e),{status:!0}):(de(et,1),{status:r}),K=()=>o(6.1,[t,a,s]),X=e=>Y()?(ge(tt,e),{status:!0}):(de(tt,1),{status:r}),Y=()=>o(0,[t,a,s]),Z=e=>ee()?(ge(st,e),{status:!0}):(de(st,1),{status:r}),ee=()=>o(0,[t,a,s]),te=e=>se()?(ge(at,e),{status:!0}):(de(at,1),{status:r}),se=()=>o(6.1,[t,a,s]),ae=e=>re()?(e.query.length>256&&de(rt,9),ge(rt,e),{status:!0}):(de(rt,1),{status:r}),re=()=>o(6.7,[t,a,s]),oe=e=>ne()?(ge(ot,e),{status:!0}):(de(ot,1),{status:r}),ne=()=>o(6.1,[s]),ie=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},_e=()=>!0,pe=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},ue=()=>!0;var de=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const ce=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return de("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s};var ge=(t,s)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(t,JSON.stringify(s));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:t,eventData:s}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:t,eventData:s}),"*")}catch(t){e("postMessage Iframe",10)}};const be="back_button_pressed",le="clipboard_text_received",we="custom_method_invoked",me="invoice_closed",he="main_button_pressed",fe="phone_requested",ve="popup_closed",ye="reload_iframe",Se="qr_text_received",qe="scan_qr_popup_closed",xe="set_custom_style",ke="settings_button_pressed",Pe="theme_changed",Oe="viewport_changed",Ie="write_access_requested",Re=((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===Pe&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var a=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r in e){var o=i(e[r]);"string"==typeof o&&(a[r]=o)}return a})(t.theme_params)),Re.emit(e,t),Re.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Te=(e,t)=>{Re.on(e,t)},Ne=(e,t)=>{Re.off(e,t)},Ce=(e,t)=>{Re.once(e,t)};var Le=Object.freeze({__proto__:null,off:Ne,on:Te,once:Ce});const We="web_app_invoke_custom_method",Ee="web_app_open_scan_qr_popup",De="web_app_read_text_from_clipboard",Je="web_app_request_phone",$e="web_app_close",Be="web_app_close_scan_qr_popup",Me="web_app_data_send",Ae="web_app_expand",Ue="iframe_ready",Ge="iframe_will_reload",Ve="web_app_open_invoice",Qe="web_app_open_link",Fe="web_app_open_popup",He="web_app_open_tg_link",je="web_app_ready",ze="web_app_request_theme",Ke="web_app_request_viewport",Xe="web_app_request_write_access",Ye="web_app_set_background_color",Ze="web_app_set_header_color",et="web_app_setup_back_button",tt="web_app_setup_closing_behavior",st="web_app_setup_main_button",at="web_app_setup_settings_button",rt="web_app_switch_inline_query",ot="web_app_trigger_haptic_feedback";export{be as EventBackButtonPressed,le as EventClipboardTextReceived,we as EventCustomMethodInvoked,me as EventInvoiceClosed,he as EventMainButtonPressed,fe as EventPhoneRequested,ve as EventPopupClosed,Se as EventQrTextReceived,ye as EventReloadIframe,qe as EventScanQrPopupClosed,xe as EventSetCustomStyle,ke as EventSettingsButtonPressed,Pe as EventThemeChanged,Oe as EventViewportChanged,Ie as EventWriteAccessRequested,$e as MethodClose,Be as MethodCloseScanQrPopup,Me as MethodDataSend,Ae as MethodExpand,Ue as MethodIframeReady,Ge as MethodIframeWillReload,We as MethodInvokeCustomMethod,Ve as MethodOpenInvoice,Qe as MethodOpenLink,Fe as MethodOpenPopup,Ee as MethodOpenScanQrPopup,He as MethodOpenTgLink,De as MethodReadTextFromClipboard,je as MethodReady,Je as MethodRequestPhone,ze as MethodRequestTheme,Ke as MethodRequestViewport,Xe as MethodRequestWriteAccess,Ye as MethodSetBackgroundColor,Ze as MethodSetHeaderColor,et as MethodSetupBackButton,tt as MethodSetupClosingBehavior,st as MethodSetupMainButton,at as MethodSetupSettingsButton,rt as MethodSwitchInlineQuery,ot as MethodTriggerHapticFeedback,r as NOT_SUPPORTED,a as TG_DESKTOP,s as TG_PHONE,t as TG_WEB,_ as bridgeClose,u as bridgeCloseScanQrPopup,c as bridgeDataSend,b as bridgeExpand,ce as bridgeGetInitData,w as bridgeIframeReady,h as bridgeIframeWillReload,y as bridgeInvokeCustomMethod,q as bridgeOpenInvoice,k as bridgeOpenLink,O as bridgeOpenPopup,R as bridgeOpenScanQrPopup,N as bridgeOpenTgLink,L as bridgeReadTextFromClipboard,E as bridgeReady,J as bridgeRequestPhone,B as bridgeRequestTheme,A as bridgeRequestViewport,G as bridgeRequestWriteAccess,pe as bridgeSessionStorageGet,ie as bridgeSessionStorageSet,Q as bridgeSetBackgroundColor,H as bridgeSetHeaderColor,z as bridgeSetupBackButton,X as bridgeSetupClosingBehavior,Z as bridgeSetupMainButton,te as bridgeSetupSettingsButton,ae as bridgeSwitchInlineQuery,oe as bridgeTriggerHapticFeedback,de as debug,Le as listener,ge as sender,p as supportClose,d as supportCloseScanQrPopup,g as supportDataSend,l as supportExpand,m as supportIframeReady,f as supportIframeWillReload,S as supportInvokeCustomMethod,x as supportOpenInvoice,P as supportOpenLink,I as supportOpenPopup,T as supportOpenScanQrPopup,C as supportOpenTgLink,W as supportReadTextFromClipboard,D as supportReady,$ as supportRequestPhone,M as supportRequestTheme,U as supportRequestViewport,V as supportRequestWriteAccess,ue as supportSessionStorageGet,_e as supportSessionStorageSet,F as supportSetBackgroundColor,j as supportSetHeaderColor,K as supportSetupBackButton,Y as supportSetupClosingBehavior,ee as supportSetupMainButton,se as supportSetupSettingsButton,re as supportSwitchInlineQuery,ne as supportTriggerHapticFeedback};
1
+ import e from"debug";const t="web",s="phone",a="desktop",r=()=>{const e=window.location.hash.slice(1),r=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?s:["tdesktop","macos"].includes(r)?a:t},o="not_supported",n=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s)>=e&&-1!==t.indexOf(r())},i=()=>Math.random().toString(36).substring(3,9),_=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),a=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((a<16?"0":"")+a.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},p=()=>u()?(be(Be),{status:!0}):(ce(Be,1),{status:o}),u=()=>n(0,[t,a,s]),d=()=>c()?(be(Me),{status:!0}):(ce(Me,1),{status:o}),c=()=>n(6.4,[s]),g=e=>b()?(be(Ae,e),{status:!0}):(ce(Ae,1),{status:o}),b=()=>n(0,[t,a,s]),l=()=>w()?(be(Ue),{status:!0}):(ce(Ue,1),{status:o}),w=()=>n(0,[s]),m=e=>h()?(be(Ge,e),{status:!0}):(ce(Ge,1),{status:o}),h=()=>n(0,[t]),f=()=>v()?(be(Ge),{status:!0}):(ce(Ge,1),{status:o}),v=()=>n(0,[t]),y="web_app_invoke_custom_method",S=async e=>q()?(void 0===e.req_id&&(e.req_id=i()),be(y,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Ce(me,a))};Ne(me,a)}))):(ce(y,1),{status:o}),q=()=>n(6.9,[t,a,s]),x=e=>k()?(be(Qe,e),{status:!0}):(ce(Qe,1),{status:o}),k=()=>n(6.1,[t,a,s]),P=e=>O()?(be(Fe,e),{status:!0}):(ce(Fe,1),{status:o}),O=()=>n(6.4,[t,a,s]),I=async e=>R()?(e.title.length>64&&ce(He,3),e.message.length<1&&ce(He,4),e.message.length>256&&ce(He,5),e.buttons.length<1&&ce(He,6),e.buttons.length>3&&ce(He,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&ce(He,8),be(He,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Ce(ye,a)};Ne(ye,a)}))):(ce(He,1),{status:o}),R=()=>n(6.2,[t,a,s]),T=async e=>N()?(be(De,e),new Promise(((t,s)=>{Le(qe,(s=>{e.is_close&&d(),t({status:!0,data:s})})),Le(xe,(()=>{t({status:"closed"})}))}))):(ce(De,1),{status:o}),N=()=>n(6.4,[s]),C=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),L()?(be(je,e),{status:!0}):(ce(je,1),{status:o})),L=()=>n(7,[t,a,s]),W=async e=>E()?(void 0===e.req_id&&(e.req_id=i()),be(Je,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Ce(we,a))};Ne(we,a)}))):(ce(Je,1),{status:o}),E=()=>n(6.4,[t,a,s]),D=()=>J()?(be(ze),{status:!0}):(ce(ze,1),{status:o}),J=()=>n(6.9,[t,a,s]),$=async()=>B()?(be($e),new Promise(((e,t)=>{Le(ve,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(ce($e,1),{status:o}),B=()=>n(6.9,[t,a,s]),M=()=>A()?(be(Ke),{status:!0}):(ce(Ke,1),{status:o}),A=()=>n(0,[t,a,s]),U=()=>G()?(be(Xe),{status:!0}):(ce(Xe,1),{status:o}),G=()=>n(0,[t,a,s]),V=()=>Q()?(be(Ye),{status:!0}):(ce(Ye,1),{status:o}),Q=()=>n(6.9,[t,a,s]),F=e=>H()?(be(Ze,e),{status:!0}):(ce(Ze,1),{status:o}),H=()=>n(6.1,[t,a,s]),j=e=>z()?(be(et,e),{status:!0}):(ce(et,1),{status:o}),z=()=>n(6.1,[t,a,s]),K=e=>X()?(be(tt,e),{status:!0}):(ce(tt,1),{status:o}),X=()=>n(6.1,[t,a,s]),Y=e=>Z()?(be(st,e),{status:!0}):(ce(st,1),{status:o}),Z=()=>n(0,[t,a,s]),ee=e=>te()?(be(at,e),{status:!0}):(ce(at,1),{status:o}),te=()=>n(0,[t,a,s]),se=e=>ae()?(be(rt,e),{status:!0}):(ce(rt,1),{status:o}),ae=()=>n(6.1,[t,a,s]),re=e=>oe()?(e.query.length>256&&ce(ot,9),be(ot,e),{status:!0}):(ce(ot,1),{status:o}),oe=()=>n(6.7,[t,a,s]),ne=e=>ie()?(be(nt,e),{status:!0}):(ce(nt,1),{status:o}),ie=()=>n(6.1,[s]),_e=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},pe=()=>!0,ue=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},de=()=>!0;var ce=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const ge=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return ce("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s};var be=(t,s)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(t,JSON.stringify(s));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:t,eventData:s}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:t,eventData:s}),"*")}catch(t){e("postMessage Iframe",10)}};const le="back_button_pressed",we="clipboard_text_received",me="custom_method_invoked",he="invoice_closed",fe="main_button_pressed",ve="phone_requested",ye="popup_closed",Se="reload_iframe",qe="qr_text_received",xe="scan_qr_popup_closed",ke="set_custom_style",Pe="settings_button_pressed",Oe="theme_changed",Ie="viewport_changed",Re="write_access_requested",Te=((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===Oe&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var a=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r in e){var o=_(e[r]);"string"==typeof o&&(a[r]=o)}return a})(t.theme_params)),Te.emit(e,t),Te.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Ne=(e,t)=>{Te.on(e,t)},Ce=(e,t)=>{Te.off(e,t)},Le=(e,t)=>{Te.once(e,t)};var We=Object.freeze({__proto__:null,off:Ce,on:Ne,once:Le});const Ee="web_app_invoke_custom_method",De="web_app_open_scan_qr_popup",Je="web_app_read_text_from_clipboard",$e="web_app_request_phone",Be="web_app_close",Me="web_app_close_scan_qr_popup",Ae="web_app_data_send",Ue="web_app_expand",Ge="iframe_ready",Ve="iframe_will_reload",Qe="web_app_open_invoice",Fe="web_app_open_link",He="web_app_open_popup",je="web_app_open_tg_link",ze="web_app_ready",Ke="web_app_request_theme",Xe="web_app_request_viewport",Ye="web_app_request_write_access",Ze="web_app_set_background_color",et="web_app_set_header_color",tt="web_app_setup_back_button",st="web_app_setup_closing_behavior",at="web_app_setup_main_button",rt="web_app_setup_settings_button",ot="web_app_switch_inline_query",nt="web_app_trigger_haptic_feedback";export{le as EventBackButtonPressed,we as EventClipboardTextReceived,me as EventCustomMethodInvoked,he as EventInvoiceClosed,fe as EventMainButtonPressed,ve as EventPhoneRequested,ye as EventPopupClosed,qe as EventQrTextReceived,Se as EventReloadIframe,xe as EventScanQrPopupClosed,ke as EventSetCustomStyle,Pe as EventSettingsButtonPressed,Oe as EventThemeChanged,Ie as EventViewportChanged,Re as EventWriteAccessRequested,Be as MethodClose,Me as MethodCloseScanQrPopup,Ae as MethodDataSend,Ue as MethodExpand,Ge as MethodIframeReady,Ve as MethodIframeWillReload,Ee as MethodInvokeCustomMethod,Qe as MethodOpenInvoice,Fe as MethodOpenLink,He as MethodOpenPopup,De as MethodOpenScanQrPopup,je as MethodOpenTgLink,Je as MethodReadTextFromClipboard,ze as MethodReady,$e as MethodRequestPhone,Ke as MethodRequestTheme,Xe as MethodRequestViewport,Ye as MethodRequestWriteAccess,Ze as MethodSetBackgroundColor,et as MethodSetHeaderColor,tt as MethodSetupBackButton,st as MethodSetupClosingBehavior,at as MethodSetupMainButton,rt as MethodSetupSettingsButton,ot as MethodSwitchInlineQuery,nt as MethodTriggerHapticFeedback,o as NOT_SUPPORTED,a as TG_DESKTOP,s as TG_PHONE,t as TG_WEB,p as bridgeClose,d as bridgeCloseScanQrPopup,g as bridgeDataSend,l as bridgeExpand,ge as bridgeGetInitData,m as bridgeIframeReady,f as bridgeIframeWillReload,S as bridgeInvokeCustomMethod,x as bridgeOpenInvoice,P as bridgeOpenLink,I as bridgeOpenPopup,T as bridgeOpenScanQrPopup,C as bridgeOpenTgLink,W as bridgeReadTextFromClipboard,D as bridgeReady,$ as bridgeRequestPhone,M as bridgeRequestTheme,U as bridgeRequestViewport,V as bridgeRequestWriteAccess,ue as bridgeSessionStorageGet,_e as bridgeSessionStorageSet,F as bridgeSetBackgroundColor,j as bridgeSetHeaderColor,K as bridgeSetupBackButton,Y as bridgeSetupClosingBehavior,ee as bridgeSetupMainButton,se as bridgeSetupSettingsButton,re as bridgeSwitchInlineQuery,ne as bridgeTriggerHapticFeedback,ce as debug,r as getPlatform,We as listener,be as sender,u as supportClose,c as supportCloseScanQrPopup,b as supportDataSend,w as supportExpand,h as supportIframeReady,v as supportIframeWillReload,q as supportInvokeCustomMethod,k as supportOpenInvoice,O as supportOpenLink,R as supportOpenPopup,N as supportOpenScanQrPopup,L as supportOpenTgLink,E as supportReadTextFromClipboard,J as supportReady,B as supportRequestPhone,A as supportRequestTheme,G as supportRequestViewport,Q as supportRequestWriteAccess,de as supportSessionStorageGet,pe as supportSessionStorageSet,H as supportSetBackgroundColor,z as supportSetHeaderColor,X as supportSetupBackButton,Z as supportSetupClosingBehavior,te as supportSetupMainButton,ae as supportSetupSettingsButton,oe as supportSwitchInlineQuery,ie as supportTriggerHapticFeedback};
@@ -1,17 +1,17 @@
1
- {
2
- "name": "@apiteam/twa-bridge/react",
3
- "main": "index.js",
4
- "module": "index.mjs",
5
- "typings": "index.d.ts",
6
- "browser": {
7
- "./index.cjs": "index.cjs",
8
- "./index.js": "index.js"
9
- },
10
- "unpkg": "index.cjs",
11
- "types": "index.d.ts",
12
- "type": "module",
13
- "peerDependencies": {
14
- "react": "^18.0.0",
15
- "react-dom": "^18.0.0"
16
- }
1
+ {
2
+ "name": "@apiteam/twa-bridge/react",
3
+ "main": "index.js",
4
+ "module": "index.mjs",
5
+ "typings": "index.d.ts",
6
+ "browser": {
7
+ "./index.cjs": "index.cjs",
8
+ "./index.js": "index.js"
9
+ },
10
+ "unpkg": "index.cjs",
11
+ "types": "index.d.ts",
12
+ "type": "module",
13
+ "peerDependencies": {
14
+ "react": "^18.0.0",
15
+ "react-dom": "^18.0.0"
16
+ }
17
17
  }
package/solid/index.d.ts CHANGED
@@ -943,9 +943,11 @@ declare namespace listener {
943
943
  export { type listener_EventsData as EventsData, listener_off as off, listener_on as on, listener_once as once };
944
944
  }
945
945
 
946
+ type GetPlatform = () => 'phone' | 'web' | 'desktop';
946
947
  declare const TG_WEB = "web";
947
948
  declare const TG_PHONE = "phone";
948
949
  declare const TG_DESKTOP = "desktop";
950
+ declare const getPlatform: GetPlatform;
949
951
 
950
952
  declare const NOT_SUPPORTED = "not_supported";
951
953
 
@@ -992,4 +994,4 @@ declare const EventThemeChanged = "theme_changed";
992
994
  declare const EventViewportChanged = "viewport_changed";
993
995
  declare const EventWriteAccessRequested = "write_access_requested";
994
996
 
995
- export { EventBackButtonPressed, EventClipboardTextReceived, EventCustomMethodInvoked, EventInvoiceClosed, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventQrTextReceived, EventReloadIframe, EventScanQrPopupClosed, EventSetCustomStyle, EventSettingsButtonPressed, EventThemeChanged, EventViewportChanged, EventWriteAccessRequested, type EventsData, MethodClose, MethodCloseScanQrPopup, MethodDataSend, MethodExpand, MethodIframeReady, MethodIframeWillReload, MethodInvokeCustomMethod, MethodOpenInvoice, MethodOpenLink, MethodOpenPopup, MethodOpenScanQrPopup, MethodOpenTgLink, MethodReadTextFromClipboard, MethodReady, MethodRequestPhone, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSetBackgroundColor, MethodSetHeaderColor, MethodSetupBackButton, MethodSetupClosingBehavior, MethodSetupMainButton, MethodSetupSettingsButton, MethodSwitchInlineQuery, MethodTriggerHapticFeedback, NOT_SUPPORTED, TG_DESKTOP, TG_PHONE, TG_WEB, close as bridgeClose, closeScanQrPopup as bridgeCloseScanQrPopup, dataSend as bridgeDataSend, expand as bridgeExpand, getInitData as bridgeGetInitData, iframeReady as bridgeIframeReady, iframeWillReload as bridgeIframeWillReload, invokeCustomMethod as bridgeInvokeCustomMethod, openInvoice as bridgeOpenInvoice, openLink as bridgeOpenLink, openPopup as bridgeOpenPopup, openScanQrPopup as bridgeOpenScanQrPopup, openTgLink as bridgeOpenTgLink, readTextFromClipboard as bridgeReadTextFromClipboard, ready as bridgeReady, requestPhone as bridgeRequestPhone, requestTheme as bridgeRequestTheme, requestViewport as bridgeRequestViewport, requestWriteAccess as bridgeRequestWriteAccess, sessionStorageGet as bridgeSessionStorageGet, sessionStorageSet as bridgeSessionStorageSet, setBackgroundColor as bridgeSetBackgroundColor, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupMainButton as bridgeSetupMainButton, setupSettingsButton as bridgeSetupSettingsButton, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, createIsViewportChanged, debug, listener, sender, supportClose, supportCloseScanQrPopup, supportDataSend, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestPhone, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSessionStorageGet, supportSessionStorageSet, supportSetBackgroundColor, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupMainButton, supportSetupSettingsButton, supportSwitchInlineQuery, supportTriggerHapticFeedback };
997
+ export { EventBackButtonPressed, EventClipboardTextReceived, EventCustomMethodInvoked, EventInvoiceClosed, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventQrTextReceived, EventReloadIframe, EventScanQrPopupClosed, EventSetCustomStyle, EventSettingsButtonPressed, EventThemeChanged, EventViewportChanged, EventWriteAccessRequested, type EventsData, MethodClose, MethodCloseScanQrPopup, MethodDataSend, MethodExpand, MethodIframeReady, MethodIframeWillReload, MethodInvokeCustomMethod, MethodOpenInvoice, MethodOpenLink, MethodOpenPopup, MethodOpenScanQrPopup, MethodOpenTgLink, MethodReadTextFromClipboard, MethodReady, MethodRequestPhone, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSetBackgroundColor, MethodSetHeaderColor, MethodSetupBackButton, MethodSetupClosingBehavior, MethodSetupMainButton, MethodSetupSettingsButton, MethodSwitchInlineQuery, MethodTriggerHapticFeedback, NOT_SUPPORTED, TG_DESKTOP, TG_PHONE, TG_WEB, close as bridgeClose, closeScanQrPopup as bridgeCloseScanQrPopup, dataSend as bridgeDataSend, expand as bridgeExpand, getInitData as bridgeGetInitData, iframeReady as bridgeIframeReady, iframeWillReload as bridgeIframeWillReload, invokeCustomMethod as bridgeInvokeCustomMethod, openInvoice as bridgeOpenInvoice, openLink as bridgeOpenLink, openPopup as bridgeOpenPopup, openScanQrPopup as bridgeOpenScanQrPopup, openTgLink as bridgeOpenTgLink, readTextFromClipboard as bridgeReadTextFromClipboard, ready as bridgeReady, requestPhone as bridgeRequestPhone, requestTheme as bridgeRequestTheme, requestViewport as bridgeRequestViewport, requestWriteAccess as bridgeRequestWriteAccess, sessionStorageGet as bridgeSessionStorageGet, sessionStorageSet as bridgeSessionStorageSet, setBackgroundColor as bridgeSetBackgroundColor, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupMainButton as bridgeSetupMainButton, setupSettingsButton as bridgeSetupSettingsButton, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, createIsViewportChanged, debug, getPlatform, listener, sender, supportClose, supportCloseScanQrPopup, supportDataSend, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestPhone, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSessionStorageGet, supportSessionStorageSet, supportSetBackgroundColor, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupMainButton, supportSetupSettingsButton, supportSwitchInlineQuery, supportTriggerHapticFeedback };
package/solid/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("react"),t=require("solid-js");const s="web",o="phone",r="desktop",p="not_supported",a=(e,t)=>{const p=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(p)>=e&&-1!==t.indexOf((()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?o:["tdesktop","macos"].includes(t)?r:s})())},n=()=>Math.random().toString(36).substring(3,9),i=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),o=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((o<16?"0":"")+o.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},u=()=>a(0,[s,r,o]),d=()=>_()?(D(se),{status:!0}):(N(se,1),{status:p}),_=()=>a(6.4,[o]),c=()=>a(0,[s,r,o]),x=()=>a(0,[o]),g=()=>a(0,[s]),l=()=>a(0,[s]),b="web_app_invoke_custom_method",h=()=>a(6.9,[s,r,o]),w=()=>a(6.1,[s,r,o]),m=()=>a(6.4,[s,r,o]),v=()=>a(6.2,[s,r,o]),S=()=>a(6.4,[o]),f=()=>a(7,[s,r,o]),y=()=>a(6.4,[s,r,o]),M=()=>a(6.9,[s,r,o]),P=()=>a(6.9,[s,r,o]),q=()=>a(0,[s,r,o]),R=()=>a(0,[s,r,o]),k=()=>a(6.9,[s,r,o]),C=()=>a(6.1,[s,r,o]),O=()=>a(6.1,[s,r,o]),E=()=>a(6.1,[s,r,o]),T=()=>a(0,[s,r,o]),I=()=>a(0,[s,r,o]),B=()=>a(6.1,[s,r,o]),W=()=>a(6.7,[s,r,o]),L=()=>a(6.1,[o]);var N=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};var D=(t,s)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(t,JSON.stringify(s));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:t,eventData:s}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:t,eventData:s}),"*")}catch(t){e.debug("postMessage Iframe",10)}};const Q="clipboard_text_received",A="custom_method_invoked",G="phone_requested",V="popup_closed",H="qr_text_received",J="scan_qr_popup_closed",$="theme_changed",F="viewport_changed",U=((e=new Map)=>({once:(t,s,o=e.get(t),r=(e=>{s(e),o&&o.splice(o.indexOf(s)>>>0,1)}))=>o?o.push(r):e.set(t,[r]),on:(t,s,o=e.get(t))=>o?o.push(s):e.set(t,[s]),off:(t,s,o=e.get(t))=>o&&s?o.splice(o.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,o=e.get(t)||[])=>{for(const e of o)e(s)}}))();(()=>{function e(e,t){e===$&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var o=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r in e){var p=i(e[r]);"string"==typeof p&&(o[r]=p)}return o})(t.theme_params)),U.emit(e,t),U.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const j=(e,t)=>{U.on(e,t)},z=(e,t)=>{U.off(e,t)},K=(e,t)=>{U.once(e,t)};var X=Object.freeze({__proto__:null,off:z,on:j,once:K});const Y="web_app_open_scan_qr_popup",Z="web_app_read_text_from_clipboard",ee="web_app_request_phone",te="web_app_close",se="web_app_close_scan_qr_popup",oe="web_app_data_send",re="web_app_expand",pe="iframe_ready",ae="web_app_open_invoice",ne="web_app_open_link",ie="web_app_open_popup",ue="web_app_open_tg_link",de="web_app_ready",_e="web_app_request_theme",ce="web_app_request_viewport",xe="web_app_request_write_access",ge="web_app_set_background_color",le="web_app_set_header_color",be="web_app_setup_back_button",he="web_app_setup_closing_behavior",we="web_app_setup_main_button",me="web_app_setup_settings_button",ve="web_app_switch_inline_query",Se="web_app_trigger_haptic_feedback";exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=Q,exports.EventCustomMethodInvoked=A,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=G,exports.EventPopupClosed=V,exports.EventQrTextReceived=H,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=J,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=$,exports.EventViewportChanged=F,exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=te,exports.MethodCloseScanQrPopup=se,exports.MethodDataSend=oe,exports.MethodExpand=re,exports.MethodIframeReady=pe,exports.MethodIframeWillReload="iframe_will_reload",exports.MethodInvokeCustomMethod="web_app_invoke_custom_method",exports.MethodOpenInvoice=ae,exports.MethodOpenLink=ne,exports.MethodOpenPopup=ie,exports.MethodOpenScanQrPopup=Y,exports.MethodOpenTgLink=ue,exports.MethodReadTextFromClipboard=Z,exports.MethodReady=de,exports.MethodRequestPhone=ee,exports.MethodRequestTheme=_e,exports.MethodRequestViewport=ce,exports.MethodRequestWriteAccess=xe,exports.MethodSetBackgroundColor=ge,exports.MethodSetHeaderColor=le,exports.MethodSetupBackButton=be,exports.MethodSetupClosingBehavior=he,exports.MethodSetupMainButton=we,exports.MethodSetupSettingsButton=me,exports.MethodSwitchInlineQuery=ve,exports.MethodTriggerHapticFeedback=Se,exports.NOT_SUPPORTED=p,exports.TG_DESKTOP=r,exports.TG_PHONE=o,exports.TG_WEB=s,exports.bridgeClose=()=>u()?(D(te),{status:!0}):(N(te,1),{status:p}),exports.bridgeCloseScanQrPopup=d,exports.bridgeDataSend=e=>c()?(D(oe,e),{status:!0}):(N(oe,1),{status:p}),exports.bridgeExpand=()=>x()?(D(re),{status:!0}):(N(re,1),{status:p}),exports.bridgeGetInitData=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return N("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s},exports.bridgeIframeReady=e=>g()?(D(pe,e),{status:!0}):(N(pe,1),{status:p}),exports.bridgeIframeWillReload=()=>l()?(D(pe),{status:!0}):(N(pe,1),{status:p}),exports.bridgeInvokeCustomMethod=async e=>h()?(void 0===e.req_id&&(e.req_id=n()),D(b,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),z(A,o))};j(A,o)}))):(N(b,1),{status:p}),exports.bridgeOpenInvoice=e=>w()?(D(ae,e),{status:!0}):(N(ae,1),{status:p}),exports.bridgeOpenLink=e=>m()?(D(ne,e),{status:!0}):(N(ne,1),{status:p}),exports.bridgeOpenPopup=async e=>v()?(e.title.length>64&&N(ie,3),e.message.length<1&&N(ie,4),e.message.length>256&&N(ie,5),e.buttons.length<1&&N(ie,6),e.buttons.length>3&&N(ie,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&N(ie,8),D(ie,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),z(V,o)};j(V,o)}))):(N(ie,1),{status:p}),exports.bridgeOpenScanQrPopup=async e=>S()?(D(Y,e),new Promise(((t,s)=>{K(H,(s=>{e.is_close&&d(),t({status:!0,data:s})})),K(J,(()=>{t({status:"closed"})}))}))):(N(Y,1),{status:p}),exports.bridgeOpenTgLink=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),f()?(D(ue,e),{status:!0}):(N(ue,1),{status:p})),exports.bridgeReadTextFromClipboard=async e=>y()?(void 0===e.req_id&&(e.req_id=n()),D(Z,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),z(Q,o))};j(Q,o)}))):(N(Z,1),{status:p}),exports.bridgeReady=()=>M()?(D(de),{status:!0}):(N(de,1),{status:p}),exports.bridgeRequestPhone=async()=>P()?(D(ee),new Promise(((e,t)=>{K(G,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(N(ee,1),{status:p}),exports.bridgeRequestTheme=()=>q()?(D(_e),{status:!0}):(N(_e,1),{status:p}),exports.bridgeRequestViewport=()=>R()?(D(ce),{status:!0}):(N(ce,1),{status:p}),exports.bridgeRequestWriteAccess=()=>k()?(D(xe),{status:!0}):(N(xe,1),{status:p}),exports.bridgeSessionStorageGet=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},exports.bridgeSetBackgroundColor=e=>C()?(D(ge,e),{status:!0}):(N(ge,1),{status:p}),exports.bridgeSetHeaderColor=e=>O()?(D(le,e),{status:!0}):(N(le,1),{status:p}),exports.bridgeSetupBackButton=e=>E()?(D(be,e),{status:!0}):(N(be,1),{status:p}),exports.bridgeSetupClosingBehavior=e=>T()?(D(he,e),{status:!0}):(N(he,1),{status:p}),exports.bridgeSetupMainButton=e=>I()?(D(we,e),{status:!0}):(N(we,1),{status:p}),exports.bridgeSetupSettingsButton=e=>B()?(D(me,e),{status:!0}):(N(me,1),{status:p}),exports.bridgeSwitchInlineQuery=e=>W()?(e.query.length>256&&N(ve,9),D(ve,e),{status:!0}):(N(ve,1),{status:p}),exports.bridgeTriggerHapticFeedback=e=>L()?(D(Se,e),{status:!0}):(N(Se,1),{status:p}),exports.createIsViewportChanged=()=>{const[e,s]=t.createSignal({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>s(e);return t.onMount((()=>{j(F,o),D(ce)})),t.onCleanup((()=>{z(F,o)})),e},exports.debug=N,exports.listener=X,exports.sender=D,exports.supportClose=u,exports.supportCloseScanQrPopup=_,exports.supportDataSend=c,exports.supportExpand=x,exports.supportIframeReady=g,exports.supportIframeWillReload=l,exports.supportInvokeCustomMethod=h,exports.supportOpenInvoice=w,exports.supportOpenLink=m,exports.supportOpenPopup=v,exports.supportOpenScanQrPopup=S,exports.supportOpenTgLink=f,exports.supportReadTextFromClipboard=y,exports.supportReady=M,exports.supportRequestPhone=P,exports.supportRequestTheme=q,exports.supportRequestViewport=R,exports.supportRequestWriteAccess=k,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=C,exports.supportSetHeaderColor=O,exports.supportSetupBackButton=E,exports.supportSetupClosingBehavior=T,exports.supportSetupMainButton=I,exports.supportSetupSettingsButton=B,exports.supportSwitchInlineQuery=W,exports.supportTriggerHapticFeedback=L;
1
+ "use strict";var e=require("debug"),t=require("solid-js");const s="web",o="phone",r="desktop",p=()=>{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},a="not_supported",n=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s)>=e&&-1!==t.indexOf(p())},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=()=>n(0,[s,r,o]),_=()=>c()?(Q(oe),{status:!0}):(D(oe,1),{status:a}),c=()=>n(6.4,[o]),x=()=>n(0,[s,r,o]),g=()=>n(0,[o]),l=()=>n(0,[s]),b=()=>n(0,[s]),h="web_app_invoke_custom_method",w=()=>n(6.9,[s,r,o]),m=()=>n(6.1,[s,r,o]),v=()=>n(6.4,[s,r,o]),S=()=>n(6.2,[s,r,o]),f=()=>n(6.4,[o]),y=()=>n(7,[s,r,o]),M=()=>n(6.4,[s,r,o]),P=()=>n(6.9,[s,r,o]),q=()=>n(6.9,[s,r,o]),R=()=>n(0,[s,r,o]),k=()=>n(0,[s,r,o]),C=()=>n(6.9,[s,r,o]),O=()=>n(6.1,[s,r,o]),E=()=>n(6.1,[s,r,o]),T=()=>n(6.1,[s,r,o]),I=()=>n(0,[s,r,o]),B=()=>n(0,[s,r,o]),W=()=>n(6.1,[s,r,o]),L=()=>n(6.7,[s,r,o]),N=()=>n(6.1,[o]);var D=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};var Q=(t,s)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(t,JSON.stringify(s));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:t,eventData:s}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:t,eventData:s}),"*")}catch(t){e("postMessage Iframe",10)}};const A="clipboard_text_received",G="custom_method_invoked",V="phone_requested",H="popup_closed",J="qr_text_received",$="scan_qr_popup_closed",F="theme_changed",U="viewport_changed",j=((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===F&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var o=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r in e){var p=u(e[r]);"string"==typeof p&&(o[r]=p)}return o})(t.theme_params)),j.emit(e,t),j.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const z=(e,t)=>{j.on(e,t)},K=(e,t)=>{j.off(e,t)},X=(e,t)=>{j.once(e,t)};var Y=Object.freeze({__proto__:null,off:K,on:z,once:X});const Z="web_app_open_scan_qr_popup",ee="web_app_read_text_from_clipboard",te="web_app_request_phone",se="web_app_close",oe="web_app_close_scan_qr_popup",re="web_app_data_send",pe="web_app_expand",ae="iframe_ready",ne="web_app_open_invoice",ie="web_app_open_link",ue="web_app_open_popup",de="web_app_open_tg_link",_e="web_app_ready",ce="web_app_request_theme",xe="web_app_request_viewport",ge="web_app_request_write_access",le="web_app_set_background_color",be="web_app_set_header_color",he="web_app_setup_back_button",we="web_app_setup_closing_behavior",me="web_app_setup_main_button",ve="web_app_setup_settings_button",Se="web_app_switch_inline_query",fe="web_app_trigger_haptic_feedback";exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=A,exports.EventCustomMethodInvoked=G,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=V,exports.EventPopupClosed=H,exports.EventQrTextReceived=J,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=$,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=F,exports.EventViewportChanged=U,exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=se,exports.MethodCloseScanQrPopup=oe,exports.MethodDataSend=re,exports.MethodExpand=pe,exports.MethodIframeReady=ae,exports.MethodIframeWillReload="iframe_will_reload",exports.MethodInvokeCustomMethod="web_app_invoke_custom_method",exports.MethodOpenInvoice=ne,exports.MethodOpenLink=ie,exports.MethodOpenPopup=ue,exports.MethodOpenScanQrPopup=Z,exports.MethodOpenTgLink=de,exports.MethodReadTextFromClipboard=ee,exports.MethodReady=_e,exports.MethodRequestPhone=te,exports.MethodRequestTheme=ce,exports.MethodRequestViewport=xe,exports.MethodRequestWriteAccess=ge,exports.MethodSetBackgroundColor=le,exports.MethodSetHeaderColor=be,exports.MethodSetupBackButton=he,exports.MethodSetupClosingBehavior=we,exports.MethodSetupMainButton=me,exports.MethodSetupSettingsButton=ve,exports.MethodSwitchInlineQuery=Se,exports.MethodTriggerHapticFeedback=fe,exports.NOT_SUPPORTED=a,exports.TG_DESKTOP=r,exports.TG_PHONE=o,exports.TG_WEB=s,exports.bridgeClose=()=>d()?(Q(se),{status:!0}):(D(se,1),{status:a}),exports.bridgeCloseScanQrPopup=_,exports.bridgeDataSend=e=>x()?(Q(re,e),{status:!0}):(D(re,1),{status:a}),exports.bridgeExpand=()=>g()?(Q(pe),{status:!0}):(D(pe,1),{status:a}),exports.bridgeGetInitData=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return D("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s},exports.bridgeIframeReady=e=>l()?(Q(ae,e),{status:!0}):(D(ae,1),{status:a}),exports.bridgeIframeWillReload=()=>b()?(Q(ae),{status:!0}):(D(ae,1),{status:a}),exports.bridgeInvokeCustomMethod=async e=>w()?(void 0===e.req_id&&(e.req_id=i()),Q(h,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),K(G,o))};z(G,o)}))):(D(h,1),{status:a}),exports.bridgeOpenInvoice=e=>m()?(Q(ne,e),{status:!0}):(D(ne,1),{status:a}),exports.bridgeOpenLink=e=>v()?(Q(ie,e),{status:!0}):(D(ie,1),{status:a}),exports.bridgeOpenPopup=async e=>S()?(e.title.length>64&&D(ue,3),e.message.length<1&&D(ue,4),e.message.length>256&&D(ue,5),e.buttons.length<1&&D(ue,6),e.buttons.length>3&&D(ue,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&D(ue,8),Q(ue,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),K(H,o)};z(H,o)}))):(D(ue,1),{status:a}),exports.bridgeOpenScanQrPopup=async e=>f()?(Q(Z,e),new Promise(((t,s)=>{X(J,(s=>{e.is_close&&_(),t({status:!0,data:s})})),X($,(()=>{t({status:"closed"})}))}))):(D(Z,1),{status:a}),exports.bridgeOpenTgLink=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),y()?(Q(de,e),{status:!0}):(D(de,1),{status:a})),exports.bridgeReadTextFromClipboard=async e=>M()?(void 0===e.req_id&&(e.req_id=i()),Q(ee,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),K(A,o))};z(A,o)}))):(D(ee,1),{status:a}),exports.bridgeReady=()=>P()?(Q(_e),{status:!0}):(D(_e,1),{status:a}),exports.bridgeRequestPhone=async()=>q()?(Q(te),new Promise(((e,t)=>{X(V,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(D(te,1),{status:a}),exports.bridgeRequestTheme=()=>R()?(Q(ce),{status:!0}):(D(ce,1),{status:a}),exports.bridgeRequestViewport=()=>k()?(Q(xe),{status:!0}):(D(xe,1),{status:a}),exports.bridgeRequestWriteAccess=()=>C()?(Q(ge),{status:!0}):(D(ge,1),{status:a}),exports.bridgeSessionStorageGet=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},exports.bridgeSetBackgroundColor=e=>O()?(Q(le,e),{status:!0}):(D(le,1),{status:a}),exports.bridgeSetHeaderColor=e=>E()?(Q(be,e),{status:!0}):(D(be,1),{status:a}),exports.bridgeSetupBackButton=e=>T()?(Q(he,e),{status:!0}):(D(he,1),{status:a}),exports.bridgeSetupClosingBehavior=e=>I()?(Q(we,e),{status:!0}):(D(we,1),{status:a}),exports.bridgeSetupMainButton=e=>B()?(Q(me,e),{status:!0}):(D(me,1),{status:a}),exports.bridgeSetupSettingsButton=e=>W()?(Q(ve,e),{status:!0}):(D(ve,1),{status:a}),exports.bridgeSwitchInlineQuery=e=>L()?(e.query.length>256&&D(Se,9),Q(Se,e),{status:!0}):(D(Se,1),{status:a}),exports.bridgeTriggerHapticFeedback=e=>N()?(Q(fe,e),{status:!0}):(D(fe,1),{status:a}),exports.createIsViewportChanged=()=>{const[e,s]=t.createSignal({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>s(e);return t.onMount((()=>{z(U,o),Q(xe)})),t.onCleanup((()=>{K(U,o)})),e},exports.debug=D,exports.getPlatform=p,exports.listener=Y,exports.sender=Q,exports.supportClose=d,exports.supportCloseScanQrPopup=c,exports.supportDataSend=x,exports.supportExpand=g,exports.supportIframeReady=l,exports.supportIframeWillReload=b,exports.supportInvokeCustomMethod=w,exports.supportOpenInvoice=m,exports.supportOpenLink=v,exports.supportOpenPopup=S,exports.supportOpenScanQrPopup=f,exports.supportOpenTgLink=y,exports.supportReadTextFromClipboard=M,exports.supportReady=P,exports.supportRequestPhone=q,exports.supportRequestTheme=R,exports.supportRequestViewport=k,exports.supportRequestWriteAccess=C,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=O,exports.supportSetHeaderColor=E,exports.supportSetupBackButton=T,exports.supportSetupClosingBehavior=I,exports.supportSetupMainButton=B,exports.supportSetupSettingsButton=W,exports.supportSwitchInlineQuery=L,exports.supportTriggerHapticFeedback=N;
package/solid/index.mjs CHANGED
@@ -1 +1 @@
1
- import{debug as e}from"react";import{createSignal as t,onMount as s,onCleanup as a}from"solid-js";const r=()=>{const[e,r]=t({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>r(e);return s((()=>{We(Ne,o),me(et)})),a((()=>{Ee(Ne,o)})),e},o="web",n="phone",i="desktop",_="not_supported",p=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s)>=e&&-1!==t.indexOf((()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?n:["tdesktop","macos"].includes(t)?i:o})())},u=()=>Math.random().toString(36).substring(3,9),d=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),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},c=()=>g()?(me(Ue),{status:!0}):(le(Ue,1),{status:_}),g=()=>p(0,[o,i,n]),b=()=>l()?(me(Ge),{status:!0}):(le(Ge,1),{status:_}),l=()=>p(6.4,[n]),w=e=>m()?(me(Ve,e),{status:!0}):(le(Ve,1),{status:_}),m=()=>p(0,[o,i,n]),h=()=>f()?(me(Qe),{status:!0}):(le(Qe,1),{status:_}),f=()=>p(0,[n]),v=e=>y()?(me(je,e),{status:!0}):(le(je,1),{status:_}),y=()=>p(0,[o]),S=()=>q()?(me(je),{status:!0}):(le(je,1),{status:_}),q=()=>p(0,[o]),x="web_app_invoke_custom_method",k=async e=>P()?(void 0===e.req_id&&(e.req_id=u()),me(x,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Ee(ve,a))};We(ve,a)}))):(le(x,1),{status:_}),P=()=>p(6.9,[o,i,n]),O=e=>I()?(me(He,e),{status:!0}):(le(He,1),{status:_}),I=()=>p(6.1,[o,i,n]),R=e=>T()?(me(ze,e),{status:!0}):(le(ze,1),{status:_}),T=()=>p(6.4,[o,i,n]),N=async e=>C()?(e.title.length>64&&le(Ke,3),e.message.length<1&&le(Ke,4),e.message.length>256&&le(Ke,5),e.buttons.length<1&&le(Ke,6),e.buttons.length>3&&le(Ke,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&le(Ke,8),me(Ke,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Ee(xe,a)};We(xe,a)}))):(le(Ke,1),{status:_}),C=()=>p(6.2,[o,i,n]),L=async e=>W()?(me(Be,e),new Promise(((t,s)=>{De(Pe,(s=>{e.is_close&&b(),t({status:!0,data:s})})),De(Oe,(()=>{t({status:"closed"})}))}))):(le(Be,1),{status:_}),W=()=>p(6.4,[n]),E=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),D()?(me(Xe,e),{status:!0}):(le(Xe,1),{status:_})),D=()=>p(7,[o,i,n]),J=async e=>$()?(void 0===e.req_id&&(e.req_id=u()),me(Me,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Ee(fe,a))};We(fe,a)}))):(le(Me,1),{status:_}),$=()=>p(6.4,[o,i,n]),B=()=>M()?(me(Ye),{status:!0}):(le(Ye,1),{status:_}),M=()=>p(6.9,[o,i,n]),A=async()=>U()?(me(Ae),new Promise(((e,t)=>{De(qe,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(le(Ae,1),{status:_}),U=()=>p(6.9,[o,i,n]),G=()=>V()?(me(Ze),{status:!0}):(le(Ze,1),{status:_}),V=()=>p(0,[o,i,n]),Q=()=>j()?(me(et),{status:!0}):(le(et,1),{status:_}),j=()=>p(0,[o,i,n]),F=()=>H()?(me(tt),{status:!0}):(le(tt,1),{status:_}),H=()=>p(6.9,[o,i,n]),z=e=>K()?(me(st,e),{status:!0}):(le(st,1),{status:_}),K=()=>p(6.1,[o,i,n]),X=e=>Y()?(me(at,e),{status:!0}):(le(at,1),{status:_}),Y=()=>p(6.1,[o,i,n]),Z=e=>ee()?(me(rt,e),{status:!0}):(le(rt,1),{status:_}),ee=()=>p(6.1,[o,i,n]),te=e=>se()?(me(ot,e),{status:!0}):(le(ot,1),{status:_}),se=()=>p(0,[o,i,n]),ae=e=>re()?(me(nt,e),{status:!0}):(le(nt,1),{status:_}),re=()=>p(0,[o,i,n]),oe=e=>ne()?(me(it,e),{status:!0}):(le(it,1),{status:_}),ne=()=>p(6.1,[o,i,n]),ie=e=>_e()?(e.query.length>256&&le(_t,9),me(_t,e),{status:!0}):(le(_t,1),{status:_}),_e=()=>p(6.7,[o,i,n]),pe=e=>ue()?(me(pt,e),{status:!0}):(le(pt,1),{status:_}),ue=()=>p(6.1,[n]),de=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},ce=()=>!0,ge=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},be=()=>!0;var le=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const we=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return le("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s};var me=(t,s)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(t,JSON.stringify(s));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:t,eventData:s}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:t,eventData:s}),"*")}catch(t){e("postMessage Iframe",10)}};const he="back_button_pressed",fe="clipboard_text_received",ve="custom_method_invoked",ye="invoice_closed",Se="main_button_pressed",qe="phone_requested",xe="popup_closed",ke="reload_iframe",Pe="qr_text_received",Oe="scan_qr_popup_closed",Ie="set_custom_style",Re="settings_button_pressed",Te="theme_changed",Ne="viewport_changed",Ce="write_access_requested",Le=((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===Te&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var a=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r in e){var o=d(e[r]);"string"==typeof o&&(a[r]=o)}return a})(t.theme_params)),Le.emit(e,t),Le.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const We=(e,t)=>{Le.on(e,t)},Ee=(e,t)=>{Le.off(e,t)},De=(e,t)=>{Le.once(e,t)};var Je=Object.freeze({__proto__:null,off:Ee,on:We,once:De});const $e="web_app_invoke_custom_method",Be="web_app_open_scan_qr_popup",Me="web_app_read_text_from_clipboard",Ae="web_app_request_phone",Ue="web_app_close",Ge="web_app_close_scan_qr_popup",Ve="web_app_data_send",Qe="web_app_expand",je="iframe_ready",Fe="iframe_will_reload",He="web_app_open_invoice",ze="web_app_open_link",Ke="web_app_open_popup",Xe="web_app_open_tg_link",Ye="web_app_ready",Ze="web_app_request_theme",et="web_app_request_viewport",tt="web_app_request_write_access",st="web_app_set_background_color",at="web_app_set_header_color",rt="web_app_setup_back_button",ot="web_app_setup_closing_behavior",nt="web_app_setup_main_button",it="web_app_setup_settings_button",_t="web_app_switch_inline_query",pt="web_app_trigger_haptic_feedback";export{he as EventBackButtonPressed,fe as EventClipboardTextReceived,ve as EventCustomMethodInvoked,ye as EventInvoiceClosed,Se as EventMainButtonPressed,qe as EventPhoneRequested,xe as EventPopupClosed,Pe as EventQrTextReceived,ke as EventReloadIframe,Oe as EventScanQrPopupClosed,Ie as EventSetCustomStyle,Re as EventSettingsButtonPressed,Te as EventThemeChanged,Ne as EventViewportChanged,Ce as EventWriteAccessRequested,Ue as MethodClose,Ge as MethodCloseScanQrPopup,Ve as MethodDataSend,Qe as MethodExpand,je as MethodIframeReady,Fe as MethodIframeWillReload,$e as MethodInvokeCustomMethod,He as MethodOpenInvoice,ze as MethodOpenLink,Ke as MethodOpenPopup,Be as MethodOpenScanQrPopup,Xe as MethodOpenTgLink,Me as MethodReadTextFromClipboard,Ye as MethodReady,Ae as MethodRequestPhone,Ze as MethodRequestTheme,et as MethodRequestViewport,tt as MethodRequestWriteAccess,st as MethodSetBackgroundColor,at as MethodSetHeaderColor,rt as MethodSetupBackButton,ot as MethodSetupClosingBehavior,nt as MethodSetupMainButton,it as MethodSetupSettingsButton,_t as MethodSwitchInlineQuery,pt as MethodTriggerHapticFeedback,_ as NOT_SUPPORTED,i as TG_DESKTOP,n as TG_PHONE,o as TG_WEB,c as bridgeClose,b as bridgeCloseScanQrPopup,w as bridgeDataSend,h as bridgeExpand,we as bridgeGetInitData,v as bridgeIframeReady,S as bridgeIframeWillReload,k as bridgeInvokeCustomMethod,O as bridgeOpenInvoice,R as bridgeOpenLink,N as bridgeOpenPopup,L as bridgeOpenScanQrPopup,E as bridgeOpenTgLink,J as bridgeReadTextFromClipboard,B as bridgeReady,A as bridgeRequestPhone,G as bridgeRequestTheme,Q as bridgeRequestViewport,F as bridgeRequestWriteAccess,ge as bridgeSessionStorageGet,de as bridgeSessionStorageSet,z as bridgeSetBackgroundColor,X as bridgeSetHeaderColor,Z as bridgeSetupBackButton,te as bridgeSetupClosingBehavior,ae as bridgeSetupMainButton,oe as bridgeSetupSettingsButton,ie as bridgeSwitchInlineQuery,pe as bridgeTriggerHapticFeedback,r as createIsViewportChanged,le as debug,Je as listener,me as sender,g as supportClose,l as supportCloseScanQrPopup,m as supportDataSend,f as supportExpand,y as supportIframeReady,q as supportIframeWillReload,P as supportInvokeCustomMethod,I as supportOpenInvoice,T as supportOpenLink,C as supportOpenPopup,W as supportOpenScanQrPopup,D as supportOpenTgLink,$ as supportReadTextFromClipboard,M as supportReady,U as supportRequestPhone,V as supportRequestTheme,j as supportRequestViewport,H as supportRequestWriteAccess,be as supportSessionStorageGet,ce as supportSessionStorageSet,K as supportSetBackgroundColor,Y as supportSetHeaderColor,ee as supportSetupBackButton,se as supportSetupClosingBehavior,re as supportSetupMainButton,ne as supportSetupSettingsButton,_e as supportSwitchInlineQuery,ue as supportTriggerHapticFeedback};
1
+ import e from"debug";import{createSignal as t,onMount as s,onCleanup as a}from"solid-js";const r=()=>{const[e,r]=t({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>r(e);return s((()=>{Ee(Ce,o),he(tt)})),a((()=>{De(Ce,o)})),e},o="web",n="phone",i="desktop",_=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?n:["tdesktop","macos"].includes(t)?i:o},p="not_supported",u=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s)>=e&&-1!==t.indexOf(_())},d=()=>Math.random().toString(36).substring(3,9),c=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},g=()=>b()?(he(Ge),{status:!0}):(we(Ge,1),{status:p}),b=()=>u(0,[o,i,n]),l=()=>w()?(he(Ve),{status:!0}):(we(Ve,1),{status:p}),w=()=>u(6.4,[n]),m=e=>h()?(he(Qe,e),{status:!0}):(we(Qe,1),{status:p}),h=()=>u(0,[o,i,n]),f=()=>v()?(he(je),{status:!0}):(we(je,1),{status:p}),v=()=>u(0,[n]),y=e=>S()?(he(Fe,e),{status:!0}):(we(Fe,1),{status:p}),S=()=>u(0,[o]),q=()=>x()?(he(Fe),{status:!0}):(we(Fe,1),{status:p}),x=()=>u(0,[o]),k="web_app_invoke_custom_method",P=async e=>O()?(void 0===e.req_id&&(e.req_id=d()),he(k,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),De(ye,a))};Ee(ye,a)}))):(we(k,1),{status:p}),O=()=>u(6.9,[o,i,n]),I=e=>R()?(he(ze,e),{status:!0}):(we(ze,1),{status:p}),R=()=>u(6.1,[o,i,n]),T=e=>N()?(he(Ke,e),{status:!0}):(we(Ke,1),{status:p}),N=()=>u(6.4,[o,i,n]),C=async e=>L()?(e.title.length>64&&we(Xe,3),e.message.length<1&&we(Xe,4),e.message.length>256&&we(Xe,5),e.buttons.length<1&&we(Xe,6),e.buttons.length>3&&we(Xe,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&we(Xe,8),he(Xe,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),De(ke,a)};Ee(ke,a)}))):(we(Xe,1),{status:p}),L=()=>u(6.2,[o,i,n]),W=async e=>E()?(he(Me,e),new Promise(((t,s)=>{Je(Oe,(s=>{e.is_close&&l(),t({status:!0,data:s})})),Je(Ie,(()=>{t({status:"closed"})}))}))):(we(Me,1),{status:p}),E=()=>u(6.4,[n]),D=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),J()?(he(Ye,e),{status:!0}):(we(Ye,1),{status:p})),J=()=>u(7,[o,i,n]),$=async e=>B()?(void 0===e.req_id&&(e.req_id=d()),he(Ae,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),De(ve,a))};Ee(ve,a)}))):(we(Ae,1),{status:p}),B=()=>u(6.4,[o,i,n]),M=()=>A()?(he(Ze),{status:!0}):(we(Ze,1),{status:p}),A=()=>u(6.9,[o,i,n]),U=async()=>G()?(he(Ue),new Promise(((e,t)=>{Je(xe,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(we(Ue,1),{status:p}),G=()=>u(6.9,[o,i,n]),V=()=>Q()?(he(et),{status:!0}):(we(et,1),{status:p}),Q=()=>u(0,[o,i,n]),j=()=>F()?(he(tt),{status:!0}):(we(tt,1),{status:p}),F=()=>u(0,[o,i,n]),H=()=>z()?(he(st),{status:!0}):(we(st,1),{status:p}),z=()=>u(6.9,[o,i,n]),K=e=>X()?(he(at,e),{status:!0}):(we(at,1),{status:p}),X=()=>u(6.1,[o,i,n]),Y=e=>Z()?(he(rt,e),{status:!0}):(we(rt,1),{status:p}),Z=()=>u(6.1,[o,i,n]),ee=e=>te()?(he(ot,e),{status:!0}):(we(ot,1),{status:p}),te=()=>u(6.1,[o,i,n]),se=e=>ae()?(he(nt,e),{status:!0}):(we(nt,1),{status:p}),ae=()=>u(0,[o,i,n]),re=e=>oe()?(he(it,e),{status:!0}):(we(it,1),{status:p}),oe=()=>u(0,[o,i,n]),ne=e=>ie()?(he(_t,e),{status:!0}):(we(_t,1),{status:p}),ie=()=>u(6.1,[o,i,n]),_e=e=>pe()?(e.query.length>256&&we(pt,9),he(pt,e),{status:!0}):(we(pt,1),{status:p}),pe=()=>u(6.7,[o,i,n]),ue=e=>de()?(he(ut,e),{status:!0}):(we(ut,1),{status:p}),de=()=>u(6.1,[n]),ce=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},ge=()=>!0,be=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},le=()=>!0;var we=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const me=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return we("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s};var he=(t,s)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(t,JSON.stringify(s));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:t,eventData:s}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:t,eventData:s}),"*")}catch(t){e("postMessage Iframe",10)}};const fe="back_button_pressed",ve="clipboard_text_received",ye="custom_method_invoked",Se="invoice_closed",qe="main_button_pressed",xe="phone_requested",ke="popup_closed",Pe="reload_iframe",Oe="qr_text_received",Ie="scan_qr_popup_closed",Re="set_custom_style",Te="settings_button_pressed",Ne="theme_changed",Ce="viewport_changed",Le="write_access_requested",We=((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===Ne&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var a=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r in e){var o=c(e[r]);"string"==typeof o&&(a[r]=o)}return a})(t.theme_params)),We.emit(e,t),We.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Ee=(e,t)=>{We.on(e,t)},De=(e,t)=>{We.off(e,t)},Je=(e,t)=>{We.once(e,t)};var $e=Object.freeze({__proto__:null,off:De,on:Ee,once:Je});const Be="web_app_invoke_custom_method",Me="web_app_open_scan_qr_popup",Ae="web_app_read_text_from_clipboard",Ue="web_app_request_phone",Ge="web_app_close",Ve="web_app_close_scan_qr_popup",Qe="web_app_data_send",je="web_app_expand",Fe="iframe_ready",He="iframe_will_reload",ze="web_app_open_invoice",Ke="web_app_open_link",Xe="web_app_open_popup",Ye="web_app_open_tg_link",Ze="web_app_ready",et="web_app_request_theme",tt="web_app_request_viewport",st="web_app_request_write_access",at="web_app_set_background_color",rt="web_app_set_header_color",ot="web_app_setup_back_button",nt="web_app_setup_closing_behavior",it="web_app_setup_main_button",_t="web_app_setup_settings_button",pt="web_app_switch_inline_query",ut="web_app_trigger_haptic_feedback";export{fe as EventBackButtonPressed,ve as EventClipboardTextReceived,ye as EventCustomMethodInvoked,Se as EventInvoiceClosed,qe as EventMainButtonPressed,xe as EventPhoneRequested,ke as EventPopupClosed,Oe as EventQrTextReceived,Pe as EventReloadIframe,Ie as EventScanQrPopupClosed,Re as EventSetCustomStyle,Te as EventSettingsButtonPressed,Ne as EventThemeChanged,Ce as EventViewportChanged,Le as EventWriteAccessRequested,Ge as MethodClose,Ve as MethodCloseScanQrPopup,Qe as MethodDataSend,je as MethodExpand,Fe as MethodIframeReady,He as MethodIframeWillReload,Be as MethodInvokeCustomMethod,ze as MethodOpenInvoice,Ke as MethodOpenLink,Xe as MethodOpenPopup,Me as MethodOpenScanQrPopup,Ye as MethodOpenTgLink,Ae as MethodReadTextFromClipboard,Ze as MethodReady,Ue as MethodRequestPhone,et as MethodRequestTheme,tt as MethodRequestViewport,st as MethodRequestWriteAccess,at as MethodSetBackgroundColor,rt as MethodSetHeaderColor,ot as MethodSetupBackButton,nt as MethodSetupClosingBehavior,it as MethodSetupMainButton,_t as MethodSetupSettingsButton,pt as MethodSwitchInlineQuery,ut as MethodTriggerHapticFeedback,p as NOT_SUPPORTED,i as TG_DESKTOP,n as TG_PHONE,o as TG_WEB,g as bridgeClose,l as bridgeCloseScanQrPopup,m as bridgeDataSend,f as bridgeExpand,me as bridgeGetInitData,y as bridgeIframeReady,q as bridgeIframeWillReload,P as bridgeInvokeCustomMethod,I as bridgeOpenInvoice,T as bridgeOpenLink,C as bridgeOpenPopup,W as bridgeOpenScanQrPopup,D as bridgeOpenTgLink,$ as bridgeReadTextFromClipboard,M as bridgeReady,U as bridgeRequestPhone,V as bridgeRequestTheme,j as bridgeRequestViewport,H as bridgeRequestWriteAccess,be as bridgeSessionStorageGet,ce as bridgeSessionStorageSet,K as bridgeSetBackgroundColor,Y as bridgeSetHeaderColor,ee as bridgeSetupBackButton,se as bridgeSetupClosingBehavior,re as bridgeSetupMainButton,ne as bridgeSetupSettingsButton,_e as bridgeSwitchInlineQuery,ue as bridgeTriggerHapticFeedback,r as createIsViewportChanged,we as debug,_ as getPlatform,$e as listener,he as sender,b as supportClose,w as supportCloseScanQrPopup,h as supportDataSend,v as supportExpand,S as supportIframeReady,x as supportIframeWillReload,O as supportInvokeCustomMethod,R as supportOpenInvoice,N as supportOpenLink,L as supportOpenPopup,E as supportOpenScanQrPopup,J as supportOpenTgLink,B as supportReadTextFromClipboard,A as supportReady,G as supportRequestPhone,Q as supportRequestTheme,F as supportRequestViewport,z as supportRequestWriteAccess,le as supportSessionStorageGet,ge as supportSessionStorageSet,X as supportSetBackgroundColor,Z as supportSetHeaderColor,te as supportSetupBackButton,ae as supportSetupClosingBehavior,oe as supportSetupMainButton,ie as supportSetupSettingsButton,pe as supportSwitchInlineQuery,de as supportTriggerHapticFeedback};
@@ -1,16 +1,16 @@
1
- {
2
- "name": "@apiteam/twa-bridge/solid",
3
- "main": "index.js",
4
- "module": "index.mjs",
5
- "typings": "index.d.ts",
6
- "browser": {
7
- "./index.cjs": "index.cjs",
8
- "./index.js": "index.js"
9
- },
10
- "unpkg": "index.cjs",
11
- "types": "index.d.ts",
12
- "type": "module",
13
- "peerDependencies": {
14
- "solid-js": "^1.7.12"
15
- }
1
+ {
2
+ "name": "@apiteam/twa-bridge/solid",
3
+ "main": "index.js",
4
+ "module": "index.mjs",
5
+ "typings": "index.d.ts",
6
+ "browser": {
7
+ "./index.cjs": "index.cjs",
8
+ "./index.js": "index.js"
9
+ },
10
+ "unpkg": "index.cjs",
11
+ "types": "index.d.ts",
12
+ "type": "module",
13
+ "peerDependencies": {
14
+ "solid-js": "^1.7.12"
15
+ }
16
16
  }