@apiteam/twa-bridge 7.1.0 → 7.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -36,9 +36,43 @@ And yes, it supports TS.
36
36
 
37
37
  ### Solid
38
38
  ```js
39
- import { createIsViewportChanged } from '@apiteam/twa-bridge/solid'
39
+ import {
40
+ listener,
41
+ EventViewportChanged,
42
+ bridgeRequestViewport
43
+ } from '@apiteam/twa-bridge/solid'
44
+
45
+ const onRequestViewport = (
46
+ eventData: EventsData[typeof EventViewportChanged]
47
+ ) => {
48
+ console.log({eventData})
49
+ }
50
+
51
+ listener.on(EventViewportChanged, onRequestViewport)
52
+ bridgeRequestViewport()
53
+
54
+ ```
55
+ ### Use Context
56
+ ```js
57
+ import {
58
+ ProviderTWA,
59
+ ContextTwa
60
+ } from '@apiteam/twa-bridge/solid'
61
+
62
+ const Provider = () => {
63
+ return (
64
+ <ProviderTWA>
65
+ <App />
66
+ </ProviderTWA>
67
+ )
68
+ }
69
+
70
+ const App = () => {
71
+ const context = useContext(ContextTwa)
72
+
73
+ return <div>FisrtName: {context.init?.user?.first_name}</div>
74
+ }
40
75
 
41
- const viewport = createIsViewportChanged()
42
76
  ```
43
77
 
44
78
  ### Errors
@@ -53,4 +87,4 @@ const viewport = createIsViewportChanged()
53
87
  | 6 | You are passing too few buttons, at least 1 button |
54
88
  | 7 | You are passing too many buttons, maximum 3 buttons |
55
89
  | 8 | The button text ignores the following values: "ok, close, cancel" |
56
- | 9 | EDIT_MESSAGE
90
+ | 9 | EDIT_MESSAGE |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apiteam/twa-bridge",
3
- "version": "7.1.0",
3
+ "version": "7.1.1",
4
4
  "description": "Telegram bridge",
5
5
  "license": "MIT",
6
6
  "types": "index.ts",
package/react/index.d.ts CHANGED
@@ -767,6 +767,59 @@ declare const sender: Sender;
767
767
  type Debug = (methondName: string, errorId: number) => void;
768
768
  declare const debug: Debug;
769
769
 
770
+ type GetPlatform = () => 'phone' | 'web' | 'desktop';
771
+ declare const TG_WEB = "web";
772
+ declare const TG_PHONE = "phone";
773
+ declare const TG_DESKTOP = "desktop";
774
+ declare const getPlatform: GetPlatform;
775
+
776
+ declare const NOT_SUPPORTED = "not_supported";
777
+
778
+ type ThemeParams = {
779
+ bg_color: string;
780
+ text_color: string;
781
+ hint_color: string;
782
+ link_color: string;
783
+ button_color: string;
784
+ button_text_color: string;
785
+ /**
786
+ * Bot API 6.1+
787
+ */
788
+ secondary_bg_color: string;
789
+ /**
790
+ * Bot API 7.0+
791
+ */
792
+ header_bg_color: string;
793
+ /**
794
+ * Bot API 7.10+
795
+ */
796
+ bottom_bar_bg_color: string;
797
+ /**
798
+ * Bot API 7.0+
799
+ */
800
+ accent_text_color: string;
801
+ /**
802
+ * Bot API 7.0+
803
+ */
804
+ section_bg_color: string;
805
+ /**
806
+ * Bot API 7.0+
807
+ */
808
+ section_header_text_color: string;
809
+ /**
810
+ * Bot API 7.6+
811
+ */
812
+ section_separator_color: string;
813
+ /**
814
+ * Bot API 7.0+
815
+ */
816
+ subtitle_text_color: string;
817
+ /**
818
+ * Bot API 7.0+
819
+ */
820
+ destructive_text_color: string;
821
+ };
822
+
770
823
  type EventsData = {
771
824
  /**
772
825
  * User clicked the Back Button.
@@ -881,50 +934,7 @@ type EventsData = {
881
934
  /**
882
935
  * Map where the key is a theme stylesheet key and value is the corresponding color in #RRGGBB format.
883
936
  */
884
- theme_params: {
885
- bg_color: string;
886
- text_color: string;
887
- hint_color: string;
888
- link_color: string;
889
- button_color: string;
890
- button_text_color: string;
891
- /**
892
- * Bot API 6.1+
893
- */
894
- secondary_bg_color: string;
895
- /**
896
- * Bot API 7.0+
897
- */
898
- header_bg_color: string;
899
- /**
900
- * Bot API 7.10+
901
- */
902
- bottom_bar_bg_color: string;
903
- /**
904
- * Bot API 7.0+
905
- */
906
- accent_text_color: string;
907
- /**
908
- * Bot API 7.0+
909
- */
910
- section_bg_color: string;
911
- /**
912
- * Bot API 7.0+
913
- */
914
- section_header_text_color: string;
915
- /**
916
- * Bot API 7.6+
917
- */
918
- section_separator_color: string;
919
- /**
920
- * Bot API 7.0+
921
- */
922
- subtitle_text_color: string;
923
- /**
924
- * Bot API 7.0+
925
- */
926
- destructive_text_color: string;
927
- };
937
+ theme_params: ThemeParams;
928
938
  };
