@apiteam/twa-bridge 7.0.0-beta.7 → 7.0.0-beta.9

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