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

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.10",
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.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
+ ]
23
23
  }
package/react/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";const e="web",t="phone",s="desktop",o="not_supported",r=(o,r)=>{const p=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(p)>=o&&-1!==r.indexOf((()=>{const o=window.location.hash.slice(1),r=new URLSearchParams(o).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?t:["tdesktop","macos"].includes(r)?s:e})())},p=()=>Math.random().toString(36).substring(3,9),a=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},n=()=>r(0,[e,s,t]),i=()=>u()?(L(Z),{status:!0}):(W(Z,1),{status:o}),u=()=>r(6.4,[t]),d=()=>r(0,[e,s,t]),_=()=>r(0,[t]),c=()=>r(0,[e]),x=()=>r(0,[e]),g="web_app_invoke_custom_method",l=()=>r(6.9,[e,s,t]),b=()=>r(6.1,[e,s,t]),h=()=>r(6.4,[e,s,t]),w=()=>r(6.2,[e,s,t]),m=()=>r(6.4,[t]),v=()=>r(7,[e,s,t]),S=()=>r(6.4,[e,s,t]),f=()=>r(6.9,[e,s,t]),y=()=>r(6.9,[e,s,t]),P=()=>r(0,[e,s,t]),M=()=>r(0,[e,s,t]),R=()=>r(6.9,[e,s,t]),k=()=>r(6.1,[e,s,t]),q=()=>r(6.1,[e,s,t]),C=()=>r(6.1,[e,s,t]),O=()=>r(0,[e,s,t]),E=()=>r(0,[e,s,t]),T=()=>r(6.1,[e,s,t]),I=()=>r(6.7,[e,s,t]),B=()=>r(6.1,[t]);var W=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};var L=(e,t)=>{window.TelegramWebviewProxy?window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t)):window.external&&"notify"in window.external&&window.external.notify(JSON.stringify({eventType:e,eventData:t}))};const N="clipboard_text_received",Q="custom_method_invoked",D="phone_requested",A="popup_closed",G="qr_text_received",H="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=a(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)},J=(e,t)=>{$.off(e,t)},U=(e,t)=>{$.once(e,t)};var j=Object.freeze({__proto__:null,off:J,on:F,once:U});const z="web_app_open_scan_qr_popup",K="web_app_read_text_from_clipboard",X="web_app_request_phone",Y="web_app_close",Z="web_app_close_scan_qr_popup",ee="web_app_data_send",te="web_app_expand",se="iframe_ready",oe="web_app_open_invoice",re="web_app_open_link",pe="web_app_open_popup",ae="web_app_open_tg_link",ne="web_app_ready",ie="web_app_request_theme",ue="web_app_request_viewport",de="web_app_request_write_access",_e="web_app_set_background_color",ce="web_app_set_header_color",xe="web_app_setup_back_button",ge="web_app_setup_closing_behavior",le="web_app_setup_main_button",be="web_app_setup_settings_button",he="web_app_switch_inline_query",we="web_app_trigger_haptic_feedback";exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=N,exports.EventCustomMethodInvoked=Q,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=D,exports.EventPopupClosed=A,exports.EventQrTextReceived=G,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=H,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=V,exports.EventViewportChanged="viewport_changed",exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=Y,exports.MethodCloseScanQrPopup=Z,exports.MethodDataSend=ee,exports.MethodExpand=te,exports.MethodIframeReady=se,exports.MethodIframeWillReload="iframe_will_reload",exports.MethodInvokeCustomMethod="web_app_invoke_custom_method",exports.MethodOpenInvoice=oe,exports.MethodOpenLink=re,exports.MethodOpenPopup=pe,exports.MethodOpenScanQrPopup=z,exports.MethodOpenTgLink=ae,exports.MethodReadTextFromClipboard=K,exports.MethodReady=ne,exports.MethodRequestPhone=X,exports.MethodRequestTheme=ie,exports.MethodRequestViewport=ue,exports.MethodRequestWriteAccess=de,exports.MethodSetBackgroundColor=_e,exports.MethodSetHeaderColor=ce,exports.MethodSetupBackButton=xe,exports.MethodSetupClosingBehavior=ge,exports.MethodSetupMainButton=le,exports.MethodSetupSettingsButton=be,exports.MethodSwitchInlineQuery=he,exports.MethodTriggerHapticFeedback=we,exports.NOT_SUPPORTED=o,exports.TG_DESKTOP=s,exports.TG_PHONE=t,exports.TG_WEB=e,exports.bridgeClose=()=>n()?(L(Y),{status:!0}):(W(Y,1),{status:o}),exports.bridgeCloseScanQrPopup=i,exports.bridgeDataSend=e=>d()?(L(ee,e),{status:!0}):(W(ee,1),{status:o}),exports.bridgeExpand=()=>_()?(L(te),{status:!0}):(W(te,1),{status:o}),exports.bridgeGetInitData=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return W("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s},exports.bridgeIframeReady=e=>c()?(L(se,e),{status:!0}):(W(se,1),{status:o}),exports.bridgeIframeWillReload=()=>x()?(L(se),{status:!0}):(W(se,1),{status:o}),exports.bridgeInvokeCustomMethod=async e=>l()?(void 0===e.req_id&&(e.req_id=p()),L(g,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),J(Q,o))};F(Q,o)}))):(W(g,1),{status:o}),exports.bridgeOpenInvoice=e=>b()?(L(oe,e),{status:!0}):(W(oe,1),{status:o}),exports.bridgeOpenLink=e=>h()?(L(re,e),{status:!0}):(W(re,1),{status:o}),exports.bridgeOpenPopup=async e=>w()?(e.title.length>64&&W(pe,3),e.message.length<1&&W(pe,4),e.message.length>256&&W(pe,5),e.buttons.length<1&&W(pe,6),e.buttons.length>3&&W(pe,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&W(pe,8),L(pe,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),J(A,o)};F(A,o)}))):(W(pe,1),{status:o}),exports.bridgeOpenScanQrPopup=async e=>m()?(L(z,e),new Promise(((t,s)=>{U(G,(s=>{e.is_close&&i(),t({status:!0,data:s})})),U(H,(()=>{t({status:"closed"})}))}))):(W(z,1),{status:o}),exports.bridgeOpenTgLink=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),v()?(L(ae,e),{status:!0}):(W(ae,1),{status:o})),exports.bridgeReadTextFromClipboard=async e=>S()?(void 0===e.req_id&&(e.req_id=p()),L(K,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),J(N,o))};F(N,o)}))):(W(K,1),{status:o}),exports.bridgeReady=()=>f()?(L(ne),{status:!0}):(W(ne,1),{status:o}),exports.bridgeRequestPhone=async()=>y()?(L(X),new Promise(((e,t)=>{U(D,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(W(X,1),{status:o}),exports.bridgeRequestTheme=()=>P()?(L(ie),{status:!0}):(W(ie,1),{status:o}),exports.bridgeRequestViewport=()=>M()?(L(ue),{status:!0}):(W(ue,1),{status:o}),exports.bridgeRequestWriteAccess=()=>R()?(L(de),{status:!0}):(W(de,1),{status:o}),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()?(L(_e,e),{status:!0}):(W(_e,1),{status:o}),exports.bridgeSetHeaderColor=e=>q()?(L(ce,e),{status:!0}):(W(ce,1),{status:o}),exports.bridgeSetupBackButton=e=>C()?(L(xe,e),{status:!0}):(W(xe,1),{status:o}),exports.bridgeSetupClosingBehavior=e=>O()?(L(ge,e),{status:!0}):(W(ge,1),{status:o}),exports.bridgeSetupMainButton=e=>E()?(L(le,e),{status:!0}):(W(le,1),{status:o}),exports.bridgeSetupSettingsButton=e=>T()?(L(be,e),{status:!0}):(W(be,1),{status:o}),exports.bridgeSwitchInlineQuery=e=>I()?(e.query.length>256&&W(he,9),L(he,e),{status:!0}):(W(he,1),{status:o}),exports.bridgeTriggerHapticFeedback=e=>B()?(L(we,e),{status:!0}):(W(we,1),{status:o}),exports.debug=W,exports.listener=j,exports.sender=L,exports.supportClose=n,exports.supportCloseScanQrPopup=u,exports.supportDataSend=d,exports.supportExpand=_,exports.supportIframeReady=c,exports.supportIframeWillReload=x,exports.supportInvokeCustomMethod=l,exports.supportOpenInvoice=b,exports.supportOpenLink=h,exports.supportOpenPopup=w,exports.supportOpenScanQrPopup=m,exports.supportOpenTgLink=v,exports.supportReadTextFromClipboard=S,exports.supportReady=f,exports.supportRequestPhone=y,exports.supportRequestTheme=P,exports.supportRequestViewport=M,exports.supportRequestWriteAccess=R,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=k,exports.supportSetHeaderColor=q,exports.supportSetupBackButton=C,exports.supportSetupClosingBehavior=O,exports.supportSetupMainButton=E,exports.supportSetupSettingsButton=T,exports.supportSwitchInlineQuery=I,exports.supportTriggerHapticFeedback=B;
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;
package/react/index.mjs CHANGED
@@ -1 +1 @@
1
- const e="web",t="phone",s="desktop",a="not_supported",r=(a,r)=>{const o=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(o)>=a&&-1!==r.indexOf((()=>{const a=window.location.hash.slice(1),r=new URLSearchParams(a).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?t:["tdesktop","macos"].includes(r)?s:e})())},o=()=>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]),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},i=()=>_()?(ce(Be),{status:!0}):(ue(Be,1),{status:a}),_=()=>r(0,[e,s,t]),p=()=>u()?(ce(De),{status:!0}):(ue(De,1),{status:a}),u=()=>r(6.4,[t]),d=e=>c()?(ce(Je,e),{status:!0}):(ue(Je,1),{status:a}),c=()=>r(0,[e,s,t]),g=()=>b()?(ce(Ae),{status:!0}):(ue(Ae,1),{status:a}),b=()=>r(0,[t]),l=e=>w()?(ce(Ue,e),{status:!0}):(ue(Ue,1),{status:a}),w=()=>r(0,[e]),m=()=>h()?(ce(Ue),{status:!0}):(ue(Ue,1),{status:a}),h=()=>r(0,[e]),f="web_app_invoke_custom_method",v=async e=>S()?(void 0===e.req_id&&(e.req_id=o()),ce(f,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Te(le,a))};Ie(le,a)}))):(ue(f,1),{status:a}),S=()=>r(6.9,[e,s,t]),y=e=>q()?(ce(Me,e),{status:!0}):(ue(Me,1),{status:a}),q=()=>r(6.1,[e,s,t]),x=e=>k()?(ce(Ve,e),{status:!0}):(ue(Ve,1),{status:a}),k=()=>r(6.4,[e,s,t]),P=async e=>O()?(e.title.length>64&&ue(Qe,3),e.message.length<1&&ue(Qe,4),e.message.length>256&&ue(Qe,5),e.buttons.length<1&&ue(Qe,6),e.buttons.length>3&&ue(Qe,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&ue(Qe,8),ce(Qe,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Te(fe,a)};Ie(fe,a)}))):(ue(Qe,1),{status:a}),O=()=>r(6.2,[e,s,t]),R=async e=>I()?(ce(We,e),new Promise(((t,s)=>{Ce(Se,(s=>{e.is_close&&p(),t({status:!0,data:s})})),Ce(ye,(()=>{t({status:"closed"})}))}))):(ue(We,1),{status:a}),I=()=>r(6.4,[t]),T=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),C()?(ce(Fe,e),{status:!0}):(ue(Fe,1),{status:a})),C=()=>r(7,[e,s,t]),L=async e=>N()?(void 0===e.req_id&&(e.req_id=o()),ce(Ee,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Te(be,a))};Ie(be,a)}))):(ue(Ee,1),{status:a}),N=()=>r(6.4,[e,s,t]),W=()=>E()?(ce(He),{status:!0}):(ue(He,1),{status:a}),E=()=>r(6.9,[e,s,t]),$=async()=>B()?(ce($e),new Promise(((e,t)=>{Ce(he,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(ue($e,1),{status:a}),B=()=>r(6.9,[e,s,t]),D=()=>J()?(ce(je),{status:!0}):(ue(je,1),{status:a}),J=()=>r(0,[e,s,t]),A=()=>U()?(ce(ze),{status:!0}):(ue(ze,1),{status:a}),U=()=>r(0,[e,s,t]),G=()=>M()?(ce(Ke),{status:!0}):(ue(Ke,1),{status:a}),M=()=>r(6.9,[e,s,t]),V=e=>Q()?(ce(Xe,e),{status:!0}):(ue(Xe,1),{status:a}),Q=()=>r(6.1,[e,s,t]),F=e=>H()?(ce(Ye,e),{status:!0}):(ue(Ye,1),{status:a}),H=()=>r(6.1,[e,s,t]),j=e=>z()?(ce(Ze,e),{status:!0}):(ue(Ze,1),{status:a}),z=()=>r(6.1,[e,s,t]),K=e=>X()?(ce(et,e),{status:!0}):(ue(et,1),{status:a}),X=()=>r(0,[e,s,t]),Y=e=>Z()?(ce(tt,e),{status:!0}):(ue(tt,1),{status:a}),Z=()=>r(0,[e,s,t]),ee=e=>te()?(ce(st,e),{status:!0}):(ue(st,1),{status:a}),te=()=>r(6.1,[e,s,t]),se=e=>ae()?(e.query.length>256&&ue(at,9),ce(at,e),{status:!0}):(ue(at,1),{status:a}),ae=()=>r(6.7,[e,s,t]),re=e=>oe()?(ce(rt,e),{status:!0}):(ue(rt,1),{status:a}),oe=()=>r(6.1,[t]),ne=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},ie=()=>!0,_e=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},pe=()=>!0;var ue=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const de=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return ue("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 ce=(e,t)=>{window.TelegramWebviewProxy?window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t)):window.external&&"notify"in window.external&&window.external.notify(JSON.stringify({eventType:e,eventData:t}))};const ge="back_button_pressed",be="clipboard_text_received",le="custom_method_invoked",we="invoice_closed",me="main_button_pressed",he="phone_requested",fe="popup_closed",ve="reload_iframe",Se="qr_text_received",ye="scan_qr_popup_closed",qe="set_custom_style",xe="settings_button_pressed",ke="theme_changed",Pe="viewport_changed",Oe="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===ke&&(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=n(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 Ie=(e,t)=>{Re.on(e,t)},Te=(e,t)=>{Re.off(e,t)},Ce=(e,t)=>{Re.once(e,t)};var Le=Object.freeze({__proto__:null,off:Te,on:Ie,once:Ce});const Ne="web_app_invoke_custom_method",We="web_app_open_scan_qr_popup",Ee="web_app_read_text_from_clipboard",$e="web_app_request_phone",Be="web_app_close",De="web_app_close_scan_qr_popup",Je="web_app_data_send",Ae="web_app_expand",Ue="iframe_ready",Ge="iframe_will_reload",Me="web_app_open_invoice",Ve="web_app_open_link",Qe="web_app_open_popup",Fe="web_app_open_tg_link",He="web_app_ready",je="web_app_request_theme",ze="web_app_request_viewport",Ke="web_app_request_write_access",Xe="web_app_set_background_color",Ye="web_app_set_header_color",Ze="web_app_setup_back_button",et="web_app_setup_closing_behavior",tt="web_app_setup_main_button",st="web_app_setup_settings_button",at="web_app_switch_inline_query",rt="web_app_trigger_haptic_feedback";export{ge as EventBackButtonPressed,be as EventClipboardTextReceived,le as EventCustomMethodInvoked,we as EventInvoiceClosed,me as EventMainButtonPressed,he as EventPhoneRequested,fe as EventPopupClosed,Se as EventQrTextReceived,ve as EventReloadIframe,ye as EventScanQrPopupClosed,qe as EventSetCustomStyle,xe as EventSettingsButtonPressed,ke as EventThemeChanged,Pe as EventViewportChanged,Oe as EventWriteAccessRequested,Be as MethodClose,De as MethodCloseScanQrPopup,Je as MethodDataSend,Ae as MethodExpand,Ue as MethodIframeReady,Ge as MethodIframeWillReload,Ne as MethodInvokeCustomMethod,Me as MethodOpenInvoice,Ve as MethodOpenLink,Qe as MethodOpenPopup,We as MethodOpenScanQrPopup,Fe as MethodOpenTgLink,Ee as MethodReadTextFromClipboard,He as MethodReady,$e as MethodRequestPhone,je as MethodRequestTheme,ze as MethodRequestViewport,Ke as MethodRequestWriteAccess,Xe as MethodSetBackgroundColor,Ye as MethodSetHeaderColor,Ze as MethodSetupBackButton,et as MethodSetupClosingBehavior,tt as MethodSetupMainButton,st as MethodSetupSettingsButton,at as MethodSwitchInlineQuery,rt as MethodTriggerHapticFeedback,a as NOT_SUPPORTED,s as TG_DESKTOP,t as TG_PHONE,e as TG_WEB,i as bridgeClose,p as bridgeCloseScanQrPopup,d as bridgeDataSend,g as bridgeExpand,de as bridgeGetInitData,l as bridgeIframeReady,m as bridgeIframeWillReload,v as bridgeInvokeCustomMethod,y as bridgeOpenInvoice,x as bridgeOpenLink,P as bridgeOpenPopup,R as bridgeOpenScanQrPopup,T as bridgeOpenTgLink,L as bridgeReadTextFromClipboard,W as bridgeReady,$ as bridgeRequestPhone,D as bridgeRequestTheme,A as bridgeRequestViewport,G as bridgeRequestWriteAccess,_e as bridgeSessionStorageGet,ne as bridgeSessionStorageSet,V as bridgeSetBackgroundColor,F as bridgeSetHeaderColor,j as bridgeSetupBackButton,K as bridgeSetupClosingBehavior,Y as bridgeSetupMainButton,ee as bridgeSetupSettingsButton,se as bridgeSwitchInlineQuery,re as bridgeTriggerHapticFeedback,ue as debug,Le as listener,ce as sender,_ as supportClose,u as supportCloseScanQrPopup,c as supportDataSend,b as supportExpand,w as supportIframeReady,h as supportIframeWillReload,S as supportInvokeCustomMethod,q as supportOpenInvoice,k as supportOpenLink,O as supportOpenPopup,I as supportOpenScanQrPopup,C as supportOpenTgLink,N as supportReadTextFromClipboard,E as supportReady,B as supportRequestPhone,J as supportRequestTheme,U as supportRequestViewport,M as supportRequestWriteAccess,pe as supportSessionStorageGet,ie as supportSessionStorageSet,Q as supportSetBackgroundColor,H as supportSetHeaderColor,z as supportSetupBackButton,X as supportSetupClosingBehavior,Z as supportSetupMainButton,te as supportSetupSettingsButton,ae as supportSwitchInlineQuery,oe as supportTriggerHapticFeedback};
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,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.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("solid-js");const t="web",s="phone",o="desktop",r="not_supported",p=(e,r)=>{const p=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(p)>=e&&-1!==r.indexOf((()=>{const e=window.location.hash.slice(1),r=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?s:["tdesktop","macos"].includes(r)?o:t})())},a=()=>Math.random().toString(36).substring(3,9),n=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(te),{status:!0}):(L(te,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]),P=()=>p(6.9,[t,o,s]),M=()=>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=(e,t)=>{window.TelegramWebviewProxy?window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t)):window.external&&"notify"in window.external&&window.external.notify(JSON.stringify({eventType:e,eventData:t}))};const Q="clipboard_text_received",D="custom_method_invoked",A="phone_requested",G="popup_closed",V="qr_text_received",H="scan_qr_popup_closed",$="theme_changed",F="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===$&&(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)),J.emit(e,t),J.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const U=(e,t)=>{J.on(e,t)},j=(e,t)=>{J.off(e,t)},z=(e,t)=>{J.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=D,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=A,exports.EventPopupClosed=G,exports.EventQrTextReceived=V,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=H,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=$,exports.EventViewportChanged=F,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=r,exports.TG_DESKTOP=o,exports.TG_PHONE=s,exports.TG_WEB=t,exports.bridgeClose=()=>i()?(N(ee),{status:!0}):(L(ee,1),{status:r}),exports.bridgeCloseScanQrPopup=u,exports.bridgeDataSend=e=>_()?(N(se,e),{status:!0}):(L(se,1),{status:r}),exports.bridgeExpand=()=>c()?(N(oe),{status:!0}):(L(oe,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(re,e),{status:!0}):(L(re,1),{status:r}),exports.bridgeIframeWillReload=()=>g()?(N(re),{status:!0}):(L(re,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}),j(D,o))};U(D,o)}))):(L(l,1),{status:r}),exports.bridgeOpenInvoice=e=>h()?(N(pe,e),{status:!0}):(L(pe,1),{status:r}),exports.bridgeOpenLink=e=>w()?(N(ae,e),{status:!0}):(L(ae,1),{status:r}),exports.bridgeOpenPopup=async e=>m()?(e.title.length>64&&L(ne,3),e.message.length<1&&L(ne,4),e.message.length>256&&L(ne,5),e.buttons.length<1&&L(ne,6),e.buttons.length>3&&L(ne,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&L(ne,8),N(ne,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),j(G,o)};U(G,o)}))):(L(ne,1),{status:r}),exports.bridgeOpenScanQrPopup=async e=>v()?(N(X,e),new Promise(((t,s)=>{z(V,(s=>{e.is_close&&u(),t({status:!0,data:s})})),z(H,(()=>{t({status:"closed"})}))}))):(L(X,1),{status:r}),exports.bridgeOpenTgLink=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),S()?(N(ie,e),{status:!0}):(L(ie,1),{status:r})),exports.bridgeReadTextFromClipboard=async e=>f()?(void 0===e.req_id&&(e.req_id=a()),N(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)}))):(L(Y,1),{status:r}),exports.bridgeReady=()=>y()?(N(ue),{status:!0}):(L(ue,1),{status:r}),exports.bridgeRequestPhone=async()=>P()?(N(Z),new Promise(((e,t)=>{z(A,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(L(Z,1),{status:r}),exports.bridgeRequestTheme=()=>M()?(N(de),{status:!0}):(L(de,1),{status:r}),exports.bridgeRequestViewport=()=>q()?(N(_e),{status:!0}):(L(_e,1),{status:r}),exports.bridgeRequestWriteAccess=()=>R()?(N(ce),{status:!0}):(L(ce,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(xe,e),{status:!0}):(L(xe,1),{status:r}),exports.bridgeSetHeaderColor=e=>C()?(N(ge,e),{status:!0}):(L(ge,1),{status:r}),exports.bridgeSetupBackButton=e=>O()?(N(le,e),{status:!0}):(L(le,1),{status:r}),exports.bridgeSetupClosingBehavior=e=>E()?(N(be,e),{status:!0}):(L(be,1),{status:r}),exports.bridgeSetupMainButton=e=>T()?(N(he,e),{status:!0}):(L(he,1),{status:r}),exports.bridgeSetupSettingsButton=e=>I()?(N(we,e),{status:!0}):(L(we,1),{status:r}),exports.bridgeSwitchInlineQuery=e=>B()?(e.query.length>256&&L(me,9),N(me,e),{status:!0}):(L(me,1),{status:r}),exports.bridgeTriggerHapticFeedback=e=>W()?(N(ve,e),{status:!0}):(L(ve,1),{status:r}),exports.createIsViewportChanged=()=>{const[t,s]=e.createSignal({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>s(e);return e.onMount((()=>{U(F,o),N(_e)})),e.onCleanup((()=>{j(F,o)})),t},exports.debug=L,exports.listener=K,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=P,exports.supportRequestTheme=M,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("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;
package/solid/index.mjs CHANGED
@@ -1 +1 @@
1
- import{createSignal as e,onMount as t,onCleanup as s}from"solid-js";const a=()=>{const[a,r]=e({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>r(e);return t((()=>{Ne(Te,o),we(Ze)})),s((()=>{We(Te,o)})),a},r="web",o="phone",n="desktop",i="not_supported",_=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s)>=e&&-1!==t.indexOf((()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?o:["tdesktop","macos"].includes(t)?n:r})())},p=()=>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]),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},d=()=>c()?(we(Ue),{status:!0}):(be(Ue,1),{status:i}),c=()=>_(0,[r,n,o]),g=()=>b()?(we(Ge),{status:!0}):(be(Ge,1),{status:i}),b=()=>_(6.4,[o]),l=e=>w()?(we(Me,e),{status:!0}):(be(Me,1),{status:i}),w=()=>_(0,[r,n,o]),m=()=>h()?(we(Ve),{status:!0}):(be(Ve,1),{status:i}),h=()=>_(0,[o]),f=e=>v()?(we(Qe,e),{status:!0}):(be(Qe,1),{status:i}),v=()=>_(0,[r]),S=()=>y()?(we(Qe),{status:!0}):(be(Qe,1),{status:i}),y=()=>_(0,[r]),q="web_app_invoke_custom_method",x=async e=>k()?(void 0===e.req_id&&(e.req_id=p()),we(q,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),We(fe,a))};Ne(fe,a)}))):(be(q,1),{status:i}),k=()=>_(6.9,[r,n,o]),P=e=>O()?(we(Fe,e),{status:!0}):(be(Fe,1),{status:i}),O=()=>_(6.1,[r,n,o]),R=e=>I()?(we(He,e),{status:!0}):(be(He,1),{status:i}),I=()=>_(6.4,[r,n,o]),T=async e=>C()?(e.title.length>64&&be(ze,3),e.message.length<1&&be(ze,4),e.message.length>256&&be(ze,5),e.buttons.length<1&&be(ze,6),e.buttons.length>3&&be(ze,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&be(ze,8),we(ze,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),We(qe,a)};Ne(qe,a)}))):(be(ze,1),{status:i}),C=()=>_(6.2,[r,n,o]),L=async e=>N()?(we(De,e),new Promise(((t,s)=>{Ee(ke,(s=>{e.is_close&&g(),t({status:!0,data:s})})),Ee(Pe,(()=>{t({status:"closed"})}))}))):(be(De,1),{status:i}),N=()=>_(6.4,[o]),W=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),E()?(we(Ke,e),{status:!0}):(be(Ke,1),{status:i})),E=()=>_(7,[r,n,o]),$=async e=>B()?(void 0===e.req_id&&(e.req_id=p()),we(Je,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),We(he,a))};Ne(he,a)}))):(be(Je,1),{status:i}),B=()=>_(6.4,[r,n,o]),D=()=>J()?(we(Xe),{status:!0}):(be(Xe,1),{status:i}),J=()=>_(6.9,[r,n,o]),A=async()=>U()?(we(Ae),new Promise(((e,t)=>{Ee(ye,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(be(Ae,1),{status:i}),U=()=>_(6.9,[r,n,o]),G=()=>M()?(we(Ye),{status:!0}):(be(Ye,1),{status:i}),M=()=>_(0,[r,n,o]),V=()=>Q()?(we(Ze),{status:!0}):(be(Ze,1),{status:i}),Q=()=>_(0,[r,n,o]),j=()=>F()?(we(et),{status:!0}):(be(et,1),{status:i}),F=()=>_(6.9,[r,n,o]),H=e=>z()?(we(tt,e),{status:!0}):(be(tt,1),{status:i}),z=()=>_(6.1,[r,n,o]),K=e=>X()?(we(st,e),{status:!0}):(be(st,1),{status:i}),X=()=>_(6.1,[r,n,o]),Y=e=>Z()?(we(at,e),{status:!0}):(be(at,1),{status:i}),Z=()=>_(6.1,[r,n,o]),ee=e=>te()?(we(rt,e),{status:!0}):(be(rt,1),{status:i}),te=()=>_(0,[r,n,o]),se=e=>ae()?(we(ot,e),{status:!0}):(be(ot,1),{status:i}),ae=()=>_(0,[r,n,o]),re=e=>oe()?(we(nt,e),{status:!0}):(be(nt,1),{status:i}),oe=()=>_(6.1,[r,n,o]),ne=e=>ie()?(e.query.length>256&&be(it,9),we(it,e),{status:!0}):(be(it,1),{status:i}),ie=()=>_(6.7,[r,n,o]),_e=e=>pe()?(we(_t,e),{status:!0}):(be(_t,1),{status:i}),pe=()=>_(6.1,[o]),ue=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},de=()=>!0,ce=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},ge=()=>!0;var be=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const le=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return be("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 we=(e,t)=>{window.TelegramWebviewProxy?window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t)):window.external&&"notify"in window.external&&window.external.notify(JSON.stringify({eventType:e,eventData:t}))};const me="back_button_pressed",he="clipboard_text_received",fe="custom_method_invoked",ve="invoice_closed",Se="main_button_pressed",ye="phone_requested",qe="popup_closed",xe="reload_iframe",ke="qr_text_received",Pe="scan_qr_popup_closed",Oe="set_custom_style",Re="settings_button_pressed",Ie="theme_changed",Te="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===Ie&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var a=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r in e){var o=u(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 Ne=(e,t)=>{Le.on(e,t)},We=(e,t)=>{Le.off(e,t)},Ee=(e,t)=>{Le.once(e,t)};var $e=Object.freeze({__proto__:null,off:We,on:Ne,once:Ee});const Be="web_app_invoke_custom_method",De="web_app_open_scan_qr_popup",Je="web_app_read_text_from_clipboard",Ae="web_app_request_phone",Ue="web_app_close",Ge="web_app_close_scan_qr_popup",Me="web_app_data_send",Ve="web_app_expand",Qe="iframe_ready",je="iframe_will_reload",Fe="web_app_open_invoice",He="web_app_open_link",ze="web_app_open_popup",Ke="web_app_open_tg_link",Xe="web_app_ready",Ye="web_app_request_theme",Ze="web_app_request_viewport",et="web_app_request_write_access",tt="web_app_set_background_color",st="web_app_set_header_color",at="web_app_setup_back_button",rt="web_app_setup_closing_behavior",ot="web_app_setup_main_button",nt="web_app_setup_settings_button",it="web_app_switch_inline_query",_t="web_app_trigger_haptic_feedback";export{me as EventBackButtonPressed,he as EventClipboardTextReceived,fe as EventCustomMethodInvoked,ve as EventInvoiceClosed,Se as EventMainButtonPressed,ye as EventPhoneRequested,qe as EventPopupClosed,ke as EventQrTextReceived,xe as EventReloadIframe,Pe as EventScanQrPopupClosed,Oe as EventSetCustomStyle,Re as EventSettingsButtonPressed,Ie as EventThemeChanged,Te as EventViewportChanged,Ce as EventWriteAccessRequested,Ue as MethodClose,Ge as MethodCloseScanQrPopup,Me as MethodDataSend,Ve as MethodExpand,Qe as MethodIframeReady,je as MethodIframeWillReload,Be as MethodInvokeCustomMethod,Fe as MethodOpenInvoice,He as MethodOpenLink,ze as MethodOpenPopup,De as MethodOpenScanQrPopup,Ke as MethodOpenTgLink,Je as MethodReadTextFromClipboard,Xe as MethodReady,Ae as MethodRequestPhone,Ye as MethodRequestTheme,Ze as MethodRequestViewport,et as MethodRequestWriteAccess,tt as MethodSetBackgroundColor,st as MethodSetHeaderColor,at as MethodSetupBackButton,rt as MethodSetupClosingBehavior,ot as MethodSetupMainButton,nt as MethodSetupSettingsButton,it as MethodSwitchInlineQuery,_t as MethodTriggerHapticFeedback,i as NOT_SUPPORTED,n as TG_DESKTOP,o as TG_PHONE,r as TG_WEB,d as bridgeClose,g as bridgeCloseScanQrPopup,l as bridgeDataSend,m as bridgeExpand,le as bridgeGetInitData,f as bridgeIframeReady,S as bridgeIframeWillReload,x as bridgeInvokeCustomMethod,P as bridgeOpenInvoice,R as bridgeOpenLink,T as bridgeOpenPopup,L as bridgeOpenScanQrPopup,W as bridgeOpenTgLink,$ as bridgeReadTextFromClipboard,D as bridgeReady,A as bridgeRequestPhone,G as bridgeRequestTheme,V as bridgeRequestViewport,j as bridgeRequestWriteAccess,ce as bridgeSessionStorageGet,ue as bridgeSessionStorageSet,H as bridgeSetBackgroundColor,K as bridgeSetHeaderColor,Y as bridgeSetupBackButton,ee as bridgeSetupClosingBehavior,se as bridgeSetupMainButton,re as bridgeSetupSettingsButton,ne as bridgeSwitchInlineQuery,_e as bridgeTriggerHapticFeedback,a as createIsViewportChanged,be as debug,$e as listener,we as sender,c as supportClose,b as supportCloseScanQrPopup,w as supportDataSend,h as supportExpand,v as supportIframeReady,y as supportIframeWillReload,k as supportInvokeCustomMethod,O as supportOpenInvoice,I as supportOpenLink,C as supportOpenPopup,N as supportOpenScanQrPopup,E as supportOpenTgLink,B as supportReadTextFromClipboard,J as supportReady,U as supportRequestPhone,M as supportRequestTheme,Q as supportRequestViewport,F as supportRequestWriteAccess,ge as supportSessionStorageGet,de as supportSessionStorageSet,z as supportSetBackgroundColor,X as supportSetHeaderColor,Z as supportSetupBackButton,te as supportSetupClosingBehavior,ae as supportSetupMainButton,oe as supportSetupSettingsButton,ie as supportSwitchInlineQuery,pe as supportTriggerHapticFeedback};
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,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
  }