@apiteam/twa-bridge 7.0.0-beta.1 → 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/react/index.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";var e=require("react");const t="web",s="phone",o="desktop",r="not_supported",p=(e,r)=>{const p=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(p)>=e&&-1!==r.indexOf((()=>{const e=window.location.hash.slice(1),r=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?s:["tdesktop","macos"].includes(r)?o:t})())},a=()=>Math.random().toString(36).substring(3,9),n=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),o=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((o<16?"0":"")+o.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},i=()=>p(0,[t,o,s]),u=()=>d()?(N(ee),{status:!0}):(L(ee,1),{status:r}),d=()=>p(6.4,[s]),_=()=>p(0,[t,o,s]),c=()=>p(0,[s]),x=()=>p(0,[t]),g=()=>p(0,[t]),l="web_app_invoke_custom_method",b=()=>p(6.9,[t,o,s]),h=()=>p(6.1,[t,o,s]),w=()=>p(6.4,[t,o,s]),m=()=>p(6.2,[t,o,s]),v=()=>p(6.4,[s]),S=()=>p(7,[t,o,s]),f=()=>p(6.4,[t,o,s]),y=()=>p(6.9,[t,o,s]),M=()=>p(6.9,[t,o,s]),P=()=>p(0,[t,o,s]),q=()=>p(0,[t,o,s]),R=()=>p(6.9,[t,o,s]),k=()=>p(6.1,[t,o,s]),C=()=>p(6.1,[t,o,s]),O=()=>p(6.1,[t,o,s]),E=()=>p(0,[t,o,s]),T=()=>p(0,[t,o,s]),I=()=>p(6.1,[t,o,s]),B=()=>p(6.7,[t,o,s]),W=()=>p(6.1,[s]);var L=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};var N=(t,s)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(t,JSON.stringify(s));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:t,eventData:s}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:t,eventData:s}),"*")}catch(t){e.debug("postMessage Iframe",10)}};const D="clipboard_text_received",Q="custom_method_invoked",A="phone_requested",G="popup_closed",H="qr_text_received",J="scan_qr_popup_closed",V="theme_changed",$=((e=new Map)=>({once:(t,s,o=e.get(t),r=(e=>{s(e),o&&o.splice(o.indexOf(s)>>>0,1)}))=>o?o.push(r):e.set(t,[r]),on:(t,s,o=e.get(t))=>o?o.push(s):e.set(t,[s]),off:(t,s,o=e.get(t))=>o&&s?o.splice(o.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,o=e.get(t)||[])=>{for(const e of o)e(s)}}))();(()=>{function e(e,t){e===V&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var o=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r in e){var p=n(e[r]);"string"==typeof p&&(o[r]=p)}return o})(t.theme_params)),$.emit(e,t),$.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const F=(e,t)=>{$.on(e,t)},U=(e,t)=>{$.off(e,t)},j=(e,t)=>{$.once(e,t)};var z=Object.freeze({__proto__:null,off:U,on:F,once:j});const K="web_app_open_scan_qr_popup",X="web_app_read_text_from_clipboard",Y="web_app_request_phone",Z="web_app_close",ee="web_app_close_scan_qr_popup",te="web_app_data_send",se="web_app_expand",oe="iframe_ready",re="web_app_open_invoice",pe="web_app_open_link",ae="web_app_open_popup",ne="web_app_open_tg_link",ie="web_app_ready",ue="web_app_request_theme",de="web_app_request_viewport",_e="web_app_request_write_access",ce="web_app_set_background_color",xe="web_app_set_header_color",ge="web_app_setup_back_button",le="web_app_setup_closing_behavior",be="web_app_setup_main_button",he="web_app_setup_settings_button",we="web_app_switch_inline_query",me="web_app_trigger_haptic_feedback";exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=D,exports.EventCustomMethodInvoked=Q,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=A,exports.EventPopupClosed=G,exports.EventQrTextReceived=H,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=J,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=V,exports.EventViewportChanged="viewport_changed",exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=Z,exports.MethodCloseScanQrPopup=ee,exports.MethodDataSend=te,exports.MethodExpand=se,exports.MethodIframeReady=oe,exports.MethodIframeWillReload="iframe_will_reload",exports.MethodInvokeCustomMethod="web_app_invoke_custom_method",exports.MethodOpenInvoice=re,exports.MethodOpenLink=pe,exports.MethodOpenPopup=ae,exports.MethodOpenScanQrPopup=K,exports.MethodOpenTgLink=ne,exports.MethodReadTextFromClipboard=X,exports.MethodReady=ie,exports.MethodRequestPhone=Y,exports.MethodRequestTheme=ue,exports.MethodRequestViewport=de,exports.MethodRequestWriteAccess=_e,exports.MethodSetBackgroundColor=ce,exports.MethodSetHeaderColor=xe,exports.MethodSetupBackButton=ge,exports.MethodSetupClosingBehavior=le,exports.MethodSetupMainButton=be,exports.MethodSetupSettingsButton=he,exports.MethodSwitchInlineQuery=we,exports.MethodTriggerHapticFeedback=me,exports.NOT_SUPPORTED=r,exports.TG_DESKTOP=o,exports.TG_PHONE=s,exports.TG_WEB=t,exports.bridgeClose=()=>i()?(N(Z),{status:!0}):(L(Z,1),{status:r}),exports.bridgeCloseScanQrPopup=u,exports.bridgeDataSend=e=>_()?(N(te,e),{status:!0}):(L(te,1),{status:r}),exports.bridgeExpand=()=>c()?(N(se),{status:!0}):(L(se,1),{status:r}),exports.bridgeGetInitData=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return L("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s},exports.bridgeIframeReady=e=>x()?(N(oe,e),{status:!0}):(L(oe,1),{status:r}),exports.bridgeIframeWillReload=()=>g()?(N(oe),{status:!0}):(L(oe,1),{status:r}),exports.bridgeInvokeCustomMethod=async e=>b()?(void 0===e.req_id&&(e.req_id=a()),N(l,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),U(Q,o))};F(Q,o)}))):(L(l,1),{status:r}),exports.bridgeOpenInvoice=e=>h()?(N(re,e),{status:!0}):(L(re,1),{status:r}),exports.bridgeOpenLink=e=>w()?(N(pe,e),{status:!0}):(L(pe,1),{status:r}),exports.bridgeOpenPopup=async e=>m()?(e.title.length>64&&L(ae,3),e.message.length<1&&L(ae,4),e.message.length>256&&L(ae,5),e.buttons.length<1&&L(ae,6),e.buttons.length>3&&L(ae,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&L(ae,8),N(ae,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),U(G,o)};F(G,o)}))):(L(ae,1),{status:r}),exports.bridgeOpenScanQrPopup=async e=>v()?(N(K,e),new Promise(((t,s)=>{j(H,(s=>{e.is_close&&u(),t({status:!0,data:s})})),j(J,(()=>{t({status:"closed"})}))}))):(L(K,1),{status:r}),exports.bridgeOpenTgLink=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),S()?(N(ne,e),{status:!0}):(L(ne,1),{status:r})),exports.bridgeReadTextFromClipboard=async e=>f()?(void 0===e.req_id&&(e.req_id=a()),N(X,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),U(D,o))};F(D,o)}))):(L(X,1),{status:r}),exports.bridgeReady=()=>y()?(N(ie),{status:!0}):(L(ie,1),{status:r}),exports.bridgeRequestPhone=async()=>M()?(N(Y),new Promise(((e,t)=>{j(A,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(L(Y,1),{status:r}),exports.bridgeRequestTheme=()=>P()?(N(ue),{status:!0}):(L(ue,1),{status:r}),exports.bridgeRequestViewport=()=>q()?(N(de),{status:!0}):(L(de,1),{status:r}),exports.bridgeRequestWriteAccess=()=>R()?(N(_e),{status:!0}):(L(_e,1),{status:r}),exports.bridgeSessionStorageGet=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},exports.bridgeSetBackgroundColor=e=>k()?(N(ce,e),{status:!0}):(L(ce,1),{status:r}),exports.bridgeSetHeaderColor=e=>C()?(N(xe,e),{status:!0}):(L(xe,1),{status:r}),exports.bridgeSetupBackButton=e=>O()?(N(ge,e),{status:!0}):(L(ge,1),{status:r}),exports.bridgeSetupClosingBehavior=e=>E()?(N(le,e),{status:!0}):(L(le,1),{status:r}),exports.bridgeSetupMainButton=e=>T()?(N(be,e),{status:!0}):(L(be,1),{status:r}),exports.bridgeSetupSettingsButton=e=>I()?(N(he,e),{status:!0}):(L(he,1),{status:r}),exports.bridgeSwitchInlineQuery=e=>B()?(e.query.length>256&&L(we,9),N(we,e),{status:!0}):(L(we,1),{status:r}),exports.bridgeTriggerHapticFeedback=e=>W()?(N(me,e),{status:!0}):(L(me,1),{status:r}),exports.debug=L,exports.listener=z,exports.sender=N,exports.supportClose=i,exports.supportCloseScanQrPopup=d,exports.supportDataSend=_,exports.supportExpand=c,exports.supportIframeReady=x,exports.supportIframeWillReload=g,exports.supportInvokeCustomMethod=b,exports.supportOpenInvoice=h,exports.supportOpenLink=w,exports.supportOpenPopup=m,exports.supportOpenScanQrPopup=v,exports.supportOpenTgLink=S,exports.supportReadTextFromClipboard=f,exports.supportReady=y,exports.supportRequestPhone=M,exports.supportRequestTheme=P,exports.supportRequestViewport=q,exports.supportRequestWriteAccess=R,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=k,exports.supportSetHeaderColor=C,exports.supportSetupBackButton=O,exports.supportSetupClosingBehavior=E,exports.supportSetupMainButton=T,exports.supportSetupSettingsButton=I,exports.supportSwitchInlineQuery=B,exports.supportTriggerHapticFeedback=W;
@@ -0,0 +1 @@
1
+ import{debug as e}from"react";const t="web",s="phone",a="desktop",r="not_supported",o=(e,r)=>{const o=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(o)>=e&&-1!==r.indexOf((()=>{const e=window.location.hash.slice(1),r=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?s:["tdesktop","macos"].includes(r)?a:t})())},n=()=>Math.random().toString(36).substring(3,9),i=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),a=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((a<16?"0":"")+a.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},_=()=>p()?(ge($e),{status:!0}):(de($e,1),{status:r}),p=()=>o(0,[t,a,s]),u=()=>d()?(ge(Be),{status:!0}):(de(Be,1),{status:r}),d=()=>o(6.4,[s]),c=e=>g()?(ge(Me,e),{status:!0}):(de(Me,1),{status:r}),g=()=>o(0,[t,a,s]),b=()=>l()?(ge(Ae),{status:!0}):(de(Ae,1),{status:r}),l=()=>o(0,[s]),w=e=>m()?(ge(Ue,e),{status:!0}):(de(Ue,1),{status:r}),m=()=>o(0,[t]),h=()=>f()?(ge(Ue),{status:!0}):(de(Ue,1),{status:r}),f=()=>o(0,[t]),v="web_app_invoke_custom_method",y=async e=>S()?(void 0===e.req_id&&(e.req_id=n()),ge(v,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Ne(we,a))};Te(we,a)}))):(de(v,1),{status:r}),S=()=>o(6.9,[t,a,s]),q=e=>x()?(ge(Ve,e),{status:!0}):(de(Ve,1),{status:r}),x=()=>o(6.1,[t,a,s]),k=e=>P()?(ge(Qe,e),{status:!0}):(de(Qe,1),{status:r}),P=()=>o(6.4,[t,a,s]),O=async e=>I()?(e.title.length>64&&de(Fe,3),e.message.length<1&&de(Fe,4),e.message.length>256&&de(Fe,5),e.buttons.length<1&&de(Fe,6),e.buttons.length>3&&de(Fe,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&de(Fe,8),ge(Fe,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Ne(ve,a)};Te(ve,a)}))):(de(Fe,1),{status:r}),I=()=>o(6.2,[t,a,s]),R=async e=>T()?(ge(Ee,e),new Promise(((t,s)=>{Ce(Se,(s=>{e.is_close&&u(),t({status:!0,data:s})})),Ce(qe,(()=>{t({status:"closed"})}))}))):(de(Ee,1),{status:r}),T=()=>o(6.4,[s]),N=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),C()?(ge(He,e),{status:!0}):(de(He,1),{status:r})),C=()=>o(7,[t,a,s]),L=async e=>W()?(void 0===e.req_id&&(e.req_id=n()),ge(De,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Ne(le,a))};Te(le,a)}))):(de(De,1),{status:r}),W=()=>o(6.4,[t,a,s]),E=()=>D()?(ge(je),{status:!0}):(de(je,1),{status:r}),D=()=>o(6.9,[t,a,s]),J=async()=>$()?(ge(Je),new Promise(((e,t)=>{Ce(fe,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(de(Je,1),{status:r}),$=()=>o(6.9,[t,a,s]),B=()=>M()?(ge(ze),{status:!0}):(de(ze,1),{status:r}),M=()=>o(0,[t,a,s]),A=()=>U()?(ge(Ke),{status:!0}):(de(Ke,1),{status:r}),U=()=>o(0,[t,a,s]),G=()=>V()?(ge(Xe),{status:!0}):(de(Xe,1),{status:r}),V=()=>o(6.9,[t,a,s]),Q=e=>F()?(ge(Ye,e),{status:!0}):(de(Ye,1),{status:r}),F=()=>o(6.1,[t,a,s]),H=e=>j()?(ge(Ze,e),{status:!0}):(de(Ze,1),{status:r}),j=()=>o(6.1,[t,a,s]),z=e=>K()?(ge(et,e),{status:!0}):(de(et,1),{status:r}),K=()=>o(6.1,[t,a,s]),X=e=>Y()?(ge(tt,e),{status:!0}):(de(tt,1),{status:r}),Y=()=>o(0,[t,a,s]),Z=e=>ee()?(ge(st,e),{status:!0}):(de(st,1),{status:r}),ee=()=>o(0,[t,a,s]),te=e=>se()?(ge(at,e),{status:!0}):(de(at,1),{status:r}),se=()=>o(6.1,[t,a,s]),ae=e=>re()?(e.query.length>256&&de(rt,9),ge(rt,e),{status:!0}):(de(rt,1),{status:r}),re=()=>o(6.7,[t,a,s]),oe=e=>ne()?(ge(ot,e),{status:!0}):(de(ot,1),{status:r}),ne=()=>o(6.1,[s]),ie=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},_e=()=>!0,pe=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},ue=()=>!0;var de=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const ce=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return de("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s};var ge=(t,s)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(t,JSON.stringify(s));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:t,eventData:s}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:t,eventData:s}),"*")}catch(t){e("postMessage Iframe",10)}};const be="back_button_pressed",le="clipboard_text_received",we="custom_method_invoked",me="invoice_closed",he="main_button_pressed",fe="phone_requested",ve="popup_closed",ye="reload_iframe",Se="qr_text_received",qe="scan_qr_popup_closed",xe="set_custom_style",ke="settings_button_pressed",Pe="theme_changed",Oe="viewport_changed",Ie="write_access_requested",Re=((e=new Map)=>({once:(t,s,a=e.get(t),r=(e=>{s(e),a&&a.splice(a.indexOf(s)>>>0,1)}))=>a?a.push(r):e.set(t,[r]),on:(t,s,a=e.get(t))=>a?a.push(s):e.set(t,[s]),off:(t,s,a=e.get(t))=>a&&s?a.splice(a.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,a=e.get(t)||[])=>{for(const e of a)e(s)}}))();(()=>{function e(e,t){e===Pe&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var a=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r in e){var o=i(e[r]);"string"==typeof o&&(a[r]=o)}return a})(t.theme_params)),Re.emit(e,t),Re.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Te=(e,t)=>{Re.on(e,t)},Ne=(e,t)=>{Re.off(e,t)},Ce=(e,t)=>{Re.once(e,t)};var Le=Object.freeze({__proto__:null,off:Ne,on:Te,once:Ce});const We="web_app_invoke_custom_method",Ee="web_app_open_scan_qr_popup",De="web_app_read_text_from_clipboard",Je="web_app_request_phone",$e="web_app_close",Be="web_app_close_scan_qr_popup",Me="web_app_data_send",Ae="web_app_expand",Ue="iframe_ready",Ge="iframe_will_reload",Ve="web_app_open_invoice",Qe="web_app_open_link",Fe="web_app_open_popup",He="web_app_open_tg_link",je="web_app_ready",ze="web_app_request_theme",Ke="web_app_request_viewport",Xe="web_app_request_write_access",Ye="web_app_set_background_color",Ze="web_app_set_header_color",et="web_app_setup_back_button",tt="web_app_setup_closing_behavior",st="web_app_setup_main_button",at="web_app_setup_settings_button",rt="web_app_switch_inline_query",ot="web_app_trigger_haptic_feedback";export{be as EventBackButtonPressed,le as EventClipboardTextReceived,we as EventCustomMethodInvoked,me as EventInvoiceClosed,he as EventMainButtonPressed,fe as EventPhoneRequested,ve as EventPopupClosed,Se as EventQrTextReceived,ye as EventReloadIframe,qe as EventScanQrPopupClosed,xe as EventSetCustomStyle,ke as EventSettingsButtonPressed,Pe as EventThemeChanged,Oe as EventViewportChanged,Ie as EventWriteAccessRequested,$e as MethodClose,Be as MethodCloseScanQrPopup,Me as MethodDataSend,Ae as MethodExpand,Ue as MethodIframeReady,Ge as MethodIframeWillReload,We as MethodInvokeCustomMethod,Ve as MethodOpenInvoice,Qe as MethodOpenLink,Fe as MethodOpenPopup,Ee as MethodOpenScanQrPopup,He as MethodOpenTgLink,De as MethodReadTextFromClipboard,je as MethodReady,Je as MethodRequestPhone,ze as MethodRequestTheme,Ke as MethodRequestViewport,Xe as MethodRequestWriteAccess,Ye as MethodSetBackgroundColor,Ze as MethodSetHeaderColor,et as MethodSetupBackButton,tt as MethodSetupClosingBehavior,st as MethodSetupMainButton,at as MethodSetupSettingsButton,rt as MethodSwitchInlineQuery,ot as MethodTriggerHapticFeedback,r as NOT_SUPPORTED,a as TG_DESKTOP,s as TG_PHONE,t as TG_WEB,_ as bridgeClose,u as bridgeCloseScanQrPopup,c as bridgeDataSend,b as bridgeExpand,ce as bridgeGetInitData,w as bridgeIframeReady,h as bridgeIframeWillReload,y as bridgeInvokeCustomMethod,q as bridgeOpenInvoice,k as bridgeOpenLink,O as bridgeOpenPopup,R as bridgeOpenScanQrPopup,N as bridgeOpenTgLink,L as bridgeReadTextFromClipboard,E as bridgeReady,J as bridgeRequestPhone,B as bridgeRequestTheme,A as bridgeRequestViewport,G as bridgeRequestWriteAccess,pe as bridgeSessionStorageGet,ie as bridgeSessionStorageSet,Q as bridgeSetBackgroundColor,H as bridgeSetHeaderColor,z as bridgeSetupBackButton,X as bridgeSetupClosingBehavior,Z as bridgeSetupMainButton,te as bridgeSetupSettingsButton,ae as bridgeSwitchInlineQuery,oe as bridgeTriggerHapticFeedback,de as debug,Le as listener,ge as sender,p as supportClose,d as supportCloseScanQrPopup,g as supportDataSend,l as supportExpand,m as supportIframeReady,f as supportIframeWillReload,S as supportInvokeCustomMethod,x as supportOpenInvoice,P as supportOpenLink,I as supportOpenPopup,T as supportOpenScanQrPopup,C as supportOpenTgLink,W as supportReadTextFromClipboard,D as supportReady,$ as supportRequestPhone,M as supportRequestTheme,U as supportRequestViewport,V as supportRequestWriteAccess,ue as supportSessionStorageGet,_e as supportSessionStorageSet,F as supportSetBackgroundColor,j as supportSetHeaderColor,K as supportSetupBackButton,Y as supportSetupClosingBehavior,ee as supportSetupMainButton,se as supportSetupSettingsButton,re as supportSwitchInlineQuery,ne as supportTriggerHapticFeedback};
@@ -0,0 +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
+ }
17
+ }
package/solid/index.d.ts CHANGED
@@ -392,11 +392,11 @@ type SetHeaderColor = (eventData: {
392
392
  /**
393
393
  * The Mini App header color key. Could be either bg_color or secondary_bg_color.
394
394
  */
395
- color_key: 'bg_color' | 'secondary_bg_color';
395
+ color_key?: 'bg_color' | 'secondary_bg_color';
396
396
  /**
397
- * Color in RGB format.
397
+ * Color in HEX format.
398
398
  */
399
- color: string;
399
+ color?: string;
400
400
  }) => {
401
401
  status: boolean | typeof NOT_SUPPORTED;
402
402
  };
@@ -585,6 +585,36 @@ declare const triggerHapticFeedback: TriggerHapticFeedback;
585
585
  */
586
586
  declare const supportTriggerHapticFeedback: () => boolean;
587
587
 
588
+ type SessionStorageSet = ({ key, value }: {
589
+ key: string;
590
+ value: any;
591
+ }) => {
592
+ status: boolean | typeof NOT_SUPPORTED;
593
+ };
594
+ /**
595
+ * sessions storage set.
596
+ */
597
+ declare const sessionStorageSet: SessionStorageSet;
598
+ /**
599
+ * Method support check
600
+ */
601
+ declare const supportSessionStorageSet: () => boolean;
602
+
603
+ type SessionStorageGet = ({ key }: {
604
+ key: string;
605
+ }) => {
606
+ status: boolean | typeof NOT_SUPPORTED;
607
+ value?: any;
608
+ };
609
+ /**
610
+ * sessions storage get.
611
+ */
612
+ declare const sessionStorageGet: SessionStorageGet;
613
+ /**
614
+ * Method support check
615
+ */
616
+ declare const supportSessionStorageGet: () => boolean;
617
+
588
618
  type User = {
589
619
  /**
590
620
  * Optional. True, if this user added the bot to the attachment menu.
@@ -962,4 +992,4 @@ declare const EventThemeChanged = "theme_changed";
962
992
  declare const EventViewportChanged = "viewport_changed";
963
993
  declare const EventWriteAccessRequested = "write_access_requested";
964
994
 
965
- export { EventBackButtonPressed, EventClipboardTextReceived, EventCustomMethodInvoked, EventInvoiceClosed, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventQrTextReceived, EventReloadIframe, EventScanQrPopupClosed, EventSetCustomStyle, EventSettingsButtonPressed, EventThemeChanged, EventViewportChanged, EventWriteAccessRequested, type EventsData, MethodClose, MethodCloseScanQrPopup, MethodDataSend, MethodExpand, MethodIframeReady, MethodIframeWillReload, MethodInvokeCustomMethod, MethodOpenInvoice, MethodOpenLink, MethodOpenPopup, MethodOpenScanQrPopup, MethodOpenTgLink, MethodReadTextFromClipboard, MethodReady, MethodRequestPhone, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSetBackgroundColor, MethodSetHeaderColor, MethodSetupBackButton, MethodSetupClosingBehavior, MethodSetupMainButton, MethodSetupSettingsButton, MethodSwitchInlineQuery, MethodTriggerHapticFeedback, NOT_SUPPORTED, TG_DESKTOP, TG_PHONE, TG_WEB, close as bridgeClose, closeScanQrPopup as bridgeCloseScanQrPopup, dataSend as bridgeDataSend, expand as bridgeExpand, getInitData as bridgeGetInitData, iframeReady as bridgeIframeReady, iframeWillReload as bridgeIframeWillReload, invokeCustomMethod as bridgeInvokeCustomMethod, openInvoice as bridgeOpenInvoice, openLink as bridgeOpenLink, openPopup as bridgeOpenPopup, openScanQrPopup as bridgeOpenScanQrPopup, openTgLink as bridgeOpenTgLink, readTextFromClipboard as bridgeReadTextFromClipboard, ready as bridgeReady, requestPhone as bridgeRequestPhone, requestTheme as bridgeRequestTheme, requestViewport as bridgeRequestViewport, requestWriteAccess as bridgeRequestWriteAccess, setBackgroundColor as bridgeSetBackgroundColor, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupMainButton as bridgeSetupMainButton, setupSettingsButton as bridgeSetupSettingsButton, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, createIsViewportChanged, debug, listener, sender, supportClose, supportCloseScanQrPopup, supportDataSend, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestPhone, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSetBackgroundColor, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupMainButton, supportSetupSettingsButton, supportSwitchInlineQuery, supportTriggerHapticFeedback };
995
+ export { EventBackButtonPressed, EventClipboardTextReceived, EventCustomMethodInvoked, EventInvoiceClosed, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventQrTextReceived, EventReloadIframe, EventScanQrPopupClosed, EventSetCustomStyle, EventSettingsButtonPressed, EventThemeChanged, EventViewportChanged, EventWriteAccessRequested, type EventsData, MethodClose, MethodCloseScanQrPopup, MethodDataSend, MethodExpand, MethodIframeReady, MethodIframeWillReload, MethodInvokeCustomMethod, MethodOpenInvoice, MethodOpenLink, MethodOpenPopup, MethodOpenScanQrPopup, MethodOpenTgLink, MethodReadTextFromClipboard, MethodReady, MethodRequestPhone, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSetBackgroundColor, MethodSetHeaderColor, MethodSetupBackButton, MethodSetupClosingBehavior, MethodSetupMainButton, MethodSetupSettingsButton, MethodSwitchInlineQuery, MethodTriggerHapticFeedback, NOT_SUPPORTED, TG_DESKTOP, TG_PHONE, TG_WEB, close as bridgeClose, closeScanQrPopup as bridgeCloseScanQrPopup, dataSend as bridgeDataSend, expand as bridgeExpand, getInitData as bridgeGetInitData, iframeReady as bridgeIframeReady, iframeWillReload as bridgeIframeWillReload, invokeCustomMethod as bridgeInvokeCustomMethod, openInvoice as bridgeOpenInvoice, openLink as bridgeOpenLink, openPopup as bridgeOpenPopup, openScanQrPopup as bridgeOpenScanQrPopup, openTgLink as bridgeOpenTgLink, readTextFromClipboard as bridgeReadTextFromClipboard, ready as bridgeReady, requestPhone as bridgeRequestPhone, requestTheme as bridgeRequestTheme, requestViewport as bridgeRequestViewport, requestWriteAccess as bridgeRequestWriteAccess, sessionStorageGet as bridgeSessionStorageGet, sessionStorageSet as bridgeSessionStorageSet, setBackgroundColor as bridgeSetBackgroundColor, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupMainButton as bridgeSetupMainButton, setupSettingsButton as bridgeSetupSettingsButton, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, createIsViewportChanged, debug, listener, sender, supportClose, supportCloseScanQrPopup, supportDataSend, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestPhone, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSessionStorageGet, supportSessionStorageSet, supportSetBackgroundColor, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupMainButton, supportSetupSettingsButton, supportSwitchInlineQuery, supportTriggerHapticFeedback };
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=()=>p(0,[t,o,s]),u=()=>i()?(Q($),{status:!0}):(W($,1),{status:r}),i=()=>p(6.4,[s]),d=()=>p(0,[t,o,s]),_=()=>p(0,[s]),c=()=>p(0,[t]),x=()=>p(0,[t]),l="web_app_invoke_custom_method",g=()=>p(6.9,[t,o,s]),b=()=>p(6.1,[t,o,s]),h=()=>p(6.4,[t,o,s]),w=()=>p(6.2,[t,o,s]),m=()=>p(6.4,[s]),v=()=>p(7,[t,o,s]),S=()=>p(6.4,[t,o,s]),f=()=>p(6.9,[t,o,s]),M=()=>p(6.9,[t,o,s]),P=()=>p(0,[t,o,s]),q=()=>p(0,[t,o,s]),R=()=>p(6.9,[t,o,s]),k=()=>p(6.1,[t,o,s]),C=()=>p(6.1,[t,o,s]),y=()=>p(6.1,[t,o,s]),E=()=>p(0,[t,o,s]),O=()=>p(0,[t,o,s]),T=()=>p(6.1,[t,o,s]),B=()=>p(6.7,[t,o,s]),I=()=>p(6.1,[s]);var W=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};var Q=(e,t)=>{window.TelegramWebviewProxy?window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t)):window.external&&"notify"in window.external&&window.external.notify(JSON.stringify({eventType:e,eventData:t}))};const D=((e=new Map)=>({once:(t,s,o=e.get(t),r=(e=>{s(e),o&&o.splice(o.indexOf(s)>>>0,1)}))=>o?o.push(r):e.set(t,[r]),on:(t,s,o=e.get(t))=>o?o.push(s):e.set(t,[s]),off:(t,s,o=e.get(t))=>o&&s?o.splice(o.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,o=e.get(t)||[])=>{for(const e of o)e(s)}}))();(()=>{function e(e,t){D.emit(e,t),D.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const L=(e,t)=>{D.on(e,t)},N=(e,t)=>{D.off(e,t)},V=(e,t)=>{D.once(e,t)};var A=Object.freeze({__proto__:null,off:N,on:L,once:V});const H="web_app_open_scan_qr_popup",F="web_app_read_text_from_clipboard",G="web_app_request_phone",U="web_app_close",$="web_app_close_scan_qr_popup",J="web_app_data_send",j="web_app_expand",z="iframe_ready",K="web_app_open_invoice",X="web_app_open_link",Y="web_app_open_popup",Z="web_app_open_tg_link",ee="web_app_ready",te="web_app_request_theme",se="web_app_request_viewport",oe="web_app_request_write_access",re="web_app_set_background_color",pe="web_app_set_header_color",ae="web_app_setup_back_button",ne="web_app_setup_closing_behavior",ue="web_app_setup_main_button",ie="web_app_setup_settings_button",de="web_app_switch_inline_query",_e="web_app_trigger_haptic_feedback",ce="clipboard_text_received",xe="custom_method_invoked",le="phone_requested",ge="popup_closed",be="qr_text_received",he="scan_qr_popup_closed",we="viewport_changed";exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=ce,exports.EventCustomMethodInvoked=xe,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=le,exports.EventPopupClosed=ge,exports.EventQrTextReceived=be,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=he,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged="theme_changed",exports.EventViewportChanged=we,exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=U,exports.MethodCloseScanQrPopup=$,exports.MethodDataSend=J,exports.MethodExpand=j,exports.MethodIframeReady=z,exports.MethodIframeWillReload="iframe_will_reload",exports.MethodInvokeCustomMethod="web_app_invoke_custom_method",exports.MethodOpenInvoice=K,exports.MethodOpenLink=X,exports.MethodOpenPopup=Y,exports.MethodOpenScanQrPopup=H,exports.MethodOpenTgLink=Z,exports.MethodReadTextFromClipboard=F,exports.MethodReady=ee,exports.MethodRequestPhone=G,exports.MethodRequestTheme=te,exports.MethodRequestViewport=se,exports.MethodRequestWriteAccess=oe,exports.MethodSetBackgroundColor=re,exports.MethodSetHeaderColor=pe,exports.MethodSetupBackButton=ae,exports.MethodSetupClosingBehavior=ne,exports.MethodSetupMainButton=ue,exports.MethodSetupSettingsButton=ie,exports.MethodSwitchInlineQuery=de,exports.MethodTriggerHapticFeedback=_e,exports.NOT_SUPPORTED=r,exports.TG_DESKTOP=o,exports.TG_PHONE=s,exports.TG_WEB=t,exports.bridgeClose=()=>n()?(Q(U),{status:!0}):(W(U,1),{status:r}),exports.bridgeCloseScanQrPopup=u,exports.bridgeDataSend=e=>d()?(Q(J,e),{status:!0}):(W(J,1),{status:r}),exports.bridgeExpand=()=>_()?(Q(j),{status:!0}):(W(j,1),{status:r}),exports.bridgeGetInitData=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return W("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s},exports.bridgeIframeReady=e=>c()?(Q(z,e),{status:!0}):(W(z,1),{status:r}),exports.bridgeIframeWillReload=()=>x()?(Q(z),{status:!0}):(W(z,1),{status:r}),exports.bridgeInvokeCustomMethod=async e=>g()?(void 0===e.req_id&&(e.req_id=a()),Q(l,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),N(xe,o))};L(xe,o)}))):(W(l,1),{status:r}),exports.bridgeOpenInvoice=e=>b()?(Q(K,e),{status:!0}):(W(K,1),{status:r}),exports.bridgeOpenLink=e=>h()?(Q(X,e),{status:!0}):(W(X,1),{status:r}),exports.bridgeOpenPopup=async e=>w()?(e.title.length>64&&W(Y,3),e.message.length<1&&W(Y,4),e.message.length>256&&W(Y,5),e.buttons.length<1&&W(Y,6),e.buttons.length>3&&W(Y,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&W(Y,8),Q(Y,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),N(ge,o)};L(ge,o)}))):(W(Y,1),{status:r}),exports.bridgeOpenScanQrPopup=async e=>m()?(Q(H,e),new Promise(((t,s)=>{V(be,(s=>{e.is_close&&u(),t({status:!0,data:s})})),V(he,(()=>{t({status:"closed"})}))}))):(W(H,1),{status:r}),exports.bridgeOpenTgLink=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),v()?(Q(Z,e),{status:!0}):(W(Z,1),{status:r})),exports.bridgeReadTextFromClipboard=async e=>S()?(void 0===e.req_id&&(e.req_id=a()),Q(F,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),N(ce,o))};L(ce,o)}))):(W(F,1),{status:r}),exports.bridgeReady=()=>f()?(Q(ee),{status:!0}):(W(ee,1),{status:r}),exports.bridgeRequestPhone=async()=>M()?(Q(G),new Promise(((e,t)=>{V(le,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(W(G,1),{status:r}),exports.bridgeRequestTheme=()=>P()?(Q(te),{status:!0}):(W(te,1),{status:r}),exports.bridgeRequestViewport=()=>q()?(Q(se),{status:!0}):(W(se,1),{status:r}),exports.bridgeRequestWriteAccess=()=>R()?(Q(oe),{status:!0}):(W(oe,1),{status:r}),exports.bridgeSetBackgroundColor=e=>k()?(Q(re,e),{status:!0}):(W(re,1),{status:r}),exports.bridgeSetHeaderColor=e=>C()?(Q(pe,e),{status:!0}):(W(pe,1),{status:r}),exports.bridgeSetupBackButton=e=>y()?(Q(ae,e),{status:!0}):(W(ae,1),{status:r}),exports.bridgeSetupClosingBehavior=e=>E()?(Q(ne,e),{status:!0}):(W(ne,1),{status:r}),exports.bridgeSetupMainButton=e=>O()?(Q(ue,e),{status:!0}):(W(ue,1),{status:r}),exports.bridgeSetupSettingsButton=e=>T()?(Q(ie,e),{status:!0}):(W(ie,1),{status:r}),exports.bridgeSwitchInlineQuery=e=>B()?(e.query.length>256&&W(de,9),Q(de,e),{status:!0}):(W(de,1),{status:r}),exports.bridgeTriggerHapticFeedback=e=>I()?(Q(_e,e),{status:!0}):(W(_e,1),{status:r}),exports.createIsViewportChanged=()=>{const[t,s]=e.createSignal({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>s(e);return e.onMount((()=>{L(we,o),Q(se)})),e.onCleanup((()=>{N(we,o)})),t},exports.debug=W,exports.listener=A,exports.sender=Q,exports.supportClose=n,exports.supportCloseScanQrPopup=i,exports.supportDataSend=d,exports.supportExpand=_,exports.supportIframeReady=c,exports.supportIframeWillReload=x,exports.supportInvokeCustomMethod=g,exports.supportOpenInvoice=b,exports.supportOpenLink=h,exports.supportOpenPopup=w,exports.supportOpenScanQrPopup=m,exports.supportOpenTgLink=v,exports.supportReadTextFromClipboard=S,exports.supportReady=f,exports.supportRequestPhone=M,exports.supportRequestTheme=P,exports.supportRequestViewport=q,exports.supportRequestWriteAccess=R,exports.supportSetBackgroundColor=k,exports.supportSetHeaderColor=C,exports.supportSetupBackButton=y,exports.supportSetupClosingBehavior=E,exports.supportSetupMainButton=O,exports.supportSetupSettingsButton=T,exports.supportSwitchInlineQuery=B,exports.supportTriggerHapticFeedback=I;
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,n]=e({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>n(e);return t((()=>{be(st,o),de(Ie)})),s((()=>{le(st,o)})),a},n="web",o="phone",r="desktop",i="not_supported",_=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s)>=e&&-1!==t.indexOf((()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?o:["tdesktop","macos"].includes(t)?r:n})())},p=()=>Math.random().toString(36).substring(3,9),u=()=>d()?(de(qe),{status:!0}):(pe(qe,1),{status:i}),d=()=>_(0,[n,r,o]),c=()=>b()?(de(ye),{status:!0}):(pe(ye,1),{status:i}),b=()=>_(6.4,[o]),l=e=>g()?(de(xe,e),{status:!0}):(pe(xe,1),{status:i}),g=()=>_(0,[n,r,o]),w=()=>m()?(de(Se),{status:!0}):(pe(Se,1),{status:i}),m=()=>_(0,[o]),h=e=>f()?(de(ke,e),{status:!0}):(pe(ke,1),{status:i}),f=()=>_(0,[n]),v=()=>q()?(de(ke),{status:!0}):(pe(ke,1),{status:i}),q=()=>_(0,[n]),y="web_app_invoke_custom_method",x=async e=>S()?(void 0===e.req_id&&(e.req_id=p()),de(y,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),le(Qe,a))};be(Qe,a)}))):(pe(y,1),{status:i}),S=()=>_(6.9,[n,r,o]),k=e=>P()?(de(Oe,e),{status:!0}):(pe(Oe,1),{status:i}),P=()=>_(6.1,[n,r,o]),O=e=>R()?(de(Re,e),{status:!0}):(pe(Re,1),{status:i}),R=()=>_(6.4,[n,r,o]),T=async e=>E()?(e.title.length>64&&pe(Te,3),e.message.length<1&&pe(Te,4),e.message.length>256&&pe(Te,5),e.buttons.length<1&&pe(Te,6),e.buttons.length>3&&pe(Te,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&pe(Te,8),de(Te,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),le(ze,a)};be(ze,a)}))):(pe(Te,1),{status:i}),E=()=>_(6.2,[n,r,o]),W=async e=>C()?(de(he,e),new Promise(((t,s)=>{ge(Xe,(s=>{e.is_close&&c(),t({status:!0,data:s})})),ge(Ye,(()=>{t({status:"closed"})}))}))):(pe(he,1),{status:i}),C=()=>_(6.4,[o]),I=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),B()?(de(Ee,e),{status:!0}):(pe(Ee,1),{status:i})),B=()=>_(7,[n,r,o]),D=async e=>L()?(void 0===e.req_id&&(e.req_id=p()),de(fe,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),le(Je,a))};be(Je,a)}))):(pe(fe,1),{status:i}),L=()=>_(6.4,[n,r,o]),N=()=>A()?(de(We),{status:!0}):(pe(We,1),{status:i}),A=()=>_(6.9,[n,r,o]),M=async()=>U()?(de(ve),new Promise(((e,t)=>{ge(He,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(pe(ve,1),{status:i}),U=()=>_(6.9,[n,r,o]),V=()=>$()?(de(Ce),{status:!0}):(pe(Ce,1),{status:i}),$=()=>_(0,[n,r,o]),G=()=>J()?(de(Ie),{status:!0}):(pe(Ie,1),{status:i}),J=()=>_(0,[n,r,o]),Q=()=>j()?(de(Be),{status:!0}):(pe(Be,1),{status:i}),j=()=>_(6.9,[n,r,o]),F=e=>H()?(de(De,e),{status:!0}):(pe(De,1),{status:i}),H=()=>_(6.1,[n,r,o]),z=e=>K()?(de(Le,e),{status:!0}):(pe(Le,1),{status:i}),K=()=>_(6.1,[n,r,o]),X=e=>Y()?(de(Ne,e),{status:!0}):(pe(Ne,1),{status:i}),Y=()=>_(6.1,[n,r,o]),Z=e=>ee()?(de(Ae,e),{status:!0}):(pe(Ae,1),{status:i}),ee=()=>_(0,[n,r,o]),te=e=>se()?(de(Me,e),{status:!0}):(pe(Me,1),{status:i}),se=()=>_(0,[n,r,o]),ae=e=>ne()?(de(Ue,e),{status:!0}):(pe(Ue,1),{status:i}),ne=()=>_(6.1,[n,r,o]),oe=e=>re()?(e.query.length>256&&pe(Ve,9),de(Ve,e),{status:!0}):(pe(Ve,1),{status:i}),re=()=>_(6.7,[n,r,o]),ie=e=>_e()?(de($e,e),{status:!0}):(pe($e,1),{status:i}),_e=()=>_(6.1,[o]);var pe=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const ue=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return pe("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s};var de=(e,t)=>{window.TelegramWebviewProxy?window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t)):window.external&&"notify"in window.external&&window.external.notify(JSON.stringify({eventType:e,eventData:t}))};const ce=((e=new Map)=>({once:(t,s,a=e.get(t),n=(e=>{s(e),a&&a.splice(a.indexOf(s)>>>0,1)}))=>a?a.push(n):e.set(t,[n]),on:(t,s,a=e.get(t))=>a?a.push(s):e.set(t,[s]),off:(t,s,a=e.get(t))=>a&&s?a.splice(a.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,a=e.get(t)||[])=>{for(const e of a)e(s)}}))();(()=>{function e(e,t){ce.emit(e,t),ce.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const be=(e,t)=>{ce.on(e,t)},le=(e,t)=>{ce.off(e,t)},ge=(e,t)=>{ce.once(e,t)};var we=Object.freeze({__proto__:null,off:le,on:be,once:ge});const me="web_app_invoke_custom_method",he="web_app_open_scan_qr_popup",fe="web_app_read_text_from_clipboard",ve="web_app_request_phone",qe="web_app_close",ye="web_app_close_scan_qr_popup",xe="web_app_data_send",Se="web_app_expand",ke="iframe_ready",Pe="iframe_will_reload",Oe="web_app_open_invoice",Re="web_app_open_link",Te="web_app_open_popup",Ee="web_app_open_tg_link",We="web_app_ready",Ce="web_app_request_theme",Ie="web_app_request_viewport",Be="web_app_request_write_access",De="web_app_set_background_color",Le="web_app_set_header_color",Ne="web_app_setup_back_button",Ae="web_app_setup_closing_behavior",Me="web_app_setup_main_button",Ue="web_app_setup_settings_button",Ve="web_app_switch_inline_query",$e="web_app_trigger_haptic_feedback",Ge="back_button_pressed",Je="clipboard_text_received",Qe="custom_method_invoked",je="invoice_closed",Fe="main_button_pressed",He="phone_requested",ze="popup_closed",Ke="reload_iframe",Xe="qr_text_received",Ye="scan_qr_popup_closed",Ze="set_custom_style",et="settings_button_pressed",tt="theme_changed",st="viewport_changed",at="write_access_requested";export{Ge as EventBackButtonPressed,Je as EventClipboardTextReceived,Qe as EventCustomMethodInvoked,je as EventInvoiceClosed,Fe as EventMainButtonPressed,He as EventPhoneRequested,ze as EventPopupClosed,Xe as EventQrTextReceived,Ke as EventReloadIframe,Ye as EventScanQrPopupClosed,Ze as EventSetCustomStyle,et as EventSettingsButtonPressed,tt as EventThemeChanged,st as EventViewportChanged,at as EventWriteAccessRequested,qe as MethodClose,ye as MethodCloseScanQrPopup,xe as MethodDataSend,Se as MethodExpand,ke as MethodIframeReady,Pe as MethodIframeWillReload,me as MethodInvokeCustomMethod,Oe as MethodOpenInvoice,Re as MethodOpenLink,Te as MethodOpenPopup,he as MethodOpenScanQrPopup,Ee as MethodOpenTgLink,fe as MethodReadTextFromClipboard,We as MethodReady,ve as MethodRequestPhone,Ce as MethodRequestTheme,Ie as MethodRequestViewport,Be as MethodRequestWriteAccess,De as MethodSetBackgroundColor,Le as MethodSetHeaderColor,Ne as MethodSetupBackButton,Ae as MethodSetupClosingBehavior,Me as MethodSetupMainButton,Ue as MethodSetupSettingsButton,Ve as MethodSwitchInlineQuery,$e as MethodTriggerHapticFeedback,i as NOT_SUPPORTED,r as TG_DESKTOP,o as TG_PHONE,n as TG_WEB,u as bridgeClose,c as bridgeCloseScanQrPopup,l as bridgeDataSend,w as bridgeExpand,ue as bridgeGetInitData,h as bridgeIframeReady,v as bridgeIframeWillReload,x as bridgeInvokeCustomMethod,k as bridgeOpenInvoice,O as bridgeOpenLink,T as bridgeOpenPopup,W as bridgeOpenScanQrPopup,I as bridgeOpenTgLink,D as bridgeReadTextFromClipboard,N as bridgeReady,M as bridgeRequestPhone,V as bridgeRequestTheme,G as bridgeRequestViewport,Q as bridgeRequestWriteAccess,F as bridgeSetBackgroundColor,z as bridgeSetHeaderColor,X as bridgeSetupBackButton,Z as bridgeSetupClosingBehavior,te as bridgeSetupMainButton,ae as bridgeSetupSettingsButton,oe as bridgeSwitchInlineQuery,ie as bridgeTriggerHapticFeedback,a as createIsViewportChanged,pe as debug,we as listener,de as sender,d as supportClose,b as supportCloseScanQrPopup,g as supportDataSend,m as supportExpand,f as supportIframeReady,q as supportIframeWillReload,S as supportInvokeCustomMethod,P as supportOpenInvoice,R as supportOpenLink,E as supportOpenPopup,C as supportOpenScanQrPopup,B as supportOpenTgLink,L as supportReadTextFromClipboard,A as supportReady,U as supportRequestPhone,$ as supportRequestTheme,J as supportRequestViewport,j as supportRequestWriteAccess,H as supportSetBackgroundColor,K as supportSetHeaderColor,Y as supportSetupBackButton,ee as supportSetupClosingBehavior,se as supportSetupMainButton,ne as supportSetupSettingsButton,re as supportSwitchInlineQuery,_e as supportTriggerHapticFeedback};
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": "twa_sdk",
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
  }