@apiteam/twa-bridge 7.0.0-beta.8 → 7.7.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apiteam/twa-bridge",
3
- "version": "7.0.0-beta.8",
3
+ "version": "7.7.0-beta.1",
4
4
  "description": "Telegram bridge",
5
5
  "license": "MIT",
6
6
  "types": "index.ts",
package/react/index.d.ts CHANGED
@@ -595,6 +595,7 @@ type SessionStorageGet = ({ key }: {
595
595
  key: string;
596
596
  }) => {
597
597
  status: boolean | typeof NOT_SUPPORTED;
598
+ value?: any;
598
599
  };
599
600
  /**
600
601
  * sessions storage get.
@@ -754,13 +755,13 @@ declare const debug: Debug;
754
755
 
755
756
  type EventsData = {
756
757
  /**
757
- * User clicked the Back Button.
758
- */
759
- "back_button_pressed": undefined;
758
+ * User clicked the Back Button.
759
+ */
760
+ back_button_pressed: undefined;
760
761
  /**
761
762
  * Telegram application attempted to extract text from clipboard.
762
763
  */
763
- "clipboard_text_received": {
764
+ clipboard_text_received: {
764
765
  /**
765
766
  * Passed during the web_app_read_text_from_clipboard method invocation req_id value.
766
767
  */
@@ -771,9 +772,9 @@ type EventsData = {
771
772
  data?: string | null;
772
773
  };
773
774
  /**
774
- * Custom method invocation completed.
775
- */
776
- "custom_method_invoked": {
775
+ * Custom method invocation completed.
776
+ */
777
+ custom_method_invoked: {
777
778
  /**
778
779
  * Unique identifier of this invocation.
779
780
  */
@@ -788,9 +789,9 @@ type EventsData = {
788
789
  error?: string;
789
790
  };
790
791
  /**
791
- * An invoice was closed.
792
- */
793
- "invoice_closed": {
792
+ * An invoice was closed.
793
+ */
794
+ invoice_closed: {
794
795
  /**
795
796
  * Passed during the web_app_open_invoice method invocation slug value.
796
797
  */
@@ -809,22 +810,22 @@ type EventsData = {
809
810
  status: 'paid' | 'failed' | 'pending' | 'cancelled';
810
811
  };
811
812
  /**
812
- * User clicked the Main Button.
813
- */
814
- "main_button_pressed": undefined;
813
+ * User clicked the Main Button.
814
+ */
815
+ main_button_pressed: undefined;
815
816
  /**
816
- * Application received phone access request status.
817
- */
818
- "phone_requested": {
817
+ * Application received phone access request status.
818
+ */
819
+ phone_requested: {
819
820
  /**
820
821
  * Request status. Can only be sent
821
822
  */
822
823
  status: 'sent';
823
824
  };
824
825
  /**
825
- * Popup was closed.
826
- */
827
- "popup_closed": {
826
+ * Popup was closed.
827
+ */
828
+ popup_closed: {
828
829
  /**
829
830
  * Optional. Identifier of the clicked button.
830
831
  *
@@ -833,36 +834,36 @@ type EventsData = {
833
834
  button_id?: string;
834
835
  };
835
836
  /**
836
- * Parent iframe requested current iframe reload.
837
- */
838
- "reload_iframe": undefined;
837
+ * Parent iframe requested current iframe reload.
838
+ */
839
+ reload_iframe: undefined;
839
840
  /**
840
841
  * The QR scanner scanned some QR and extracted its content.
841
842
  */
842
- "qr_text_received": {
843
+ qr_text_received: {
843
844
  /**
844
845
  * Optional. Data extracted from the QR.
845
846
  */
846
847
  data?: string;
847
848
  };
848
849
  /**
849
- * QR scanner was closed.
850
- */
851
- "scan_qr_popup_closed": undefined;
850
+ * QR scanner was closed.
851
+ */
852
+ scan_qr_popup_closed: undefined;
852
853
  /**
853
- * The event which is usually sent by the Telegram web application.
854
- *
855
- * Its payload represents <style/> tag html content, a developer could use. The stylesheet described in the payload will help the developer to stylize the app scrollbar (but he is still able to do it himself).
856
- */
857
- "set_custom_style": undefined;
854
+ * The event which is usually sent by the Telegram web application.
855
+ *
856
+ * Its payload represents <style/> tag html content, a developer could use. The stylesheet described in the payload will help the developer to stylize the app scrollbar (but he is still able to do it himself).
857
+ */
858
+ set_custom_style: undefined;
858
859
  /**
859
- * Occurs when the Settings Button was pressed.
860
- */
861
- "settings_button_pressed": undefined;
860
+ * Occurs when the Settings Button was pressed.
861
+ */
862
+ settings_button_pressed: undefined;
862
863
  /**
863
- * Occurs whenever the theme was changed in the user's Telegram app ( including switching to night mode).
864
- */
865
- "theme_changed": {
864
+ * Occurs whenever the theme was changed in the user's Telegram app ( including switching to night mode).
865
+ */
866
+ theme_changed: {
866
867
  /**
867
868
  * Map where the key is a theme stylesheet key and value is the corresponding color in #RRGGBB format.
868
869
  */
@@ -873,7 +874,7 @@ type EventsData = {
873
874
  *
874
875
  * For example, when the user started dragging the application or called the expansion method.
875
876
  */
876
- "viewport_changed": {
877
+ viewport_changed: {
877
878
  /**
878
879
  * The viewport height.
879
880
  */
@@ -892,9 +893,9 @@ type EventsData = {
892
893
  is_state_stable: boolean;
893
894
  };
894
895
  /**
895
- * Application received write access request status.
896
- */
897
- "write_access_requested": {
896
+ * Application received write access request status.
897
+ */
898
+ write_access_requested: {
898
899
  /**
899
900
  * Request status. Can only be allowed.
900
901
  */
@@ -914,7 +915,7 @@ declare global {
914
915
  interface Window {
915
916
  TelegramWebviewProxy: TelegramWebviewProxy;
916
917
  TelegramGameProxy: TelegramGameProxy;
917
- TelegramGameProxy_receiveEvent: TelegramGameProxy["receiveEvent"];
918
+ TelegramGameProxy_receiveEvent: TelegramGameProxy['receiveEvent'];
918
919
  Telegram: {
919
920
  WebView: TelegramGameProxy;
920
921
  };
@@ -933,9 +934,11 @@ declare namespace listener {
933
934
  export { type listener_EventsData as EventsData, listener_off as off, listener_on as on, listener_once as once };
934
935
  }
935
936
 
937
+ type GetPlatform = () => 'phone' | 'web' | 'desktop';
936
938
  declare const TG_WEB = "web";
937
939
  declare const TG_PHONE = "phone";
938
940
  declare const TG_DESKTOP = "desktop";
941
+ declare const getPlatform: GetPlatform;
939
942
 
940
943
  declare const NOT_SUPPORTED = "not_supported";
941
944
 
@@ -965,6 +968,7 @@ declare const MethodSetupMainButton = "web_app_setup_main_button";
965
968
  declare const MethodSetupSettingsButton = "web_app_setup_settings_button";
966
969
  declare const MethodSwitchInlineQuery = "web_app_switch_inline_query";
967
970
  declare const MethodTriggerHapticFeedback = "web_app_trigger_haptic_feedback";
971
+ declare const MethodSetupSwipeBehavior = "web_app_setup_swipe_behavior";
968
972
 
969
973
  declare const EventBackButtonPressed = "back_button_pressed";
970
974
  declare const EventClipboardTextReceived = "clipboard_text_received";
@@ -982,4 +986,4 @@ declare const EventThemeChanged = "theme_changed";
982
986
  declare const EventViewportChanged = "viewport_changed";
983
987
  declare const EventWriteAccessRequested = "write_access_requested";
984
988
 
985
- 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 };
989
+ 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, MethodSetupSwipeBehavior, 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, getPlatform, 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]),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 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;
1
+ "use strict";var e=require("debug");const t="web",s="phone",o="desktop",r=()=>{const e=window.location.hash.slice(1),r=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?s:["tdesktop","macos"].includes(r)?o:t},p="not_supported",a=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s)>=e&&-1!==t.indexOf(r())},n=()=>Math.random().toString(36).substring(3,9),i=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),o=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((o<16?"0":"")+o.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},u=()=>a(0,[t,o,s]),d=()=>_()?(D(te),{status:!0}):(N(te,1),{status:p}),_=()=>a(6.4,[s]),c=()=>a(0,[t,o,s]),x=()=>a(0,[s]),g=()=>a(0,[t]),l=()=>a(0,[t]),b="web_app_invoke_custom_method",h=()=>a(6.9,[t,o,s]),w=()=>a(6.1,[t,o,s]),m=()=>a(6.4,[t,o,s]),v=()=>a(6.2,[t,o,s]),S=()=>a(6.4,[s]),f=()=>a(7,[t,o,s]),y=()=>a(6.4,[t,o,s]),M=()=>a(6.9,[t,o,s]),P=()=>a(6.9,[t,o,s]),q=()=>a(0,[t,o,s]),R=()=>a(0,[t,o,s]),k=()=>a(6.9,[t,o,s]),C=()=>a(6.1,[t,o,s]),O=()=>a(6.1,[t,o,s]),E=()=>a(6.1,[t,o,s]),T=()=>a(0,[t,o,s]),I=()=>a(0,[t,o,s]),B=()=>a(6.1,[t,o,s]),W=()=>a(6.7,[t,o,s]),L=()=>a(6.1,[s]);var N=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};var D=(t,s)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(t,JSON.stringify(s));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:t,eventData:s}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:t,eventData:s}),"*")}catch(t){e("postMessage Iframe",10)}};const Q="clipboard_text_received",A="custom_method_invoked",G="phone_requested",H="popup_closed",J="qr_text_received",V="scan_qr_popup_closed",$="theme_changed",F=((e=new Map)=>({once:(t,s,o=e.get(t),r=(e=>{s(e),o&&o.splice(o.indexOf(s)>>>0,1)}))=>o?o.push(r):e.set(t,[r]),on:(t,s,o=e.get(t))=>o?o.push(s):e.set(t,[s]),off:(t,s,o=e.get(t))=>o&&s?o.splice(o.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,o=e.get(t)||[])=>{for(const e of o)e(s)}}))();(()=>{function e(e,t){e===$&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var o=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r in e){var p=i(e[r]);"string"==typeof p&&(o[r]=p)}return o})(t.theme_params)),F.emit(e,t),F.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const U=(e,t)=>{F.on(e,t)},j=(e,t)=>{F.off(e,t)},z=(e,t)=>{F.once(e,t)};var K=Object.freeze({__proto__:null,off:j,on:U,once:z});const X="web_app_open_scan_qr_popup",Y="web_app_read_text_from_clipboard",Z="web_app_request_phone",ee="web_app_close",te="web_app_close_scan_qr_popup",se="web_app_data_send",oe="web_app_expand",re="iframe_ready",pe="web_app_open_invoice",ae="web_app_open_link",ne="web_app_open_popup",ie="web_app_open_tg_link",ue="web_app_ready",de="web_app_request_theme",_e="web_app_request_viewport",ce="web_app_request_write_access",xe="web_app_set_background_color",ge="web_app_set_header_color",le="web_app_setup_back_button",be="web_app_setup_closing_behavior",he="web_app_setup_main_button",we="web_app_setup_settings_button",me="web_app_switch_inline_query",ve="web_app_trigger_haptic_feedback";exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=Q,exports.EventCustomMethodInvoked=A,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=G,exports.EventPopupClosed=H,exports.EventQrTextReceived=J,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=V,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=$,exports.EventViewportChanged="viewport_changed",exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=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.MethodSetupSwipeBehavior="web_app_setup_swipe_behavior",exports.MethodSwitchInlineQuery=me,exports.MethodTriggerHapticFeedback=ve,exports.NOT_SUPPORTED=p,exports.TG_DESKTOP=o,exports.TG_PHONE=s,exports.TG_WEB=t,exports.bridgeClose=()=>u()?(D(ee),{status:!0}):(N(ee,1),{status:p}),exports.bridgeCloseScanQrPopup=d,exports.bridgeDataSend=e=>c()?(D(se,e),{status:!0}):(N(se,1),{status:p}),exports.bridgeExpand=()=>x()?(D(oe),{status:!0}):(N(oe,1),{status:p}),exports.bridgeGetInitData=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return N("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s},exports.bridgeIframeReady=e=>g()?(D(re,e),{status:!0}):(N(re,1),{status:p}),exports.bridgeIframeWillReload=()=>l()?(D(re),{status:!0}):(N(re,1),{status:p}),exports.bridgeInvokeCustomMethod=async e=>h()?(void 0===e.req_id&&(e.req_id=n()),D(b,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),j(A,o))};U(A,o)}))):(N(b,1),{status:p}),exports.bridgeOpenInvoice=e=>w()?(D(pe,e),{status:!0}):(N(pe,1),{status:p}),exports.bridgeOpenLink=e=>m()?(D(ae,e),{status:!0}):(N(ae,1),{status:p}),exports.bridgeOpenPopup=async e=>v()?(e.title.length>64&&N(ne,3),e.message.length<1&&N(ne,4),e.message.length>256&&N(ne,5),e.buttons.length<1&&N(ne,6),e.buttons.length>3&&N(ne,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&N(ne,8),D(ne,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),j(H,o)};U(H,o)}))):(N(ne,1),{status:p}),exports.bridgeOpenScanQrPopup=async e=>S()?(D(X,e),new Promise(((t,s)=>{z(J,(s=>{e.is_close&&d(),t({status:!0,data:s})})),z(V,(()=>{t({status:"closed"})}))}))):(N(X,1),{status:p}),exports.bridgeOpenTgLink=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),f()?(D(ie,e),{status:!0}):(N(ie,1),{status:p})),exports.bridgeReadTextFromClipboard=async e=>y()?(void 0===e.req_id&&(e.req_id=n()),D(Y,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),j(Q,o))};U(Q,o)}))):(N(Y,1),{status:p}),exports.bridgeReady=()=>M()?(D(ue),{status:!0}):(N(ue,1),{status:p}),exports.bridgeRequestPhone=async()=>P()?(D(Z),new Promise(((e,t)=>{z(G,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(N(Z,1),{status:p}),exports.bridgeRequestTheme=()=>q()?(D(de),{status:!0}):(N(de,1),{status:p}),exports.bridgeRequestViewport=()=>R()?(D(_e),{status:!0}):(N(_e,1),{status:p}),exports.bridgeRequestWriteAccess=()=>k()?(D(ce),{status:!0}):(N(ce,1),{status:p}),exports.bridgeSessionStorageGet=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},exports.bridgeSetBackgroundColor=e=>C()?(D(xe,e),{status:!0}):(N(xe,1),{status:p}),exports.bridgeSetHeaderColor=e=>O()?(D(ge,e),{status:!0}):(N(ge,1),{status:p}),exports.bridgeSetupBackButton=e=>E()?(D(le,e),{status:!0}):(N(le,1),{status:p}),exports.bridgeSetupClosingBehavior=e=>T()?(D(be,e),{status:!0}):(N(be,1),{status:p}),exports.bridgeSetupMainButton=e=>I()?(D(he,e),{status:!0}):(N(he,1),{status:p}),exports.bridgeSetupSettingsButton=e=>B()?(D(we,e),{status:!0}):(N(we,1),{status:p}),exports.bridgeSwitchInlineQuery=e=>W()?(e.query.length>256&&N(me,9),D(me,e),{status:!0}):(N(me,1),{status:p}),exports.bridgeTriggerHapticFeedback=e=>L()?(D(ve,e),{status:!0}):(N(ve,1),{status:p}),exports.debug=N,exports.getPlatform=r,exports.listener=K,exports.sender=D,exports.supportClose=u,exports.supportCloseScanQrPopup=_,exports.supportDataSend=c,exports.supportExpand=x,exports.supportIframeReady=g,exports.supportIframeWillReload=l,exports.supportInvokeCustomMethod=h,exports.supportOpenInvoice=w,exports.supportOpenLink=m,exports.supportOpenPopup=v,exports.supportOpenScanQrPopup=S,exports.supportOpenTgLink=f,exports.supportReadTextFromClipboard=y,exports.supportReady=M,exports.supportRequestPhone=P,exports.supportRequestTheme=q,exports.supportRequestViewport=R,exports.supportRequestWriteAccess=k,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=C,exports.supportSetHeaderColor=O,exports.supportSetupBackButton=E,exports.supportSetupClosingBehavior=T,exports.supportSetupMainButton=I,exports.supportSetupSettingsButton=B,exports.supportSwitchInlineQuery=W,exports.supportTriggerHapticFeedback=L;
package/react/index.mjs CHANGED
@@ -1 +1 @@
1
- const e="web",t="phone",s="desktop",a="not_supported",r=(a,r)=>{const o=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(o)>=a&&-1!==r.indexOf((()=>{const a=window.location.hash.slice(1),r=new URLSearchParams(a).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?t:["tdesktop","macos"].includes(r)?s:e})())},o=()=>Math.random().toString(36).substring(3,9),n=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),a=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((a<16?"0":"")+a.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},i=()=>_()?(ce(Be),{status:!0}):(ue(Be,1),{status:a}),_=()=>r(0,[e,s,t]),p=()=>u()?(ce(De),{status:!0}):(ue(De,1),{status:a}),u=()=>r(6.4,[t]),d=e=>c()?(ce(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 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};
1
+ import e from"debug";const t="web",s="phone",a="desktop",r=()=>{const e=window.location.hash.slice(1),r=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(r)?s:["tdesktop","macos"].includes(r)?a:t},o="not_supported",n=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s)>=e&&-1!==t.indexOf(r())},i=()=>Math.random().toString(36).substring(3,9),_=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),a=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((a<16?"0":"")+a.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},p=()=>u()?(be(Be),{status:!0}):(ce(Be,1),{status:o}),u=()=>n(0,[t,a,s]),d=()=>c()?(be(Me),{status:!0}):(ce(Me,1),{status:o}),c=()=>n(6.4,[s]),g=e=>b()?(be(Ae,e),{status:!0}):(ce(Ae,1),{status:o}),b=()=>n(0,[t,a,s]),l=()=>w()?(be(Ue),{status:!0}):(ce(Ue,1),{status:o}),w=()=>n(0,[s]),m=e=>h()?(be(Ge,e),{status:!0}):(ce(Ge,1),{status:o}),h=()=>n(0,[t]),f=()=>v()?(be(Ge),{status:!0}):(ce(Ge,1),{status:o}),v=()=>n(0,[t]),y="web_app_invoke_custom_method",S=async e=>q()?(void 0===e.req_id&&(e.req_id=i()),be(y,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Ce(me,a))};Ne(me,a)}))):(ce(y,1),{status:o}),q=()=>n(6.9,[t,a,s]),x=e=>k()?(be(Qe,e),{status:!0}):(ce(Qe,1),{status:o}),k=()=>n(6.1,[t,a,s]),P=e=>O()?(be(Fe,e),{status:!0}):(ce(Fe,1),{status:o}),O=()=>n(6.4,[t,a,s]),I=async e=>R()?(e.title.length>64&&ce(He,3),e.message.length<1&&ce(He,4),e.message.length>256&&ce(He,5),e.buttons.length<1&&ce(He,6),e.buttons.length>3&&ce(He,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&ce(He,8),be(He,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Ce(ye,a)};Ne(ye,a)}))):(ce(He,1),{status:o}),R=()=>n(6.2,[t,a,s]),T=async e=>N()?(be(De,e),new Promise(((t,s)=>{Le(qe,(s=>{e.is_close&&d(),t({status:!0,data:s})})),Le(xe,(()=>{t({status:"closed"})}))}))):(ce(De,1),{status:o}),N=()=>n(6.4,[s]),C=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),L()?(be(je,e),{status:!0}):(ce(je,1),{status:o})),L=()=>n(7,[t,a,s]),W=async e=>E()?(void 0===e.req_id&&(e.req_id=i()),be(Je,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Ce(we,a))};Ne(we,a)}))):(ce(Je,1),{status:o}),E=()=>n(6.4,[t,a,s]),D=()=>J()?(be(ze),{status:!0}):(ce(ze,1),{status:o}),J=()=>n(6.9,[t,a,s]),$=async()=>B()?(be($e),new Promise(((e,t)=>{Le(ve,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(ce($e,1),{status:o}),B=()=>n(6.9,[t,a,s]),M=()=>A()?(be(Ke),{status:!0}):(ce(Ke,1),{status:o}),A=()=>n(0,[t,a,s]),U=()=>G()?(be(Xe),{status:!0}):(ce(Xe,1),{status:o}),G=()=>n(0,[t,a,s]),V=()=>Q()?(be(Ye),{status:!0}):(ce(Ye,1),{status:o}),Q=()=>n(6.9,[t,a,s]),F=e=>H()?(be(Ze,e),{status:!0}):(ce(Ze,1),{status:o}),H=()=>n(6.1,[t,a,s]),j=e=>z()?(be(et,e),{status:!0}):(ce(et,1),{status:o}),z=()=>n(6.1,[t,a,s]),K=e=>X()?(be(tt,e),{status:!0}):(ce(tt,1),{status:o}),X=()=>n(6.1,[t,a,s]),Y=e=>Z()?(be(st,e),{status:!0}):(ce(st,1),{status:o}),Z=()=>n(0,[t,a,s]),ee=e=>te()?(be(at,e),{status:!0}):(ce(at,1),{status:o}),te=()=>n(0,[t,a,s]),se=e=>ae()?(be(rt,e),{status:!0}):(ce(rt,1),{status:o}),ae=()=>n(6.1,[t,a,s]),re=e=>oe()?(e.query.length>256&&ce(ot,9),be(ot,e),{status:!0}):(ce(ot,1),{status:o}),oe=()=>n(6.7,[t,a,s]),ne=e=>ie()?(be(nt,e),{status:!0}):(ce(nt,1),{status:o}),ie=()=>n(6.1,[s]),_e=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},pe=()=>!0,ue=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},de=()=>!0;var ce=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const ge=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return ce("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 be=(t,s)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(t,JSON.stringify(s));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:t,eventData:s}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:t,eventData:s}),"*")}catch(t){e("postMessage Iframe",10)}};const le="back_button_pressed",we="clipboard_text_received",me="custom_method_invoked",he="invoice_closed",fe="main_button_pressed",ve="phone_requested",ye="popup_closed",Se="reload_iframe",qe="qr_text_received",xe="scan_qr_popup_closed",ke="set_custom_style",Pe="settings_button_pressed",Oe="theme_changed",Ie="viewport_changed",Re="write_access_requested",Te=((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===Oe&&(t.theme_params=(e=>{"#1c1c1d"==e.bg_color&&e.bg_color==e.secondary_bg_color&&(e.secondary_bg_color="#2c2c2e");const t=window.location.hash.slice(1),s=new URLSearchParams(t);var a=JSON.parse(s.get("tgWebAppThemeParams")??"");for(var r in e){var o=_(e[r]);"string"==typeof o&&(a[r]=o)}return a})(t.theme_params)),Te.emit(e,t),Te.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Ne=(e,t)=>{Te.on(e,t)},Ce=(e,t)=>{Te.off(e,t)},Le=(e,t)=>{Te.once(e,t)};var We=Object.freeze({__proto__:null,off:Ce,on:Ne,once:Le});const Ee="web_app_invoke_custom_method",De="web_app_open_scan_qr_popup",Je="web_app_read_text_from_clipboard",$e="web_app_request_phone",Be="web_app_close",Me="web_app_close_scan_qr_popup",Ae="web_app_data_send",Ue="web_app_expand",Ge="iframe_ready",Ve="iframe_will_reload",Qe="web_app_open_invoice",Fe="web_app_open_link",He="web_app_open_popup",je="web_app_open_tg_link",ze="web_app_ready",Ke="web_app_request_theme",Xe="web_app_request_viewport",Ye="web_app_request_write_access",Ze="web_app_set_background_color",et="web_app_set_header_color",tt="web_app_setup_back_button",st="web_app_setup_closing_behavior",at="web_app_setup_main_button",rt="web_app_setup_settings_button",ot="web_app_switch_inline_query",nt="web_app_trigger_haptic_feedback",it="web_app_setup_swipe_behavior";export{le as EventBackButtonPressed,we as EventClipboardTextReceived,me as EventCustomMethodInvoked,he as EventInvoiceClosed,fe as EventMainButtonPressed,ve as EventPhoneRequested,ye as EventPopupClosed,qe as EventQrTextReceived,Se as EventReloadIframe,xe as EventScanQrPopupClosed,ke as EventSetCustomStyle,Pe as EventSettingsButtonPressed,Oe as EventThemeChanged,Ie as EventViewportChanged,Re as EventWriteAccessRequested,Be as MethodClose,Me as MethodCloseScanQrPopup,Ae as MethodDataSend,Ue as MethodExpand,Ge as MethodIframeReady,Ve as MethodIframeWillReload,Ee as MethodInvokeCustomMethod,Qe as MethodOpenInvoice,Fe as MethodOpenLink,He as MethodOpenPopup,De as MethodOpenScanQrPopup,je as MethodOpenTgLink,Je as MethodReadTextFromClipboard,ze as MethodReady,$e as MethodRequestPhone,Ke as MethodRequestTheme,Xe as MethodRequestViewport,Ye as MethodRequestWriteAccess,Ze as MethodSetBackgroundColor,et as MethodSetHeaderColor,tt as MethodSetupBackButton,st as MethodSetupClosingBehavior,at as MethodSetupMainButton,rt as MethodSetupSettingsButton,it as MethodSetupSwipeBehavior,ot as MethodSwitchInlineQuery,nt as MethodTriggerHapticFeedback,o as NOT_SUPPORTED,a as TG_DESKTOP,s as TG_PHONE,t as TG_WEB,p as bridgeClose,d as bridgeCloseScanQrPopup,g as bridgeDataSend,l as bridgeExpand,ge as bridgeGetInitData,m as bridgeIframeReady,f as bridgeIframeWillReload,S as bridgeInvokeCustomMethod,x as bridgeOpenInvoice,P as bridgeOpenLink,I as bridgeOpenPopup,T as bridgeOpenScanQrPopup,C as bridgeOpenTgLink,W as bridgeReadTextFromClipboard,D as bridgeReady,$ as bridgeRequestPhone,M as bridgeRequestTheme,U as bridgeRequestViewport,V as bridgeRequestWriteAccess,ue as bridgeSessionStorageGet,_e as bridgeSessionStorageSet,F as bridgeSetBackgroundColor,j as bridgeSetHeaderColor,K as bridgeSetupBackButton,Y as bridgeSetupClosingBehavior,ee as bridgeSetupMainButton,se as bridgeSetupSettingsButton,re as bridgeSwitchInlineQuery,ne as bridgeTriggerHapticFeedback,ce as debug,r as getPlatform,We as listener,be as sender,u as supportClose,c as supportCloseScanQrPopup,b as supportDataSend,w as supportExpand,h as supportIframeReady,v as supportIframeWillReload,q as supportInvokeCustomMethod,k as supportOpenInvoice,O as supportOpenLink,R as supportOpenPopup,N as supportOpenScanQrPopup,L as supportOpenTgLink,E as supportReadTextFromClipboard,J as supportReady,B as supportRequestPhone,A as supportRequestTheme,G as supportRequestViewport,Q as supportRequestWriteAccess,de as supportSessionStorageGet,pe as supportSessionStorageSet,H as supportSetBackgroundColor,z as supportSetHeaderColor,X as supportSetupBackButton,Z as supportSetupClosingBehavior,te as supportSetupMainButton,ae as supportSetupSettingsButton,oe as supportSwitchInlineQuery,ie as supportTriggerHapticFeedback};
package/solid/index.d.ts CHANGED
@@ -604,6 +604,7 @@ type SessionStorageGet = ({ key }: {
604
604
  key: string;
605
605
  }) => {
606
606
  status: boolean | typeof NOT_SUPPORTED;
607
+ value?: any;
607
608
  };
608
609
  /**
609
610
  * sessions storage get.
@@ -763,13 +764,13 @@ declare const debug: Debug;
763
764
 
764
765
  type EventsData = {
765
766
  /**
766
- * User clicked the Back Button.
767
- */
768
- "back_button_pressed": undefined;
767
+ * User clicked the Back Button.
768
+ */
769
+ back_button_pressed: undefined;
769
770
  /**
770
771
  * Telegram application attempted to extract text from clipboard.
771
772
  */
772
- "clipboard_text_received": {
773
+ clipboard_text_received: {
773
774
  /**
774
775
  * Passed during the web_app_read_text_from_clipboard method invocation req_id value.
775
776
  */
@@ -780,9 +781,9 @@ type EventsData = {
780
781
  data?: string | null;
781
782
  };
782
783
  /**
783
- * Custom method invocation completed.
784
- */
785
- "custom_method_invoked": {
784
+ * Custom method invocation completed.
785
+ */
786
+ custom_method_invoked: {
786
787
  /**
787
788
  * Unique identifier of this invocation.
788
789
  */
@@ -797,9 +798,9 @@ type EventsData = {
797
798
  error?: string;
798
799
  };
799
800
  /**
800
- * An invoice was closed.
801
- */
802
- "invoice_closed": {
801
+ * An invoice was closed.
802
+ */
803
+ invoice_closed: {
803
804
  /**
804
805
  * Passed during the web_app_open_invoice method invocation slug value.
805
806
  */
@@ -818,22 +819,22 @@ type EventsData = {
818
819
  status: 'paid' | 'failed' | 'pending' | 'cancelled';
819
820
  };
820
821
  /**
821
- * User clicked the Main Button.
822
- */
823
- "main_button_pressed": undefined;
822
+ * User clicked the Main Button.
823
+ */
824
+ main_button_pressed: undefined;
824
825
  /**
825
- * Application received phone access request status.
826
- */
827
- "phone_requested": {
826
+ * Application received phone access request status.
827
+ */
828
+ phone_requested: {
828
829
  /**
829
830
  * Request status. Can only be sent
830
831
  */
831
832
  status: 'sent';
832
833
  };
833
834
  /**
834
- * Popup was closed.
835
- */
836
- "popup_closed": {
835
+ * Popup was closed.
836
+ */
837
+ popup_closed: {
837
838
  /**
838
839
  * Optional. Identifier of the clicked button.
839
840
  *
@@ -842,36 +843,36 @@ type EventsData = {
842
843
  button_id?: string;
843
844
  };
844
845
  /**
845
- * Parent iframe requested current iframe reload.
846
- */
847
- "reload_iframe": undefined;
846
+ * Parent iframe requested current iframe reload.
847
+ */
848
+ reload_iframe: undefined;
848
849
  /**
849
850
  * The QR scanner scanned some QR and extracted its content.
850
851
  */
851
- "qr_text_received": {
852
+ qr_text_received: {
852
853
  /**
853
854
  * Optional. Data extracted from the QR.
854
855
  */
855
856
  data?: string;
856
857
  };
857
858
  /**
858
- * QR scanner was closed.
859
- */
860
- "scan_qr_popup_closed": undefined;
859
+ * QR scanner was closed.
860
+ */
861
+ scan_qr_popup_closed: undefined;
861
862
  /**
862
- * The event which is usually sent by the Telegram web application.
863
- *
864
- * Its payload represents <style/> tag html content, a developer could use. The stylesheet described in the payload will help the developer to stylize the app scrollbar (but he is still able to do it himself).
865
- */
866
- "set_custom_style": undefined;
863
+ * The event which is usually sent by the Telegram web application.
864
+ *
865
+ * Its payload represents <style/> tag html content, a developer could use. The stylesheet described in the payload will help the developer to stylize the app scrollbar (but he is still able to do it himself).
866
+ */
867
+ set_custom_style: undefined;
867
868
  /**
868
- * Occurs when the Settings Button was pressed.
869
- */
870
- "settings_button_pressed": undefined;
869
+ * Occurs when the Settings Button was pressed.
870
+ */
871
+ settings_button_pressed: undefined;
871
872
  /**
872
- * Occurs whenever the theme was changed in the user's Telegram app ( including switching to night mode).
873
- */
874
- "theme_changed": {
873
+ * Occurs whenever the theme was changed in the user's Telegram app ( including switching to night mode).
874
+ */
875
+ theme_changed: {
875
876
  /**
876
877
  * Map where the key is a theme stylesheet key and value is the corresponding color in #RRGGBB format.
877
878
  */
@@ -882,7 +883,7 @@ type EventsData = {
882
883
  *
883
884
  * For example, when the user started dragging the application or called the expansion method.
884
885
  */
885
- "viewport_changed": {
886
+ viewport_changed: {
886
887
  /**
887
888
  * The viewport height.
888
889
  */
@@ -901,9 +902,9 @@ type EventsData = {
901
902
  is_state_stable: boolean;
902
903
  };
903
904
  /**
904
- * Application received write access request status.
905
- */
906
- "write_access_requested": {
905
+ * Application received write access request status.
906
+ */
907
+ write_access_requested: {
907
908
  /**
908
909
  * Request status. Can only be allowed.
909
910
  */
@@ -923,7 +924,7 @@ declare global {
923
924
  interface Window {
924
925
  TelegramWebviewProxy: TelegramWebviewProxy;
925
926
  TelegramGameProxy: TelegramGameProxy;
926
- TelegramGameProxy_receiveEvent: TelegramGameProxy["receiveEvent"];
927
+ TelegramGameProxy_receiveEvent: TelegramGameProxy['receiveEvent'];
927
928
  Telegram: {
928
929
  WebView: TelegramGameProxy;
929
930
  };
@@ -942,9 +943,11 @@ declare namespace listener {
942
943
  export { type listener_EventsData as EventsData, listener_off as off, listener_on as on, listener_once as once };
943
944
  }
944
945
 
946
+ type GetPlatform = () => 'phone' | 'web' | 'desktop';
945
947
  declare const TG_WEB = "web";
946
948
  declare const TG_PHONE = "phone";
947
949
  declare const TG_DESKTOP = "desktop";
950
+ declare const getPlatform: GetPlatform;
948
951
 
949
952
  declare const NOT_SUPPORTED = "not_supported";
950
953
 
@@ -974,6 +977,7 @@ declare const MethodSetupMainButton = "web_app_setup_main_button";
974
977
  declare const MethodSetupSettingsButton = "web_app_setup_settings_button";
975
978
  declare const MethodSwitchInlineQuery = "web_app_switch_inline_query";
976
979
  declare const MethodTriggerHapticFeedback = "web_app_trigger_haptic_feedback";
980
+ declare const MethodSetupSwipeBehavior = "web_app_setup_swipe_behavior";
977
981
 
978
982
  declare const EventBackButtonPressed = "back_button_pressed";
979
983
  declare const EventClipboardTextReceived = "clipboard_text_received";
@@ -991,4 +995,4 @@ declare const EventThemeChanged = "theme_changed";
991
995
  declare const EventViewportChanged = "viewport_changed";
992
996
  declare const EventWriteAccessRequested = "write_access_requested";
993
997
 
994
- 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 };
998
+ 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, MethodSetupSwipeBehavior, 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, getPlatform, 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]),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 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;
1
+ "use strict";var e=require("debug"),t=require("solid-js");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)>=e&&-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=()=>n(0,[s,r,o]),_=()=>c()?(Q(oe),{status:!0}):(D(oe,1),{status:a}),c=()=>n(6.4,[o]),x=()=>n(0,[s,r,o]),g=()=>n(0,[o]),l=()=>n(0,[s]),h=()=>n(0,[s]),b="web_app_invoke_custom_method",w=()=>n(6.9,[s,r,o]),m=()=>n(6.1,[s,r,o]),v=()=>n(6.4,[s,r,o]),S=()=>n(6.2,[s,r,o]),f=()=>n(6.4,[o]),y=()=>n(7,[s,r,o]),M=()=>n(6.4,[s,r,o]),P=()=>n(6.9,[s,r,o]),q=()=>n(6.9,[s,r,o]),R=()=>n(0,[s,r,o]),k=()=>n(0,[s,r,o]),C=()=>n(6.9,[s,r,o]),O=()=>n(6.1,[s,r,o]),E=()=>n(6.1,[s,r,o]),T=()=>n(6.1,[s,r,o]),I=()=>n(0,[s,r,o]),B=()=>n(0,[s,r,o]),W=()=>n(6.1,[s,r,o]),L=()=>n(6.7,[s,r,o]),N=()=>n(6.1,[o]);var D=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};var Q=(t,s)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(t,JSON.stringify(s));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:t,eventData:s}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:t,eventData:s}),"*")}catch(t){e("postMessage Iframe",10)}};const A="clipboard_text_received",G="custom_method_invoked",V="phone_requested",H="popup_closed",J="qr_text_received",$="scan_qr_popup_closed",F="theme_changed",U="viewport_changed",j=((e=new Map)=>({once:(t,s,o=e.get(t),r=(e=>{s(e),o&&o.splice(o.indexOf(s)>>>0,1)}))=>o?o.push(r):e.set(t,[r]),on:(t,s,o=e.get(t))=>o?o.push(s):e.set(t,[s]),off:(t,s,o=e.get(t))=>o&&s?o.splice(o.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,o=e.get(t)||[])=>{for(const e of o)e(s)}}))();(()=>{function e(e,t){e===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=u(e[r]);"string"==typeof p&&(o[r]=p)}return o})(t.theme_params)),j.emit(e,t),j.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const z=(e,t)=>{j.on(e,t)},K=(e,t)=>{j.off(e,t)},X=(e,t)=>{j.once(e,t)};var Y=Object.freeze({__proto__:null,off:K,on:z,once:X});const Z="web_app_open_scan_qr_popup",ee="web_app_read_text_from_clipboard",te="web_app_request_phone",se="web_app_close",oe="web_app_close_scan_qr_popup",re="web_app_data_send",pe="web_app_expand",ae="iframe_ready",ne="web_app_open_invoice",ie="web_app_open_link",ue="web_app_open_popup",de="web_app_open_tg_link",_e="web_app_ready",ce="web_app_request_theme",xe="web_app_request_viewport",ge="web_app_request_write_access",le="web_app_set_background_color",he="web_app_set_header_color",be="web_app_setup_back_button",we="web_app_setup_closing_behavior",me="web_app_setup_main_button",ve="web_app_setup_settings_button",Se="web_app_switch_inline_query",fe="web_app_trigger_haptic_feedback";exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=A,exports.EventCustomMethodInvoked=G,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=V,exports.EventPopupClosed=H,exports.EventQrTextReceived=J,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=$,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=F,exports.EventViewportChanged=U,exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=se,exports.MethodCloseScanQrPopup=oe,exports.MethodDataSend=re,exports.MethodExpand=pe,exports.MethodIframeReady=ae,exports.MethodIframeWillReload="iframe_will_reload",exports.MethodInvokeCustomMethod="web_app_invoke_custom_method",exports.MethodOpenInvoice=ne,exports.MethodOpenLink=ie,exports.MethodOpenPopup=ue,exports.MethodOpenScanQrPopup=Z,exports.MethodOpenTgLink=de,exports.MethodReadTextFromClipboard=ee,exports.MethodReady=_e,exports.MethodRequestPhone=te,exports.MethodRequestTheme=ce,exports.MethodRequestViewport=xe,exports.MethodRequestWriteAccess=ge,exports.MethodSetBackgroundColor=le,exports.MethodSetHeaderColor=he,exports.MethodSetupBackButton=be,exports.MethodSetupClosingBehavior=we,exports.MethodSetupMainButton=me,exports.MethodSetupSettingsButton=ve,exports.MethodSetupSwipeBehavior="web_app_setup_swipe_behavior",exports.MethodSwitchInlineQuery=Se,exports.MethodTriggerHapticFeedback=fe,exports.NOT_SUPPORTED=a,exports.TG_DESKTOP=r,exports.TG_PHONE=o,exports.TG_WEB=s,exports.bridgeClose=()=>d()?(Q(se),{status:!0}):(D(se,1),{status:a}),exports.bridgeCloseScanQrPopup=_,exports.bridgeDataSend=e=>x()?(Q(re,e),{status:!0}):(D(re,1),{status:a}),exports.bridgeExpand=()=>g()?(Q(pe),{status:!0}):(D(pe,1),{status:a}),exports.bridgeGetInitData=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return D("getInitData",2),null;const t=new URLSearchParams(e);let s={};return t.forEach(((e,t)=>{if(s[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{s[t]=JSON.parse(e)}catch{}})),s},exports.bridgeIframeReady=e=>l()?(Q(ae,e),{status:!0}):(D(ae,1),{status:a}),exports.bridgeIframeWillReload=()=>h()?(Q(ae),{status:!0}):(D(ae,1),{status:a}),exports.bridgeInvokeCustomMethod=async e=>w()?(void 0===e.req_id&&(e.req_id=i()),Q(b,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),K(G,o))};z(G,o)}))):(D(b,1),{status:a}),exports.bridgeOpenInvoice=e=>m()?(Q(ne,e),{status:!0}):(D(ne,1),{status:a}),exports.bridgeOpenLink=e=>v()?(Q(ie,e),{status:!0}):(D(ie,1),{status:a}),exports.bridgeOpenPopup=async e=>S()?(e.title.length>64&&D(ue,3),e.message.length<1&&D(ue,4),e.message.length>256&&D(ue,5),e.buttons.length<1&&D(ue,6),e.buttons.length>3&&D(ue,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&D(ue,8),Q(ue,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),K(H,o)};z(H,o)}))):(D(ue,1),{status:a}),exports.bridgeOpenScanQrPopup=async e=>f()?(Q(Z,e),new Promise(((t,s)=>{X(J,(s=>{e.is_close&&_(),t({status:!0,data:s})})),X($,(()=>{t({status:"closed"})}))}))):(D(Z,1),{status:a}),exports.bridgeOpenTgLink=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),y()?(Q(de,e),{status:!0}):(D(de,1),{status:a})),exports.bridgeReadTextFromClipboard=async e=>M()?(void 0===e.req_id&&(e.req_id=i()),Q(ee,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),K(A,o))};z(A,o)}))):(D(ee,1),{status:a}),exports.bridgeReady=()=>P()?(Q(_e),{status:!0}):(D(_e,1),{status:a}),exports.bridgeRequestPhone=async()=>q()?(Q(te),new Promise(((e,t)=>{X(V,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(D(te,1),{status:a}),exports.bridgeRequestTheme=()=>R()?(Q(ce),{status:!0}):(D(ce,1),{status:a}),exports.bridgeRequestViewport=()=>k()?(Q(xe),{status:!0}):(D(xe,1),{status:a}),exports.bridgeRequestWriteAccess=()=>C()?(Q(ge),{status:!0}):(D(ge,1),{status:a}),exports.bridgeSessionStorageGet=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},exports.bridgeSetBackgroundColor=e=>O()?(Q(le,e),{status:!0}):(D(le,1),{status:a}),exports.bridgeSetHeaderColor=e=>E()?(Q(he,e),{status:!0}):(D(he,1),{status:a}),exports.bridgeSetupBackButton=e=>T()?(Q(be,e),{status:!0}):(D(be,1),{status:a}),exports.bridgeSetupClosingBehavior=e=>I()?(Q(we,e),{status:!0}):(D(we,1),{status:a}),exports.bridgeSetupMainButton=e=>B()?(Q(me,e),{status:!0}):(D(me,1),{status:a}),exports.bridgeSetupSettingsButton=e=>W()?(Q(ve,e),{status:!0}):(D(ve,1),{status:a}),exports.bridgeSwitchInlineQuery=e=>L()?(e.query.length>256&&D(Se,9),Q(Se,e),{status:!0}):(D(Se,1),{status:a}),exports.bridgeTriggerHapticFeedback=e=>N()?(Q(fe,e),{status:!0}):(D(fe,1),{status:a}),exports.createIsViewportChanged=()=>{const[e,s]=t.createSignal({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>s(e);return t.onMount((()=>{z(U,o),Q(xe)})),t.onCleanup((()=>{K(U,o)})),e},exports.debug=D,exports.getPlatform=p,exports.listener=Y,exports.sender=Q,exports.supportClose=d,exports.supportCloseScanQrPopup=c,exports.supportDataSend=x,exports.supportExpand=g,exports.supportIframeReady=l,exports.supportIframeWillReload=h,exports.supportInvokeCustomMethod=w,exports.supportOpenInvoice=m,exports.supportOpenLink=v,exports.supportOpenPopup=S,exports.supportOpenScanQrPopup=f,exports.supportOpenTgLink=y,exports.supportReadTextFromClipboard=M,exports.supportReady=P,exports.supportRequestPhone=q,exports.supportRequestTheme=R,exports.supportRequestViewport=k,exports.supportRequestWriteAccess=C,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=O,exports.supportSetHeaderColor=E,exports.supportSetupBackButton=T,exports.supportSetupClosingBehavior=I,exports.supportSetupMainButton=B,exports.supportSetupSettingsButton=W,exports.supportSwitchInlineQuery=L,exports.supportTriggerHapticFeedback=N;
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((()=>{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 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};
1
+ import e from"debug";import{createSignal as t,onMount as s,onCleanup as a}from"solid-js";const r=()=>{const[e,r]=t({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>r(e);return s((()=>{Ee(Ce,o),he(tt)})),a((()=>{De(Ce,o)})),e},o="web",n="phone",i="desktop",_=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?n:["tdesktop","macos"].includes(t)?i:o},p="not_supported",u=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s)>=e&&-1!==t.indexOf(_())},d=()=>Math.random().toString(36).substring(3,9),c=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},g=()=>b()?(he(Ge),{status:!0}):(we(Ge,1),{status:p}),b=()=>u(0,[o,i,n]),l=()=>w()?(he(Ve),{status:!0}):(we(Ve,1),{status:p}),w=()=>u(6.4,[n]),m=e=>h()?(he(Qe,e),{status:!0}):(we(Qe,1),{status:p}),h=()=>u(0,[o,i,n]),f=()=>v()?(he(je),{status:!0}):(we(je,1),{status:p}),v=()=>u(0,[n]),y=e=>S()?(he(Fe,e),{status:!0}):(we(Fe,1),{status:p}),S=()=>u(0,[o]),q=()=>x()?(he(Fe),{status:!0}):(we(Fe,1),{status:p}),x=()=>u(0,[o]),k="web_app_invoke_custom_method",P=async e=>O()?(void 0===e.req_id&&(e.req_id=d()),he(k,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),De(ye,a))};Ee(ye,a)}))):(we(k,1),{status:p}),O=()=>u(6.9,[o,i,n]),I=e=>R()?(he(ze,e),{status:!0}):(we(ze,1),{status:p}),R=()=>u(6.1,[o,i,n]),T=e=>N()?(he(Ke,e),{status:!0}):(we(Ke,1),{status:p}),N=()=>u(6.4,[o,i,n]),C=async e=>L()?(e.title.length>64&&we(Xe,3),e.message.length<1&&we(Xe,4),e.message.length>256&&we(Xe,5),e.buttons.length<1&&we(Xe,6),e.buttons.length>3&&we(Xe,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&we(Xe,8),he(Xe,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),De(ke,a)};Ee(ke,a)}))):(we(Xe,1),{status:p}),L=()=>u(6.2,[o,i,n]),W=async e=>E()?(he(Me,e),new Promise(((t,s)=>{Je(Oe,(s=>{e.is_close&&l(),t({status:!0,data:s})})),Je(Ie,(()=>{t({status:"closed"})}))}))):(we(Me,1),{status:p}),E=()=>u(6.4,[n]),D=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),J()?(he(Ye,e),{status:!0}):(we(Ye,1),{status:p})),J=()=>u(7,[o,i,n]),$=async e=>B()?(void 0===e.req_id&&(e.req_id=d()),he(Ae,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),De(ve,a))};Ee(ve,a)}))):(we(Ae,1),{status:p}),B=()=>u(6.4,[o,i,n]),M=()=>A()?(he(Ze),{status:!0}):(we(Ze,1),{status:p}),A=()=>u(6.9,[o,i,n]),U=async()=>G()?(he(Ue),new Promise(((e,t)=>{Je(xe,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(we(Ue,1),{status:p}),G=()=>u(6.9,[o,i,n]),V=()=>Q()?(he(et),{status:!0}):(we(et,1),{status:p}),Q=()=>u(0,[o,i,n]),j=()=>F()?(he(tt),{status:!0}):(we(tt,1),{status:p}),F=()=>u(0,[o,i,n]),H=()=>z()?(he(st),{status:!0}):(we(st,1),{status:p}),z=()=>u(6.9,[o,i,n]),K=e=>X()?(he(at,e),{status:!0}):(we(at,1),{status:p}),X=()=>u(6.1,[o,i,n]),Y=e=>Z()?(he(rt,e),{status:!0}):(we(rt,1),{status:p}),Z=()=>u(6.1,[o,i,n]),ee=e=>te()?(he(ot,e),{status:!0}):(we(ot,1),{status:p}),te=()=>u(6.1,[o,i,n]),se=e=>ae()?(he(nt,e),{status:!0}):(we(nt,1),{status:p}),ae=()=>u(0,[o,i,n]),re=e=>oe()?(he(it,e),{status:!0}):(we(it,1),{status:p}),oe=()=>u(0,[o,i,n]),ne=e=>ie()?(he(_t,e),{status:!0}):(we(_t,1),{status:p}),ie=()=>u(6.1,[o,i,n]),_e=e=>pe()?(e.query.length>256&&we(pt,9),he(pt,e),{status:!0}):(we(pt,1),{status:p}),pe=()=>u(6.7,[o,i,n]),ue=e=>de()?(he(ut,e),{status:!0}):(we(ut,1),{status:p}),de=()=>u(6.1,[n]),ce=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(e){}return{status:!1}},ge=()=>!0,be=({key:e})=>{try{return{value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(e){}return{status:!1}},le=()=>!0;var we=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};const me=()=>{const e=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppData");if(null===e)return we("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 he=(t,s)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(t,JSON.stringify(s));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:t,eventData:s}));else try{"*",window.parent.postMessage(JSON.stringify({eventType:t,eventData:s}),"*")}catch(t){e("postMessage Iframe",10)}};const fe="back_button_pressed",ve="clipboard_text_received",ye="custom_method_invoked",Se="invoice_closed",qe="main_button_pressed",xe="phone_requested",ke="popup_closed",Pe="reload_iframe",Oe="qr_text_received",Ie="scan_qr_popup_closed",Re="set_custom_style",Te="settings_button_pressed",Ne="theme_changed",Ce="viewport_changed",Le="write_access_requested",We=((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===Ne&&(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=c(e[r]);"string"==typeof o&&(a[r]=o)}return a})(t.theme_params)),We.emit(e,t),We.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Ee=(e,t)=>{We.on(e,t)},De=(e,t)=>{We.off(e,t)},Je=(e,t)=>{We.once(e,t)};var $e=Object.freeze({__proto__:null,off:De,on:Ee,once:Je});const Be="web_app_invoke_custom_method",Me="web_app_open_scan_qr_popup",Ae="web_app_read_text_from_clipboard",Ue="web_app_request_phone",Ge="web_app_close",Ve="web_app_close_scan_qr_popup",Qe="web_app_data_send",je="web_app_expand",Fe="iframe_ready",He="iframe_will_reload",ze="web_app_open_invoice",Ke="web_app_open_link",Xe="web_app_open_popup",Ye="web_app_open_tg_link",Ze="web_app_ready",et="web_app_request_theme",tt="web_app_request_viewport",st="web_app_request_write_access",at="web_app_set_background_color",rt="web_app_set_header_color",ot="web_app_setup_back_button",nt="web_app_setup_closing_behavior",it="web_app_setup_main_button",_t="web_app_setup_settings_button",pt="web_app_switch_inline_query",ut="web_app_trigger_haptic_feedback",dt="web_app_setup_swipe_behavior";export{fe as EventBackButtonPressed,ve as EventClipboardTextReceived,ye as EventCustomMethodInvoked,Se as EventInvoiceClosed,qe as EventMainButtonPressed,xe as EventPhoneRequested,ke as EventPopupClosed,Oe as EventQrTextReceived,Pe as EventReloadIframe,Ie as EventScanQrPopupClosed,Re as EventSetCustomStyle,Te as EventSettingsButtonPressed,Ne as EventThemeChanged,Ce as EventViewportChanged,Le as EventWriteAccessRequested,Ge as MethodClose,Ve as MethodCloseScanQrPopup,Qe as MethodDataSend,je as MethodExpand,Fe as MethodIframeReady,He as MethodIframeWillReload,Be as MethodInvokeCustomMethod,ze as MethodOpenInvoice,Ke as MethodOpenLink,Xe as MethodOpenPopup,Me as MethodOpenScanQrPopup,Ye as MethodOpenTgLink,Ae as MethodReadTextFromClipboard,Ze as MethodReady,Ue as MethodRequestPhone,et as MethodRequestTheme,tt as MethodRequestViewport,st as MethodRequestWriteAccess,at as MethodSetBackgroundColor,rt as MethodSetHeaderColor,ot as MethodSetupBackButton,nt as MethodSetupClosingBehavior,it as MethodSetupMainButton,_t as MethodSetupSettingsButton,dt as MethodSetupSwipeBehavior,pt as MethodSwitchInlineQuery,ut as MethodTriggerHapticFeedback,p as NOT_SUPPORTED,i as TG_DESKTOP,n as TG_PHONE,o as TG_WEB,g as bridgeClose,l as bridgeCloseScanQrPopup,m as bridgeDataSend,f as bridgeExpand,me as bridgeGetInitData,y as bridgeIframeReady,q as bridgeIframeWillReload,P as bridgeInvokeCustomMethod,I as bridgeOpenInvoice,T as bridgeOpenLink,C as bridgeOpenPopup,W as bridgeOpenScanQrPopup,D as bridgeOpenTgLink,$ as bridgeReadTextFromClipboard,M as bridgeReady,U as bridgeRequestPhone,V as bridgeRequestTheme,j as bridgeRequestViewport,H as bridgeRequestWriteAccess,be as bridgeSessionStorageGet,ce as bridgeSessionStorageSet,K as bridgeSetBackgroundColor,Y as bridgeSetHeaderColor,ee as bridgeSetupBackButton,se as bridgeSetupClosingBehavior,re as bridgeSetupMainButton,ne as bridgeSetupSettingsButton,_e as bridgeSwitchInlineQuery,ue as bridgeTriggerHapticFeedback,r as createIsViewportChanged,we as debug,_ as getPlatform,$e as listener,he as sender,b as supportClose,w as supportCloseScanQrPopup,h as supportDataSend,v as supportExpand,S as supportIframeReady,x as supportIframeWillReload,O as supportInvokeCustomMethod,R as supportOpenInvoice,N as supportOpenLink,L as supportOpenPopup,E as supportOpenScanQrPopup,J as supportOpenTgLink,B as supportReadTextFromClipboard,A as supportReady,G as supportRequestPhone,Q as supportRequestTheme,F as supportRequestViewport,z as supportRequestWriteAccess,le as supportSessionStorageGet,ge as supportSessionStorageSet,X as supportSetBackgroundColor,Z as supportSetHeaderColor,te as supportSetupBackButton,ae as supportSetupClosingBehavior,oe as supportSetupMainButton,ie as supportSetupSettingsButton,pe as supportSwitchInlineQuery,de as supportTriggerHapticFeedback};