@apiteam/twa-bridge 7.1.0 → 7.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -3
- package/package.json +1 -1
- package/solid/index.d.ts +203 -795
- package/solid/index.js +491 -1
- package/solid/index.mjs +502 -1
- package/react/index.d.ts +0 -1046
- package/react/index.js +0 -1
- package/react/index.mjs +0 -1
- package/react/package.json +0 -17
package/solid/index.js
CHANGED
|
@@ -1 +1,491 @@
|
|
|
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?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(p())},i=()=>Math.random().toString(36).substring(3,9),u=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),o=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((o<16?"0":"")+o.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},d=()=>n(0,[s,r,o]),_=()=>c()?(G(pe),{status:!0}):(A(pe,1),{status:a}),c=()=>n(6.4,[o]),x=()=>n(0,[s,r,o]),l=()=>n(0,[o]),g=()=>n(0,[s]),b=()=>n(0,[s]),h="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]),C=()=>n(0,[s,r,o]),k=()=>n(0,[s,r,o]),R=()=>n(6.9,[s,r,o]),B=()=>n(6.1,[s,r,o]),O=()=>n(6.1,[s,r,o]),E=()=>n(710,[s,r,o]),T=()=>n(6.1,[s,r,o]),I=()=>n(0,[s,r,o]),W=()=>n(0,[s,r,o]),L=()=>n(6.1,[s,r,o]),N=()=>n(6.7,[s,r,o]),D=()=>n(6.1,[o]),Q=()=>n(7.7,[s,r,o]);var A=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)};var G=(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 V="clipboard_text_received",H="custom_method_invoked",J="phone_requested",$="popup_closed",F="qr_text_received",U="scan_qr_popup_closed",j="theme_changed",z="viewport_changed",K=((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===j&&(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)),K.emit(e,t),K.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const X=(e,t)=>{K.on(e,t)},Y=(e,t)=>{K.off(e,t)},Z=(e,t)=>{K.once(e,t)};var ee=Object.freeze({__proto__:null,off:Y,on:X,once:Z});const te="web_app_open_scan_qr_popup",se="web_app_read_text_from_clipboard",oe="web_app_request_phone",re="web_app_close",pe="web_app_close_scan_qr_popup",ae="web_app_data_send",ne="web_app_expand",ie="iframe_ready",ue="web_app_open_invoice",de="web_app_open_link",_e="web_app_open_popup",ce="web_app_open_tg_link",xe="web_app_ready",le="web_app_request_theme",ge="web_app_request_viewport",be="web_app_request_write_access",he="web_app_set_background_color",we="web_app_set_header_color",me="web_app_set_bottom_bar_color",Se="web_app_setup_back_button",ve="web_app_setup_closing_behavior",fe="web_app_setup_main_button",ye="web_app_setup_settings_button",Me="web_app_switch_inline_query",Pe="web_app_trigger_haptic_feedback",qe="web_app_setup_swipe_behavior";exports.EventBackButtonPressed="back_button_pressed",exports.EventClipboardTextReceived=V,exports.EventCustomMethodInvoked=H,exports.EventInvoiceClosed="invoice_closed",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=J,exports.EventPopupClosed=$,exports.EventQrTextReceived=F,exports.EventReloadIframe="reload_iframe",exports.EventScanQrPopupClosed=U,exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=j,exports.EventViewportChanged=z,exports.EventWriteAccessRequested="write_access_requested",exports.MethodClose=re,exports.MethodCloseScanQrPopup=pe,exports.MethodDataSend=ae,exports.MethodExpand=ne,exports.MethodIframeReady=ie,exports.MethodIframeWillReload="iframe_will_reload",exports.MethodInvokeCustomMethod="web_app_invoke_custom_method",exports.MethodOpenInvoice=ue,exports.MethodOpenLink=de,exports.MethodOpenPopup=_e,exports.MethodOpenScanQrPopup=te,exports.MethodOpenTgLink=ce,exports.MethodReadTextFromClipboard=se,exports.MethodReady=xe,exports.MethodRequestPhone=oe,exports.MethodRequestTheme=le,exports.MethodRequestViewport=ge,exports.MethodRequestWriteAccess=be,exports.MethodSetBackgroundColor=he,exports.MethodSetBottomBarColor=me,exports.MethodSetHeaderColor=we,exports.MethodSetupBackButton=Se,exports.MethodSetupClosingBehavior=ve,exports.MethodSetupMainButton=fe,exports.MethodSetupSettingsButton=ye,exports.MethodSetupSwipeBehavior=qe,exports.MethodSwitchInlineQuery=Me,exports.MethodTriggerHapticFeedback=Pe,exports.NOT_SUPPORTED=a,exports.TG_DESKTOP=r,exports.TG_PHONE=o,exports.TG_WEB=s,exports.bridgeClose=()=>d()?(G(re),{status:!0}):(A(re,1),{status:a}),exports.bridgeCloseScanQrPopup=_,exports.bridgeDataSend=e=>x()?(G(ae,e),{status:!0}):(A(ae,1),{status:a}),exports.bridgeExpand=()=>l()?(G(ne),{status:!0}):(A(ne,1),{status:a}),exports.bridgeGetInitData=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return A("getInitData",2),null;const s=new URLSearchParams(t);let o={};return s.forEach(((e,t)=>{if(o[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{o[t]=JSON.parse(e)}catch{}})),o},exports.bridgeIframeReady=e=>g()?(G(ie,e),{status:!0}):(A(ie,1),{status:a}),exports.bridgeIframeWillReload=()=>b()?(G(ie),{status:!0}):(A(ie,1),{status:a}),exports.bridgeInvokeCustomMethod=async e=>w()?(void 0===e.req_id&&(e.req_id=i()),G(h,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Y(H,o))};X(H,o)}))):(A(h,1),{status:a}),exports.bridgeOpenInvoice=e=>m()?(G(ue,e),{status:!0}):(A(ue,1),{status:a}),exports.bridgeOpenLink=e=>S()?(G(de,e),{status:!0}):(A(de,1),{status:a}),exports.bridgeOpenPopup=async e=>v()?(e.title.length>64&&A(_e,3),e.message.length<1&&A(_e,4),e.message.length>256&&A(_e,5),e.buttons.length<1&&A(_e,6),e.buttons.length>3&&A(_e,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&A(_e,8),G(_e,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Y($,o)};X($,o)}))):(A(_e,1),{status:a}),exports.bridgeOpenScanQrPopup=async e=>f()?(G(te,e),new Promise(((t,s)=>{Z(F,(s=>{e.is_close&&_(),t({status:!0,data:s})})),Z(U,(()=>{t({status:"closed"})}))}))):(A(te,1),{status:a}),exports.bridgeOpenTgLink=e=>("/"!==e.path_full[0]&&(e.path_full="/"+e.path_full),y()?(G(ce,e),{status:!0}):(A(ce,1),{status:a})),exports.bridgeReadTextFromClipboard=async e=>M()?(void 0===e.req_id&&(e.req_id=i()),G(se,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Y(V,o))};X(V,o)}))):(A(se,1),{status:a}),exports.bridgeReady=()=>P()?(G(xe),{status:!0}):(A(xe,1),{status:a}),exports.bridgeRequestPhone=async()=>q()?(G(oe),new Promise(((e,t)=>{Z(J,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(A(oe,1),{status:a}),exports.bridgeRequestTheme=()=>C()?(G(le),{status:!0}):(A(le,1),{status:a}),exports.bridgeRequestViewport=()=>k()?(G(ge),{status:!0}):(A(ge,1),{status:a}),exports.bridgeRequestWriteAccess=()=>R()?(G(be),{status:!0}):(A(be,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=>B()?(G(he,e),{status:!0}):(A(he,1),{status:a}),exports.bridgeSetBottomBarColor=e=>E()?(G(me,{color:e.color||e.color_key}),{status:!0}):(A(me,1),{status:a}),exports.bridgeSetHeaderColor=e=>O()?(G(we,e),{status:!0}):(A(we,1),{status:a}),exports.bridgeSetupBackButton=e=>T()?(G(Se,e),{status:!0}):(A(Se,1),{status:a}),exports.bridgeSetupClosingBehavior=e=>I()?(G(ve,e),{status:!0}):(A(ve,1),{status:a}),exports.bridgeSetupMainButton=e=>W()?(G(fe,e),{status:!0}):(A(fe,1),{status:a}),exports.bridgeSetupSettingsButton=e=>L()?(G(ye,e),{status:!0}):(A(ye,1),{status:a}),exports.bridgeSetupSwipeBehavior=e=>Q()?(G(qe,e),{status:!0}):(A(qe,1),{status:a}),exports.bridgeSwitchInlineQuery=e=>N()?(e.query.length>256&&A(Me,9),G(Me,e),{status:!0}):(A(Me,1),{status:a}),exports.bridgeTriggerHapticFeedback=e=>D()?(G(Pe,e),{status:!0}):(A(Pe,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((()=>{X(z,o),G(ge)})),t.onCleanup((()=>{Y(z,o)})),e},exports.debug=A,exports.getPlatform=p,exports.listener=ee,exports.sender=G,exports.supportClose=d,exports.supportCloseScanQrPopup=c,exports.supportDataSend=x,exports.supportExpand=l,exports.supportIframeReady=g,exports.supportIframeWillReload=b,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=C,exports.supportRequestViewport=k,exports.supportRequestWriteAccess=R,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=B,exports.supportSetBottomBarColor=E,exports.supportSetHeaderColor=O,exports.supportSetupBackButton=T,exports.supportSetupClosingBehavior=I,exports.supportSetupMainButton=W,exports.supportSetupSettingsButton=L,exports.supportSetupSwipeBehavior=Q,exports.supportSwitchInlineQuery=N,exports.supportTriggerHapticFeedback=D;
|
|
1
|
+
'use strict'
|
|
2
|
+
var e = require('solid-js'),
|
|
3
|
+
t = require('solid-js/store')
|
|
4
|
+
const s = 'web',
|
|
5
|
+
o = 'phone',
|
|
6
|
+
r = 'desktop',
|
|
7
|
+
p = () => {
|
|
8
|
+
const e = window.location.hash.slice(1),
|
|
9
|
+
t = new URLSearchParams(e).get('tgWebAppPlatform') ?? 'ios'
|
|
10
|
+
return ['android', 'ios'].includes(t)
|
|
11
|
+
? o
|
|
12
|
+
: ['tdesktop', 'macos'].includes(t)
|
|
13
|
+
? r
|
|
14
|
+
: s
|
|
15
|
+
},
|
|
16
|
+
a = 'not_supported',
|
|
17
|
+
n = (e, t) => {
|
|
18
|
+
const s = new URLSearchParams(window.location.hash.slice(1)).get(
|
|
19
|
+
'tgWebAppVersion'
|
|
20
|
+
)
|
|
21
|
+
return (
|
|
22
|
+
Number(s?.replace('.', '')) >= Number(String(e)?.replace('.', '')) &&
|
|
23
|
+
-1 !== t.indexOf(p())
|
|
24
|
+
)
|
|
25
|
+
},
|
|
26
|
+
i = () => Math.random().toString(36).substring(3, 9),
|
|
27
|
+
u = e => {
|
|
28
|
+
var t
|
|
29
|
+
if ((t = /^\s*#([0-9a-f]{6})\s*$/i.exec((e += ''))))
|
|
30
|
+
return '#' + t[1].toLowerCase()
|
|
31
|
+
if ((t = /^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e)))
|
|
32
|
+
return ('#' + t[1] + t[1] + t[2] + t[2] + t[3] + t[3]).toLowerCase()
|
|
33
|
+
if (
|
|
34
|
+
(t =
|
|
35
|
+
/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(
|
|
36
|
+
e
|
|
37
|
+
))
|
|
38
|
+
) {
|
|
39
|
+
var s = parseInt(t[1]),
|
|
40
|
+
o = parseInt(t[2]),
|
|
41
|
+
r = parseInt(t[3])
|
|
42
|
+
return (
|
|
43
|
+
'#' +
|
|
44
|
+
((s < 16 ? '0' : '') + s.toString(16)) +
|
|
45
|
+
((o < 16 ? '0' : '') + o.toString(16)) +
|
|
46
|
+
((r < 16 ? '0' : '') + r.toString(16))
|
|
47
|
+
)
|
|
48
|
+
}
|
|
49
|
+
return !1
|
|
50
|
+
},
|
|
51
|
+
d = e => {
|
|
52
|
+
'#1c1c1d' == e.bg_color &&
|
|
53
|
+
e.bg_color == e.secondary_bg_color &&
|
|
54
|
+
(e.secondary_bg_color = '#2c2c2e')
|
|
55
|
+
const t = window.location.hash.slice(1),
|
|
56
|
+
s = new URLSearchParams(t)
|
|
57
|
+
var o = JSON.parse(s.get('tgWebAppThemeParams') ?? '')
|
|
58
|
+
for (var r of Object.keys(e)) {
|
|
59
|
+
var p = u(e[r])
|
|
60
|
+
'string' == typeof p && (o[r] = p)
|
|
61
|
+
}
|
|
62
|
+
return o
|
|
63
|
+
},
|
|
64
|
+
_ = e => (c() ? (le(ve, e), { status: !0 }) : (xe(ve, 1), { status: a })),
|
|
65
|
+
c = () => n(0, [s, r, o]),
|
|
66
|
+
x = e => (g() ? (le(Se, e), { status: !0 }) : (xe(Se, 1), { status: a })),
|
|
67
|
+
g = () => n(6.4, [o]),
|
|
68
|
+
l = e => (h() ? (le(fe, e), { status: !0 }) : (xe(fe, 1), { status: a })),
|
|
69
|
+
h = () => n(0, [s, r, o]),
|
|
70
|
+
b = e => (w() ? (le(ye, e), { status: !0 }) : (xe(ye, 1), { status: a })),
|
|
71
|
+
w = () => n(0, [o]),
|
|
72
|
+
m = e => (v() ? (le(Me, e), { status: !0 }) : (xe(Me, 1), { status: a })),
|
|
73
|
+
v = () => n(0, [s]),
|
|
74
|
+
S = () => (f() ? (le(Me), { status: !0 }) : (xe(Me, 1), { status: a })),
|
|
75
|
+
f = () => n(0, [s]),
|
|
76
|
+
y = async e =>
|
|
77
|
+
M()
|
|
78
|
+
? (void 0 === e.req_id && (e.req_id = i()),
|
|
79
|
+
le(he, e),
|
|
80
|
+
new Promise((t, s) => {
|
|
81
|
+
const o = s => {
|
|
82
|
+
s.req_id === e.req_id && (t({ status: !0, data: s }), et($e, o))
|
|
83
|
+
}
|
|
84
|
+
Ze($e, o)
|
|
85
|
+
}))
|
|
86
|
+
: (xe(he, 1), { status: a }),
|
|
87
|
+
M = () => n(6.9, [s, r, o]),
|
|
88
|
+
P = e => (C() ? (le(Ce, e), { status: !0 }) : (xe(Ce, 1), { status: a })),
|
|
89
|
+
C = () => n(6.1, [s, r, o]),
|
|
90
|
+
q = e => (R() ? (le(qe, e), { status: !0 }) : (xe(qe, 1), { status: a })),
|
|
91
|
+
R = () => n(6.4, [s, r, o]),
|
|
92
|
+
k = async e =>
|
|
93
|
+
B()
|
|
94
|
+
? (e.title.length > 64 && xe(Re, 3),
|
|
95
|
+
e.message.length < 1 && xe(Re, 4),
|
|
96
|
+
e.message.length > 256 && xe(Re, 5),
|
|
97
|
+
e.buttons.length < 1 && xe(Re, 6),
|
|
98
|
+
e.buttons.length > 3 && xe(Re, 7),
|
|
99
|
+
void 0 !== e.buttons.find(e => e.text?.match(/^(ok|close|cancel)$/g)) &&
|
|
100
|
+
xe(Re, 8),
|
|
101
|
+
le(Re, e),
|
|
102
|
+
new Promise((t, s) => {
|
|
103
|
+
const o = s => {
|
|
104
|
+
t({
|
|
105
|
+
status: !!e.buttons.find(e => e.id === s?.button_id),
|
|
106
|
+
data: s,
|
|
107
|
+
}),
|
|
108
|
+
et(Fe, o)
|
|
109
|
+
}
|
|
110
|
+
Ze(Fe, o)
|
|
111
|
+
}))
|
|
112
|
+
: (xe(Re, 1), { status: a }),
|
|
113
|
+
B = () => n(6.2, [s, r, o]),
|
|
114
|
+
O = async e =>
|
|
115
|
+
T()
|
|
116
|
+
? (le(be, e),
|
|
117
|
+
new Promise((t, s) => {
|
|
118
|
+
tt(Ue, s => {
|
|
119
|
+
e.is_close && x(), t({ status: !0, data: s })
|
|
120
|
+
}),
|
|
121
|
+
tt(ze, () => {
|
|
122
|
+
t({ status: 'closed' })
|
|
123
|
+
})
|
|
124
|
+
}))
|
|
125
|
+
: (xe(be, 1), { status: a }),
|
|
126
|
+
T = () => n(6.4, [o]),
|
|
127
|
+
E = e => (
|
|
128
|
+
'/' !== e.path_full[0] && (e.path_full = '/' + e.path_full),
|
|
129
|
+
I() ? (le(ke, e), { status: !0 }) : (xe(ke, 1), { status: a })
|
|
130
|
+
),
|
|
131
|
+
I = () => n(7, [s, r, o]),
|
|
132
|
+
W = async e =>
|
|
133
|
+
L()
|
|
134
|
+
? (e || (e = { req_id: void 0 }),
|
|
135
|
+
void 0 === e.req_id && (e.req_id = i()),
|
|
136
|
+
le(we, e),
|
|
137
|
+
new Promise((t, s) => {
|
|
138
|
+
const o = s => {
|
|
139
|
+
s.req_id === e?.req_id && (t({ status: !0, data: s }), et(Je, o))
|
|
140
|
+
}
|
|
141
|
+
Ze(Je, o)
|
|
142
|
+
}))
|
|
143
|
+
: (xe(we, 1), { status: a }),
|
|
144
|
+
L = () => n(6.4, [s, r, o]),
|
|
145
|
+
N = e => (D() ? (le(Be, e), { status: !0 }) : (xe(Be, 1), { status: a })),
|
|
146
|
+
D = () => n(6.9, [s, r, o]),
|
|
147
|
+
Q = async () =>
|
|
148
|
+
A()
|
|
149
|
+
? (le(me),
|
|
150
|
+
new Promise((e, t) => {
|
|
151
|
+
tt(je, t => {
|
|
152
|
+
'sent' === t.status && e({ status: !0 }), e({ status: !1 })
|
|
153
|
+
})
|
|
154
|
+
}))
|
|
155
|
+
: (xe(me, 1), { status: a }),
|
|
156
|
+
A = () => n(6.9, [s, r, o]),
|
|
157
|
+
G = e => (H() ? (le(Oe, e), { status: !0 }) : (xe(Oe, 1), { status: a })),
|
|
158
|
+
H = () => n(0, [s, r, o]),
|
|
159
|
+
V = e => (J() ? (le(Te, e), { status: !0 }) : (xe(Te, 1), { status: a })),
|
|
160
|
+
J = () => n(0, [s, r, o]),
|
|
161
|
+
$ = () => (j() ? (le(Ee), { status: !0 }) : (xe(Ee, 1), { status: a })),
|
|
162
|
+
j = () => n(6.9, [s, r, o]),
|
|
163
|
+
F = e => (U() ? (le(Ie, e), { status: !0 }) : (xe(Ie, 1), { status: a })),
|
|
164
|
+
U = () => n(6.1, [s, r, o]),
|
|
165
|
+
z = e => (K() ? (le(We, e), { status: !0 }) : (xe(We, 1), { status: a })),
|
|
166
|
+
K = () => n(6.1, [s, r, o]),
|
|
167
|
+
X = e =>
|
|
168
|
+
Y()
|
|
169
|
+
? (le(Le, { color: e?.color || e?.color_key }), { status: !0 })
|
|
170
|
+
: (xe(Le, 1), { status: a }),
|
|
171
|
+
Y = () => n(710, [s, r, o]),
|
|
172
|
+
Z = e => (ee() ? (le(Ne, e), { status: !0 }) : (xe(Ne, 1), { status: a })),
|
|
173
|
+
ee = () => n(6.1, [s, r, o]),
|
|
174
|
+
te = e => (se() ? (le(De, e), { status: !0 }) : (xe(De, 1), { status: a })),
|
|
175
|
+
se = () => n(0, [s, r, o]),
|
|
176
|
+
oe = e => (re() ? (le(Qe, e), { status: !0 }) : (xe(Qe, 1), { status: a })),
|
|
177
|
+
re = () => n(0, [s, r, o]),
|
|
178
|
+
pe = e => (ae() ? (le(Ae, e), { status: !0 }) : (xe(Ae, 1), { status: a })),
|
|
179
|
+
ae = () => n(6.1, [s, r, o]),
|
|
180
|
+
ne = e =>
|
|
181
|
+
ie()
|
|
182
|
+
? (e.query.length > 256 && xe(Ge, 9), le(Ge, e), { status: !0 })
|
|
183
|
+
: (xe(Ge, 1), { status: a }),
|
|
184
|
+
ie = () => n(6.7, [s, r, o]),
|
|
185
|
+
ue = e => (de() ? (le(He, e), { status: !0 }) : (xe(He, 1), { status: a })),
|
|
186
|
+
de = () => n(6.1, [o]),
|
|
187
|
+
_e = e => (ce() ? (le(Ve, e), { status: !0 }) : (xe(Ve, 1), { status: a })),
|
|
188
|
+
ce = () => n(7.7, [s, r, o])
|
|
189
|
+
var xe = (e, t) => {
|
|
190
|
+
'development' === process.env.NODE_ENV &&
|
|
191
|
+
console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)
|
|
192
|
+
}
|
|
193
|
+
const ge = () => {
|
|
194
|
+
const e = window.location.hash.slice(1),
|
|
195
|
+
t = new URLSearchParams(e).get('tgWebAppData')
|
|
196
|
+
if (!t) return void xe('getInitData', 2)
|
|
197
|
+
const s = new URLSearchParams(t)
|
|
198
|
+
let o = {}
|
|
199
|
+
return (
|
|
200
|
+
s.forEach((e, t) => {
|
|
201
|
+
if (((o[t] = e), void 0 !== t.match(/^(chat|receiver|user)$/g)))
|
|
202
|
+
try {
|
|
203
|
+
o[t] = JSON.parse(e)
|
|
204
|
+
} catch {}
|
|
205
|
+
}),
|
|
206
|
+
o
|
|
207
|
+
)
|
|
208
|
+
}
|
|
209
|
+
var le = (e, t) => {
|
|
210
|
+
if (window.TelegramWebviewProxy)
|
|
211
|
+
window.TelegramWebviewProxy.postEvent(e, JSON.stringify(t))
|
|
212
|
+
else if (window.external && 'notify' in window.external)
|
|
213
|
+
window.external.notify(JSON.stringify({ eventType: e, eventData: t }))
|
|
214
|
+
else
|
|
215
|
+
try {
|
|
216
|
+
'*',
|
|
217
|
+
window.parent.postMessage(
|
|
218
|
+
JSON.stringify({ eventType: e, eventData: t }),
|
|
219
|
+
'*'
|
|
220
|
+
)
|
|
221
|
+
} catch (e) {
|
|
222
|
+
xe('postMessage Iframe', 10)
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
const he = 'web_app_invoke_custom_method',
|
|
226
|
+
be = 'web_app_open_scan_qr_popup',
|
|
227
|
+
we = 'web_app_read_text_from_clipboard',
|
|
228
|
+
me = 'web_app_request_phone',
|
|
229
|
+
ve = 'web_app_close',
|
|
230
|
+
Se = 'web_app_close_scan_qr_popup',
|
|
231
|
+
fe = 'web_app_data_send',
|
|
232
|
+
ye = 'web_app_expand',
|
|
233
|
+
Me = 'iframe_ready',
|
|
234
|
+
Pe = 'iframe_will_reload',
|
|
235
|
+
Ce = 'web_app_open_invoice',
|
|
236
|
+
qe = 'web_app_open_link',
|
|
237
|
+
Re = 'web_app_open_popup',
|
|
238
|
+
ke = 'web_app_open_tg_link',
|
|
239
|
+
Be = 'web_app_ready',
|
|
240
|
+
Oe = 'web_app_request_theme',
|
|
241
|
+
Te = 'web_app_request_viewport',
|
|
242
|
+
Ee = 'web_app_request_write_access',
|
|
243
|
+
Ie = 'web_app_set_background_color',
|
|
244
|
+
We = 'web_app_set_header_color',
|
|
245
|
+
Le = 'web_app_set_bottom_bar_color',
|
|
246
|
+
Ne = 'web_app_setup_back_button',
|
|
247
|
+
De = 'web_app_setup_closing_behavior',
|
|
248
|
+
Qe = 'web_app_setup_main_button',
|
|
249
|
+
Ae = 'web_app_setup_settings_button',
|
|
250
|
+
Ge = 'web_app_switch_inline_query',
|
|
251
|
+
He = 'web_app_trigger_haptic_feedback',
|
|
252
|
+
Ve = 'web_app_setup_swipe_behavior'
|
|
253
|
+
const Je = 'clipboard_text_received',
|
|
254
|
+
$e = 'custom_method_invoked',
|
|
255
|
+
je = 'phone_requested',
|
|
256
|
+
Fe = 'popup_closed',
|
|
257
|
+
Ue = 'qr_text_received',
|
|
258
|
+
ze = 'scan_qr_popup_closed',
|
|
259
|
+
Ke = 'theme_changed',
|
|
260
|
+
Xe = 'viewport_changed',
|
|
261
|
+
Ye = ((e = new Map()) => ({
|
|
262
|
+
once: (
|
|
263
|
+
t,
|
|
264
|
+
s,
|
|
265
|
+
o = e.get(t),
|
|
266
|
+
r = e => {
|
|
267
|
+
s(e), o && o.splice(o.indexOf(s) >>> 0, 1)
|
|
268
|
+
}
|
|
269
|
+
) => (o ? o.push(r) : e.set(t, [r])),
|
|
270
|
+
on: (t, s, o = e.get(t)) => (o ? o.push(s) : e.set(t, [s])),
|
|
271
|
+
off: (t, s, o = e.get(t)) =>
|
|
272
|
+
o && s ? o.splice(o.indexOf(s) >>> 0, 1) : e.set(t, []),
|
|
273
|
+
emit: (t, s, o = e.get(t) || []) => {
|
|
274
|
+
for (const e of o) e(s)
|
|
275
|
+
},
|
|
276
|
+
}))()
|
|
277
|
+
;(() => {
|
|
278
|
+
function e(e, t) {
|
|
279
|
+
e === Ke && (t.theme_params = d(t.theme_params)),
|
|
280
|
+
Ye.emit(e, t),
|
|
281
|
+
Ye.emit('*', { name: e, data: t })
|
|
282
|
+
}
|
|
283
|
+
;(window.TelegramGameProxy_receiveEvent = e),
|
|
284
|
+
(window.Telegram = { WebView: { receiveEvent: e } }),
|
|
285
|
+
(window.TelegramGameProxy = { receiveEvent: e })
|
|
286
|
+
})()
|
|
287
|
+
const Ze = (e, t) => {
|
|
288
|
+
Ye.on(e, t)
|
|
289
|
+
},
|
|
290
|
+
et = (e, t) => {
|
|
291
|
+
Ye.off(e, t)
|
|
292
|
+
},
|
|
293
|
+
tt = (e, t) => {
|
|
294
|
+
Ye.once(e, t)
|
|
295
|
+
}
|
|
296
|
+
var st = Object.freeze({ __proto__: null, off: et, on: Ze, once: tt })
|
|
297
|
+
const ot = e.createContext({ viewport: void 0, theme: void 0, init: void 0 })
|
|
298
|
+
;(exports.ContextTwa = ot),
|
|
299
|
+
(exports.EventBackButtonPressed = 'back_button_pressed'),
|
|
300
|
+
(exports.EventClipboardTextReceived = Je),
|
|
301
|
+
(exports.EventCustomMethodInvoked = $e),
|
|
302
|
+
(exports.EventInvoiceClosed = 'invoice_closed'),
|
|
303
|
+
(exports.EventMainButtonPressed = 'main_button_pressed'),
|
|
304
|
+
(exports.EventPhoneRequested = je),
|
|
305
|
+
(exports.EventPopupClosed = Fe),
|
|
306
|
+
(exports.EventQrTextReceived = Ue),
|
|
307
|
+
(exports.EventReloadIframe = 'reload_iframe'),
|
|
308
|
+
(exports.EventScanQrPopupClosed = ze),
|
|
309
|
+
(exports.EventSetCustomStyle = 'set_custom_style'),
|
|
310
|
+
(exports.EventSettingsButtonPressed = 'settings_button_pressed'),
|
|
311
|
+
(exports.EventThemeChanged = Ke),
|
|
312
|
+
(exports.EventViewportChanged = Xe),
|
|
313
|
+
(exports.EventWriteAccessRequested = 'write_access_requested'),
|
|
314
|
+
(exports.MethodClose = ve),
|
|
315
|
+
(exports.MethodCloseScanQrPopup = Se),
|
|
316
|
+
(exports.MethodDataSend = fe),
|
|
317
|
+
(exports.MethodExpand = ye),
|
|
318
|
+
(exports.MethodIframeReady = Me),
|
|
319
|
+
(exports.MethodIframeWillReload = Pe),
|
|
320
|
+
(exports.MethodInvokeCustomMethod = he),
|
|
321
|
+
(exports.MethodOpenInvoice = Ce),
|
|
322
|
+
(exports.MethodOpenLink = qe),
|
|
323
|
+
(exports.MethodOpenPopup = Re),
|
|
324
|
+
(exports.MethodOpenScanQrPopup = be),
|
|
325
|
+
(exports.MethodOpenTgLink = ke),
|
|
326
|
+
(exports.MethodReadTextFromClipboard = we),
|
|
327
|
+
(exports.MethodReady = Be),
|
|
328
|
+
(exports.MethodRequestPhone = me),
|
|
329
|
+
(exports.MethodRequestTheme = Oe),
|
|
330
|
+
(exports.MethodRequestViewport = Te),
|
|
331
|
+
(exports.MethodRequestWriteAccess = Ee),
|
|
332
|
+
(exports.MethodSetBackgroundColor = Ie),
|
|
333
|
+
(exports.MethodSetBottomBarColor = Le),
|
|
334
|
+
(exports.MethodSetHeaderColor = We),
|
|
335
|
+
(exports.MethodSetupBackButton = Ne),
|
|
336
|
+
(exports.MethodSetupClosingBehavior = De),
|
|
337
|
+
(exports.MethodSetupMainButton = Qe),
|
|
338
|
+
(exports.MethodSetupSettingsButton = Ae),
|
|
339
|
+
(exports.MethodSetupSwipeBehavior = Ve),
|
|
340
|
+
(exports.MethodSwitchInlineQuery = Ge),
|
|
341
|
+
(exports.MethodTriggerHapticFeedback = He),
|
|
342
|
+
(exports.NOT_SUPPORTED = a),
|
|
343
|
+
(exports.ProviderTWA = s => {
|
|
344
|
+
const [o, r] = t.createStore({
|
|
345
|
+
viewport: void 0,
|
|
346
|
+
theme: void 0,
|
|
347
|
+
init: void 0,
|
|
348
|
+
})
|
|
349
|
+
return (
|
|
350
|
+
e.onMount(() => {
|
|
351
|
+
const t = () => {
|
|
352
|
+
r('init', ge())
|
|
353
|
+
}
|
|
354
|
+
t()
|
|
355
|
+
const s = e => {
|
|
356
|
+
t(),
|
|
357
|
+
r('viewport', {
|
|
358
|
+
...e,
|
|
359
|
+
safe_area_bottom:
|
|
360
|
+
e.is_expanded && e.is_state_stable
|
|
361
|
+
? window.outerHeight - e.height
|
|
362
|
+
: 0,
|
|
363
|
+
})
|
|
364
|
+
}
|
|
365
|
+
Ze(Xe, s), V()
|
|
366
|
+
const o = e => {
|
|
367
|
+
t(), r('theme', e)
|
|
368
|
+
}
|
|
369
|
+
Ze(Ke, o),
|
|
370
|
+
V(),
|
|
371
|
+
e.onCleanup(() => {
|
|
372
|
+
et(Xe, s), et(Ke, o)
|
|
373
|
+
})
|
|
374
|
+
}),
|
|
375
|
+
s.children
|
|
376
|
+
)
|
|
377
|
+
}),
|
|
378
|
+
(exports.TG_DESKTOP = r),
|
|
379
|
+
(exports.TG_PHONE = o),
|
|
380
|
+
(exports.TG_WEB = s),
|
|
381
|
+
(exports.bridgeClose = _),
|
|
382
|
+
(exports.bridgeCloseScanQrPopup = x),
|
|
383
|
+
(exports.bridgeDataSend = l),
|
|
384
|
+
(exports.bridgeExpand = b),
|
|
385
|
+
(exports.bridgeGetInitData = ge),
|
|
386
|
+
(exports.bridgeGetThemeParams = d),
|
|
387
|
+
(exports.bridgeIframeReady = m),
|
|
388
|
+
(exports.bridgeIframeWillReload = S),
|
|
389
|
+
(exports.bridgeInvokeCustomMethod = y),
|
|
390
|
+
(exports.bridgeOpenInvoice = P),
|
|
391
|
+
(exports.bridgeOpenLink = q),
|
|
392
|
+
(exports.bridgeOpenPopup = k),
|
|
393
|
+
(exports.bridgeOpenScanQrPopup = O),
|
|
394
|
+
(exports.bridgeOpenTgLink = E),
|
|
395
|
+
(exports.bridgeReadTextFromClipboard = W),
|
|
396
|
+
(exports.bridgeReady = N),
|
|
397
|
+
(exports.bridgeRequestPhone = Q),
|
|
398
|
+
(exports.bridgeRequestTheme = G),
|
|
399
|
+
(exports.bridgeRequestViewport = V),
|
|
400
|
+
(exports.bridgeRequestWriteAccess = $),
|
|
401
|
+
(exports.bridgeSend = le),
|
|
402
|
+
(exports.bridgeSessionStorageGet = ({ key: e }) => {
|
|
403
|
+
try {
|
|
404
|
+
return {
|
|
405
|
+
is_json: !0,
|
|
406
|
+
value: JSON.parse(
|
|
407
|
+
window.sessionStorage.getItem('__telegram__' + e) ?? ''
|
|
408
|
+
),
|
|
409
|
+
status: !0,
|
|
410
|
+
}
|
|
411
|
+
} catch (t) {
|
|
412
|
+
return {
|
|
413
|
+
is_json: !1,
|
|
414
|
+
value: window.sessionStorage.getItem('__telegram__' + e) ?? '',
|
|
415
|
+
status: !0,
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}),
|
|
419
|
+
(exports.bridgeSessionStorageSet = ({ key: e, value: t }) => {
|
|
420
|
+
try {
|
|
421
|
+
return (
|
|
422
|
+
window.sessionStorage.setItem('__telegram__' + e, JSON.stringify(t)),
|
|
423
|
+
{ status: !0 }
|
|
424
|
+
)
|
|
425
|
+
} catch (s) {
|
|
426
|
+
return (
|
|
427
|
+
window.sessionStorage.setItem('__telegram__' + e, t), { status: !0 }
|
|
428
|
+
)
|
|
429
|
+
}
|
|
430
|
+
}),
|
|
431
|
+
(exports.bridgeSetBackgroundColor = F),
|
|
432
|
+
(exports.bridgeSetBottomBarColor = X),
|
|
433
|
+
(exports.bridgeSetHeaderColor = z),
|
|
434
|
+
(exports.bridgeSetupBackButton = Z),
|
|
435
|
+
(exports.bridgeSetupClosingBehavior = te),
|
|
436
|
+
(exports.bridgeSetupMainButton = oe),
|
|
437
|
+
(exports.bridgeSetupSettingsButton = pe),
|
|
438
|
+
(exports.bridgeSetupSwipeBehavior = _e),
|
|
439
|
+
(exports.bridgeSwitchInlineQuery = ne),
|
|
440
|
+
(exports.bridgeTriggerHapticFeedback = ue),
|
|
441
|
+
(exports.createIsViewportChanged = () => {
|
|
442
|
+
const [t, s] = e.createSignal({
|
|
443
|
+
height: 0,
|
|
444
|
+
is_expanded: !1,
|
|
445
|
+
is_state_stable: !1,
|
|
446
|
+
}),
|
|
447
|
+
o = e => s(e)
|
|
448
|
+
return (
|
|
449
|
+
e.onMount(() => {
|
|
450
|
+
Ze(Xe, o), le(Te)
|
|
451
|
+
}),
|
|
452
|
+
e.onCleanup(() => {
|
|
453
|
+
et(Xe, o)
|
|
454
|
+
}),
|
|
455
|
+
t
|
|
456
|
+
)
|
|
457
|
+
}),
|
|
458
|
+
(exports.debug = xe),
|
|
459
|
+
(exports.getPlatform = p),
|
|
460
|
+
(exports.listener = st),
|
|
461
|
+
(exports.sender = le),
|
|
462
|
+
(exports.supportClose = c),
|
|
463
|
+
(exports.supportCloseScanQrPopup = g),
|
|
464
|
+
(exports.supportDataSend = h),
|
|
465
|
+
(exports.supportExpand = w),
|
|
466
|
+
(exports.supportIframeReady = v),
|
|
467
|
+
(exports.supportIframeWillReload = f),
|
|
468
|
+
(exports.supportInvokeCustomMethod = M),
|
|
469
|
+
(exports.supportOpenInvoice = C),
|
|
470
|
+
(exports.supportOpenLink = R),
|
|
471
|
+
(exports.supportOpenPopup = B),
|
|
472
|
+
(exports.supportOpenScanQrPopup = T),
|
|
473
|
+
(exports.supportOpenTgLink = I),
|
|
474
|
+
(exports.supportReadTextFromClipboard = L),
|
|
475
|
+
(exports.supportReady = D),
|
|
476
|
+
(exports.supportRequestPhone = A),
|
|
477
|
+
(exports.supportRequestTheme = H),
|
|
478
|
+
(exports.supportRequestViewport = J),
|
|
479
|
+
(exports.supportRequestWriteAccess = j),
|
|
480
|
+
(exports.supportSessionStorageGet = () => !0),
|
|
481
|
+
(exports.supportSessionStorageSet = () => !0),
|
|
482
|
+
(exports.supportSetBackgroundColor = U),
|
|
483
|
+
(exports.supportSetBottomBarColor = Y),
|
|
484
|
+
(exports.supportSetHeaderColor = K),
|
|
485
|
+
(exports.supportSetupBackButton = ee),
|
|
486
|
+
(exports.supportSetupClosingBehavior = se),
|
|
487
|
+
(exports.supportSetupMainButton = re),
|
|
488
|
+
(exports.supportSetupSettingsButton = ae),
|
|
489
|
+
(exports.supportSetupSwipeBehavior = ce),
|
|
490
|
+
(exports.supportSwitchInlineQuery = ie),
|
|
491
|
+
(exports.supportTriggerHapticFeedback = de)
|