@apiteam/twa-bridge 7.1.12 → 7.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apiteam/twa-bridge",
3
- "version": "7.1.12",
3
+ "version": "7.1.13",
4
4
  "description": "Telegram bridge",
5
5
  "license": "MIT",
6
6
  "types": "index.ts",
package/solid/index.d.ts CHANGED
@@ -250,7 +250,7 @@ type ThemeParams = {
250
250
  subtitle_text_color: string;
251
251
  destructive_text_color: string;
252
252
  };
253
- declare const getThemeParams: (theme_params: ThemeParams) => Record<string, string>;
253
+ declare const getThemeParams: (theme_params?: ThemeParams) => ThemeParams;
254
254
 
255
255
  type Sender = (eventType: string, eventData?: any) => void;
256
256
  declare const sender: Sender;
@@ -470,6 +470,8 @@ declare namespace listener {
470
470
  export { type listener_EventsData as EventsData, listener_off as off, listener_on as on, listener_once as once };
471
471
  }
472
472
 
473
+ declare const getAppData: () => string | null;
474
+
473
475
  type Value = {
474
476
  viewport?: EventsData[typeof EventViewportChanged] & {
475
477
  safe_area_bottom: number;
@@ -498,4 +500,4 @@ declare const EventThemeChanged = "theme_changed";
498
500
  declare const EventViewportChanged = "viewport_changed";
499
501
  declare const EventWriteAccessRequested = "write_access_requested";
500
502
 
501
- export { ContextTwa, EventBackButtonPressed, EventClipboardTextReceived, EventCustomMethodInvoked, EventInvoiceClosed, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventQrTextReceived, EventReloadIframe, EventScanQrPopupClosed, EventSetCustomStyle, EventSettingsButtonPressed, EventThemeChanged, EventViewportChanged, EventWriteAccessRequested, type EventsData, type GetInitData, MethodClose, MethodCloseScanQrPopup, MethodDataSend, MethodExpand, MethodIframeReady, MethodIframeWillReload, MethodInvokeCustomMethod, MethodOpenInvoice, MethodOpenLink, MethodOpenPopup, MethodOpenScanQrPopup, MethodOpenTgLink, MethodReadTextFromClipboard, MethodReady, MethodRequestPhone, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSetBackgroundColor, MethodSetBottomBarColor, MethodSetHeaderColor, MethodSetupBackButton, MethodSetupClosingBehavior, MethodSetupMainButton, MethodSetupSettingsButton, MethodSetupSwipeBehavior, MethodSwitchInlineQuery, MethodTriggerHapticFeedback, NOT_SUPPORTED, type PopupButton, ProviderTWA, type SenderData, TG_DESKTOP, TG_PHONE, TG_WEB, type ThemeParams, close as bridgeClose, closeScanQrPopup as bridgeCloseScanQrPopup, dataSend as bridgeDataSend, expand as bridgeExpand, getInitData as bridgeGetInitData, getThemeParams as bridgeGetThemeParams, 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, sender as bridgeSend, sessionStorageGet as bridgeSessionStorageGet, sessionStorageSet as bridgeSessionStorageSet, setBackgroundColor as bridgeSetBackgroundColor, setBottomBarColor as bridgeSetBottomBarColor, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupMainButton as bridgeSetupMainButton, setupSettingsButton as bridgeSetupSettingsButton, setupSwipeBehavior as bridgeSetupSwipeBehavior, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, createIsViewportChanged, debug, getPlatform, listener, sender, supportClose, supportCloseScanQrPopup, supportDataSend, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestPhone, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSessionStorageGet, supportSessionStorageSet, supportSetBackgroundColor, supportSetBottomBarColor, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupMainButton, supportSetupSettingsButton, supportSetupSwipeBehavior, supportSwitchInlineQuery, supportTriggerHapticFeedback };
503
+ export { ContextTwa, EventBackButtonPressed, EventClipboardTextReceived, EventCustomMethodInvoked, EventInvoiceClosed, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventQrTextReceived, EventReloadIframe, EventScanQrPopupClosed, EventSetCustomStyle, EventSettingsButtonPressed, EventThemeChanged, EventViewportChanged, EventWriteAccessRequested, type EventsData, type GetInitData, MethodClose, MethodCloseScanQrPopup, MethodDataSend, MethodExpand, MethodIframeReady, MethodIframeWillReload, MethodInvokeCustomMethod, MethodOpenInvoice, MethodOpenLink, MethodOpenPopup, MethodOpenScanQrPopup, MethodOpenTgLink, MethodReadTextFromClipboard, MethodReady, MethodRequestPhone, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSetBackgroundColor, MethodSetBottomBarColor, MethodSetHeaderColor, MethodSetupBackButton, MethodSetupClosingBehavior, MethodSetupMainButton, MethodSetupSettingsButton, MethodSetupSwipeBehavior, MethodSwitchInlineQuery, MethodTriggerHapticFeedback, NOT_SUPPORTED, type PopupButton, ProviderTWA, type SenderData, TG_DESKTOP, TG_PHONE, TG_WEB, type ThemeParams, close as bridgeClose, closeScanQrPopup as bridgeCloseScanQrPopup, dataSend as bridgeDataSend, expand as bridgeExpand, getInitData as bridgeGetInitData, getThemeParams as bridgeGetThemeParams, 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, sender as bridgeSend, sessionStorageGet as bridgeSessionStorageGet, sessionStorageSet as bridgeSessionStorageSet, setBackgroundColor as bridgeSetBackgroundColor, setBottomBarColor as bridgeSetBottomBarColor, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupMainButton as bridgeSetupMainButton, setupSettingsButton as bridgeSetupSettingsButton, setupSwipeBehavior as bridgeSetupSwipeBehavior, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, createIsViewportChanged, debug, getAppData, getPlatform, listener, sender, supportClose, supportCloseScanQrPopup, supportDataSend, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestPhone, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSessionStorageGet, supportSessionStorageSet, supportSetBackgroundColor, supportSetBottomBarColor, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupMainButton, supportSetupSettingsButton, supportSetupSwipeBehavior, supportSwitchInlineQuery, supportTriggerHapticFeedback };
package/solid/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("solid-js"),t=require("solid-js/store");const s="web",o="phone",r="desktop",p=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?o:["tdesktop","macos"].includes(t)?r:s},a="not_supported",n=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(p())},i=()=>Math.random().toString(36).substring(3,9),u=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),o=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((o<16?"0":"")+o.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},d=e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var o=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r of Object.keys(e)){var p=u(e[r]);"string"==typeof p&&(o[r]=p)}return o},_=e=>c()?(le(ve,e),{status:!0}):(xe(ve,1),{status:a}),c=()=>n(0,[s,r,o]),x=e=>g()?(le(Se,e),{status:!0}):(xe(Se,1),{status:a}),g=()=>n(6.4,[o]),l=e=>h()?(le(fe,e),{status:!0}):(xe(fe,1),{status:a}),h=()=>n(0,[s,r,o]),b=e=>w()?(le(ye,e),{status:!0}):(xe(ye,1),{status:a}),w=()=>n(0,[o]),m=e=>v()?(le(Pe,e),{status:!0}):(xe(Pe,1),{status:a}),v=()=>n(0,[s]),S=()=>f()?(le(Pe),{status:!0}):(xe(Pe,1),{status:a}),f=()=>n(0,[s]),y=async e=>P()?(void 0===e.req_id&&(e.req_id=i()),le(he,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),et($e,o))};Ze($e,o)}))):(xe(he,1),{status:a}),P=()=>n(6.9,[s,r,o]),M=e=>C()?(le(Ce,e),{status:!0}):(xe(Ce,1),{status:a}),C=()=>n(6.1,[s,r,o]),q=e=>k()?(le(qe,e),{status:!0}):(xe(qe,1),{status:a}),k=()=>n(6.4,[s,r,o]),R=async e=>B()?(e.title.length>64&&xe(ke,3),e.message.length<1&&xe(ke,4),e.message.length>256&&xe(ke,5),e.buttons.length<1&&xe(ke,6),e.buttons.length>3&&xe(ke,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&xe(ke,8),le(ke,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),et(Fe,o)};Ze(Fe,o)}))):(xe(ke,1),{status:a}),B=()=>n(6.2,[s,r,o]),O=async e=>T()?(le(be,e),new Promise(((t,s)=>{tt(Ue,(s=>{e.is_close&&x(),t({status:!0,data:s})})),tt(ze,(()=>{t({status:"closed"})}))}))):(xe(be,1),{status:a}),T=()=>n(6.4,[o]),E=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),I()?(le(Re,e),{status:!0}):(xe(Re,1),{status:a})),I=()=>n(7,[s,r,o]),W=async e=>L()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=i()),le(we,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),et(Je,o))};Ze(Je,o)}))):(xe(we,1),{status:a}),L=()=>n(6.4,[s,r,o]),N=e=>D()?(le(Be,e),{status:!0}):(xe(Be,1),{status:a}),D=()=>n(6.9,[s,r,o]),Q=async()=>A()?(le(me),new Promise(((e,t)=>{tt(je,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(xe(me,1),{status:a}),A=()=>n(6.9,[s,r,o]),G=e=>H()?(le(Oe,e),{status:!0}):(xe(Oe,1),{status:a}),H=()=>n(0,[s,r,o]),V=e=>J()?(le(Te,e),{status:!0}):(xe(Te,1),{status:a}),J=()=>n(0,[s,r,o]),$=()=>j()?(le(Ee),{status:!0}):(xe(Ee,1),{status:a}),j=()=>n(6.9,[s,r,o]),F=e=>U()?(le(Ie,e),{status:!0}):(xe(Ie,1),{status:a}),U=()=>n(6.1,[s,r,o]),z=e=>K()?(le(We,e),{status:!0}):(xe(We,1),{status:a}),K=()=>n(6.1,[s,r,o]),X=e=>Y()?(le(Le,{color:e?.color||e?.color_key}),{status:!0}):(xe(Le,1),{status:a}),Y=()=>n(710,[s,r,o]),Z=e=>ee()?(le(Ne,e),{status:!0}):(xe(Ne,1),{status:a}),ee=()=>n(6.1,[s,r,o]),te=e=>se()?(le(De,e),{status:!0}):(xe(De,1),{status:a}),se=()=>n(0,[s,r,o]),oe=e=>re()?(le(Qe,e),{status:!0}):(xe(Qe,1),{status:a}),re=()=>n(0,[s,r,o]),pe=e=>ae()?(le(Ae,e),{status:!0}):(xe(Ae,1),{status:a}),ae=()=>n(6.1,[s,r,o]),ne=e=>ie()?(e.query.length>256&&xe(Ge,9),le(Ge,e),{status:!0}):(xe(Ge,1),{status:a}),ie=()=>n(6.7,[s,r,o]),ue=e=>de()?(le(He,e),{status:!0}):(xe(He,1),{status:a}),de=()=>n(6.1,[o]),_e=e=>ce()?(le(Ve,e),{status:!0}):(xe(Ve,1),{status:a}),ce=()=>n(7.7,[s,r,o]);var xe=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const ge=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void xe("getInitData",2);const s=new URLSearchParams(t);let o={};return s.forEach(((e,t)=>{if(o[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{o[t]=JSON.parse(e)}catch{}})),o};var le=(e,t)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:e,eventData:t}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:e,eventData:t}),"*")}catch(e){xe("postMessage Iframe",10)}};const he="web_app_invoke_custom_method",be="web_app_open_scan_qr_popup",we="web_app_read_text_from_clipboard",me="web_app_request_phone",ve="web_app_close",Se="web_app_close_scan_qr_popup",fe="web_app_data_send",ye="web_app_expand",Pe="iframe_ready",Me="iframe_will_reload",Ce="web_app_open_invoice",qe="web_app_open_link",ke="web_app_open_popup",Re="web_app_open_tg_link",Be="web_app_ready",Oe="web_app_request_theme",Te="web_app_request_viewport",Ee="web_app_request_write_access",Ie="web_app_set_background_color",We="web_app_set_header_color",Le="web_app_set_bottom_bar_color",Ne="web_app_setup_back_button",De="web_app_setup_closing_behavior",Qe="web_app_setup_main_button",Ae="web_app_setup_settings_button",Ge="web_app_switch_inline_query",He="web_app_trigger_haptic_feedback",Ve="web_app_setup_swipe_behavior";const Je="clipboard_text_received",$e="custom_method_invoked",je="phone_requested",Fe="popup_closed",Ue="qr_text_received",ze="scan_qr_popup_closed",Ke="theme_changed",Xe="viewport_changed",Ye=((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===Ke&&(t.theme_params=d(t.theme_params)),Ye.emit(e,t),Ye.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Ze=(e,t)=>{Ye.on(e,t)},et=(e,t)=>{Ye.off(e,t)},tt=(e,t)=>{Ye.once(e,t)};var st=Object.freeze({__proto__:null,off:et,on:Ze,once:tt});const ot=e.createContext({viewport:void 0,theme:void 0,init:void 0});exports.ContextTwa=ot,exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=Je,exports.EventCustomMethodInvoked=$e,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=je,exports.EventPopupClosed=Fe,exports.EventQrTextReceived=Ue,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=ze,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=Ke,exports.EventViewportChanged=Xe,exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=ve,exports.MethodCloseScanQrPopup=Se,exports.MethodDataSend=fe,exports.MethodExpand=ye,exports.MethodIframeReady=Pe,exports.MethodIframeWillReload=Me,exports.MethodInvokeCustomMethod=he,exports.MethodOpenInvoice=Ce,exports.MethodOpenLink=qe,exports.MethodOpenPopup=ke,exports.MethodOpenScanQrPopup=be,exports.MethodOpenTgLink=Re,exports.MethodReadTextFromClipboard=we,exports.MethodReady=Be,exports.MethodRequestPhone=me,exports.MethodRequestTheme=Oe,exports.MethodRequestViewport=Te,exports.MethodRequestWriteAccess=Ee,exports.MethodSetBackgroundColor=Ie,exports.MethodSetBottomBarColor=Le,exports.MethodSetHeaderColor=We,exports.MethodSetupBackButton=Ne,exports.MethodSetupClosingBehavior=De,exports.MethodSetupMainButton=Qe,exports.MethodSetupSettingsButton=Ae,exports.MethodSetupSwipeBehavior=Ve,exports.MethodSwitchInlineQuery=Ge,exports.MethodTriggerHapticFeedback=He,exports.NOT_SUPPORTED=a,exports.ProviderTWA=s=>{const[o,r]=t.createStore({viewport:void 0,theme:void 0,init:void 0});return e.createEffect((()=>{const t=()=>{r("init",ge())};t();const s=e=>{t(),r("viewport",{...e,safe_area_bottom:e.is_expanded&&e.is_state_stable?window.outerHeight-e.height:0})};Ze(Xe,s),V();const o=e=>{t(),r("theme",e)};return Ze(Ke,o),V(),e.onCleanup((()=>{et(Xe,s),et(Ke,o)})),()=>{et(Xe,s),et(Ke,o)}})),ot.Provider({value:o,children:s.children})},exports.TG_DESKTOP=r,exports.TG_PHONE=o,exports.TG_WEB=s,exports.bridgeClose=_,exports.bridgeCloseScanQrPopup=x,exports.bridgeDataSend=l,exports.bridgeExpand=b,exports.bridgeGetInitData=ge,exports.bridgeGetThemeParams=d,exports.bridgeIframeReady=m,exports.bridgeIframeWillReload=S,exports.bridgeInvokeCustomMethod=y,exports.bridgeOpenInvoice=M,exports.bridgeOpenLink=q,exports.bridgeOpenPopup=R,exports.bridgeOpenScanQrPopup=O,exports.bridgeOpenTgLink=E,exports.bridgeReadTextFromClipboard=W,exports.bridgeReady=N,exports.bridgeRequestPhone=Q,exports.bridgeRequestTheme=G,exports.bridgeRequestViewport=V,exports.bridgeRequestWriteAccess=$,exports.bridgeSend=le,exports.bridgeSessionStorageGet=({key:e})=>{try{return{is_json:!0,value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(t){return{is_json:!1,value:window.sessionStorage.getItem("__telegram__"+e)??"",status:!0}}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(s){return window.sessionStorage.setItem("__telegram__"+e,t),{status:!0}}},exports.bridgeSetBackgroundColor=F,exports.bridgeSetBottomBarColor=X,exports.bridgeSetHeaderColor=z,exports.bridgeSetupBackButton=Z,exports.bridgeSetupClosingBehavior=te,exports.bridgeSetupMainButton=oe,exports.bridgeSetupSettingsButton=pe,exports.bridgeSetupSwipeBehavior=_e,exports.bridgeSwitchInlineQuery=ne,exports.bridgeTriggerHapticFeedback=ue,exports.createIsViewportChanged=()=>{const[t,s]=e.createSignal({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>s(e);return e.onMount((()=>{Ze(Xe,o),le(Te)})),e.onCleanup((()=>{et(Xe,o)})),t},exports.debug=xe,exports.getPlatform=p,exports.listener=st,exports.sender=le,exports.supportClose=c,exports.supportCloseScanQrPopup=g,exports.supportDataSend=h,exports.supportExpand=w,exports.supportIframeReady=v,exports.supportIframeWillReload=f,exports.supportInvokeCustomMethod=P,exports.supportOpenInvoice=C,exports.supportOpenLink=k,exports.supportOpenPopup=B,exports.supportOpenScanQrPopup=T,exports.supportOpenTgLink=I,exports.supportReadTextFromClipboard=L,exports.supportReady=D,exports.supportRequestPhone=A,exports.supportRequestTheme=H,exports.supportRequestViewport=J,exports.supportRequestWriteAccess=j,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=U,exports.supportSetBottomBarColor=Y,exports.supportSetHeaderColor=K,exports.supportSetupBackButton=ee,exports.supportSetupClosingBehavior=se,exports.supportSetupMainButton=re,exports.supportSetupSettingsButton=ae,exports.supportSetupSwipeBehavior=ce,exports.supportSwitchInlineQuery=ie,exports.supportTriggerHapticFeedback=de;
1
+ "use strict";var e=require("solid-js"),t=require("solid-js/store");const s="web",o="phone",r="desktop",p=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?o:["tdesktop","macos"].includes(t)?r:s},a="not_supported",n=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(p())},i=()=>Math.random().toString(36).substring(3,9),u=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),o=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((o<16?"0":"")+o.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},d=e=>{const t=window.location.hash.slice(1),s=new URLSearchParams(t),o=JSON.parse(s.get("tgWebAppThemeParams")??""),r=e||o;for(var p of Object.keys(r)){var a=u(r[p]);"string"==typeof a&&(r[p]=a)}return"#1c1c1d"==r?.bg_color&&r?.bg_color==r?.secondary_bg_color&&(r.secondary_bg_color="#2c2c2e"),r},_=e=>c()?(le(ve,e),{status:!0}):(xe(ve,1),{status:a}),c=()=>n(0,[s,r,o]),x=e=>g()?(le(Se,e),{status:!0}):(xe(Se,1),{status:a}),g=()=>n(6.4,[o]),l=e=>h()?(le(fe,e),{status:!0}):(xe(fe,1),{status:a}),h=()=>n(0,[s,r,o]),b=e=>w()?(le(ye,e),{status:!0}):(xe(ye,1),{status:a}),w=()=>n(0,[o]),m=e=>v()?(le(Pe,e),{status:!0}):(xe(Pe,1),{status:a}),v=()=>n(0,[s]),S=()=>f()?(le(Pe),{status:!0}):(xe(Pe,1),{status:a}),f=()=>n(0,[s]),y=async e=>P()?(void 0===e.req_id&&(e.req_id=i()),le(he,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),et(Ue,o))};Ze(Ue,o)}))):(xe(he,1),{status:a}),P=()=>n(6.9,[s,r,o]),M=e=>C()?(le(Ce,e),{status:!0}):(xe(Ce,1),{status:a}),C=()=>n(6.1,[s,r,o]),q=e=>R()?(le(qe,e),{status:!0}):(xe(qe,1),{status:a}),R=()=>n(6.4,[s,r,o]),k=async e=>B()?(e.title.length>64&&xe(Re,3),e.message.length<1&&xe(Re,4),e.message.length>256&&xe(Re,5),e.buttons.length<1&&xe(Re,6),e.buttons.length>3&&xe(Re,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&xe(Re,8),le(Re,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),et(je,o)};Ze(je,o)}))):(xe(Re,1),{status:a}),B=()=>n(6.2,[s,r,o]),O=async e=>T()?(le(be,e),new Promise(((t,s)=>{tt(Fe,(s=>{e.is_close&&x(),t({status:!0,data:s})})),tt(ze,(()=>{t({status:"closed"})}))}))):(xe(be,1),{status:a}),T=()=>n(6.4,[o]),E=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),I()?(le(ke,e),{status:!0}):(xe(ke,1),{status:a})),I=()=>n(7,[s,r,o]),W=async e=>L()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=i()),le(we,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),et(Je,o))};Ze(Je,o)}))):(xe(we,1),{status:a}),L=()=>n(6.4,[s,r,o]),D=e=>N()?(le(Be,e),{status:!0}):(xe(Be,1),{status:a}),N=()=>n(6.9,[s,r,o]),A=async()=>Q()?(le(me),new Promise(((e,t)=>{tt($e,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(xe(me,1),{status:a}),Q=()=>n(6.9,[s,r,o]),G=e=>H()?(le(Oe,e),{status:!0}):(xe(Oe,1),{status:a}),H=()=>n(0,[s,r,o]),V=e=>J()?(le(Te,e),{status:!0}):(xe(Te,1),{status:a}),J=()=>n(0,[s,r,o]),U=()=>$()?(le(Ee),{status:!0}):(xe(Ee,1),{status:a}),$=()=>n(6.9,[s,r,o]),j=e=>F()?(le(Ie,e),{status:!0}):(xe(Ie,1),{status:a}),F=()=>n(6.1,[s,r,o]),z=e=>K()?(le(We,e),{status:!0}):(xe(We,1),{status:a}),K=()=>n(6.1,[s,r,o]),X=e=>Y()?(le(Le,{color:e?.color||e?.color_key}),{status:!0}):(xe(Le,1),{status:a}),Y=()=>n(710,[s,r,o]),Z=e=>ee()?(le(De,e),{status:!0}):(xe(De,1),{status:a}),ee=()=>n(6.1,[s,r,o]),te=e=>se()?(le(Ne,e),{status:!0}):(xe(Ne,1),{status:a}),se=()=>n(0,[s,r,o]),oe=e=>re()?(le(Ae,e),{status:!0}):(xe(Ae,1),{status:a}),re=()=>n(0,[s,r,o]),pe=e=>ae()?(le(Qe,e),{status:!0}):(xe(Qe,1),{status:a}),ae=()=>n(6.1,[s,r,o]),ne=e=>ie()?(e.query.length>256&&xe(Ge,9),le(Ge,e),{status:!0}):(xe(Ge,1),{status:a}),ie=()=>n(6.7,[s,r,o]),ue=e=>de()?(le(He,e),{status:!0}):(xe(He,1),{status:a}),de=()=>n(6.1,[o]),_e=e=>ce()?(le(Ve,e),{status:!0}):(xe(Ve,1),{status:a}),ce=()=>n(7.7,[s,r,o]);var xe=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const ge=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void xe("getInitData",2);const s=new URLSearchParams(t);let o={};return s.forEach(((e,t)=>{if(o[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{o[t]=JSON.parse(e)}catch{}})),o};var le=(e,t)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:e,eventData:t}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:e,eventData:t}),"*")}catch(e){xe("postMessage Iframe",10)}};const he="web_app_invoke_custom_method",be="web_app_open_scan_qr_popup",we="web_app_read_text_from_clipboard",me="web_app_request_phone",ve="web_app_close",Se="web_app_close_scan_qr_popup",fe="web_app_data_send",ye="web_app_expand",Pe="iframe_ready",Me="iframe_will_reload",Ce="web_app_open_invoice",qe="web_app_open_link",Re="web_app_open_popup",ke="web_app_open_tg_link",Be="web_app_ready",Oe="web_app_request_theme",Te="web_app_request_viewport",Ee="web_app_request_write_access",Ie="web_app_set_background_color",We="web_app_set_header_color",Le="web_app_set_bottom_bar_color",De="web_app_setup_back_button",Ne="web_app_setup_closing_behavior",Ae="web_app_setup_main_button",Qe="web_app_setup_settings_button",Ge="web_app_switch_inline_query",He="web_app_trigger_haptic_feedback",Ve="web_app_setup_swipe_behavior";const Je="clipboard_text_received",Ue="custom_method_invoked",$e="phone_requested",je="popup_closed",Fe="qr_text_received",ze="scan_qr_popup_closed",Ke="theme_changed",Xe="viewport_changed",Ye=((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===Ke&&(t.theme_params=d(t.theme_params)),Ye.emit(e,t),Ye.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Ze=(e,t)=>{Ye.on(e,t)},et=(e,t)=>{Ye.off(e,t)},tt=(e,t)=>{Ye.once(e,t)};var st=Object.freeze({__proto__:null,off:et,on:Ze,once:tt});const ot=e.createContext({viewport:void 0,theme:void 0,init:void 0});exports.ContextTwa=ot,exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=Je,exports.EventCustomMethodInvoked=Ue,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=$e,exports.EventPopupClosed=je,exports.EventQrTextReceived=Fe,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=ze,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=Ke,exports.EventViewportChanged=Xe,exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=ve,exports.MethodCloseScanQrPopup=Se,exports.MethodDataSend=fe,exports.MethodExpand=ye,exports.MethodIframeReady=Pe,exports.MethodIframeWillReload=Me,exports.MethodInvokeCustomMethod=he,exports.MethodOpenInvoice=Ce,exports.MethodOpenLink=qe,exports.MethodOpenPopup=Re,exports.MethodOpenScanQrPopup=be,exports.MethodOpenTgLink=ke,exports.MethodReadTextFromClipboard=we,exports.MethodReady=Be,exports.MethodRequestPhone=me,exports.MethodRequestTheme=Oe,exports.MethodRequestViewport=Te,exports.MethodRequestWriteAccess=Ee,exports.MethodSetBackgroundColor=Ie,exports.MethodSetBottomBarColor=Le,exports.MethodSetHeaderColor=We,exports.MethodSetupBackButton=De,exports.MethodSetupClosingBehavior=Ne,exports.MethodSetupMainButton=Ae,exports.MethodSetupSettingsButton=Qe,exports.MethodSetupSwipeBehavior=Ve,exports.MethodSwitchInlineQuery=Ge,exports.MethodTriggerHapticFeedback=He,exports.NOT_SUPPORTED=a,exports.ProviderTWA=s=>{const[o,r]=t.createStore({viewport:void 0,theme:void 0,init:void 0});return e.createEffect((()=>{const t=()=>{r("init",ge())};t();const s=e=>{t(),r("viewport",{...e,safe_area_bottom:e.is_expanded&&e.is_state_stable?window.outerHeight-e.height:0})};Ze(Xe,s),V();const o=e=>{t(),r("theme",e)};return Ze(Ke,o),V(),e.onCleanup((()=>{et(Xe,s),et(Ke,o)})),()=>{et(Xe,s),et(Ke,o)}})),ot.Provider({value:o,children:s.children})},exports.TG_DESKTOP=r,exports.TG_PHONE=o,exports.TG_WEB=s,exports.bridgeClose=_,exports.bridgeCloseScanQrPopup=x,exports.bridgeDataSend=l,exports.bridgeExpand=b,exports.bridgeGetInitData=ge,exports.bridgeGetThemeParams=d,exports.bridgeIframeReady=m,exports.bridgeIframeWillReload=S,exports.bridgeInvokeCustomMethod=y,exports.bridgeOpenInvoice=M,exports.bridgeOpenLink=q,exports.bridgeOpenPopup=k,exports.bridgeOpenScanQrPopup=O,exports.bridgeOpenTgLink=E,exports.bridgeReadTextFromClipboard=W,exports.bridgeReady=D,exports.bridgeRequestPhone=A,exports.bridgeRequestTheme=G,exports.bridgeRequestViewport=V,exports.bridgeRequestWriteAccess=U,exports.bridgeSend=le,exports.bridgeSessionStorageGet=({key:e})=>{try{return{is_json:!0,value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(t){return{is_json:!1,value:window.sessionStorage.getItem("__telegram__"+e)??"",status:!0}}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(s){return window.sessionStorage.setItem("__telegram__"+e,t),{status:!0}}},exports.bridgeSetBackgroundColor=j,exports.bridgeSetBottomBarColor=X,exports.bridgeSetHeaderColor=z,exports.bridgeSetupBackButton=Z,exports.bridgeSetupClosingBehavior=te,exports.bridgeSetupMainButton=oe,exports.bridgeSetupSettingsButton=pe,exports.bridgeSetupSwipeBehavior=_e,exports.bridgeSwitchInlineQuery=ne,exports.bridgeTriggerHapticFeedback=ue,exports.createIsViewportChanged=()=>{const[t,s]=e.createSignal({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>s(e);return e.onMount((()=>{Ze(Xe,o),le(Te)})),e.onCleanup((()=>{et(Xe,o)})),t},exports.debug=xe,exports.getAppData=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},exports.getPlatform=p,exports.listener=st,exports.sender=le,exports.supportClose=c,exports.supportCloseScanQrPopup=g,exports.supportDataSend=h,exports.supportExpand=w,exports.supportIframeReady=v,exports.supportIframeWillReload=f,exports.supportInvokeCustomMethod=P,exports.supportOpenInvoice=C,exports.supportOpenLink=R,exports.supportOpenPopup=B,exports.supportOpenScanQrPopup=T,exports.supportOpenTgLink=I,exports.supportReadTextFromClipboard=L,exports.supportReady=N,exports.supportRequestPhone=Q,exports.supportRequestTheme=H,exports.supportRequestViewport=J,exports.supportRequestWriteAccess=$,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=F,exports.supportSetBottomBarColor=Y,exports.supportSetHeaderColor=K,exports.supportSetupBackButton=ee,exports.supportSetupClosingBehavior=se,exports.supportSetupMainButton=re,exports.supportSetupSettingsButton=ae,exports.supportSetupSwipeBehavior=ce,exports.supportSwitchInlineQuery=ie,exports.supportTriggerHapticFeedback=de;
package/solid/index.mjs CHANGED
@@ -1 +1 @@
1
- import{createSignal as e,onMount as t,onCleanup as s,createContext as a,createEffect as r}from"solid-js";import{createStore as o}from"solid-js/store";const i=()=>{const[a,r]=e({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>r(e);return t((()=>{lt(ct,o),xe(Me)})),s((()=>{wt(ct,o)})),a},n="web",_="phone",p="desktop",d=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?_:["tdesktop","macos"].includes(t)?p:n},u="not_supported",c=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(d())},g=()=>Math.random().toString(36).substring(3,9),b=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},l=e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var a=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r of Object.keys(e)){var o=b(e[r]);"string"==typeof o&&(a[r]=o)}return a},w=e=>m()?(xe(Re,e),{status:!0}):(ye(Re,1),{status:u}),m=()=>c(0,[n,p,_]),h=e=>v()?(xe(Te,e),{status:!0}):(ye(Te,1),{status:u}),v=()=>c(6.4,[_]),f=e=>S()?(xe(Ne,e),{status:!0}):(ye(Ne,1),{status:u}),S=()=>c(0,[n,p,_]),y=e=>q()?(xe(Ce,e),{status:!0}):(ye(Ce,1),{status:u}),q=()=>c(0,[_]),x=e=>P()?(xe(Be,e),{status:!0}):(ye(Be,1),{status:u}),P=()=>c(0,[n]),k=()=>O()?(xe(Be),{status:!0}):(ye(Be,1),{status:u}),O=()=>c(0,[n]),I=async e=>R()?(void 0===e.req_id&&(e.req_id=g()),xe(Pe,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),wt(tt,a))};lt(tt,a)}))):(ye(Pe,1),{status:u}),R=()=>c(6.9,[n,p,_]),T=e=>N()?(xe(We,e),{status:!0}):(ye(We,1),{status:u}),N=()=>c(6.1,[n,p,_]),C=e=>B()?(xe(Ee,e),{status:!0}):(ye(Ee,1),{status:u}),B=()=>c(6.4,[n,p,_]),L=async e=>W()?(e.title.length>64&&ye(De,3),e.message.length<1&&ye(De,4),e.message.length>256&&ye(De,5),e.buttons.length<1&&ye(De,6),e.buttons.length>3&&ye(De,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&ye(De,8),xe(De,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),wt(ot,a)};lt(ot,a)}))):(ye(De,1),{status:u}),W=()=>c(6.2,[n,p,_]),E=async e=>D()?(xe(ke,e),new Promise(((t,s)=>{mt(nt,(s=>{e.is_close&&h(),t({status:!0,data:s})})),mt(_t,(()=>{t({status:"closed"})}))}))):(ye(ke,1),{status:u}),D=()=>c(6.4,[_]),J=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),$()?(xe(Je,e),{status:!0}):(ye(Je,1),{status:u})),$=()=>c(7,[n,p,_]),j=async e=>M()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=g()),xe(Oe,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),wt(et,a))};lt(et,a)}))):(ye(Oe,1),{status:u}),M=()=>c(6.4,[n,p,_]),A=e=>G()?(xe($e,e),{status:!0}):(ye($e,1),{status:u}),G=()=>c(6.9,[n,p,_]),U=async()=>V()?(xe(Ie),new Promise(((e,t)=>{mt(rt,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(ye(Ie,1),{status:u}),V=()=>c(6.9,[n,p,_]),H=e=>Q()?(xe(je,e),{status:!0}):(ye(je,1),{status:u}),Q=()=>c(0,[n,p,_]),F=e=>z()?(xe(Me,e),{status:!0}):(ye(Me,1),{status:u}),z=()=>c(0,[n,p,_]),K=()=>X()?(xe(Ae),{status:!0}):(ye(Ae,1),{status:u}),X=()=>c(6.9,[n,p,_]),Y=e=>Z()?(xe(Ge,e),{status:!0}):(ye(Ge,1),{status:u}),Z=()=>c(6.1,[n,p,_]),ee=e=>te()?(xe(Ue,e),{status:!0}):(ye(Ue,1),{status:u}),te=()=>c(6.1,[n,p,_]),se=e=>ae()?(xe(Ve,{color:e?.color||e?.color_key}),{status:!0}):(ye(Ve,1),{status:u}),ae=()=>c(710,[n,p,_]),re=e=>oe()?(xe(He,e),{status:!0}):(ye(He,1),{status:u}),oe=()=>c(6.1,[n,p,_]),ie=e=>ne()?(xe(Qe,e),{status:!0}):(ye(Qe,1),{status:u}),ne=()=>c(0,[n,p,_]),_e=e=>pe()?(xe(Fe,e),{status:!0}):(ye(Fe,1),{status:u}),pe=()=>c(0,[n,p,_]),de=e=>ue()?(xe(ze,e),{status:!0}):(ye(ze,1),{status:u}),ue=()=>c(6.1,[n,p,_]),ce=e=>ge()?(e.query.length>256&&ye(Ke,9),xe(Ke,e),{status:!0}):(ye(Ke,1),{status:u}),ge=()=>c(6.7,[n,p,_]),be=e=>le()?(xe(Xe,e),{status:!0}):(ye(Xe,1),{status:u}),le=()=>c(6.1,[_]),we=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(s){return window.sessionStorage.setItem("__telegram__"+e,t),{status:!0}}},me=()=>!0,he=({key:e})=>{try{return{is_json:!0,value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(t){return{is_json:!1,value:window.sessionStorage.getItem("__telegram__"+e)??"",status:!0}}},ve=()=>!0,fe=e=>Se()?(xe(Ye,e),{status:!0}):(ye(Ye,1),{status:u}),Se=()=>c(7.7,[n,p,_]);var ye=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const qe=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void ye("getInitData",2);const s=new URLSearchParams(t);let a={};return s.forEach(((e,t)=>{if(a[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{a[t]=JSON.parse(e)}catch{}})),a};var xe=(e,t)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:e,eventData:t}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:e,eventData:t}),"*")}catch(e){ye("postMessage Iframe",10)}};const Pe="web_app_invoke_custom_method",ke="web_app_open_scan_qr_popup",Oe="web_app_read_text_from_clipboard",Ie="web_app_request_phone",Re="web_app_close",Te="web_app_close_scan_qr_popup",Ne="web_app_data_send",Ce="web_app_expand",Be="iframe_ready",Le="iframe_will_reload",We="web_app_open_invoice",Ee="web_app_open_link",De="web_app_open_popup",Je="web_app_open_tg_link",$e="web_app_ready",je="web_app_request_theme",Me="web_app_request_viewport",Ae="web_app_request_write_access",Ge="web_app_set_background_color",Ue="web_app_set_header_color",Ve="web_app_set_bottom_bar_color",He="web_app_setup_back_button",Qe="web_app_setup_closing_behavior",Fe="web_app_setup_main_button",ze="web_app_setup_settings_button",Ke="web_app_switch_inline_query",Xe="web_app_trigger_haptic_feedback",Ye="web_app_setup_swipe_behavior";const Ze="back_button_pressed",et="clipboard_text_received",tt="custom_method_invoked",st="invoice_closed",at="main_button_pressed",rt="phone_requested",ot="popup_closed",it="reload_iframe",nt="qr_text_received",_t="scan_qr_popup_closed",pt="set_custom_style",dt="settings_button_pressed",ut="theme_changed",ct="viewport_changed",gt="write_access_requested",bt=((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===ut&&(t.theme_params=l(t.theme_params)),bt.emit(e,t),bt.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const lt=(e,t)=>{bt.on(e,t)},wt=(e,t)=>{bt.off(e,t)},mt=(e,t)=>{bt.once(e,t)};var ht=Object.freeze({__proto__:null,off:wt,on:lt,once:mt});const vt=a({viewport:void 0,theme:void 0,init:void 0}),ft=e=>{const[t,a]=o({viewport:void 0,theme:void 0,init:void 0});return r((()=>{const e=()=>{a("init",qe())};e();const t=t=>{e(),a("viewport",{...t,safe_area_bottom:t.is_expanded&&t.is_state_stable?window.outerHeight-t.height:0})};lt(ct,t),F();const r=t=>{e(),a("theme",t)};return lt(ut,r),F(),s((()=>{wt(ct,t),wt(ut,r)})),()=>{wt(ct,t),wt(ut,r)}})),vt.Provider({value:t,children:e.children})};export{vt as ContextTwa,Ze as EventBackButtonPressed,et as EventClipboardTextReceived,tt as EventCustomMethodInvoked,st as EventInvoiceClosed,at as EventMainButtonPressed,rt as EventPhoneRequested,ot as EventPopupClosed,nt as EventQrTextReceived,it as EventReloadIframe,_t as EventScanQrPopupClosed,pt as EventSetCustomStyle,dt as EventSettingsButtonPressed,ut as EventThemeChanged,ct as EventViewportChanged,gt as EventWriteAccessRequested,Re as MethodClose,Te as MethodCloseScanQrPopup,Ne as MethodDataSend,Ce as MethodExpand,Be as MethodIframeReady,Le as MethodIframeWillReload,Pe as MethodInvokeCustomMethod,We as MethodOpenInvoice,Ee as MethodOpenLink,De as MethodOpenPopup,ke as MethodOpenScanQrPopup,Je as MethodOpenTgLink,Oe as MethodReadTextFromClipboard,$e as MethodReady,Ie as MethodRequestPhone,je as MethodRequestTheme,Me as MethodRequestViewport,Ae as MethodRequestWriteAccess,Ge as MethodSetBackgroundColor,Ve as MethodSetBottomBarColor,Ue as MethodSetHeaderColor,He as MethodSetupBackButton,Qe as MethodSetupClosingBehavior,Fe as MethodSetupMainButton,ze as MethodSetupSettingsButton,Ye as MethodSetupSwipeBehavior,Ke as MethodSwitchInlineQuery,Xe as MethodTriggerHapticFeedback,u as NOT_SUPPORTED,ft as ProviderTWA,p as TG_DESKTOP,_ as TG_PHONE,n as TG_WEB,w as bridgeClose,h as bridgeCloseScanQrPopup,f as bridgeDataSend,y as bridgeExpand,qe as bridgeGetInitData,l as bridgeGetThemeParams,x as bridgeIframeReady,k as bridgeIframeWillReload,I as bridgeInvokeCustomMethod,T as bridgeOpenInvoice,C as bridgeOpenLink,L as bridgeOpenPopup,E as bridgeOpenScanQrPopup,J as bridgeOpenTgLink,j as bridgeReadTextFromClipboard,A as bridgeReady,U as bridgeRequestPhone,H as bridgeRequestTheme,F as bridgeRequestViewport,K as bridgeRequestWriteAccess,xe as bridgeSend,he as bridgeSessionStorageGet,we as bridgeSessionStorageSet,Y as bridgeSetBackgroundColor,se as bridgeSetBottomBarColor,ee as bridgeSetHeaderColor,re as bridgeSetupBackButton,ie as bridgeSetupClosingBehavior,_e as bridgeSetupMainButton,de as bridgeSetupSettingsButton,fe as bridgeSetupSwipeBehavior,ce as bridgeSwitchInlineQuery,be as bridgeTriggerHapticFeedback,i as createIsViewportChanged,ye as debug,d as getPlatform,ht as listener,xe as sender,m as supportClose,v as supportCloseScanQrPopup,S as supportDataSend,q as supportExpand,P as supportIframeReady,O as supportIframeWillReload,R as supportInvokeCustomMethod,N as supportOpenInvoice,B as supportOpenLink,W as supportOpenPopup,D as supportOpenScanQrPopup,$ as supportOpenTgLink,M as supportReadTextFromClipboard,G as supportReady,V as supportRequestPhone,Q as supportRequestTheme,z as supportRequestViewport,X as supportRequestWriteAccess,ve as supportSessionStorageGet,me as supportSessionStorageSet,Z as supportSetBackgroundColor,ae as supportSetBottomBarColor,te as supportSetHeaderColor,oe as supportSetupBackButton,ne as supportSetupClosingBehavior,pe as supportSetupMainButton,ue as supportSetupSettingsButton,Se as supportSetupSwipeBehavior,ge as supportSwitchInlineQuery,le as supportTriggerHapticFeedback};
1
+ import{createSignal as e,onMount as t,onCleanup as s,createContext as a,createEffect as r}from"solid-js";import{createStore as o}from"solid-js/store";const i=()=>{const[a,r]=e({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>r(e);return t((()=>{lt(ct,o),xe(Ae)})),s((()=>{wt(ct,o)})),a},n="web",_="phone",p="desktop",d=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?_:["tdesktop","macos"].includes(t)?p:n},u="not_supported",c=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(d())},g=()=>Math.random().toString(36).substring(3,9),b=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},l=e=>{const t=window.location.hash.slice(1),s=new URLSearchParams(t),a=JSON.parse(s.get("tgWebAppThemeParams")??""),r=e||a;for(var o of Object.keys(r)){var i=b(r[o]);"string"==typeof i&&(r[o]=i)}return"#1c1c1d"==r?.bg_color&&r?.bg_color==r?.secondary_bg_color&&(r.secondary_bg_color="#2c2c2e"),r},w=e=>m()?(xe(Re,e),{status:!0}):(ye(Re,1),{status:u}),m=()=>c(0,[n,p,_]),h=e=>v()?(xe(Te,e),{status:!0}):(ye(Te,1),{status:u}),v=()=>c(6.4,[_]),f=e=>S()?(xe(Ne,e),{status:!0}):(ye(Ne,1),{status:u}),S=()=>c(0,[n,p,_]),y=e=>q()?(xe(Ce,e),{status:!0}):(ye(Ce,1),{status:u}),q=()=>c(0,[_]),x=e=>P()?(xe(Le,e),{status:!0}):(ye(Le,1),{status:u}),P=()=>c(0,[n]),k=()=>O()?(xe(Le),{status:!0}):(ye(Le,1),{status:u}),O=()=>c(0,[n]),I=async e=>R()?(void 0===e.req_id&&(e.req_id=g()),xe(Pe,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),wt(tt,a))};lt(tt,a)}))):(ye(Pe,1),{status:u}),R=()=>c(6.9,[n,p,_]),T=e=>N()?(xe(Be,e),{status:!0}):(ye(Be,1),{status:u}),N=()=>c(6.1,[n,p,_]),C=e=>L()?(xe(De,e),{status:!0}):(ye(De,1),{status:u}),L=()=>c(6.4,[n,p,_]),W=async e=>B()?(e.title.length>64&&ye(Ee,3),e.message.length<1&&ye(Ee,4),e.message.length>256&&ye(Ee,5),e.buttons.length<1&&ye(Ee,6),e.buttons.length>3&&ye(Ee,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&ye(Ee,8),xe(Ee,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),wt(ot,a)};lt(ot,a)}))):(ye(Ee,1),{status:u}),B=()=>c(6.2,[n,p,_]),D=async e=>E()?(xe(ke,e),new Promise(((t,s)=>{mt(nt,(s=>{e.is_close&&h(),t({status:!0,data:s})})),mt(_t,(()=>{t({status:"closed"})}))}))):(ye(ke,1),{status:u}),E=()=>c(6.4,[_]),J=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),$()?(xe(Je,e),{status:!0}):(ye(Je,1),{status:u})),$=()=>c(7,[n,p,_]),j=async e=>A()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=g()),xe(Oe,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),wt(et,a))};lt(et,a)}))):(ye(Oe,1),{status:u}),A=()=>c(6.4,[n,p,_]),M=e=>U()?(xe($e,e),{status:!0}):(ye($e,1),{status:u}),U=()=>c(6.9,[n,p,_]),G=async()=>V()?(xe(Ie),new Promise(((e,t)=>{mt(rt,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(ye(Ie,1),{status:u}),V=()=>c(6.9,[n,p,_]),H=e=>Q()?(xe(je,e),{status:!0}):(ye(je,1),{status:u}),Q=()=>c(0,[n,p,_]),F=e=>z()?(xe(Ae,e),{status:!0}):(ye(Ae,1),{status:u}),z=()=>c(0,[n,p,_]),K=()=>X()?(xe(Me),{status:!0}):(ye(Me,1),{status:u}),X=()=>c(6.9,[n,p,_]),Y=e=>Z()?(xe(Ue,e),{status:!0}):(ye(Ue,1),{status:u}),Z=()=>c(6.1,[n,p,_]),ee=e=>te()?(xe(Ge,e),{status:!0}):(ye(Ge,1),{status:u}),te=()=>c(6.1,[n,p,_]),se=e=>ae()?(xe(Ve,{color:e?.color||e?.color_key}),{status:!0}):(ye(Ve,1),{status:u}),ae=()=>c(710,[n,p,_]),re=e=>oe()?(xe(He,e),{status:!0}):(ye(He,1),{status:u}),oe=()=>c(6.1,[n,p,_]),ie=e=>ne()?(xe(Qe,e),{status:!0}):(ye(Qe,1),{status:u}),ne=()=>c(0,[n,p,_]),_e=e=>pe()?(xe(Fe,e),{status:!0}):(ye(Fe,1),{status:u}),pe=()=>c(0,[n,p,_]),de=e=>ue()?(xe(ze,e),{status:!0}):(ye(ze,1),{status:u}),ue=()=>c(6.1,[n,p,_]),ce=e=>ge()?(e.query.length>256&&ye(Ke,9),xe(Ke,e),{status:!0}):(ye(Ke,1),{status:u}),ge=()=>c(6.7,[n,p,_]),be=e=>le()?(xe(Xe,e),{status:!0}):(ye(Xe,1),{status:u}),le=()=>c(6.1,[_]),we=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(s){return window.sessionStorage.setItem("__telegram__"+e,t),{status:!0}}},me=()=>!0,he=({key:e})=>{try{return{is_json:!0,value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(t){return{is_json:!1,value:window.sessionStorage.getItem("__telegram__"+e)??"",status:!0}}},ve=()=>!0,fe=e=>Se()?(xe(Ye,e),{status:!0}):(ye(Ye,1),{status:u}),Se=()=>c(7.7,[n,p,_]);var ye=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const qe=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void ye("getInitData",2);const s=new URLSearchParams(t);let a={};return s.forEach(((e,t)=>{if(a[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{a[t]=JSON.parse(e)}catch{}})),a};var xe=(e,t)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:e,eventData:t}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:e,eventData:t}),"*")}catch(e){ye("postMessage Iframe",10)}};const Pe="web_app_invoke_custom_method",ke="web_app_open_scan_qr_popup",Oe="web_app_read_text_from_clipboard",Ie="web_app_request_phone",Re="web_app_close",Te="web_app_close_scan_qr_popup",Ne="web_app_data_send",Ce="web_app_expand",Le="iframe_ready",We="iframe_will_reload",Be="web_app_open_invoice",De="web_app_open_link",Ee="web_app_open_popup",Je="web_app_open_tg_link",$e="web_app_ready",je="web_app_request_theme",Ae="web_app_request_viewport",Me="web_app_request_write_access",Ue="web_app_set_background_color",Ge="web_app_set_header_color",Ve="web_app_set_bottom_bar_color",He="web_app_setup_back_button",Qe="web_app_setup_closing_behavior",Fe="web_app_setup_main_button",ze="web_app_setup_settings_button",Ke="web_app_switch_inline_query",Xe="web_app_trigger_haptic_feedback",Ye="web_app_setup_swipe_behavior";const Ze="back_button_pressed",et="clipboard_text_received",tt="custom_method_invoked",st="invoice_closed",at="main_button_pressed",rt="phone_requested",ot="popup_closed",it="reload_iframe",nt="qr_text_received",_t="scan_qr_popup_closed",pt="set_custom_style",dt="settings_button_pressed",ut="theme_changed",ct="viewport_changed",gt="write_access_requested",bt=((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===ut&&(t.theme_params=l(t.theme_params)),bt.emit(e,t),bt.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const lt=(e,t)=>{bt.on(e,t)},wt=(e,t)=>{bt.off(e,t)},mt=(e,t)=>{bt.once(e,t)};var ht=Object.freeze({__proto__:null,off:wt,on:lt,once:mt});const vt=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},ft=a({viewport:void 0,theme:void 0,init:void 0}),St=e=>{const[t,a]=o({viewport:void 0,theme:void 0,init:void 0});return r((()=>{const e=()=>{a("init",qe())};e();const t=t=>{e(),a("viewport",{...t,safe_area_bottom:t.is_expanded&&t.is_state_stable?window.outerHeight-t.height:0})};lt(ct,t),F();const r=t=>{e(),a("theme",t)};return lt(ut,r),F(),s((()=>{wt(ct,t),wt(ut,r)})),()=>{wt(ct,t),wt(ut,r)}})),ft.Provider({value:t,children:e.children})};export{ft as ContextTwa,Ze as EventBackButtonPressed,et as EventClipboardTextReceived,tt as EventCustomMethodInvoked,st as EventInvoiceClosed,at as EventMainButtonPressed,rt as EventPhoneRequested,ot as EventPopupClosed,nt as EventQrTextReceived,it as EventReloadIframe,_t as EventScanQrPopupClosed,pt as EventSetCustomStyle,dt as EventSettingsButtonPressed,ut as EventThemeChanged,ct as EventViewportChanged,gt as EventWriteAccessRequested,Re as MethodClose,Te as MethodCloseScanQrPopup,Ne as MethodDataSend,Ce as MethodExpand,Le as MethodIframeReady,We as MethodIframeWillReload,Pe as MethodInvokeCustomMethod,Be as MethodOpenInvoice,De as MethodOpenLink,Ee as MethodOpenPopup,ke as MethodOpenScanQrPopup,Je as MethodOpenTgLink,Oe as MethodReadTextFromClipboard,$e as MethodReady,Ie as MethodRequestPhone,je as MethodRequestTheme,Ae as MethodRequestViewport,Me as MethodRequestWriteAccess,Ue as MethodSetBackgroundColor,Ve as MethodSetBottomBarColor,Ge as MethodSetHeaderColor,He as MethodSetupBackButton,Qe as MethodSetupClosingBehavior,Fe as MethodSetupMainButton,ze as MethodSetupSettingsButton,Ye as MethodSetupSwipeBehavior,Ke as MethodSwitchInlineQuery,Xe as MethodTriggerHapticFeedback,u as NOT_SUPPORTED,St as ProviderTWA,p as TG_DESKTOP,_ as TG_PHONE,n as TG_WEB,w as bridgeClose,h as bridgeCloseScanQrPopup,f as bridgeDataSend,y as bridgeExpand,qe as bridgeGetInitData,l as bridgeGetThemeParams,x as bridgeIframeReady,k as bridgeIframeWillReload,I as bridgeInvokeCustomMethod,T as bridgeOpenInvoice,C as bridgeOpenLink,W as bridgeOpenPopup,D as bridgeOpenScanQrPopup,J as bridgeOpenTgLink,j as bridgeReadTextFromClipboard,M as bridgeReady,G as bridgeRequestPhone,H as bridgeRequestTheme,F as bridgeRequestViewport,K as bridgeRequestWriteAccess,xe as bridgeSend,he as bridgeSessionStorageGet,we as bridgeSessionStorageSet,Y as bridgeSetBackgroundColor,se as bridgeSetBottomBarColor,ee as bridgeSetHeaderColor,re as bridgeSetupBackButton,ie as bridgeSetupClosingBehavior,_e as bridgeSetupMainButton,de as bridgeSetupSettingsButton,fe as bridgeSetupSwipeBehavior,ce as bridgeSwitchInlineQuery,be as bridgeTriggerHapticFeedback,i as createIsViewportChanged,ye as debug,vt as getAppData,d as getPlatform,ht as listener,xe as sender,m as supportClose,v as supportCloseScanQrPopup,S as supportDataSend,q as supportExpand,P as supportIframeReady,O as supportIframeWillReload,R as supportInvokeCustomMethod,N as supportOpenInvoice,L as supportOpenLink,B as supportOpenPopup,E as supportOpenScanQrPopup,$ as supportOpenTgLink,A as supportReadTextFromClipboard,U as supportReady,V as supportRequestPhone,Q as supportRequestTheme,z as supportRequestViewport,X as supportRequestWriteAccess,ve as supportSessionStorageGet,me as supportSessionStorageSet,Z as supportSetBackgroundColor,ae as supportSetBottomBarColor,te as supportSetHeaderColor,oe as supportSetupBackButton,ne as supportSetupClosingBehavior,pe as supportSetupMainButton,ue as supportSetupSettingsButton,Se as supportSetupSwipeBehavior,ge as supportSwitchInlineQuery,le as supportTriggerHapticFeedback};