929
939
  /**
930
940
  * Occurs whenever the viewport has been changed.
@@ -991,14 +1001,6 @@ declare namespace listener {
991
1001
  export { type listener_EventsData as EventsData, listener_off as off, listener_on as on, listener_once as once };
992
1002
  }
993
1003
 
994
- type GetPlatform = () => 'phone' | 'web' | 'desktop';
995
- declare const TG_WEB = "web";
996
- declare const TG_PHONE = "phone";
997
- declare const TG_DESKTOP = "desktop";
998
- declare const getPlatform: GetPlatform;
999
-
1000
- declare const NOT_SUPPORTED = "not_supported";
1001
-
1002
1004
  declare const MethodInvokeCustomMethod = "web_app_invoke_custom_method";
1003
1005
  declare const MethodOpenScanQrPopup = "web_app_open_scan_qr_popup";
1004
1006
  declare const MethodReadTextFromClipboard = "web_app_read_text_from_clipboard";
package/react/index.js CHANGED
@@ -1 +1 @@
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?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-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=()=>_()?(Q(se),{status:!0}):(D(se,1),{status:p}),_=()=>a(64,[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]),S=()=>a(6.2,[t,o,s]),v=()=>a(6.4,[s]),f=()=>a(7,[t,o,s]),y=()=>a(6.4,[t,o,s]),M=()=>a(6.9,[t,o,s]),P=()=>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]),B=()=>a(0,[t,o,s]),I=()=>a(6.1,[t,o,s]),W=()=>a(6.7,[t,o,s]),L=()=>a(6.1,[s]),N=()=>a(7.7,[t,o,s]);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",H="phone_requested",J="popup_closed",V="qr_text_received",$="scan_qr_popup_closed",F="theme_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===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=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",Se="web_app_switch_inline_query",ve="web_app_trigger_haptic_feedback",fe="web_app_setup_swipe_behavior";exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=A,exports.EventCustomMethodInvoked=G,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=H,exports.EventPopupClosed=J,exports.EventQrTextReceived=V,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=$,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=F,exports.EventViewportChanged="viewport_changed",exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=te,exports.MethodCloseScanQrPopup=se,exports.MethodDataSend=oe,exports.MethodExpand=re,exports.MethodIframeReady=pe,exports.MethodIframeWillReload="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.MethodSetupSwipeBehavior=fe,exports.MethodSwitchInlineQuery=Se,exports.MethodTriggerHapticFeedback=ve,exports.NOT_SUPPORTED=p,exports.TG_DESKTOP=o,exports.TG_PHONE=s,exports.TG_WEB=t,exports.bridgeClose=()=>u()?(Q(te),{status:!0}):(D(te,1),{status:p}),exports.bridgeCloseScanQrPopup=d,exports.bridgeDataSend=e=>c()?(Q(oe,e),{status:!0}):(D(oe,1),{status:p}),exports.bridgeExpand=()=>x()?(Q(re),{status:!0}):(D(re,1),{status:p}),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=>g()?(Q(pe,e),{status:!0}):(D(pe,1),{status:p}),exports.bridgeIframeWillReload=()=>l()?(Q(pe),{status:!0}):(D(pe,1),{status:p}),exports.bridgeInvokeCustomMethod=async e=>h()?(void 0===e.req_id&&(e.req_id=n()),Q(b,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),z(G,o))};j(G,o)}))):(D(b,1),{status:p}),exports.bridgeOpenInvoice=e=>w()?(Q(ae,e),{status:!0}):(D(ae,1),{status:p}),exports.bridgeOpenLink=e=>m()?(Q(ne,e),{status:!0}):(D(ne,1),{status:p}),exports.bridgeOpenPopup=async e=>S()?(e.title.length>64&&D(ie,3),e.message.length<1&&D(ie,4),e.message.length>256&&D(ie,5),e.buttons.length<1&&D(ie,6),e.buttons.length>3&&D(ie,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&D(ie,8),Q(ie,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),z(J,o)};j(J,o)}))):(D(ie,1),{status:p}),exports.bridgeOpenScanQrPopup=async e=>v()?(Q(Y,e),new Promise(((t,s)=>{K(V,(s=>{e.is_close&&d(),t({status:!0,data:s})})),K($,(()=>{t({status:"closed"})}))}))):(D(Y,1),{status:p}),exports.bridgeOpenTgLink=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),f()?(Q(ue,e),{status:!0}):(D(ue,1),{status:p})),exports.bridgeReadTextFromClipboard=async e=>y()?(void 0===e.req_id&&(e.req_id=n()),Q(Z,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)}))):(D(Z,1),{status:p}),exports.bridgeReady=()=>M()?(Q(de),{status:!0}):(D(de,1),{status:p}),exports.bridgeRequestPhone=async()=>P()?(Q(ee),new Promise(((e,t)=>{K(H,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(D(ee,1),{status:p}),exports.bridgeRequestTheme=()=>q()?(Q(_e),{status:!0}):(D(_e,1),{status:p}),exports.bridgeRequestViewport=()=>R()?(Q(ce),{status:!0}):(D(ce,1),{status:p}),exports.bridgeRequestWriteAccess=()=>k()?(Q(xe),{status:!0}):(D(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()?(Q(ge,e),{status:!0}):(D(ge,1),{status:p}),exports.bridgeSetHeaderColor=e=>O()?(Q(le,e),{status:!0}):(D(le,1),{status:p}),exports.bridgeSetupBackButton=e=>E()?(Q(be,e),{status:!0}):(D(be,1),{status:p}),exports.bridgeSetupClosingBehavior=e=>T()?(Q(he,e),{status:!0}):(D(he,1),{status:p}),exports.bridgeSetupMainButton=e=>B()?(Q(we,e),{status:!0}):(D(we,1),{status:p}),exports.bridgeSetupSettingsButton=e=>I()?(Q(me,e),{status:!0}):(D(me,1),{status:p}),exports.bridgeSetupSwipeBehavior=e=>N()?(Q(fe,e),{status:!0}):(D(fe,1),{status:p}),exports.bridgeSwitchInlineQuery=e=>W()?(e.query.length>256&&D(Se,9),Q(Se,e),{status:!0}):(D(Se,1),{status:p}),exports.bridgeTriggerHapticFeedback=e=>L()?(Q(ve,e),{status:!0}):(D(ve,1),{status:p}),exports.debug=D,exports.getPlatform=r,exports.listener=X,exports.sender=Q,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=S,exports.supportOpenScanQrPopup=v,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=B,exports.supportSetupSettingsButton=I,exports.supportSetupSwipeBehavior=N,exports.supportSwitchInlineQuery=W,exports.supportTriggerHapticFeedback=L;
1
+ "use strict";const e="web",t="phone",s="desktop",o=()=>{const o=window.location.hash.slice(1),r=new URLSearchParams(o).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?t:["tdesktop","macos"].includes(r)?s:e},r="not_supported",p=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(o())},a=()=>Math.random().toString(36).substring(3,9),n=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),o=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((o<16?"0":"")+o.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},i=()=>p(0,[e,s,t]),u=()=>d()?(D(se),{status:!0}):(N(se,1),{status:r}),d=()=>p(64,[t]),_=()=>p(0,[e,s,t]),c=()=>p(0,[t]),x=()=>p(0,[e]),g=()=>p(0,[e]),l="web_app_invoke_custom_method",b=()=>p(6.9,[e,s,t]),h=()=>p(6.1,[e,s,t]),w=()=>p(6.4,[e,s,t]),m=()=>p(6.2,[e,s,t]),S=()=>p(6.4,[t]),v=()=>p(7,[e,s,t]),f=()=>p(6.4,[e,s,t]),y=()=>p(6.9,[e,s,t]),M=()=>p(6.9,[e,s,t]),P=()=>p(0,[e,s,t]),k=()=>p(0,[e,s,t]),R=()=>p(6.9,[e,s,t]),q=()=>p(6.1,[e,s,t]),O=()=>p(6.1,[e,s,t]),C=()=>p(6.1,[e,s,t]),E=()=>p(0,[e,s,t]),T=()=>p(0,[e,s,t]),B=()=>p(6.1,[e,s,t]),I=()=>p(6.7,[e,s,t]),W=()=>p(6.1,[t]),L=()=>p(7.7,[e,s,t]);var N=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};var D=(e,t)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:e,eventData:t}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:e,eventData:t}),"*")}catch(e){N("postMessage Iframe",10)}};const Q="clipboard_text_received",A="custom_method_invoked",G="phone_requested",H="popup_closed",J="qr_text_received",V="scan_qr_popup_closed",$="theme_changed",F=((e=new Map)=>({once:(t,s,o=e.get(t),r=(e=>{s(e),o&&o.splice(o.indexOf(s)>>>0,1)}))=>o?o.push(r):e.set(t,[r]),on:(t,s,o=e.get(t))=>o?o.push(s):e.set(t,[s]),off:(t,s,o=e.get(t))=>o&&s?o.splice(o.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,o=e.get(t)||[])=>{for(const e of o)e(s)}}))();(()=>{function e(e,t){e===$&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var o=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r of Object.keys(e)){var p=n(e[r]);"string"==typeof p&&(o[r]=p)}return o})(t.theme_params)),F.emit(e,t),F.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const U=(e,t)=>{F.on(e,t)},j=(e,t)=>{F.off(e,t)},z=(e,t)=>{F.once(e,t)};var K=Object.freeze({__proto__:null,off:j,on:U,once:z});const X="web_app_invoke_custom_method",Y="web_app_open_scan_qr_popup",Z="web_app_read_text_from_clipboard",ee="web_app_request_phone",te="web_app_close",se="web_app_close_scan_qr_popup",oe="web_app_data_send",re="web_app_expand",pe="iframe_ready",ae="iframe_will_reload",ne="web_app_open_invoice",ie="web_app_open_link",ue="web_app_open_popup",de="web_app_open_tg_link",_e="web_app_ready",ce="web_app_request_theme",xe="web_app_request_viewport",ge="web_app_request_write_access",le="web_app_set_background_color",be="web_app_set_header_color",he="web_app_setup_back_button",we="web_app_setup_closing_behavior",me="web_app_setup_main_button",Se="web_app_setup_settings_button",ve="web_app_switch_inline_query",fe="web_app_trigger_haptic_feedback",ye="web_app_setup_swipe_behavior";exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=Q,exports.EventCustomMethodInvoked=A,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=G,exports.EventPopupClosed=H,exports.EventQrTextReceived=J,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=V,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=$,exports.EventViewportChanged="viewport_changed",exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=te,exports.MethodCloseScanQrPopup=se,exports.MethodDataSend=oe,exports.MethodExpand=re,exports.MethodIframeReady=pe,exports.MethodIframeWillReload=ae,exports.MethodInvokeCustomMethod=X,exports.MethodOpenInvoice=ne,exports.MethodOpenLink=ie,exports.MethodOpenPopup=ue,exports.MethodOpenScanQrPopup=Y,exports.MethodOpenTgLink=de,exports.MethodReadTextFromClipboard=Z,exports.MethodReady=_e,exports.MethodRequestPhone=ee,exports.MethodRequestTheme=ce,exports.MethodRequestViewport=xe,exports.MethodRequestWriteAccess=ge,exports.MethodSetBackgroundColor=le,exports.MethodSetHeaderColor=be,exports.MethodSetupBackButton=he,exports.MethodSetupClosingBehavior=we,exports.MethodSetupMainButton=me,exports.MethodSetupSettingsButton=Se,exports.MethodSetupSwipeBehavior=ye,exports.MethodSwitchInlineQuery=ve,exports.MethodTriggerHapticFeedback=fe,exports.NOT_SUPPORTED=r,exports.TG_DESKTOP=s,exports.TG_PHONE=t,exports.TG_WEB=e,exports.bridgeClose=()=>i()?(D(te),{status:!0}):(N(te,1),{status:r}),exports.bridgeCloseScanQrPopup=u,exports.bridgeDataSend=e=>_()?(D(oe,e),{status:!0}):(N(oe,1),{status:r}),exports.bridgeExpand=()=>c()?(D(re),{status:!0}):(N(re,1),{status:r}),exports.bridgeGetInitData=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return N("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s},exports.bridgeIframeReady=e=>x()?(D(pe,e),{status:!0}):(N(pe,1),{status:r}),exports.bridgeIframeWillReload=()=>g()?(D(pe),{status:!0}):(N(pe,1),{status:r}),exports.bridgeInvokeCustomMethod=async e=>b()?(void 0===e.req_id&&(e.req_id=a()),D(l,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),j(A,o))};U(A,o)}))):(N(l,1),{status:r}),exports.bridgeOpenInvoice=e=>h()?(D(ne,e),{status:!0}):(N(ne,1),{status:r}),exports.bridgeOpenLink=e=>w()?(D(ie,e),{status:!0}):(N(ie,1),{status:r}),exports.bridgeOpenPopup=async e=>m()?(e.title.length>64&&N(ue,3),e.message.length<1&&N(ue,4),e.message.length>256&&N(ue,5),e.buttons.length<1&&N(ue,6),e.buttons.length>3&&N(ue,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&N(ue,8),D(ue,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),j(H,o)};U(H,o)}))):(N(ue,1),{status:r}),exports.bridgeOpenScanQrPopup=async e=>S()?(D(Y,e),new Promise(((t,s)=>{z(J,(s=>{e.is_close&&u(),t({status:!0,data:s})})),z(V,(()=>{t({status:"closed"})}))}))):(N(Y,1),{status:r}),exports.bridgeOpenTgLink=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),v()?(D(de,e),{status:!0}):(N(de,1),{status:r})),exports.bridgeReadTextFromClipboard=async e=>f()?(void 0===e.req_id&&(e.req_id=a()),D(Z,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),j(Q,o))};U(Q,o)}))):(N(Z,1),{status:r}),exports.bridgeReady=()=>y()?(D(_e),{status:!0}):(N(_e,1),{status:r}),exports.bridgeRequestPhone=async()=>M()?(D(ee),new Promise(((e,t)=>{z(G,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(N(ee,1),{status:r}),exports.bridgeRequestTheme=()=>P()?(D(ce),{status:!0}):(N(ce,1),{status:r}),exports.bridgeRequestViewport=()=>k()?(D(xe),{status:!0}):(N(xe,1),{status:r}),exports.bridgeRequestWriteAccess=()=>R()?(D(ge),{status:!0}):(N(ge,1),{status:r}),exports.bridgeSessionStorageGet=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},exports.bridgeSetBackgroundColor=e=>q()?(D(le,e),{status:!0}):(N(le,1),{status:r}),exports.bridgeSetHeaderColor=e=>O()?(D(be,e),{status:!0}):(N(be,1),{status:r}),exports.bridgeSetupBackButton=e=>C()?(D(he,e),{status:!0}):(N(he,1),{status:r}),exports.bridgeSetupClosingBehavior=e=>E()?(D(we,e),{status:!0}):(N(we,1),{status:r}),exports.bridgeSetupMainButton=e=>T()?(D(me,e),{status:!0}):(N(me,1),{status:r}),exports.bridgeSetupSettingsButton=e=>B()?(D(Se,e),{status:!0}):(N(Se,1),{status:r}),exports.bridgeSetupSwipeBehavior=e=>L()?(D(ye,e),{status:!0}):(N(ye,1),{status:r}),exports.bridgeSwitchInlineQuery=e=>I()?(e.query.length>256&&N(ve,9),D(ve,e),{status:!0}):(N(ve,1),{status:r}),exports.bridgeTriggerHapticFeedback=e=>W()?(D(fe,e),{status:!0}):(N(fe,1),{status:r}),exports.debug=N,exports.getPlatform=o,exports.listener=K,exports.sender=D,exports.supportClose=i,exports.supportCloseScanQrPopup=d,exports.supportDataSend=_,exports.supportExpand=c,exports.supportIframeReady=x,exports.supportIframeWillReload=g,exports.supportInvokeCustomMethod=b,exports.supportOpenInvoice=h,exports.supportOpenLink=w,exports.supportOpenPopup=m,exports.supportOpenScanQrPopup=S,exports.supportOpenTgLink=v,exports.supportReadTextFromClipboard=f,exports.supportReady=y,exports.supportRequestPhone=M,exports.supportRequestTheme=P,exports.supportRequestViewport=k,exports.supportRequestWriteAccess=R,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=q,exports.supportSetHeaderColor=O,exports.supportSetupBackButton=C,exports.supportSetupClosingBehavior=E,exports.supportSetupMainButton=T,exports.supportSetupSettingsButton=B,exports.supportSetupSwipeBehavior=L,exports.supportSwitchInlineQuery=I,exports.supportTriggerHapticFeedback=W;
package/react/index.mjs CHANGED
@@ -1 +1 @@
1
- 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?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-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()?(we(Ae),{status:!0}):(be(Ae,1),{status:o}),u=()=>n(0,[t,a,s]),d=()=>c()?(we(Ue),{status:!0}):(be(Ue,1),{status:o}),c=()=>n(64,[s]),g=e=>b()?(we(Ge,e),{status:!0}):(be(Ge,1),{status:o}),b=()=>n(0,[t,a,s]),l=()=>w()?(we(Ve),{status:!0}):(be(Ve,1),{status:o}),w=()=>n(0,[s]),m=e=>h()?(we(Qe,e),{status:!0}):(be(Qe,1),{status:o}),h=()=>n(0,[t]),f=()=>v()?(we(Qe),{status:!0}):(be(Qe,1),{status:o}),v=()=>n(0,[t]),S="web_app_invoke_custom_method",y=async e=>q()?(void 0===e.req_id&&(e.req_id=i()),we(S,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),We(fe,a))};Le(fe,a)}))):(be(S,1),{status:o}),q=()=>n(6.9,[t,a,s]),x=e=>k()?(we(He,e),{status:!0}):(be(He,1),{status:o}),k=()=>n(6.1,[t,a,s]),P=e=>O()?(we(je,e),{status:!0}):(be(je,1),{status:o}),O=()=>n(6.4,[t,a,s]),I=async e=>R()?(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)};Le(qe,a)}))):(be(ze,1),{status:o}),R=()=>n(6.2,[t,a,s]),T=async e=>N()?(we(Je,e),new Promise(((t,s)=>{Ee(ke,(s=>{e.is_close&&d(),t({status:!0,data:s})})),Ee(Pe,(()=>{t({status:"closed"})}))}))):(be(Je,1),{status:o}),N=()=>n(6.4,[s]),C=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),L()?(we(Ke,e),{status:!0}):(be(Ke,1),{status:o})),L=()=>n(7,[t,a,s]),W=async e=>E()?(void 0===e.req_id&&(e.req_id=i()),we($e,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),We(he,a))};Le(he,a)}))):(be($e,1),{status:o}),E=()=>n(6.4,[t,a,s]),B=()=>D()?(we(Xe),{status:!0}):(be(Xe,1),{status:o}),D=()=>n(6.9,[t,a,s]),J=async()=>$()?(we(Me),new Promise(((e,t)=>{Ee(ye,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(be(Me,1),{status:o}),$=()=>n(6.9,[t,a,s]),M=()=>A()?(we(Ye),{status:!0}):(be(Ye,1),{status:o}),A=()=>n(0,[t,a,s]),U=()=>G()?(we(Ze),{status:!0}):(be(Ze,1),{status:o}),G=()=>n(0,[t,a,s]),V=()=>Q()?(we(et),{status:!0}):(be(et,1),{status:o}),Q=()=>n(6.9,[t,a,s]),F=e=>H()?(we(tt,e),{status:!0}):(be(tt,1),{status:o}),H=()=>n(6.1,[t,a,s]),j=e=>z()?(we(st,e),{status:!0}):(be(st,1),{status:o}),z=()=>n(6.1,[t,a,s]),K=e=>X()?(we(at,e),{status:!0}):(be(at,1),{status:o}),X=()=>n(6.1,[t,a,s]),Y=e=>Z()?(we(rt,e),{status:!0}):(be(rt,1),{status:o}),Z=()=>n(0,[t,a,s]),ee=e=>te()?(we(ot,e),{status:!0}):(be(ot,1),{status:o}),te=()=>n(0,[t,a,s]),se=e=>ae()?(we(nt,e),{status:!0}):(be(nt,1),{status:o}),ae=()=>n(6.1,[t,a,s]),re=e=>oe()?(e.query.length>256&&be(it,9),we(it,e),{status:!0}):(be(it,1),{status:o}),oe=()=>n(6.7,[t,a,s]),ne=e=>ie()?(we(_t,e),{status:!0}):(be(_t,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,ce=e=>ge()?(we(pt,e),{status:!0}):(be(pt,1),{status:o}),ge=()=>n(7.7,[t,a,s]);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=(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 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",Ie="settings_button_pressed",Re="theme_changed",Te="viewport_changed",Ne="write_access_requested",Ce=((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===Re&&(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)),Ce.emit(e,t),Ce.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Le=(e,t)=>{Ce.on(e,t)},We=(e,t)=>{Ce.off(e,t)},Ee=(e,t)=>{Ce.once(e,t)};var Be=Object.freeze({__proto__:null,off:We,on:Le,once:Ee});const De="web_app_invoke_custom_method",Je="web_app_open_scan_qr_popup",$e="web_app_read_text_from_clipboard",Me="web_app_request_phone",Ae="web_app_close",Ue="web_app_close_scan_qr_popup",Ge="web_app_data_send",Ve="web_app_expand",Qe="iframe_ready",Fe="iframe_will_reload",He="web_app_open_invoice",je="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",pt="web_app_setup_swipe_behavior";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,Ie as EventSettingsButtonPressed,Re as EventThemeChanged,Te as EventViewportChanged,Ne as EventWriteAccessRequested,Ae as MethodClose,Ue as MethodCloseScanQrPopup,Ge as MethodDataSend,Ve as MethodExpand,Qe as MethodIframeReady,Fe as MethodIframeWillReload,De as MethodInvokeCustomMethod,He as MethodOpenInvoice,je as MethodOpenLink,ze as MethodOpenPopup,Je as MethodOpenScanQrPopup,Ke as MethodOpenTgLink,$e as MethodReadTextFromClipboard,Xe as MethodReady,Me 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,pt as MethodSetupSwipeBehavior,it as MethodSwitchInlineQuery,_t 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,le as bridgeGetInitData,m as bridgeIframeReady,f as bridgeIframeWillReload,y as bridgeInvokeCustomMethod,x as bridgeOpenInvoice,P as bridgeOpenLink,I as bridgeOpenPopup,T as bridgeOpenScanQrPopup,C as bridgeOpenTgLink,W as bridgeReadTextFromClipboard,B as bridgeReady,J 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,ce as bridgeSetupSwipeBehavior,re as bridgeSwitchInlineQuery,ne as bridgeTriggerHapticFeedback,be as debug,r as getPlatform,Be as listener,we 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,D as supportReady,$ 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,ge as supportSetupSwipeBehavior,oe as supportSwitchInlineQuery,ie as supportTriggerHapticFeedback};
1
+ const e="web",t="phone",s="desktop",a=()=>{const a=window.location.hash.slice(1),r=new URLSearchParams(a).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?t:["tdesktop","macos"].includes(r)?s:e},r="not_supported",o=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(a())},n=()=>Math.random().toString(36).substring(3,9),i=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),a=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((a<16?"0":"")+a.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},_=()=>p()?(le(Me),{status:!0}):(ge(Me,1),{status:r}),p=()=>o(0,[e,s,t]),u=()=>d()?(le(Ae),{status:!0}):(ge(Ae,1),{status:r}),d=()=>o(64,[t]),c=e=>g()?(le(Ue,e),{status:!0}):(ge(Ue,1),{status:r}),g=()=>o(0,[e,s,t]),b=()=>l()?(le(Ge),{status:!0}):(ge(Ge,1),{status:r}),l=()=>o(0,[t]),w=e=>m()?(le(Ve,e),{status:!0}):(ge(Ve,1),{status:r}),m=()=>o(0,[e]),h=()=>f()?(le(Ve),{status:!0}):(ge(Ve,1),{status:r}),f=()=>o(0,[e]),v="web_app_invoke_custom_method",S=async e=>y()?(void 0===e.req_id&&(e.req_id=n()),le(v,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Le(he,a))};Ce(he,a)}))):(ge(v,1),{status:r}),y=()=>o(6.9,[e,s,t]),q=e=>k()?(le(je,e),{status:!0}):(ge(je,1),{status:r}),k=()=>o(6.1,[e,s,t]),x=e=>P()?(le(Fe,e),{status:!0}):(ge(Fe,1),{status:r}),P=()=>o(6.4,[e,s,t]),O=async e=>I()?(e.title.length>64&&ge(He,3),e.message.length<1&&ge(He,4),e.message.length>256&&ge(He,5),e.buttons.length<1&&ge(He,6),e.buttons.length>3&&ge(He,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&ge(He,8),le(He,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Le(ye,a)};Ce(ye,a)}))):(ge(He,1),{status:r}),I=()=>o(6.2,[e,s,t]),R=async e=>T()?(le(De,e),new Promise(((t,s)=>{We(ke,(s=>{e.is_close&&u(),t({status:!0,data:s})})),We(xe,(()=>{t({status:"closed"})}))}))):(ge(De,1),{status:r}),T=()=>o(6.4,[t]),N=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),C()?(le(ze,e),{status:!0}):(ge(ze,1),{status:r})),C=()=>o(7,[e,s,t]),L=async e=>W()?(void 0===e.req_id&&(e.req_id=n()),le(Je,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Le(me,a))};Ce(me,a)}))):(ge(Je,1),{status:r}),W=()=>o(6.4,[e,s,t]),E=()=>B()?(le(Ke),{status:!0}):(ge(Ke,1),{status:r}),B=()=>o(6.9,[e,s,t]),D=async()=>J()?(le($e),new Promise(((e,t)=>{We(Se,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(ge($e,1),{status:r}),J=()=>o(6.9,[e,s,t]),$=()=>M()?(le(Xe),{status:!0}):(ge(Xe,1),{status:r}),M=()=>o(0,[e,s,t]),A=()=>U()?(le(Ye),{status:!0}):(ge(Ye,1),{status:r}),U=()=>o(0,[e,s,t]),G=()=>V()?(le(Ze),{status:!0}):(ge(Ze,1),{status:r}),V=()=>o(6.9,[e,s,t]),Q=e=>j()?(le(et,e),{status:!0}):(ge(et,1),{status:r}),j=()=>o(6.1,[e,s,t]),F=e=>H()?(le(tt,e),{status:!0}):(ge(tt,1),{status:r}),H=()=>o(6.1,[e,s,t]),z=e=>K()?(le(st,e),{status:!0}):(ge(st,1),{status:r}),K=()=>o(6.1,[e,s,t]),X=e=>Y()?(le(at,e),{status:!0}):(ge(at,1),{status:r}),Y=()=>o(0,[e,s,t]),Z=e=>ee()?(le(rt,e),{status:!0}):(ge(rt,1),{status:r}),ee=()=>o(0,[e,s,t]),te=e=>se()?(le(ot,e),{status:!0}):(ge(ot,1),{status:r}),se=()=>o(6.1,[e,s,t]),ae=e=>re()?(e.query.length>256&&ge(nt,9),le(nt,e),{status:!0}):(ge(nt,1),{status:r}),re=()=>o(6.7,[e,s,t]),oe=e=>ne()?(le(it,e),{status:!0}):(ge(it,1),{status:r}),ne=()=>o(6.1,[t]),ie=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},_e=()=>!0,pe=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},ue=()=>!0,de=e=>ce()?(le(_t,e),{status:!0}):(ge(_t,1),{status:r}),ce=()=>o(7.7,[e,s,t]);var ge=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const be=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return ge("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s};var le=(e,t)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:e,eventData:t}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:e,eventData:t}),"*")}catch(e){ge("postMessage Iframe",10)}};const we="back_button_pressed",me="clipboard_text_received",he="custom_method_invoked",fe="invoice_closed",ve="main_button_pressed",Se="phone_requested",ye="popup_closed",qe="reload_iframe",ke="qr_text_received",xe="scan_qr_popup_closed",Pe="set_custom_style",Oe="settings_button_pressed",Ie="theme_changed",Re="viewport_changed",Te="write_access_requested",Ne=((e=new Map)=>({once:(t,s,a=e.get(t),r=(e=>{s(e),a&&a.splice(a.indexOf(s)>>>0,1)}))=>a?a.push(r):e.set(t,[r]),on:(t,s,a=e.get(t))=>a?a.push(s):e.set(t,[s]),off:(t,s,a=e.get(t))=>a&&s?a.splice(a.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,a=e.get(t)||[])=>{for(const e of a)e(s)}}))();(()=>{function e(e,t){e===Ie&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var a=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r of Object.keys(e)){var o=i(e[r]);"string"==typeof o&&(a[r]=o)}return a})(t.theme_params)),Ne.emit(e,t),Ne.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Ce=(e,t)=>{Ne.on(e,t)},Le=(e,t)=>{Ne.off(e,t)},We=(e,t)=>{Ne.once(e,t)};var Ee=Object.freeze({__proto__:null,off:Le,on:Ce,once:We});const Be="web_app_invoke_custom_method",De="web_app_open_scan_qr_popup",Je="web_app_read_text_from_clipboard",$e="web_app_request_phone",Me="web_app_close",Ae="web_app_close_scan_qr_popup",Ue="web_app_data_send",Ge="web_app_expand",Ve="iframe_ready",Qe="iframe_will_reload",je="web_app_open_invoice",Fe="web_app_open_link",He="web_app_open_popup",ze="web_app_open_tg_link",Ke="web_app_ready",Xe="web_app_request_theme",Ye="web_app_request_viewport",Ze="web_app_request_write_access",et="web_app_set_background_color",tt="web_app_set_header_color",st="web_app_setup_back_button",at="web_app_setup_closing_behavior",rt="web_app_setup_main_button",ot="web_app_setup_settings_button",nt="web_app_switch_inline_query",it="web_app_trigger_haptic_feedback",_t="web_app_setup_swipe_behavior";export{we as EventBackButtonPressed,me as EventClipboardTextReceived,he as EventCustomMethodInvoked,fe as EventInvoiceClosed,ve as EventMainButtonPressed,Se as EventPhoneRequested,ye as EventPopupClosed,ke as EventQrTextReceived,qe as EventReloadIframe,xe as EventScanQrPopupClosed,Pe as EventSetCustomStyle,Oe as EventSettingsButtonPressed,Ie as EventThemeChanged,Re as EventViewportChanged,Te as EventWriteAccessRequested,Me as MethodClose,Ae as MethodCloseScanQrPopup,Ue as MethodDataSend,Ge as MethodExpand,Ve as MethodIframeReady,Qe as MethodIframeWillReload,Be as MethodInvokeCustomMethod,je as MethodOpenInvoice,Fe as MethodOpenLink,He as MethodOpenPopup,De as MethodOpenScanQrPopup,ze as MethodOpenTgLink,Je as MethodReadTextFromClipboard,Ke as MethodReady,$e as MethodRequestPhone,Xe as MethodRequestTheme,Ye as MethodRequestViewport,Ze as MethodRequestWriteAccess,et as MethodSetBackgroundColor,tt as MethodSetHeaderColor,st as MethodSetupBackButton,at as MethodSetupClosingBehavior,rt as MethodSetupMainButton,ot as MethodSetupSettingsButton,_t as MethodSetupSwipeBehavior,nt as MethodSwitchInlineQuery,it as MethodTriggerHapticFeedback,r as NOT_SUPPORTED,s as TG_DESKTOP,t as TG_PHONE,e as TG_WEB,_ as bridgeClose,u as bridgeCloseScanQrPopup,c as bridgeDataSend,b as bridgeExpand,be as bridgeGetInitData,w as bridgeIframeReady,h as bridgeIframeWillReload,S as bridgeInvokeCustomMethod,q as bridgeOpenInvoice,x as bridgeOpenLink,O as bridgeOpenPopup,R as bridgeOpenScanQrPopup,N as bridgeOpenTgLink,L as bridgeReadTextFromClipboard,E as bridgeReady,D as bridgeRequestPhone,$ as bridgeRequestTheme,A as bridgeRequestViewport,G as bridgeRequestWriteAccess,pe as bridgeSessionStorageGet,ie as bridgeSessionStorageSet,Q as bridgeSetBackgroundColor,F as bridgeSetHeaderColor,z as bridgeSetupBackButton,X as bridgeSetupClosingBehavior,Z as bridgeSetupMainButton,te as bridgeSetupSettingsButton,de as bridgeSetupSwipeBehavior,ae as bridgeSwitchInlineQuery,oe as bridgeTriggerHapticFeedback,ge as debug,a as getPlatform,Ee as listener,le as sender,p as supportClose,d as supportCloseScanQrPopup,g as supportDataSend,l as supportExpand,m as supportIframeReady,f as supportIframeWillReload,y as supportInvokeCustomMethod,k as supportOpenInvoice,P as supportOpenLink,I as supportOpenPopup,T as supportOpenScanQrPopup,C as supportOpenTgLink,W as supportReadTextFromClipboard,B as supportReady,J as supportRequestPhone,M as supportRequestTheme,U as supportRequestViewport,V as supportRequestWriteAccess,ue as supportSessionStorageGet,_e as supportSessionStorageSet,j as supportSetBackgroundColor,H as supportSetHeaderColor,K as supportSetupBackButton,Y as supportSetupClosingBehavior,ee as supportSetupMainButton,se as supportSetupSettingsButton,ce as supportSetupSwipeBehavior,re as supportSwitchInlineQuery,ne as supportTriggerHapticFeedback};