@apiteam/twa-bridge 7.0.0-beta.9 → 7.7.0-beta.2

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