@apiteam/twa-bridge 8.0.7 → 8.0.8
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 +1 -1
- package/solid/index.d.ts +9 -10
- package/solid/index.js +1 -1
- package/solid/index.mjs +1 -1
package/package.json
CHANGED
package/solid/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as solid_js from 'solid-js';
|
|
2
2
|
import { Context, JSX, Component } from 'solid-js';
|
|
3
|
-
import { NOT_SUPPORTED as NOT_SUPPORTED$1, EventsData as EventsData$1, EventBiometryAuthRequested as EventBiometryAuthRequested$1, EventBiometryTokenUpdated as EventBiometryTokenUpdated$1, EventBiometryInfoReceived as EventBiometryInfoReceived$1 } from 'solid';
|
|
4
3
|
|
|
5
4
|
declare const createIsViewportChanged: () => solid_js.Accessor<{
|
|
6
5
|
height: number;
|
|
@@ -507,8 +506,8 @@ type Store = {
|
|
|
507
506
|
isAccessGranted: boolean;
|
|
508
507
|
isAccessRequested: boolean;
|
|
509
508
|
isBiometricTokenSaved: boolean;
|
|
510
|
-
biometricType: EventsData
|
|
511
|
-
deviceId: EventsData
|
|
509
|
+
biometricType: EventsData[typeof EventBiometryInfoReceived]['type'];
|
|
510
|
+
deviceId: EventsData[typeof EventBiometryInfoReceived]['device_id'];
|
|
512
511
|
};
|
|
513
512
|
type BiometricManager = {
|
|
514
513
|
isInited: Store['isInited'];
|
|
@@ -519,23 +518,23 @@ type BiometricManager = {
|
|
|
519
518
|
biometricType: Store['biometricType'];
|
|
520
519
|
deviceId: Store['deviceId'];
|
|
521
520
|
init: () => Promise<{
|
|
522
|
-
status: boolean | typeof NOT_SUPPORTED
|
|
521
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
523
522
|
data?: Store;
|
|
524
523
|
}>;
|
|
525
524
|
requestAccess: (eventData: SenderData[typeof MethodBiometryRequestAccess]) => Promise<{
|
|
526
|
-
status: boolean | typeof NOT_SUPPORTED
|
|
525
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
527
526
|
data?: Store;
|
|
528
527
|
}>;
|
|
529
528
|
authenticate: (eventData: SenderData[typeof MethodBiometryRequestAuth]) => Promise<{
|
|
530
|
-
status: boolean | typeof NOT_SUPPORTED
|
|
531
|
-
data?: EventsData
|
|
529
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
530
|
+
data?: EventsData[typeof EventBiometryAuthRequested];
|
|
532
531
|
}>;
|
|
533
532
|
updateToken: (eventData: SenderData[typeof MethodBiometryUpdateToken]) => Promise<{
|
|
534
|
-
status: boolean | typeof NOT_SUPPORTED
|
|
535
|
-
data?: EventsData
|
|
533
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
534
|
+
data?: EventsData[typeof EventBiometryTokenUpdated];
|
|
536
535
|
}>;
|
|
537
536
|
openSettings: (eventData: SenderData[typeof MethodBiometryOpenSettings]) => {
|
|
538
|
-
status: boolean | typeof NOT_SUPPORTED
|
|
537
|
+
status: boolean | typeof NOT_SUPPORTED;
|
|
539
538
|
};
|
|
540
539
|
};
|
|
541
540
|
declare const BiometricManager: BiometricManager;
|
package/solid/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("solid"),t=require("solid-js"),s=require("solid-js/store");const o="web",r="phone",a="desktop",n=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?r:["tdesktop","macos"].includes(t)?a:o},i="not_supported",p=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(n())},d=()=>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},c=e=>{const t=window.location.hash.slice(1),s=new URLSearchParams(t),o=JSON.parse(s.get("tgWebAppThemeParams")??""),r=e||o;for(var a of Object.keys(r)){var n=u(r[a]);"string"==typeof n&&(r[a]=n)}return"#1c1c1d"==r?.bg_color&&r?.bg_color==r?.secondary_bg_color&&(r.secondary_bg_color="#2c2c2e"),r},_=e=>l()?(Et(ke,e),{status:!0}):(yt(ke,1),{status:i}),l=()=>p(0,[o,a,r]),m=e=>x()?(Et(Pe,e),{status:!0}):(yt(Pe,1),{status:i}),x=()=>p(6.4,[r]),g=e=>v()?(Et(Ae,e),{status:!0}):(yt(Ae,1),{status:i}),v=()=>p(0,[o,a,r]),S=e=>h()?(Et(Ce,e),{status:!0}):(yt(Ce,1),{status:i}),h=()=>p(0,[r]),b=e=>w()?(Et(Me,e),{status:!0}):(yt(Me,1),{status:i}),w=()=>p(0,[o]),f=()=>y()?(Et(Me),{status:!0}):(yt(Me,1),{status:i}),y=()=>p(0,[o]),R=async e=>E()?(void 0===e.req_id&&(e.req_id=d()),Et(Ee,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Nt(Bt,o))};Ut(Bt,o)}))):(yt(Ee,1),{status:i}),E=()=>p(6.9,[o,a,r]),q=e=>B()?(Et(Ie,e),{status:!0}):(yt(Ie,1),{status:i}),B=()=>p(6.1,[o,a,r]),T=e=>k()?(Et(Fe,e),{status:!0}):(yt(Fe,1),{status:i}),k=()=>p(6.4,[o,a,r]),P=async e=>A()?(e.title.length>64&&yt(De,3),e.message.length<1&&yt(De,4),e.message.length>256&&yt(De,5),e.buttons.length<1&&yt(De,6),e.buttons.length>3&&yt(De,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&yt(De,8),Et(De,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Nt(kt,o)};Ut(kt,o)}))):(yt(De,1),{status:i}),A=()=>p(6.2,[o,a,r]),C=async e=>M()?(Et(qe,e),new Promise(((t,s)=>{Qt(Pt,(s=>{e.is_close&&m(),t({status:!0,data:s})})),Qt(At,(()=>{t({status:"closed"})}))}))):(yt(qe,1),{status:i}),M=()=>p(6.4,[r]),O=e=>{const t=function(e){try{return new URL(e)}catch(t){try{return new URL(e,"https://t.me")}catch(t){return e.startsWith("/")||(e="/"+e),new URL(e,"https://t.me")}}}(e.path_full);return e.path_full=t.pathname=t.search,I()?(Et(We,e),{status:!0}):(yt(We,1),{status:i})},I=()=>p(7,[o,a,r]);const F=async e=>D()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=d()),Et(Be,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),Nt(qt,o))};Ut(qt,o)}))):(yt(Be,1),{status:i}),D=()=>p(6.4,[o,a,r]),W=e=>L()?(Et(Le,e),{status:!0}):(yt(Le,1),{status:i}),L=()=>p(6.9,[o,a,r]),G=async()=>H()?(Et(Te),new Promise(((e,t)=>{Qt(Tt,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(yt(Te,1),{status:i}),H=()=>p(6.9,[o,a,r]),j=e=>U()?(Et(Ge,e),{status:!0}):(yt(Ge,1),{status:i}),U=()=>p(0,[o,a,r]),N=e=>Q()?(Et(He,e),{status:!0}):(yt(He,1),{status:i}),Q=()=>p(0,[o,a,r]),V=()=>new Promise(((e,t)=>{if(!$())return yt(je,1),void e({status:i});const s=t=>{e({status:"allowed"===t.status}),Nt(Ot,s)};Ut(Ot,s),Et(je)})),$=()=>p(6.9,[o,a,r]),J=e=>K()?(Et(Ue,e),{status:!0}):(yt(Ue,1),{status:i}),K=()=>p(6.1,[o,a,r]),z=e=>X()?(Et(Ne,e),{status:!0}):(yt(Ne,1),{status:i}),X=()=>p(6.1,[o,a,r]),Y=e=>Z()?(Et(Qe,{color:e?.color||e?.color_key}),{status:!0}):(yt(Qe,1),{status:i}),Z=()=>p(7.1,[o,a,r]),ee=e=>te()?(Et(Ve,e),{status:!0}):(yt(Ve,1),{status:i}),te=()=>p(6.1,[o,a,r]),se=e=>oe()?(Et($e,e),{status:!0}):(yt($e,1),{status:i}),oe=()=>p(6.2,[o,a,r]),re=e=>ae()?(Et(Je,e),{status:!0}):(yt(Je,1),{status:i}),ae=()=>p(0,[o,a,r]),ne=e=>ie()?(Et(Ke,e),{status:!0}):(yt(Ke,1),{status:i}),ie=()=>p(6.1,[o,a,r]),pe=e=>de()?(e.query.length>256&&yt(ze,9),Et(ze,e),{status:!0}):(yt(ze,1),{status:i}),de=()=>p(6.7,[o,a,r]),ue=e=>ce()?(Et(Xe,e),{status:!0}):(yt(Xe,1),{status:i}),ce=()=>p(6.1,[r]),_e=e=>le()?(Et(Ye,e),{status:!0}):(yt(Ye,1),{status:i}),le=()=>p(7.7,[o,a,r]),me=()=>p(7.8,[o,a,r]),xe=()=>p(8,[a,r]),ge=()=>p(8,[a,r]),ve=()=>p(8,[o,a,r]),Se=()=>p(8,[o,a,r]),he=()=>p(8,[o,a,r]),be=()=>p(8,[o,a,r]),we=()=>p(8,[o,a,r]),fe=()=>p(8,[o,a,r]),ye=()=>p(8,[o,a,r]),Re=()=>p(8,[o,a,r]),Ee="web_app_invoke_custom_method",qe="web_app_open_scan_qr_popup",Be="web_app_read_text_from_clipboard",Te="web_app_request_phone",ke="web_app_close",Pe="web_app_close_scan_qr_popup",Ae="web_app_data_send",Ce="web_app_expand",Me="iframe_ready",Oe="iframe_will_reload",Ie="web_app_open_invoice",Fe="web_app_open_link",De="web_app_open_popup",We="web_app_open_tg_link",Le="web_app_ready",Ge="web_app_request_theme",He="web_app_request_viewport",je="web_app_request_write_access",Ue="web_app_set_background_color",Ne="web_app_set_header_color",Qe="web_app_set_bottom_bar_color",Ve="web_app_setup_back_button",$e="web_app_setup_closing_behavior",Je="web_app_setup_main_button",Ke="web_app_setup_settings_button",ze="web_app_switch_inline_query",Xe="web_app_trigger_haptic_feedback",Ye="web_app_setup_swipe_behavior",Ze="web_app_share_to_story",et="web_app_request_safe_area",tt="web_app_request_content_safe_area",st="web_app_request_fullscreen",ot="web_app_exit_fullscreen",rt="web_app_toggle_orientation_lock",at="web_app_add_to_home_screen",nt="web_app_check_home_screen",it="web_app_send_prepared_message",pt="web_app_set_emoji_status",dt="web_app_request_emoji_status_access",ut="web_app_request_file_download",ct="web_app_biometry_get_info",_t="web_app_biometry_open_settings",lt="web_app_biometry_request_access",mt="web_app_biometry_request_auth",xt="web_app_biometry_update_token";var gt=(e=>(e[e.InvokeCustomMethod=Ee]="InvokeCustomMethod",e[e.OpenScanQrPopup=qe]="OpenScanQrPopup",e[e.ReadTextFromClipboard=Be]="ReadTextFromClipboard",e[e.RequestPhone=Te]="RequestPhone",e[e.Close=ke]="Close",e[e.CloseScanQrPopup=Pe]="CloseScanQrPopup",e[e.DataSend=Ae]="DataSend",e[e.Expand=Ce]="Expand",e[e.IframeReady=Me]="IframeReady",e[e.IframeWillReload=Oe]="IframeWillReload",e[e.OpenInvoice=Ie]="OpenInvoice",e[e.OpenLink=Fe]="OpenLink",e[e.OpenPopup=De]="OpenPopup",e[e.OpenTgLink=We]="OpenTgLink",e[e.Ready=Le]="Ready",e[e.RequestTheme=Ge]="RequestTheme",e[e.RequestViewport=He]="RequestViewport",e[e.RequestWriteAccess=je]="RequestWriteAccess",e[e.SetBackgroundColor=Ue]="SetBackgroundColor",e[e.SetHeaderColor=Ne]="SetHeaderColor",e[e.SetBottomBarColor=Qe]="SetBottomBarColor",e[e.SetupBackButton=Ve]="SetupBackButton",e[e.SetupClosingBehavior=$e]="SetupClosingBehavior",e[e.SetupMainButton=Je]="SetupMainButton",e[e.SetupSettingsButton=Ke]="SetupSettingsButton",e[e.SwitchInlineQuery=ze]="SwitchInlineQuery",e[e.TriggerHapticFeedback=Xe]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=Ye]="SetupSwipeBehavior",e[e.ShareToStory=Ze]="ShareToStory",e[e.RequestSafeArea=et]="RequestSafeArea",e[e.RequestContentSafeArea=tt]="RequestContentSafeArea",e[e.RequestFullscreen=st]="RequestFullscreen",e[e.ExitFullscreen=ot]="ExitFullscreen",e[e.ToggleOrientationLock=rt]="ToggleOrientationLock",e[e.AddToHomeScreen=at]="AddToHomeScreen",e[e.CheckHomeScreen=nt]="CheckHomeScreen",e[e.SendPreparedMessage=it]="SendPreparedMessage",e[e.SetEmojiStatus=pt]="SetEmojiStatus",e[e.RequestEmojiStatusAccess=dt]="RequestEmojiStatusAccess",e[e.RequestFileDownload=ut]="RequestFileDownload",e))(gt||{});const[vt,St]=s.createStore({isInited:!1,isBiometricAvailable:!1,isAccessGranted:!1,isAccessRequested:!1,isBiometricTokenSaved:!1,biometricType:"unknown",deviceId:""}),ht={isInited:vt.isInited,isBiometricAvailable:vt.isBiometricAvailable,isAccessGranted:vt.isAccessGranted,isAccessRequested:vt.isAccessRequested,isBiometricTokenSaved:vt.isBiometricTokenSaved,biometricType:vt.biometricType,deviceId:vt.deviceId,init:()=>new Promise(((t,s)=>{if(!bt())return e.debug(ct,1),void t({status:e.NOT_SUPPORTED,data:void 0});const o=s=>{wt(s),t({status:!0,data:vt}),e.listener.off(e.EventBiometryInfoReceived,o)};e.listener.on(e.EventBiometryInfoReceived,o),e.sender(ct)})),requestAccess:t=>new Promise(((s,o)=>{if(!bt())return e.debug(lt,1),void s({status:e.NOT_SUPPORTED,data:void 0});if(t.reason&&t.reason.length>128)return console.error(`[${lt}] Biometric reason is too long`,t.reason),void s({status:!1,data:void 0});const r=t=>{wt(t),s({status:!0,data:vt}),e.listener.off(e.EventBiometryInfoReceived,r)};e.listener.on(e.EventBiometryInfoReceived,r),e.sender(lt,t)})),authenticate:t=>new Promise(((s,o)=>{if(!bt())return e.debug(mt,1),void s({status:e.NOT_SUPPORTED,data:void 0});if(!vt.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void s({status:!1,data:void 0});if(!vt.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void s({status:!1,data:void 0});const r=t=>{s({status:!0,data:t}),e.listener.off(e.EventBiometryAuthRequested,r)};e.listener.on(e.EventBiometryAuthRequested,r),e.sender(mt,t)})),updateToken:t=>new Promise(((s,o)=>{if(!bt())return e.debug(xt,1),void s({status:e.NOT_SUPPORTED,data:void 0});if(!vt.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void s({status:!1,data:void 0});if(!vt.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void s({status:!1,data:void 0});const r=t=>{s({status:!0,data:t}),e.listener.off(e.EventBiometryTokenUpdated,r)};e.listener.on(e.EventBiometryTokenUpdated,r),e.sender(xt,t)})),openSettings:t=>bt()?vt.isBiometricAvailable?vt.isAccessRequested?vt.isAccessGranted?(console.warn("[Telegram.WebApp] Biometric access was granted by the user, no need to go to settings."),{status:!1}):(e.sender(_t,t),{status:!0}):(console.error("[Telegram.WebApp] Biometric access was not granted by the user."),{status:!1}):(console.error("[Telegram.WebApp] Biometrics is not available on this device."),{status:!1}):(e.debug(_t,1),{status:e.NOT_SUPPORTED})},bt=()=>p(7.2,[e.TG_DESKTOP,e.TG_PHONE,e.TG_WEB]),wt=e=>{St(s.produce((t=>(e.available?(t.isBiometricAvailable=!0,t.biometricType=e.type||"",e.access_requested?(t.isAccessRequested=!0,t.isAccessGranted=!!e.access_granted,t.isBiometricTokenSaved=!!e.token_saved):(t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1)):(t.isBiometricAvailable=!1,t.biometricType="unknown",t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1),t.deviceId=e.device_id||"",t.isInited=!0,t))))},ft=e=>{St(s.produce((t=>(t.isBiometricAvailable&&t.isAccessRequested&&("updated"===e.status?t.isBiometricTokenSaved=!0:"removed"===e.status&&(t.isBiometricTokenSaved=!1)),t))))};t.onMount((()=>{e.listener.on(e.EventBiometryInfoReceived,wt),e.listener.on(e.EventBiometryTokenUpdated,ft),t.onCleanup((()=>{e.listener.off(e.EventBiometryInfoReceived,wt),e.listener.off(e.EventBiometryTokenUpdated,ft)}))}));const yt=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)},Rt=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void yt("getInitData",2);const s=new URLSearchParams(t);let o={};return s.forEach(((e,t)=>{if(o[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{o[t]=JSON.parse(e)}catch{}})),o},Et=(e,t)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:e,eventData:t}));else try{window.parent.postMessage(JSON.stringify({eventType:e,eventData:t}),"*")}catch(e){yt("postMessage Iframe",10)}},qt="clipboard_text_received",Bt="custom_method_invoked",Tt="phone_requested",kt="popup_closed",Pt="qr_text_received",At="scan_qr_popup_closed",Ct="theme_changed",Mt="viewport_changed",Ot="write_access_requested",It="prepared_message_sent",Ft="prepared_message_failed",Dt="emoji_status_set",Wt="emoji_status_failed",Lt="emoji_status_access_requested",Gt="file_download_requested",Ht="home_screen_checked",jt=((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===Ct&&(t.theme_params=c(t.theme_params)),jt.emit(e,t),jt.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Ut=(e,t)=>{jt.on(e,t)},Nt=(e,t)=>{jt.off(e,t)},Qt=(e,t)=>{jt.once(e,t)};var Vt=Object.freeze({__proto__:null,off:Nt,on:Ut,once:Qt});const $t=t.createContext({viewport:void 0,theme:void 0,init:void 0});exports.BiometricManager=ht,exports.ContextTwa=$t,exports.EventAccelerometerChanged="accelerometer_changed",exports.EventAccelerometerFailed="accelerometer_failed",exports.EventAccelerometerStarted="accelerometer_started",exports.EventAccelerometerStopped="accelerometer_stopped",exports.EventBackButtonPressed="back_button_pressed",exports.EventBiometryAuthRequested="biometry_auth_requested",exports.EventBiometryInfoReceived="biometry_info_received",exports.EventBiometryTokenUpdated="biometry_token_updated",exports.EventClipboardTextReceived=qt,exports.EventContentSafeAreaChanged="content_safe_area_changed",exports.EventCustomMethodInvoked=Bt,exports.EventDeviceOrientationChanged="device_orientation_changed",exports.EventDeviceOrientationFailed="device_orientation_failed",exports.EventDeviceOrientationStarted="device_orientation_started",exports.EventDeviceOrientationStopped="device_orientation_stopped",exports.EventEmojiStatusAccessRequested=Lt,exports.EventEmojiStatusFailed=Wt,exports.EventEmojiStatusSet=Dt,exports.EventFileDownloadRequested=Gt,exports.EventFullscreenChanged="fullscreen_changed",exports.EventFullscreenFailed="fullscreen_failed",exports.EventGyroscopeChanged="gyroscope_changed",exports.EventGyroscopeFailed="gyroscope_failed",exports.EventGyroscopeStarted="gyroscope_started",exports.EventGyroscopeStopped="gyroscope_stopped",exports.EventHomeScreenAdded="home_screen_added",exports.EventHomeScreenChecked=Ht,exports.EventHomeScreenFailed="home_screen_failed",exports.EventInvoiceClosed="invoice_closed",exports.EventLocationChecked="location_checked",exports.EventLocationRequested="location_requested",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=Tt,exports.EventPopupClosed=kt,exports.EventPreparedMessageFailed=Ft,exports.EventPreparedMessageSent=It,exports.EventQrTextReceived=Pt,exports.EventReloadIframe="reload_iframe",exports.EventSafeAreaChanged="safe_area_changed",exports.EventScanQrPopupClosed=At,exports.EventSecondaryButtonPressed="secondary_button_pressed",exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=Ct,exports.EventViewportChanged=Mt,exports.EventVisibilityChanged="visibility_changed",exports.EventWriteAccessRequested=Ot,exports.Method=gt,exports.MethodAddToHomeScreen=at,exports.MethodCheckHomeScreen=nt,exports.MethodClose=ke,exports.MethodCloseScanQrPopup=Pe,exports.MethodDataSend=Ae,exports.MethodExitFullscreen=ot,exports.MethodExpand=Ce,exports.MethodIframeReady=Me,exports.MethodIframeWillReload=Oe,exports.MethodInvokeCustomMethod=Ee,exports.MethodOpenInvoice=Ie,exports.MethodOpenLink=Fe,exports.MethodOpenPopup=De,exports.MethodOpenScanQrPopup=qe,exports.MethodOpenTgLink=We,exports.MethodReadTextFromClipboard=Be,exports.MethodReady=Le,exports.MethodRequestContentSafeArea=tt,exports.MethodRequestEmojiStatusAccess=dt,exports.MethodRequestFileDownload=ut,exports.MethodRequestFullscreen=st,exports.MethodRequestPhone=Te,exports.MethodRequestSafeArea=et,exports.MethodRequestTheme=Ge,exports.MethodRequestViewport=He,exports.MethodRequestWriteAccess=je,exports.MethodSendPreparedMessage=it,exports.MethodSetBackgroundColor=Ue,exports.MethodSetBottomBarColor=Qe,exports.MethodSetEmojiStatus=pt,exports.MethodSetHeaderColor=Ne,exports.MethodSetupBackButton=Ve,exports.MethodSetupClosingBehavior=$e,exports.MethodSetupMainButton=Je,exports.MethodSetupSettingsButton=Ke,exports.MethodSetupSwipeBehavior=Ye,exports.MethodShareToStory=Ze,exports.MethodSwitchInlineQuery=ze,exports.MethodToggleOrientationLock=rt,exports.MethodTriggerHapticFeedback=Xe,exports.NOT_SUPPORTED=i,exports.ProviderTWA=e=>{const[o,r]=s.createStore({viewport:void 0,theme:void 0,init:void 0});return t.createEffect((()=>{const e=()=>{r("init",Rt())};e();const s=t=>{e(),r("viewport",t)};Ut(Mt,s),N();const o=t=>{e(),r("theme",t)};return Ut(Ct,o),N(),t.onCleanup((()=>{Nt(Mt,s),Nt(Ct,o)})),()=>{Nt(Mt,s),Nt(Ct,o)}})),$t.Provider({value:o,children:e.children})},exports.TG_DESKTOP=a,exports.TG_PHONE=r,exports.TG_WEB=o,exports.bridgeAddToHomeScreen=()=>ge()?(Et(at),{status:!0}):(yt(at,1),{status:i}),exports.bridgeCheckHomeScreen=async e=>new Promise(((t,s)=>{if(!xe())return yt(nt,1),void t({status:i,data:void 0});const o=e=>{e.status=e.status||"unknown",t({status:!0,data:e}),Nt(Ht,o)};Ut(Ht,o),Et(nt,e)})),exports.bridgeClose=_,exports.bridgeCloseScanQrPopup=m,exports.bridgeDataSend=g,exports.bridgeDownloadFile=async e=>Re()?new Promise(((t,s)=>{Qt(Gt,(function(e){t({status:"downloading"===e.status})})),Et(ut,e)})):(yt(ut,1),{status:i}),exports.bridgeExpand=S,exports.bridgeGetInitData=Rt,exports.bridgeGetThemeParams=c,exports.bridgeIframeReady=b,exports.bridgeIframeWillReload=f,exports.bridgeInvokeCustomMethod=R,exports.bridgeOpenInvoice=q,exports.bridgeOpenLink=T,exports.bridgeOpenPopup=P,exports.bridgeOpenScanQrPopup=C,exports.bridgeOpenTgLink=O,exports.bridgeReadTextFromClipboard=F,exports.bridgeReady=W,exports.bridgeRequestContentSafeAreaInset=()=>Se()?(Et(tt),{status:!0}):(yt(tt,1),{status:i}),exports.bridgeRequestEmojiStatus=async e=>we()?new Promise(((t,s)=>{Qt(Lt,(function(e){t({status:"allowed"===e.status})})),Et(dt,e)})):(yt(dt,1),{status:i}),exports.bridgeRequestPhone=G,exports.bridgeRequestSafeAreaInset=()=>ve()?(Et(et),{status:!0}):(yt(et,1),{status:i}),exports.bridgeRequestTheme=j,exports.bridgeRequestViewport=N,exports.bridgeRequestWriteAccess=V,exports.bridgeSend=Et,exports.bridgeSessionStorageGet=({key:e})=>{try{return{is_json:!0,value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(t){return{is_json:!1,value:window.sessionStorage.getItem("__telegram__"+e)??"",status:!0}}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(s){return window.sessionStorage.setItem("__telegram__"+e,t),{status:!0}}},exports.bridgeSetBackgroundColor=J,exports.bridgeSetBottomBarColor=Y,exports.bridgeSetEmojiStatus=async e=>fe()?new Promise(((t,s)=>{Qt(Dt,(()=>t({status:!0}))),Qt(Wt,(()=>t({status:!1}))),Et(pt,e)})):(yt(pt,1),{status:i}),exports.bridgeSetHeaderColor=z,exports.bridgeSetupBackButton=ee,exports.bridgeSetupClosingBehavior=se,exports.bridgeSetupFullScreen=e=>{const t=e?.is_full||!1;return he()?(Et(t?st:ot),{status:!0}):(yt(t?st:ot,1),{status:i})},exports.bridgeSetupMainButton=re,exports.bridgeSetupOrientation=e=>be()?(Et(rt,e),{status:!0}):(yt(rt,1),{status:i}),exports.bridgeSetupSettingsButton=ne,exports.bridgeSetupSwipeBehavior=_e,exports.bridgeShareMessage=async e=>ye()?new Promise(((t,s)=>{Qt(It,(()=>t({status:!0}))),Qt(Ft,(()=>t({status:!1}))),Et(it,e)})):(yt(it,1),{status:i}),exports.bridgeShareToStory=e=>me()?e?.text&&e?.text.length>2048?(console.warn(`[@apiteam/twa-bridge](${Ze}) | Text is too long`),{status:!1,error_id:1}):e?.widget_link?.name&&e?.widget_link.name.length>48?(console.warn(`[@apiteam/twa-bridge](${Ze}) | Link name is too long`),{status:!1,error_id:2}):(Et(Ze,e),{status:!0}):(yt(Ze,1),{status:i}),exports.bridgeSwitchInlineQuery=pe,exports.bridgeTriggerHapticFeedback=ue,exports.createIsViewportChanged=()=>{const[e,s]=t.createSignal({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>s(e);return t.onMount((()=>{Ut(Mt,o),Et(He)})),t.onCleanup((()=>{Nt(Mt,o)})),e},exports.debug=yt,exports.getAppData=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},exports.getPlatform=n,exports.listener=Vt,exports.sender=Et,exports.supportAddToHomeScreen=ge,exports.supportBiometricManager=bt,exports.supportCheckHomeScreen=xe,exports.supportClose=l,exports.supportCloseScanQrPopup=x,exports.supportDataSend=v,exports.supportDownloadFile=Re,exports.supportExpand=h,exports.supportIframeReady=w,exports.supportIframeWillReload=y,exports.supportInvokeCustomMethod=E,exports.supportOpenInvoice=B,exports.supportOpenLink=k,exports.supportOpenPopup=A,exports.supportOpenScanQrPopup=M,exports.supportOpenTgLink=I,exports.supportReadTextFromClipboard=D,exports.supportReady=L,exports.supportRequestContentSafeAreaInset=Se,exports.supportRequestEmojiStatus=we,exports.supportRequestPhone=H,exports.supportRequestSafeAreaInset=ve,exports.supportRequestTheme=U,exports.supportRequestViewport=Q,exports.supportRequestWriteAccess=$,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=K,exports.supportSetBottomBarColor=Z,exports.supportSetEmojiStatus=fe,exports.supportSetHeaderColor=X,exports.supportSetupBackButton=te,exports.supportSetupClosingBehavior=oe,exports.supportSetupFullScreen=he,exports.supportSetupMainButton=ae,exports.supportSetupOrientation=be,exports.supportSetupSettingsButton=ie,exports.supportSetupSwipeBehavior=le,exports.supportShareMessage=ye,exports.supportShareToStory=me,exports.supportSwitchInlineQuery=de,exports.supportTriggerHapticFeedback=ce;
|
|
1
|
+
"use strict";var e=require("solid-js"),t=require("solid-js/store");const s="web",o="phone",r="desktop",a=()=>{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},n="not_supported",p=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(a())},i=()=>Math.random().toString(36).substring(3,9),d=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=e=>{const t=window.location.hash.slice(1),s=new URLSearchParams(t),o=JSON.parse(s.get("tgWebAppThemeParams")??""),r=e||o;for(var a of Object.keys(r)){var n=d(r[a]);"string"==typeof n&&(r[a]=n)}return"#1c1c1d"==r?.bg_color&&r?.bg_color==r?.secondary_bg_color&&(r.secondary_bg_color="#2c2c2e"),r},c=e=>_()?(qt(Ee,e),{status:!0}):(ft(Ee,1),{status:n}),_=()=>p(0,[s,r,o]),l=e=>x()?(qt(Ce,e),{status:!0}):(ft(Ce,1),{status:n}),x=()=>p(6.4,[o]),g=e=>m()?(qt(Te,e),{status:!0}):(ft(Te,1),{status:n}),m=()=>p(0,[s,r,o]),h=e=>S()?(qt(Ae,e),{status:!0}):(ft(Ae,1),{status:n}),S=()=>p(0,[o]),v=e=>b()?(qt(Me,e),{status:!0}):(ft(Me,1),{status:n}),b=()=>p(0,[s]),w=()=>f()?(qt(Me),{status:!0}):(ft(Me,1),{status:n}),f=()=>p(0,[s]),y=async e=>q()?(void 0===e.req_id&&(e.req_id=i()),qt(qe,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Vt(Bt,o))};Ut(Bt,o)}))):(ft(qe,1),{status:n}),q=()=>p(6.9,[s,r,o]),R=e=>B()?(qt(Ie,e),{status:!0}):(ft(Ie,1),{status:n}),B=()=>p(6.1,[s,r,o]),k=e=>E()?(qt(Oe,e),{status:!0}):(ft(Oe,1),{status:n}),E=()=>p(6.4,[s,r,o]),C=async e=>T()?(e.title.length>64&&ft(Fe,3),e.message.length<1&&ft(Fe,4),e.message.length>256&&ft(Fe,5),e.buttons.length<1&&ft(Fe,6),e.buttons.length>3&&ft(Fe,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&ft(Fe,8),qt(Fe,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Vt(Et,o)};Ut(Et,o)}))):(ft(Fe,1),{status:n}),T=()=>p(6.2,[s,r,o]),A=async e=>M()?(qt(Re,e),new Promise(((t,s)=>{$t(Ct,(s=>{e.is_close&&l(),t({status:!0,data:s})})),$t(Tt,(()=>{t({status:"closed"})}))}))):(ft(Re,1),{status:n}),M=()=>p(6.4,[o]),P=e=>{const t=function(e){try{return new URL(e)}catch(t){try{return new URL(e,"https://t.me")}catch(t){return e.startsWith("/")||(e="/"+e),new URL(e,"https://t.me")}}}(e.path_full);return e.path_full=t.pathname=t.search,I()?(qt(We,e),{status:!0}):(ft(We,1),{status:n})},I=()=>p(7,[s,r,o]);const O=async e=>F()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=i()),qt(Be,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),Vt(Rt,o))};Ut(Rt,o)}))):(ft(Be,1),{status:n}),F=()=>p(6.4,[s,r,o]),W=e=>L()?(qt(Le,e),{status:!0}):(ft(Le,1),{status:n}),L=()=>p(6.9,[s,r,o]),D=async()=>j()?(qt(ke),new Promise(((e,t)=>{$t(kt,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(ft(ke,1),{status:n}),j=()=>p(6.9,[s,r,o]),H=e=>G()?(qt(De,e),{status:!0}):(ft(De,1),{status:n}),G=()=>p(0,[s,r,o]),Q=e=>N()?(qt(je,e),{status:!0}):(ft(je,1),{status:n}),N=()=>p(0,[s,r,o]),U=()=>new Promise(((e,t)=>{if(!V())return ft(He,1),void e({status:n});const s=t=>{e({status:"allowed"===t.status}),Vt(Pt,s)};Ut(Pt,s),qt(He)})),V=()=>p(6.9,[s,r,o]),$=e=>J()?(qt(Ge,e),{status:!0}):(ft(Ge,1),{status:n}),J=()=>p(6.1,[s,r,o]),z=e=>K()?(qt(Qe,e),{status:!0}):(ft(Qe,1),{status:n}),K=()=>p(6.1,[s,r,o]),X=e=>Y()?(qt(Ne,{color:e?.color||e?.color_key}),{status:!0}):(ft(Ne,1),{status:n}),Y=()=>p(7.1,[s,r,o]),Z=e=>ee()?(qt(Ue,e),{status:!0}):(ft(Ue,1),{status:n}),ee=()=>p(6.1,[s,r,o]),te=e=>se()?(qt(Ve,e),{status:!0}):(ft(Ve,1),{status:n}),se=()=>p(6.2,[s,r,o]),oe=e=>re()?(qt($e,e),{status:!0}):(ft($e,1),{status:n}),re=()=>p(0,[s,r,o]),ae=e=>ne()?(qt(Je,e),{status:!0}):(ft(Je,1),{status:n}),ne=()=>p(6.1,[s,r,o]),pe=e=>ie()?(e.query.length>256&&ft(ze,9),qt(ze,e),{status:!0}):(ft(ze,1),{status:n}),ie=()=>p(6.7,[s,r,o]),de=e=>ue()?(qt(Ke,e),{status:!0}):(ft(Ke,1),{status:n}),ue=()=>p(6.1,[o]),ce=e=>_e()?(qt(Xe,e),{status:!0}):(ft(Xe,1),{status:n}),_e=()=>p(7.7,[s,r,o]),le=()=>p(7.8,[s,r,o]),xe=()=>p(8,[r,o]),ge=()=>p(8,[r,o]),me=()=>p(8,[s,r,o]),he=()=>p(8,[s,r,o]),Se=()=>p(8,[s,r,o]),ve=()=>p(8,[s,r,o]),be=()=>p(8,[s,r,o]),we=()=>p(8,[s,r,o]),fe=()=>p(8,[s,r,o]),ye=()=>p(8,[s,r,o]),qe="web_app_invoke_custom_method",Re="web_app_open_scan_qr_popup",Be="web_app_read_text_from_clipboard",ke="web_app_request_phone",Ee="web_app_close",Ce="web_app_close_scan_qr_popup",Te="web_app_data_send",Ae="web_app_expand",Me="iframe_ready",Pe="iframe_will_reload",Ie="web_app_open_invoice",Oe="web_app_open_link",Fe="web_app_open_popup",We="web_app_open_tg_link",Le="web_app_ready",De="web_app_request_theme",je="web_app_request_viewport",He="web_app_request_write_access",Ge="web_app_set_background_color",Qe="web_app_set_header_color",Ne="web_app_set_bottom_bar_color",Ue="web_app_setup_back_button",Ve="web_app_setup_closing_behavior",$e="web_app_setup_main_button",Je="web_app_setup_settings_button",ze="web_app_switch_inline_query",Ke="web_app_trigger_haptic_feedback",Xe="web_app_setup_swipe_behavior",Ye="web_app_share_to_story",Ze="web_app_request_safe_area",et="web_app_request_content_safe_area",tt="web_app_request_fullscreen",st="web_app_exit_fullscreen",ot="web_app_toggle_orientation_lock",rt="web_app_add_to_home_screen",at="web_app_check_home_screen",nt="web_app_send_prepared_message",pt="web_app_set_emoji_status",it="web_app_request_emoji_status_access",dt="web_app_request_file_download",ut="web_app_biometry_get_info",ct="web_app_biometry_open_settings",_t="web_app_biometry_request_access",lt="web_app_biometry_request_auth",xt="web_app_biometry_update_token";var gt=(e=>(e[e.InvokeCustomMethod=qe]="InvokeCustomMethod",e[e.OpenScanQrPopup=Re]="OpenScanQrPopup",e[e.ReadTextFromClipboard=Be]="ReadTextFromClipboard",e[e.RequestPhone=ke]="RequestPhone",e[e.Close=Ee]="Close",e[e.CloseScanQrPopup=Ce]="CloseScanQrPopup",e[e.DataSend=Te]="DataSend",e[e.Expand=Ae]="Expand",e[e.IframeReady=Me]="IframeReady",e[e.IframeWillReload=Pe]="IframeWillReload",e[e.OpenInvoice=Ie]="OpenInvoice",e[e.OpenLink=Oe]="OpenLink",e[e.OpenPopup=Fe]="OpenPopup",e[e.OpenTgLink=We]="OpenTgLink",e[e.Ready=Le]="Ready",e[e.RequestTheme=De]="RequestTheme",e[e.RequestViewport=je]="RequestViewport",e[e.RequestWriteAccess=He]="RequestWriteAccess",e[e.SetBackgroundColor=Ge]="SetBackgroundColor",e[e.SetHeaderColor=Qe]="SetHeaderColor",e[e.SetBottomBarColor=Ne]="SetBottomBarColor",e[e.SetupBackButton=Ue]="SetupBackButton",e[e.SetupClosingBehavior=Ve]="SetupClosingBehavior",e[e.SetupMainButton=$e]="SetupMainButton",e[e.SetupSettingsButton=Je]="SetupSettingsButton",e[e.SwitchInlineQuery=ze]="SwitchInlineQuery",e[e.TriggerHapticFeedback=Ke]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=Xe]="SetupSwipeBehavior",e[e.ShareToStory=Ye]="ShareToStory",e[e.RequestSafeArea=Ze]="RequestSafeArea",e[e.RequestContentSafeArea=et]="RequestContentSafeArea",e[e.RequestFullscreen=tt]="RequestFullscreen",e[e.ExitFullscreen=st]="ExitFullscreen",e[e.ToggleOrientationLock=ot]="ToggleOrientationLock",e[e.AddToHomeScreen=rt]="AddToHomeScreen",e[e.CheckHomeScreen=at]="CheckHomeScreen",e[e.SendPreparedMessage=nt]="SendPreparedMessage",e[e.SetEmojiStatus=pt]="SetEmojiStatus",e[e.RequestEmojiStatusAccess=it]="RequestEmojiStatusAccess",e[e.RequestFileDownload=dt]="RequestFileDownload",e))(gt||{});const[mt,ht]=t.createStore({isInited:!1,isBiometricAvailable:!1,isAccessGranted:!1,isAccessRequested:!1,isBiometricTokenSaved:!1,biometricType:"unknown",deviceId:""}),St={isInited:mt.isInited,isBiometricAvailable:mt.isBiometricAvailable,isAccessGranted:mt.isAccessGranted,isAccessRequested:mt.isAccessRequested,isBiometricTokenSaved:mt.isBiometricTokenSaved,biometricType:mt.biometricType,deviceId:mt.deviceId,init:()=>new Promise(((e,t)=>{if(!vt())return ft(ut,1),void e({status:n,data:void 0});const s=t=>{bt(t),e({status:!0,data:mt}),Vt(Ht,s)};Ut(Ht,s),qt(ut)})),requestAccess:e=>new Promise(((t,s)=>{if(!vt())return ft(_t,1),void t({status:n,data:void 0});if(e.reason&&e.reason.length>128)return console.error(`[${_t}] Biometric reason is too long`,e.reason),void t({status:!1,data:void 0});const o=e=>{bt(e),t({status:!0,data:mt}),Vt(Ht,o)};Ut(Ht,o),qt(_t,e)})),authenticate:e=>new Promise(((t,s)=>{if(!vt())return ft(lt,1),void t({status:n,data:void 0});if(!mt.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void t({status:!1,data:void 0});if(!mt.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void t({status:!1,data:void 0});const o=e=>{t({status:!0,data:e}),Vt(jt,o)};Ut(jt,o),qt(lt,e)})),updateToken:e=>new Promise(((t,s)=>{if(!vt())return ft(xt,1),void t({status:n,data:void 0});if(!mt.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void t({status:!1,data:void 0});if(!mt.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void t({status:!1,data:void 0});const o=e=>{t({status:!0,data:e}),Vt(Gt,o)};Ut(Gt,o),qt(xt,e)})),openSettings:e=>vt()?mt.isBiometricAvailable?mt.isAccessRequested?mt.isAccessGranted?(console.warn("[Telegram.WebApp] Biometric access was granted by the user, no need to go to settings."),{status:!1}):(qt(ct,e),{status:!0}):(console.error("[Telegram.WebApp] Biometric access was not granted by the user."),{status:!1}):(console.error("[Telegram.WebApp] Biometrics is not available on this device."),{status:!1}):(ft(ct,1),{status:n})},vt=()=>p(7.2,[r,o,s]),bt=e=>{ht(t.produce((t=>(e.available?(t.isBiometricAvailable=!0,t.biometricType=e.type||"",e.access_requested?(t.isAccessRequested=!0,t.isAccessGranted=!!e.access_granted,t.isBiometricTokenSaved=!!e.token_saved):(t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1)):(t.isBiometricAvailable=!1,t.biometricType="unknown",t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1),t.deviceId=e.device_id||"",t.isInited=!0,t))))},wt=e=>{ht(t.produce((t=>(t.isBiometricAvailable&&t.isAccessRequested&&("updated"===e.status?t.isBiometricTokenSaved=!0:"removed"===e.status&&(t.isBiometricTokenSaved=!1)),t))))};e.onMount((()=>{Ut(Ht,bt),Ut(Gt,wt),e.onCleanup((()=>{Vt(Ht,bt),Vt(Gt,wt)}))}));const ft=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)},yt=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void ft("getInitData",2);const s=new URLSearchParams(t);let o={};return s.forEach(((e,t)=>{if(o[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{o[t]=JSON.parse(e)}catch{}})),o},qt=(e,t)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:e,eventData:t}));else try{window.parent.postMessage(JSON.stringify({eventType:e,eventData:t}),"*")}catch(e){ft("postMessage Iframe",10)}},Rt="clipboard_text_received",Bt="custom_method_invoked",kt="phone_requested",Et="popup_closed",Ct="qr_text_received",Tt="scan_qr_popup_closed",At="theme_changed",Mt="viewport_changed",Pt="write_access_requested",It="prepared_message_sent",Ot="prepared_message_failed",Ft="emoji_status_set",Wt="emoji_status_failed",Lt="emoji_status_access_requested",Dt="file_download_requested",jt="biometry_auth_requested",Ht="biometry_info_received",Gt="biometry_token_updated",Qt="home_screen_checked",Nt=((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===At&&(t.theme_params=u(t.theme_params)),Nt.emit(e,t),Nt.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Ut=(e,t)=>{Nt.on(e,t)},Vt=(e,t)=>{Nt.off(e,t)},$t=(e,t)=>{Nt.once(e,t)};var Jt=Object.freeze({__proto__:null,off:Vt,on:Ut,once:$t});const zt=e.createContext({viewport:void 0,theme:void 0,init:void 0});exports.BiometricManager=St,exports.ContextTwa=zt,exports.EventAccelerometerChanged="accelerometer_changed",exports.EventAccelerometerFailed="accelerometer_failed",exports.EventAccelerometerStarted="accelerometer_started",exports.EventAccelerometerStopped="accelerometer_stopped",exports.EventBackButtonPressed="back_button_pressed",exports.EventBiometryAuthRequested=jt,exports.EventBiometryInfoReceived=Ht,exports.EventBiometryTokenUpdated=Gt,exports.EventClipboardTextReceived=Rt,exports.EventContentSafeAreaChanged="content_safe_area_changed",exports.EventCustomMethodInvoked=Bt,exports.EventDeviceOrientationChanged="device_orientation_changed",exports.EventDeviceOrientationFailed="device_orientation_failed",exports.EventDeviceOrientationStarted="device_orientation_started",exports.EventDeviceOrientationStopped="device_orientation_stopped",exports.EventEmojiStatusAccessRequested=Lt,exports.EventEmojiStatusFailed=Wt,exports.EventEmojiStatusSet=Ft,exports.EventFileDownloadRequested=Dt,exports.EventFullscreenChanged="fullscreen_changed",exports.EventFullscreenFailed="fullscreen_failed",exports.EventGyroscopeChanged="gyroscope_changed",exports.EventGyroscopeFailed="gyroscope_failed",exports.EventGyroscopeStarted="gyroscope_started",exports.EventGyroscopeStopped="gyroscope_stopped",exports.EventHomeScreenAdded="home_screen_added",exports.EventHomeScreenChecked=Qt,exports.EventHomeScreenFailed="home_screen_failed",exports.EventInvoiceClosed="invoice_closed",exports.EventLocationChecked="location_checked",exports.EventLocationRequested="location_requested",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=kt,exports.EventPopupClosed=Et,exports.EventPreparedMessageFailed=Ot,exports.EventPreparedMessageSent=It,exports.EventQrTextReceived=Ct,exports.EventReloadIframe="reload_iframe",exports.EventSafeAreaChanged="safe_area_changed",exports.EventScanQrPopupClosed=Tt,exports.EventSecondaryButtonPressed="secondary_button_pressed",exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=At,exports.EventViewportChanged=Mt,exports.EventVisibilityChanged="visibility_changed",exports.EventWriteAccessRequested=Pt,exports.Method=gt,exports.MethodAddToHomeScreen=rt,exports.MethodCheckHomeScreen=at,exports.MethodClose=Ee,exports.MethodCloseScanQrPopup=Ce,exports.MethodDataSend=Te,exports.MethodExitFullscreen=st,exports.MethodExpand=Ae,exports.MethodIframeReady=Me,exports.MethodIframeWillReload=Pe,exports.MethodInvokeCustomMethod=qe,exports.MethodOpenInvoice=Ie,exports.MethodOpenLink=Oe,exports.MethodOpenPopup=Fe,exports.MethodOpenScanQrPopup=Re,exports.MethodOpenTgLink=We,exports.MethodReadTextFromClipboard=Be,exports.MethodReady=Le,exports.MethodRequestContentSafeArea=et,exports.MethodRequestEmojiStatusAccess=it,exports.MethodRequestFileDownload=dt,exports.MethodRequestFullscreen=tt,exports.MethodRequestPhone=ke,exports.MethodRequestSafeArea=Ze,exports.MethodRequestTheme=De,exports.MethodRequestViewport=je,exports.MethodRequestWriteAccess=He,exports.MethodSendPreparedMessage=nt,exports.MethodSetBackgroundColor=Ge,exports.MethodSetBottomBarColor=Ne,exports.MethodSetEmojiStatus=pt,exports.MethodSetHeaderColor=Qe,exports.MethodSetupBackButton=Ue,exports.MethodSetupClosingBehavior=Ve,exports.MethodSetupMainButton=$e,exports.MethodSetupSettingsButton=Je,exports.MethodSetupSwipeBehavior=Xe,exports.MethodShareToStory=Ye,exports.MethodSwitchInlineQuery=ze,exports.MethodToggleOrientationLock=ot,exports.MethodTriggerHapticFeedback=Ke,exports.NOT_SUPPORTED=n,exports.ProviderTWA=s=>{const[o,r]=t.createStore({viewport:void 0,theme:void 0,init:void 0});return e.createEffect((()=>{const t=()=>{r("init",yt())};t();const s=e=>{t(),r("viewport",e)};Ut(Mt,s),Q();const o=e=>{t(),r("theme",e)};return Ut(At,o),Q(),e.onCleanup((()=>{Vt(Mt,s),Vt(At,o)})),()=>{Vt(Mt,s),Vt(At,o)}})),zt.Provider({value:o,children:s.children})},exports.TG_DESKTOP=r,exports.TG_PHONE=o,exports.TG_WEB=s,exports.bridgeAddToHomeScreen=()=>ge()?(qt(rt),{status:!0}):(ft(rt,1),{status:n}),exports.bridgeCheckHomeScreen=async e=>new Promise(((t,s)=>{if(!xe())return ft(at,1),void t({status:n,data:void 0});const o=e=>{e.status=e.status||"unknown",t({status:!0,data:e}),Vt(Qt,o)};Ut(Qt,o),qt(at,e)})),exports.bridgeClose=c,exports.bridgeCloseScanQrPopup=l,exports.bridgeDataSend=g,exports.bridgeDownloadFile=async e=>ye()?new Promise(((t,s)=>{$t(Dt,(function(e){t({status:"downloading"===e.status})})),qt(dt,e)})):(ft(dt,1),{status:n}),exports.bridgeExpand=h,exports.bridgeGetInitData=yt,exports.bridgeGetThemeParams=u,exports.bridgeIframeReady=v,exports.bridgeIframeWillReload=w,exports.bridgeInvokeCustomMethod=y,exports.bridgeOpenInvoice=R,exports.bridgeOpenLink=k,exports.bridgeOpenPopup=C,exports.bridgeOpenScanQrPopup=A,exports.bridgeOpenTgLink=P,exports.bridgeReadTextFromClipboard=O,exports.bridgeReady=W,exports.bridgeRequestContentSafeAreaInset=()=>he()?(qt(et),{status:!0}):(ft(et,1),{status:n}),exports.bridgeRequestEmojiStatus=async e=>be()?new Promise(((t,s)=>{$t(Lt,(function(e){t({status:"allowed"===e.status})})),qt(it,e)})):(ft(it,1),{status:n}),exports.bridgeRequestPhone=D,exports.bridgeRequestSafeAreaInset=()=>me()?(qt(Ze),{status:!0}):(ft(Ze,1),{status:n}),exports.bridgeRequestTheme=H,exports.bridgeRequestViewport=Q,exports.bridgeRequestWriteAccess=U,exports.bridgeSend=qt,exports.bridgeSessionStorageGet=({key:e})=>{try{return{is_json:!0,value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(t){return{is_json:!1,value:window.sessionStorage.getItem("__telegram__"+e)??"",status:!0}}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(s){return window.sessionStorage.setItem("__telegram__"+e,t),{status:!0}}},exports.bridgeSetBackgroundColor=$,exports.bridgeSetBottomBarColor=X,exports.bridgeSetEmojiStatus=async e=>we()?new Promise(((t,s)=>{$t(Ft,(()=>t({status:!0}))),$t(Wt,(()=>t({status:!1}))),qt(pt,e)})):(ft(pt,1),{status:n}),exports.bridgeSetHeaderColor=z,exports.bridgeSetupBackButton=Z,exports.bridgeSetupClosingBehavior=te,exports.bridgeSetupFullScreen=e=>{const t=e?.is_full||!1;return Se()?(qt(t?tt:st),{status:!0}):(ft(t?tt:st,1),{status:n})},exports.bridgeSetupMainButton=oe,exports.bridgeSetupOrientation=e=>ve()?(qt(ot,e),{status:!0}):(ft(ot,1),{status:n}),exports.bridgeSetupSettingsButton=ae,exports.bridgeSetupSwipeBehavior=ce,exports.bridgeShareMessage=async e=>fe()?new Promise(((t,s)=>{$t(It,(()=>t({status:!0}))),$t(Ot,(()=>t({status:!1}))),qt(nt,e)})):(ft(nt,1),{status:n}),exports.bridgeShareToStory=e=>le()?e?.text&&e?.text.length>2048?(console.warn(`[@apiteam/twa-bridge](${Ye}) | Text is too long`),{status:!1,error_id:1}):e?.widget_link?.name&&e?.widget_link.name.length>48?(console.warn(`[@apiteam/twa-bridge](${Ye}) | Link name is too long`),{status:!1,error_id:2}):(qt(Ye,e),{status:!0}):(ft(Ye,1),{status:n}),exports.bridgeSwitchInlineQuery=pe,exports.bridgeTriggerHapticFeedback=de,exports.createIsViewportChanged=()=>{const[t,s]=e.createSignal({height:0,is_expanded:!1,is_state_stable:!1}),o=e=>s(e);return e.onMount((()=>{Ut(Mt,o),qt(je)})),e.onCleanup((()=>{Vt(Mt,o)})),t},exports.debug=ft,exports.getAppData=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},exports.getPlatform=a,exports.listener=Jt,exports.sender=qt,exports.supportAddToHomeScreen=ge,exports.supportBiometricManager=vt,exports.supportCheckHomeScreen=xe,exports.supportClose=_,exports.supportCloseScanQrPopup=x,exports.supportDataSend=m,exports.supportDownloadFile=ye,exports.supportExpand=S,exports.supportIframeReady=b,exports.supportIframeWillReload=f,exports.supportInvokeCustomMethod=q,exports.supportOpenInvoice=B,exports.supportOpenLink=E,exports.supportOpenPopup=T,exports.supportOpenScanQrPopup=M,exports.supportOpenTgLink=I,exports.supportReadTextFromClipboard=F,exports.supportReady=L,exports.supportRequestContentSafeAreaInset=he,exports.supportRequestEmojiStatus=be,exports.supportRequestPhone=j,exports.supportRequestSafeAreaInset=me,exports.supportRequestTheme=G,exports.supportRequestViewport=N,exports.supportRequestWriteAccess=V,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=J,exports.supportSetBottomBarColor=Y,exports.supportSetEmojiStatus=we,exports.supportSetHeaderColor=K,exports.supportSetupBackButton=ee,exports.supportSetupClosingBehavior=se,exports.supportSetupFullScreen=Se,exports.supportSetupMainButton=re,exports.supportSetupOrientation=ve,exports.supportSetupSettingsButton=ne,exports.supportSetupSwipeBehavior=_e,exports.supportShareMessage=fe,exports.supportShareToStory=le,exports.supportSwitchInlineQuery=ie,exports.supportTriggerHapticFeedback=ue;
|
package/solid/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{debug as e,NOT_SUPPORTED as t,listener as s,EventBiometryInfoReceived as a,sender as o,EventBiometryAuthRequested as r,EventBiometryTokenUpdated as i,TG_DESKTOP as n,TG_PHONE as d,TG_WEB as c}from"solid";import{createSignal as u,onMount as _,onCleanup as p,createContext as l,createEffect as m}from"solid-js";import{createStore as g,produce as b}from"solid-js/store";const w=()=>{const[e,t]=u({height:0,is_expanded:!1,is_state_stable:!1}),s=e=>t(e);return _((()=>{Ks(gs,s),ts(wt)})),p((()=>{Xs(gs,s)})),e},v="web",h="phone",S="desktop",f=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?h:["tdesktop","macos"].includes(t)?S:v},y="not_supported",q=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(f())},k=()=>Math.random().toString(36).substring(3,9),T=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]),o=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((a<16?"0":"")+a.toString(16))+((o<16?"0":"")+o.toString(16))}return!1},R=e=>{const t=window.location.hash.slice(1),s=new URLSearchParams(t),a=JSON.parse(s.get("tgWebAppThemeParams")??""),o=e||a;for(var r of Object.keys(o)){var i=T(o[r]);"string"==typeof i&&(o[r]=i)}return"#1c1c1d"==o?.bg_color&&o?.bg_color==o?.secondary_bg_color&&(o.secondary_bg_color="#2c2c2e"),o},B=e=>A()?(ts(rt,e),{status:!0}):(Zt(rt,1),{status:y}),A=()=>q(0,[v,S,h]),P=e=>I()?(ts(it,e),{status:!0}):(Zt(it,1),{status:y}),I=()=>q(6.4,[h]),O=e=>x()?(ts(nt,e),{status:!0}):(Zt(nt,1),{status:y}),x=()=>q(0,[v,S,h]),C=e=>E()?(ts(dt,e),{status:!0}):(Zt(dt,1),{status:y}),E=()=>q(0,[h]),W=e=>L()?(ts(ct,e),{status:!0}):(Zt(ct,1),{status:y}),L=()=>q(0,[v]),j=()=>G()?(ts(ct),{status:!0}):(Zt(ct,1),{status:y}),G=()=>q(0,[v]),D=async e=>F()?(void 0===e.req_id&&(e.req_id=k()),ts(tt,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Xs(os,a))};Ks(os,a)}))):(Zt(tt,1),{status:y}),F=()=>q(6.9,[v,S,h]),H=e=>M()?(ts(_t,e),{status:!0}):(Zt(_t,1),{status:y}),M=()=>q(6.1,[v,S,h]),N=e=>U()?(ts(pt,e),{status:!0}):(Zt(pt,1),{status:y}),U=()=>q(6.4,[v,S,h]),$=async e=>Q()?(e.title.length>64&&Zt(lt,3),e.message.length<1&&Zt(lt,4),e.message.length>256&&Zt(lt,5),e.buttons.length<1&&Zt(lt,6),e.buttons.length>3&&Zt(lt,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&Zt(lt,8),ts(lt,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Xs(ds,a)};Ks(ds,a)}))):(Zt(lt,1),{status:y}),Q=()=>q(6.2,[v,S,h]),J=async e=>V()?(ts(st,e),new Promise(((t,s)=>{Ys(us,(s=>{e.is_close&&P(),t({status:!0,data:s})})),Ys(_s,(()=>{t({status:"closed"})}))}))):(Zt(st,1),{status:y}),V=()=>q(6.4,[h]),z=e=>{const t=function(e){try{return new URL(e)}catch(t){try{return new URL(e,"https://t.me")}catch(t){return e.startsWith("/")||(e="/"+e),new URL(e,"https://t.me")}}}(e.path_full);return e.path_full=t.pathname=t.search,K()?(ts(mt,e),{status:!0}):(Zt(mt,1),{status:y})},K=()=>q(7,[v,S,h]);const X=async e=>Y()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=k()),ts(at,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),Xs(as,a))};Ks(as,a)}))):(Zt(at,1),{status:y}),Y=()=>q(6.4,[v,S,h]),Z=e=>ee()?(ts(gt,e),{status:!0}):(Zt(gt,1),{status:y}),ee=()=>q(6.9,[v,S,h]),te=async()=>se()?(ts(ot),new Promise(((e,t)=>{Ys(ns,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(Zt(ot,1),{status:y}),se=()=>q(6.9,[v,S,h]),ae=e=>oe()?(ts(bt,e),{status:!0}):(Zt(bt,1),{status:y}),oe=()=>q(0,[v,S,h]),re=e=>ie()?(ts(wt,e),{status:!0}):(Zt(wt,1),{status:y}),ie=()=>q(0,[v,S,h]),ne=()=>new Promise(((e,t)=>{if(!de())return Zt(vt,1),void e({status:y});const s=t=>{e({status:"allowed"===t.status}),Xs(bs,s)};Ks(bs,s),ts(vt)})),de=()=>q(6.9,[v,S,h]),ce=e=>ue()?(ts(ht,e),{status:!0}):(Zt(ht,1),{status:y}),ue=()=>q(6.1,[v,S,h]),_e=e=>pe()?(ts(St,e),{status:!0}):(Zt(St,1),{status:y}),pe=()=>q(6.1,[v,S,h]),le=e=>me()?(ts(ft,{color:e?.color||e?.color_key}),{status:!0}):(Zt(ft,1),{status:y}),me=()=>q(7.1,[v,S,h]),ge=e=>be()?(ts(yt,e),{status:!0}):(Zt(yt,1),{status:y}),be=()=>q(6.1,[v,S,h]),we=e=>ve()?(ts(qt,e),{status:!0}):(Zt(qt,1),{status:y}),ve=()=>q(6.2,[v,S,h]),he=e=>Se()?(ts(kt,e),{status:!0}):(Zt(kt,1),{status:y}),Se=()=>q(0,[v,S,h]),fe=e=>ye()?(ts(Tt,e),{status:!0}):(Zt(Tt,1),{status:y}),ye=()=>q(6.1,[v,S,h]),qe=e=>ke()?(e.query.length>256&&Zt(Rt,9),ts(Rt,e),{status:!0}):(Zt(Rt,1),{status:y}),ke=()=>q(6.7,[v,S,h]),Te=e=>Re()?(ts(Bt,e),{status:!0}):(Zt(Bt,1),{status:y}),Re=()=>q(6.1,[h]),Be=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(s){return window.sessionStorage.setItem("__telegram__"+e,t),{status:!0}}},Ae=()=>!0,Pe=({key:e})=>{try{return{is_json:!0,value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(t){return{is_json:!1,value:window.sessionStorage.getItem("__telegram__"+e)??"",status:!0}}},Ie=()=>!0,Oe=e=>xe()?(ts(At,e),{status:!0}):(Zt(At,1),{status:y}),xe=()=>q(7.7,[v,S,h]),Ce=e=>Ee()?e?.text&&e?.text.length>2048?(console.warn(`[@apiteam/twa-bridge](${Pt}) | Text is too long`),{status:!1,error_id:1}):e?.widget_link?.name&&e?.widget_link.name.length>48?(console.warn(`[@apiteam/twa-bridge](${Pt}) | Link name is too long`),{status:!1,error_id:2}):(ts(Pt,e),{status:!0}):(Zt(Pt,1),{status:y}),Ee=()=>q(7.8,[v,S,h]),We=async e=>new Promise(((t,s)=>{if(!Le())return Zt(Lt,1),void t({status:y,data:void 0});const a=e=>{e.status=e.status||"unknown",t({status:!0,data:e}),Xs(Ns,a)};Ks(Ns,a),ts(Lt,e)})),Le=()=>q(8,[S,h]),je=()=>Ge()?(ts(Wt),{status:!0}):(Zt(Wt,1),{status:y}),Ge=()=>q(8,[S,h]),De=()=>Fe()?(ts(It),{status:!0}):(Zt(It,1),{status:y}),Fe=()=>q(8,[v,S,h]),He=()=>Me()?(ts(Ot),{status:!0}):(Zt(Ot,1),{status:y}),Me=()=>q(8,[v,S,h]),Ne=e=>{const t=e?.is_full||!1;return Ue()?(ts(t?xt:Ct),{status:!0}):(Zt(t?xt:Ct,1),{status:y})},Ue=()=>q(8,[v,S,h]),$e=e=>Qe()?(ts(Et,e),{status:!0}):(Zt(Et,1),{status:y}),Qe=()=>q(8,[v,S,h]),Je=async e=>Ve()?new Promise(((t,s)=>{Ys(qs,(function(e){t({status:"allowed"===e.status})})),ts(Dt,e)})):(Zt(Dt,1),{status:y}),Ve=()=>q(8,[v,S,h]),ze=async e=>Ke()?new Promise(((t,s)=>{Ys(fs,(()=>t({status:!0}))),Ys(ys,(()=>t({status:!1}))),ts(Gt,e)})):(Zt(Gt,1),{status:y}),Ke=()=>q(8,[v,S,h]),Xe=async e=>Ye()?new Promise(((t,s)=>{Ys(hs,(()=>t({status:!0}))),Ys(Ss,(()=>t({status:!1}))),ts(jt,e)})):(Zt(jt,1),{status:y}),Ye=()=>q(8,[v,S,h]),Ze=async e=>et()?new Promise(((t,s)=>{Ys(ks,(function(e){t({status:"downloading"===e.status})})),ts(Ft,e)})):(Zt(Ft,1),{status:y}),et=()=>q(8,[v,S,h]),tt="web_app_invoke_custom_method",st="web_app_open_scan_qr_popup",at="web_app_read_text_from_clipboard",ot="web_app_request_phone",rt="web_app_close",it="web_app_close_scan_qr_popup",nt="web_app_data_send",dt="web_app_expand",ct="iframe_ready",ut="iframe_will_reload",_t="web_app_open_invoice",pt="web_app_open_link",lt="web_app_open_popup",mt="web_app_open_tg_link",gt="web_app_ready",bt="web_app_request_theme",wt="web_app_request_viewport",vt="web_app_request_write_access",ht="web_app_set_background_color",St="web_app_set_header_color",ft="web_app_set_bottom_bar_color",yt="web_app_setup_back_button",qt="web_app_setup_closing_behavior",kt="web_app_setup_main_button",Tt="web_app_setup_settings_button",Rt="web_app_switch_inline_query",Bt="web_app_trigger_haptic_feedback",At="web_app_setup_swipe_behavior",Pt="web_app_share_to_story",It="web_app_request_safe_area",Ot="web_app_request_content_safe_area",xt="web_app_request_fullscreen",Ct="web_app_exit_fullscreen",Et="web_app_toggle_orientation_lock",Wt="web_app_add_to_home_screen",Lt="web_app_check_home_screen",jt="web_app_send_prepared_message",Gt="web_app_set_emoji_status",Dt="web_app_request_emoji_status_access",Ft="web_app_request_file_download",Ht="web_app_biometry_get_info",Mt="web_app_biometry_open_settings",Nt="web_app_biometry_request_access",Ut="web_app_biometry_request_auth",$t="web_app_biometry_update_token";var Qt=(e=>(e[e.InvokeCustomMethod=tt]="InvokeCustomMethod",e[e.OpenScanQrPopup=st]="OpenScanQrPopup",e[e.ReadTextFromClipboard=at]="ReadTextFromClipboard",e[e.RequestPhone=ot]="RequestPhone",e[e.Close=rt]="Close",e[e.CloseScanQrPopup=it]="CloseScanQrPopup",e[e.DataSend=nt]="DataSend",e[e.Expand=dt]="Expand",e[e.IframeReady=ct]="IframeReady",e[e.IframeWillReload=ut]="IframeWillReload",e[e.OpenInvoice=_t]="OpenInvoice",e[e.OpenLink=pt]="OpenLink",e[e.OpenPopup=lt]="OpenPopup",e[e.OpenTgLink=mt]="OpenTgLink",e[e.Ready=gt]="Ready",e[e.RequestTheme=bt]="RequestTheme",e[e.RequestViewport=wt]="RequestViewport",e[e.RequestWriteAccess=vt]="RequestWriteAccess",e[e.SetBackgroundColor=ht]="SetBackgroundColor",e[e.SetHeaderColor=St]="SetHeaderColor",e[e.SetBottomBarColor=ft]="SetBottomBarColor",e[e.SetupBackButton=yt]="SetupBackButton",e[e.SetupClosingBehavior=qt]="SetupClosingBehavior",e[e.SetupMainButton=kt]="SetupMainButton",e[e.SetupSettingsButton=Tt]="SetupSettingsButton",e[e.SwitchInlineQuery=Rt]="SwitchInlineQuery",e[e.TriggerHapticFeedback=Bt]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=At]="SetupSwipeBehavior",e[e.ShareToStory=Pt]="ShareToStory",e[e.RequestSafeArea=It]="RequestSafeArea",e[e.RequestContentSafeArea=Ot]="RequestContentSafeArea",e[e.RequestFullscreen=xt]="RequestFullscreen",e[e.ExitFullscreen=Ct]="ExitFullscreen",e[e.ToggleOrientationLock=Et]="ToggleOrientationLock",e[e.AddToHomeScreen=Wt]="AddToHomeScreen",e[e.CheckHomeScreen=Lt]="CheckHomeScreen",e[e.SendPreparedMessage=jt]="SendPreparedMessage",e[e.SetEmojiStatus=Gt]="SetEmojiStatus",e[e.RequestEmojiStatusAccess=Dt]="RequestEmojiStatusAccess",e[e.RequestFileDownload=Ft]="RequestFileDownload",e))(Qt||{});const[Jt,Vt]=g({isInited:!1,isBiometricAvailable:!1,isAccessGranted:!1,isAccessRequested:!1,isBiometricTokenSaved:!1,biometricType:"unknown",deviceId:""}),zt={isInited:Jt.isInited,isBiometricAvailable:Jt.isBiometricAvailable,isAccessGranted:Jt.isAccessGranted,isAccessRequested:Jt.isAccessRequested,isBiometricTokenSaved:Jt.isBiometricTokenSaved,biometricType:Jt.biometricType,deviceId:Jt.deviceId,init:()=>new Promise(((r,i)=>{if(!Kt())return e(Ht,1),void r({status:t,data:void 0});const n=e=>{Xt(e),r({status:!0,data:Jt}),s.off(a,n)};s.on(a,n),o(Ht)})),requestAccess:r=>new Promise(((i,n)=>{if(!Kt())return e(Nt,1),void i({status:t,data:void 0});if(r.reason&&r.reason.length>128)return console.error(`[${Nt}] Biometric reason is too long`,r.reason),void i({status:!1,data:void 0});const d=e=>{Xt(e),i({status:!0,data:Jt}),s.off(a,d)};s.on(a,d),o(Nt,r)})),authenticate:a=>new Promise(((i,n)=>{if(!Kt())return e(Ut,1),void i({status:t,data:void 0});if(!Jt.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void i({status:!1,data:void 0});if(!Jt.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void i({status:!1,data:void 0});const d=e=>{i({status:!0,data:e}),s.off(r,d)};s.on(r,d),o(Ut,a)})),updateToken:a=>new Promise(((r,n)=>{if(!Kt())return e($t,1),void r({status:t,data:void 0});if(!Jt.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void r({status:!1,data:void 0});if(!Jt.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void r({status:!1,data:void 0});const d=e=>{r({status:!0,data:e}),s.off(i,d)};s.on(i,d),o($t,a)})),openSettings:s=>Kt()?Jt.isBiometricAvailable?Jt.isAccessRequested?Jt.isAccessGranted?(console.warn("[Telegram.WebApp] Biometric access was granted by the user, no need to go to settings."),{status:!1}):(o(Mt,s),{status:!0}):(console.error("[Telegram.WebApp] Biometric access was not granted by the user."),{status:!1}):(console.error("[Telegram.WebApp] Biometrics is not available on this device."),{status:!1}):(e(Mt,1),{status:t})},Kt=()=>q(7.2,[n,d,c]),Xt=e=>{Vt(b((t=>(e.available?(t.isBiometricAvailable=!0,t.biometricType=e.type||"",e.access_requested?(t.isAccessRequested=!0,t.isAccessGranted=!!e.access_granted,t.isBiometricTokenSaved=!!e.token_saved):(t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1)):(t.isBiometricAvailable=!1,t.biometricType="unknown",t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1),t.deviceId=e.device_id||"",t.isInited=!0,t))))},Yt=e=>{Vt(b((t=>(t.isBiometricAvailable&&t.isAccessRequested&&("updated"===e.status?t.isBiometricTokenSaved=!0:"removed"===e.status&&(t.isBiometricTokenSaved=!1)),t))))};_((()=>{s.on(a,Xt),s.on(i,Yt),p((()=>{s.off(a,Xt),s.off(i,Yt)}))}));const Zt=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)},es=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void Zt("getInitData",2);const s=new URLSearchParams(t);let a={};return s.forEach(((e,t)=>{if(a[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{a[t]=JSON.parse(e)}catch{}})),a},ts=(e,t)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:e,eventData:t}));else try{window.parent.postMessage(JSON.stringify({eventType:e,eventData:t}),"*")}catch(e){Zt("postMessage Iframe",10)}},ss="back_button_pressed",as="clipboard_text_received",os="custom_method_invoked",rs="invoice_closed",is="main_button_pressed",ns="phone_requested",ds="popup_closed",cs="reload_iframe",us="qr_text_received",_s="scan_qr_popup_closed",ps="set_custom_style",ls="settings_button_pressed",ms="theme_changed",gs="viewport_changed",bs="write_access_requested",ws="safe_area_changed",vs="content_safe_area_changed",hs="prepared_message_sent",Ss="prepared_message_failed",fs="emoji_status_set",ys="emoji_status_failed",qs="emoji_status_access_requested",ks="file_download_requested",Ts="accelerometer_changed",Rs="accelerometer_failed",Bs="accelerometer_started",As="accelerometer_stopped",Ps="biometry_auth_requested",Is="biometry_info_received",Os="biometry_token_updated",xs="device_orientation_changed",Cs="device_orientation_failed",Es="device_orientation_started",Ws="device_orientation_stopped",Ls="fullscreen_changed",js="fullscreen_failed",Gs="gyroscope_changed",Ds="gyroscope_failed",Fs="gyroscope_started",Hs="gyroscope_stopped",Ms="home_screen_added",Ns="home_screen_checked",Us="home_screen_failed",$s="location_checked",Qs="location_requested",Js="secondary_button_pressed",Vs="visibility_changed",zs=((e=new Map)=>({once:(t,s,a=e.get(t),o=e=>{s(e),a&&a.splice(a.indexOf(s)>>>0,1)})=>a?a.push(o):e.set(t,[o]),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===ms&&(t.theme_params=R(t.theme_params)),zs.emit(e,t),zs.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Ks=(e,t)=>{zs.on(e,t)},Xs=(e,t)=>{zs.off(e,t)},Ys=(e,t)=>{zs.once(e,t)};var Zs=Object.freeze({__proto__:null,off:Xs,on:Ks,once:Ys});const ea=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},ta=l({viewport:void 0,theme:void 0,init:void 0}),sa=e=>{const[t,s]=g({viewport:void 0,theme:void 0,init:void 0});return m((()=>{const e=()=>{s("init",es())};e();const t=t=>{e(),s("viewport",t)};Ks(gs,t),re();const a=t=>{e(),s("theme",t)};return Ks(ms,a),re(),p((()=>{Xs(gs,t),Xs(ms,a)})),()=>{Xs(gs,t),Xs(ms,a)}})),ta.Provider({value:t,children:e.children})};export{zt as BiometricManager,ta as ContextTwa,Ts as EventAccelerometerChanged,Rs as EventAccelerometerFailed,Bs as EventAccelerometerStarted,As as EventAccelerometerStopped,ss as EventBackButtonPressed,Ps as EventBiometryAuthRequested,Is as EventBiometryInfoReceived,Os as EventBiometryTokenUpdated,as as EventClipboardTextReceived,vs as EventContentSafeAreaChanged,os as EventCustomMethodInvoked,xs as EventDeviceOrientationChanged,Cs as EventDeviceOrientationFailed,Es as EventDeviceOrientationStarted,Ws as EventDeviceOrientationStopped,qs as EventEmojiStatusAccessRequested,ys as EventEmojiStatusFailed,fs as EventEmojiStatusSet,ks as EventFileDownloadRequested,Ls as EventFullscreenChanged,js as EventFullscreenFailed,Gs as EventGyroscopeChanged,Ds as EventGyroscopeFailed,Fs as EventGyroscopeStarted,Hs as EventGyroscopeStopped,Ms as EventHomeScreenAdded,Ns as EventHomeScreenChecked,Us as EventHomeScreenFailed,rs as EventInvoiceClosed,$s as EventLocationChecked,Qs as EventLocationRequested,is as EventMainButtonPressed,ns as EventPhoneRequested,ds as EventPopupClosed,Ss as EventPreparedMessageFailed,hs as EventPreparedMessageSent,us as EventQrTextReceived,cs as EventReloadIframe,ws as EventSafeAreaChanged,_s as EventScanQrPopupClosed,Js as EventSecondaryButtonPressed,ps as EventSetCustomStyle,ls as EventSettingsButtonPressed,ms as EventThemeChanged,gs as EventViewportChanged,Vs as EventVisibilityChanged,bs as EventWriteAccessRequested,Qt as Method,Wt as MethodAddToHomeScreen,Lt as MethodCheckHomeScreen,rt as MethodClose,it as MethodCloseScanQrPopup,nt as MethodDataSend,Ct as MethodExitFullscreen,dt as MethodExpand,ct as MethodIframeReady,ut as MethodIframeWillReload,tt as MethodInvokeCustomMethod,_t as MethodOpenInvoice,pt as MethodOpenLink,lt as MethodOpenPopup,st as MethodOpenScanQrPopup,mt as MethodOpenTgLink,at as MethodReadTextFromClipboard,gt as MethodReady,Ot as MethodRequestContentSafeArea,Dt as MethodRequestEmojiStatusAccess,Ft as MethodRequestFileDownload,xt as MethodRequestFullscreen,ot as MethodRequestPhone,It as MethodRequestSafeArea,bt as MethodRequestTheme,wt as MethodRequestViewport,vt as MethodRequestWriteAccess,jt as MethodSendPreparedMessage,ht as MethodSetBackgroundColor,ft as MethodSetBottomBarColor,Gt as MethodSetEmojiStatus,St as MethodSetHeaderColor,yt as MethodSetupBackButton,qt as MethodSetupClosingBehavior,kt as MethodSetupMainButton,Tt as MethodSetupSettingsButton,At as MethodSetupSwipeBehavior,Pt as MethodShareToStory,Rt as MethodSwitchInlineQuery,Et as MethodToggleOrientationLock,Bt as MethodTriggerHapticFeedback,y as NOT_SUPPORTED,sa as ProviderTWA,S as TG_DESKTOP,h as TG_PHONE,v as TG_WEB,je as bridgeAddToHomeScreen,We as bridgeCheckHomeScreen,B as bridgeClose,P as bridgeCloseScanQrPopup,O as bridgeDataSend,Ze as bridgeDownloadFile,C as bridgeExpand,es as bridgeGetInitData,R as bridgeGetThemeParams,W as bridgeIframeReady,j as bridgeIframeWillReload,D as bridgeInvokeCustomMethod,H as bridgeOpenInvoice,N as bridgeOpenLink,$ as bridgeOpenPopup,J as bridgeOpenScanQrPopup,z as bridgeOpenTgLink,X as bridgeReadTextFromClipboard,Z as bridgeReady,He as bridgeRequestContentSafeAreaInset,Je as bridgeRequestEmojiStatus,te as bridgeRequestPhone,De as bridgeRequestSafeAreaInset,ae as bridgeRequestTheme,re as bridgeRequestViewport,ne as bridgeRequestWriteAccess,ts as bridgeSend,Pe as bridgeSessionStorageGet,Be as bridgeSessionStorageSet,ce as bridgeSetBackgroundColor,le as bridgeSetBottomBarColor,ze as bridgeSetEmojiStatus,_e as bridgeSetHeaderColor,ge as bridgeSetupBackButton,we as bridgeSetupClosingBehavior,Ne as bridgeSetupFullScreen,he as bridgeSetupMainButton,$e as bridgeSetupOrientation,fe as bridgeSetupSettingsButton,Oe as bridgeSetupSwipeBehavior,Xe as bridgeShareMessage,Ce as bridgeShareToStory,qe as bridgeSwitchInlineQuery,Te as bridgeTriggerHapticFeedback,w as createIsViewportChanged,Zt as debug,ea as getAppData,f as getPlatform,Zs as listener,ts as sender,Ge as supportAddToHomeScreen,Kt as supportBiometricManager,Le as supportCheckHomeScreen,A as supportClose,I as supportCloseScanQrPopup,x as supportDataSend,et as supportDownloadFile,E as supportExpand,L as supportIframeReady,G as supportIframeWillReload,F as supportInvokeCustomMethod,M as supportOpenInvoice,U as supportOpenLink,Q as supportOpenPopup,V as supportOpenScanQrPopup,K as supportOpenTgLink,Y as supportReadTextFromClipboard,ee as supportReady,Me as supportRequestContentSafeAreaInset,Ve as supportRequestEmojiStatus,se as supportRequestPhone,Fe as supportRequestSafeAreaInset,oe as supportRequestTheme,ie as supportRequestViewport,de as supportRequestWriteAccess,Ie as supportSessionStorageGet,Ae as supportSessionStorageSet,ue as supportSetBackgroundColor,me as supportSetBottomBarColor,Ke as supportSetEmojiStatus,pe as supportSetHeaderColor,be as supportSetupBackButton,ve as supportSetupClosingBehavior,Ue as supportSetupFullScreen,Se as supportSetupMainButton,Qe as supportSetupOrientation,ye as supportSetupSettingsButton,xe as supportSetupSwipeBehavior,Ye as supportShareMessage,Ee as supportShareToStory,ke as supportSwitchInlineQuery,Re as supportTriggerHapticFeedback};
|
|
1
|
+
import{createSignal as e,onMount as t,onCleanup as s,createContext as a,createEffect as o}from"solid-js";import{createStore as r,produce as i}from"solid-js/store";const n=()=>{const[a,o]=e({height:0,is_expanded:!1,is_state_stable:!1}),r=e=>o(e);return t((()=>{Ds(rs,r),Qt(nt)})),s((()=>{Ms(rs,r)})),a},c="web",d="phone",u="desktop",_=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?d:["tdesktop","macos"].includes(t)?u:c},p="not_supported",l=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(_())},g=()=>Math.random().toString(36).substring(3,9),m=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]),o=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((a<16?"0":"")+a.toString(16))+((o<16?"0":"")+o.toString(16))}return!1},b=e=>{const t=window.location.hash.slice(1),s=new URLSearchParams(t),a=JSON.parse(s.get("tgWebAppThemeParams")??""),o=e||a;for(var r of Object.keys(o)){var i=m(o[r]);"string"==typeof i&&(o[r]=i)}return"#1c1c1d"==o?.bg_color&&o?.bg_color==o?.secondary_bg_color&&(o.secondary_bg_color="#2c2c2e"),o},w=e=>v()?(Qt(ze,e),{status:!0}):(Nt(ze,1),{status:p}),v=()=>l(0,[c,u,d]),h=e=>S()?(Qt(Ke,e),{status:!0}):(Nt(Ke,1),{status:p}),S=()=>l(6.4,[d]),f=e=>y()?(Qt(Xe,e),{status:!0}):(Nt(Xe,1),{status:p}),y=()=>l(0,[c,u,d]),q=e=>k()?(Qt(Ye,e),{status:!0}):(Nt(Ye,1),{status:p}),k=()=>l(0,[d]),R=e=>A()?(Qt(Ze,e),{status:!0}):(Nt(Ze,1),{status:p}),A=()=>l(0,[c]),B=()=>T()?(Qt(Ze),{status:!0}):(Nt(Ze,1),{status:p}),T=()=>l(0,[c]),P=async e=>I()?(void 0===e.req_id&&(e.req_id=g()),Qt(Qe,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Ms(Vt,a))};Ds(Vt,a)}))):(Nt(Qe,1),{status:p}),I=()=>l(6.9,[c,u,d]),x=e=>C()?(Qt(tt,e),{status:!0}):(Nt(tt,1),{status:p}),C=()=>l(6.1,[c,u,d]),O=e=>W()?(Qt(st,e),{status:!0}):(Nt(st,1),{status:p}),W=()=>l(6.4,[c,u,d]),L=async e=>E()?(e.title.length>64&&Nt(at,3),e.message.length<1&&Nt(at,4),e.message.length>256&&Nt(at,5),e.buttons.length<1&&Nt(at,6),e.buttons.length>3&&Nt(at,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&Nt(at,8),Qt(at,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Ms(Yt,a)};Ds(Yt,a)}))):(Nt(at,1),{status:p}),E=()=>l(6.2,[c,u,d]),j=async e=>F()?(Qt(Ue,e),new Promise(((t,s)=>{Hs(es,(s=>{e.is_close&&h(),t({status:!0,data:s})})),Hs(ts,(()=>{t({status:"closed"})}))}))):(Nt(Ue,1),{status:p}),F=()=>l(6.4,[d]),G=e=>{const t=function(e){try{return new URL(e)}catch(t){try{return new URL(e,"https://t.me")}catch(t){return e.startsWith("/")||(e="/"+e),new URL(e,"https://t.me")}}}(e.path_full);return e.path_full=t.pathname=t.search,D()?(Qt(ot,e),{status:!0}):(Nt(ot,1),{status:p})},D=()=>l(7,[c,u,d]);const M=async e=>H()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=g()),Qt(Je,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),Ms(Jt,a))};Ds(Jt,a)}))):(Nt(Je,1),{status:p}),H=()=>l(6.4,[c,u,d]),N=e=>$()?(Qt(rt,e),{status:!0}):(Nt(rt,1),{status:p}),$=()=>l(6.9,[c,u,d]),Q=async()=>U()?(Qt(Ve),new Promise(((e,t)=>{Hs(Xt,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(Nt(Ve,1),{status:p}),U=()=>l(6.9,[c,u,d]),J=e=>V()?(Qt(it,e),{status:!0}):(Nt(it,1),{status:p}),V=()=>l(0,[c,u,d]),z=e=>K()?(Qt(nt,e),{status:!0}):(Nt(nt,1),{status:p}),K=()=>l(0,[c,u,d]),X=()=>new Promise(((e,t)=>{if(!Y())return Nt(ct,1),void e({status:p});const s=t=>{e({status:"allowed"===t.status}),Ms(is,s)};Ds(is,s),Qt(ct)})),Y=()=>l(6.9,[c,u,d]),Z=e=>ee()?(Qt(dt,e),{status:!0}):(Nt(dt,1),{status:p}),ee=()=>l(6.1,[c,u,d]),te=e=>se()?(Qt(ut,e),{status:!0}):(Nt(ut,1),{status:p}),se=()=>l(6.1,[c,u,d]),ae=e=>oe()?(Qt(_t,{color:e?.color||e?.color_key}),{status:!0}):(Nt(_t,1),{status:p}),oe=()=>l(7.1,[c,u,d]),re=e=>ie()?(Qt(pt,e),{status:!0}):(Nt(pt,1),{status:p}),ie=()=>l(6.1,[c,u,d]),ne=e=>ce()?(Qt(lt,e),{status:!0}):(Nt(lt,1),{status:p}),ce=()=>l(6.2,[c,u,d]),de=e=>ue()?(Qt(gt,e),{status:!0}):(Nt(gt,1),{status:p}),ue=()=>l(0,[c,u,d]),_e=e=>pe()?(Qt(mt,e),{status:!0}):(Nt(mt,1),{status:p}),pe=()=>l(6.1,[c,u,d]),le=e=>ge()?(e.query.length>256&&Nt(bt,9),Qt(bt,e),{status:!0}):(Nt(bt,1),{status:p}),ge=()=>l(6.7,[c,u,d]),me=e=>be()?(Qt(wt,e),{status:!0}):(Nt(wt,1),{status:p}),be=()=>l(6.1,[d]),we=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(s){return window.sessionStorage.setItem("__telegram__"+e,t),{status:!0}}},ve=()=>!0,he=({key:e})=>{try{return{is_json:!0,value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(t){return{is_json:!1,value:window.sessionStorage.getItem("__telegram__"+e)??"",status:!0}}},Se=()=>!0,fe=e=>ye()?(Qt(vt,e),{status:!0}):(Nt(vt,1),{status:p}),ye=()=>l(7.7,[c,u,d]),qe=e=>ke()?e?.text&&e?.text.length>2048?(console.warn(`[@apiteam/twa-bridge](${ht}) | Text is too long`),{status:!1,error_id:1}):e?.widget_link?.name&&e?.widget_link.name.length>48?(console.warn(`[@apiteam/twa-bridge](${ht}) | Link name is too long`),{status:!1,error_id:2}):(Qt(ht,e),{status:!0}):(Nt(ht,1),{status:p}),ke=()=>l(7.8,[c,u,d]),Re=async e=>new Promise(((t,s)=>{if(!Ae())return Nt(At,1),void t({status:p,data:void 0});const a=e=>{e.status=e.status||"unknown",t({status:!0,data:e}),Ms(Os,a)};Ds(Os,a),Qt(At,e)})),Ae=()=>l(8,[u,d]),Be=()=>Te()?(Qt(Rt),{status:!0}):(Nt(Rt,1),{status:p}),Te=()=>l(8,[u,d]),Pe=()=>Ie()?(Qt(St),{status:!0}):(Nt(St,1),{status:p}),Ie=()=>l(8,[c,u,d]),xe=()=>Ce()?(Qt(ft),{status:!0}):(Nt(ft,1),{status:p}),Ce=()=>l(8,[c,u,d]),Oe=e=>{const t=e?.is_full||!1;return We()?(Qt(t?yt:qt),{status:!0}):(Nt(t?yt:qt,1),{status:p})},We=()=>l(8,[c,u,d]),Le=e=>Ee()?(Qt(kt,e),{status:!0}):(Nt(kt,1),{status:p}),Ee=()=>l(8,[c,u,d]),je=async e=>Fe()?new Promise(((t,s)=>{Hs(ls,(function(e){t({status:"allowed"===e.status})})),Qt(Pt,e)})):(Nt(Pt,1),{status:p}),Fe=()=>l(8,[c,u,d]),Ge=async e=>De()?new Promise(((t,s)=>{Hs(_s,(()=>t({status:!0}))),Hs(ps,(()=>t({status:!1}))),Qt(Tt,e)})):(Nt(Tt,1),{status:p}),De=()=>l(8,[c,u,d]),Me=async e=>He()?new Promise(((t,s)=>{Hs(ds,(()=>t({status:!0}))),Hs(us,(()=>t({status:!1}))),Qt(Bt,e)})):(Nt(Bt,1),{status:p}),He=()=>l(8,[c,u,d]),Ne=async e=>$e()?new Promise(((t,s)=>{Hs(gs,(function(e){t({status:"downloading"===e.status})})),Qt(It,e)})):(Nt(It,1),{status:p}),$e=()=>l(8,[c,u,d]),Qe="web_app_invoke_custom_method",Ue="web_app_open_scan_qr_popup",Je="web_app_read_text_from_clipboard",Ve="web_app_request_phone",ze="web_app_close",Ke="web_app_close_scan_qr_popup",Xe="web_app_data_send",Ye="web_app_expand",Ze="iframe_ready",et="iframe_will_reload",tt="web_app_open_invoice",st="web_app_open_link",at="web_app_open_popup",ot="web_app_open_tg_link",rt="web_app_ready",it="web_app_request_theme",nt="web_app_request_viewport",ct="web_app_request_write_access",dt="web_app_set_background_color",ut="web_app_set_header_color",_t="web_app_set_bottom_bar_color",pt="web_app_setup_back_button",lt="web_app_setup_closing_behavior",gt="web_app_setup_main_button",mt="web_app_setup_settings_button",bt="web_app_switch_inline_query",wt="web_app_trigger_haptic_feedback",vt="web_app_setup_swipe_behavior",ht="web_app_share_to_story",St="web_app_request_safe_area",ft="web_app_request_content_safe_area",yt="web_app_request_fullscreen",qt="web_app_exit_fullscreen",kt="web_app_toggle_orientation_lock",Rt="web_app_add_to_home_screen",At="web_app_check_home_screen",Bt="web_app_send_prepared_message",Tt="web_app_set_emoji_status",Pt="web_app_request_emoji_status_access",It="web_app_request_file_download",xt="web_app_biometry_get_info",Ct="web_app_biometry_open_settings",Ot="web_app_biometry_request_access",Wt="web_app_biometry_request_auth",Lt="web_app_biometry_update_token";var Et=(e=>(e[e.InvokeCustomMethod=Qe]="InvokeCustomMethod",e[e.OpenScanQrPopup=Ue]="OpenScanQrPopup",e[e.ReadTextFromClipboard=Je]="ReadTextFromClipboard",e[e.RequestPhone=Ve]="RequestPhone",e[e.Close=ze]="Close",e[e.CloseScanQrPopup=Ke]="CloseScanQrPopup",e[e.DataSend=Xe]="DataSend",e[e.Expand=Ye]="Expand",e[e.IframeReady=Ze]="IframeReady",e[e.IframeWillReload=et]="IframeWillReload",e[e.OpenInvoice=tt]="OpenInvoice",e[e.OpenLink=st]="OpenLink",e[e.OpenPopup=at]="OpenPopup",e[e.OpenTgLink=ot]="OpenTgLink",e[e.Ready=rt]="Ready",e[e.RequestTheme=it]="RequestTheme",e[e.RequestViewport=nt]="RequestViewport",e[e.RequestWriteAccess=ct]="RequestWriteAccess",e[e.SetBackgroundColor=dt]="SetBackgroundColor",e[e.SetHeaderColor=ut]="SetHeaderColor",e[e.SetBottomBarColor=_t]="SetBottomBarColor",e[e.SetupBackButton=pt]="SetupBackButton",e[e.SetupClosingBehavior=lt]="SetupClosingBehavior",e[e.SetupMainButton=gt]="SetupMainButton",e[e.SetupSettingsButton=mt]="SetupSettingsButton",e[e.SwitchInlineQuery=bt]="SwitchInlineQuery",e[e.TriggerHapticFeedback=wt]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=vt]="SetupSwipeBehavior",e[e.ShareToStory=ht]="ShareToStory",e[e.RequestSafeArea=St]="RequestSafeArea",e[e.RequestContentSafeArea=ft]="RequestContentSafeArea",e[e.RequestFullscreen=yt]="RequestFullscreen",e[e.ExitFullscreen=qt]="ExitFullscreen",e[e.ToggleOrientationLock=kt]="ToggleOrientationLock",e[e.AddToHomeScreen=Rt]="AddToHomeScreen",e[e.CheckHomeScreen=At]="CheckHomeScreen",e[e.SendPreparedMessage=Bt]="SendPreparedMessage",e[e.SetEmojiStatus=Tt]="SetEmojiStatus",e[e.RequestEmojiStatusAccess=Pt]="RequestEmojiStatusAccess",e[e.RequestFileDownload=It]="RequestFileDownload",e))(Et||{});const[jt,Ft]=r({isInited:!1,isBiometricAvailable:!1,isAccessGranted:!1,isAccessRequested:!1,isBiometricTokenSaved:!1,biometricType:"unknown",deviceId:""}),Gt={isInited:jt.isInited,isBiometricAvailable:jt.isBiometricAvailable,isAccessGranted:jt.isAccessGranted,isAccessRequested:jt.isAccessRequested,isBiometricTokenSaved:jt.isBiometricTokenSaved,biometricType:jt.biometricType,deviceId:jt.deviceId,init:()=>new Promise(((e,t)=>{if(!Dt())return Nt(xt,1),void e({status:p,data:void 0});const s=t=>{Mt(t),e({status:!0,data:jt}),Ms(Ss,s)};Ds(Ss,s),Qt(xt)})),requestAccess:e=>new Promise(((t,s)=>{if(!Dt())return Nt(Ot,1),void t({status:p,data:void 0});if(e.reason&&e.reason.length>128)return console.error(`[${Ot}] Biometric reason is too long`,e.reason),void t({status:!1,data:void 0});const a=e=>{Mt(e),t({status:!0,data:jt}),Ms(Ss,a)};Ds(Ss,a),Qt(Ot,e)})),authenticate:e=>new Promise(((t,s)=>{if(!Dt())return Nt(Wt,1),void t({status:p,data:void 0});if(!jt.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void t({status:!1,data:void 0});if(!jt.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void t({status:!1,data:void 0});const a=e=>{t({status:!0,data:e}),Ms(hs,a)};Ds(hs,a),Qt(Wt,e)})),updateToken:e=>new Promise(((t,s)=>{if(!Dt())return Nt(Lt,1),void t({status:p,data:void 0});if(!jt.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void t({status:!1,data:void 0});if(!jt.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void t({status:!1,data:void 0});const a=e=>{t({status:!0,data:e}),Ms(fs,a)};Ds(fs,a),Qt(Lt,e)})),openSettings:e=>Dt()?jt.isBiometricAvailable?jt.isAccessRequested?jt.isAccessGranted?(console.warn("[Telegram.WebApp] Biometric access was granted by the user, no need to go to settings."),{status:!1}):(Qt(Ct,e),{status:!0}):(console.error("[Telegram.WebApp] Biometric access was not granted by the user."),{status:!1}):(console.error("[Telegram.WebApp] Biometrics is not available on this device."),{status:!1}):(Nt(Ct,1),{status:p})},Dt=()=>l(7.2,[u,d,c]),Mt=e=>{Ft(i((t=>(e.available?(t.isBiometricAvailable=!0,t.biometricType=e.type||"",e.access_requested?(t.isAccessRequested=!0,t.isAccessGranted=!!e.access_granted,t.isBiometricTokenSaved=!!e.token_saved):(t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1)):(t.isBiometricAvailable=!1,t.biometricType="unknown",t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1),t.deviceId=e.device_id||"",t.isInited=!0,t))))},Ht=e=>{Ft(i((t=>(t.isBiometricAvailable&&t.isAccessRequested&&("updated"===e.status?t.isBiometricTokenSaved=!0:"removed"===e.status&&(t.isBiometricTokenSaved=!1)),t))))};t((()=>{Ds(Ss,Mt),Ds(fs,Ht),s((()=>{Ms(Ss,Mt),Ms(fs,Ht)}))}));const Nt=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)},$t=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void Nt("getInitData",2);const s=new URLSearchParams(t);let a={};return s.forEach(((e,t)=>{if(a[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{a[t]=JSON.parse(e)}catch{}})),a},Qt=(e,t)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:e,eventData:t}));else try{window.parent.postMessage(JSON.stringify({eventType:e,eventData:t}),"*")}catch(e){Nt("postMessage Iframe",10)}},Ut="back_button_pressed",Jt="clipboard_text_received",Vt="custom_method_invoked",zt="invoice_closed",Kt="main_button_pressed",Xt="phone_requested",Yt="popup_closed",Zt="reload_iframe",es="qr_text_received",ts="scan_qr_popup_closed",ss="set_custom_style",as="settings_button_pressed",os="theme_changed",rs="viewport_changed",is="write_access_requested",ns="safe_area_changed",cs="content_safe_area_changed",ds="prepared_message_sent",us="prepared_message_failed",_s="emoji_status_set",ps="emoji_status_failed",ls="emoji_status_access_requested",gs="file_download_requested",ms="accelerometer_changed",bs="accelerometer_failed",ws="accelerometer_started",vs="accelerometer_stopped",hs="biometry_auth_requested",Ss="biometry_info_received",fs="biometry_token_updated",ys="device_orientation_changed",qs="device_orientation_failed",ks="device_orientation_started",Rs="device_orientation_stopped",As="fullscreen_changed",Bs="fullscreen_failed",Ts="gyroscope_changed",Ps="gyroscope_failed",Is="gyroscope_started",xs="gyroscope_stopped",Cs="home_screen_added",Os="home_screen_checked",Ws="home_screen_failed",Ls="location_checked",Es="location_requested",js="secondary_button_pressed",Fs="visibility_changed",Gs=((e=new Map)=>({once:(t,s,a=e.get(t),o=e=>{s(e),a&&a.splice(a.indexOf(s)>>>0,1)})=>a?a.push(o):e.set(t,[o]),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===os&&(t.theme_params=b(t.theme_params)),Gs.emit(e,t),Gs.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Ds=(e,t)=>{Gs.on(e,t)},Ms=(e,t)=>{Gs.off(e,t)},Hs=(e,t)=>{Gs.once(e,t)};var Ns=Object.freeze({__proto__:null,off:Ms,on:Ds,once:Hs});const $s=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},Qs=a({viewport:void 0,theme:void 0,init:void 0}),Us=e=>{const[t,a]=r({viewport:void 0,theme:void 0,init:void 0});return o((()=>{const e=()=>{a("init",$t())};e();const t=t=>{e(),a("viewport",t)};Ds(rs,t),z();const o=t=>{e(),a("theme",t)};return Ds(os,o),z(),s((()=>{Ms(rs,t),Ms(os,o)})),()=>{Ms(rs,t),Ms(os,o)}})),Qs.Provider({value:t,children:e.children})};export{Gt as BiometricManager,Qs as ContextTwa,ms as EventAccelerometerChanged,bs as EventAccelerometerFailed,ws as EventAccelerometerStarted,vs as EventAccelerometerStopped,Ut as EventBackButtonPressed,hs as EventBiometryAuthRequested,Ss as EventBiometryInfoReceived,fs as EventBiometryTokenUpdated,Jt as EventClipboardTextReceived,cs as EventContentSafeAreaChanged,Vt as EventCustomMethodInvoked,ys as EventDeviceOrientationChanged,qs as EventDeviceOrientationFailed,ks as EventDeviceOrientationStarted,Rs as EventDeviceOrientationStopped,ls as EventEmojiStatusAccessRequested,ps as EventEmojiStatusFailed,_s as EventEmojiStatusSet,gs as EventFileDownloadRequested,As as EventFullscreenChanged,Bs as EventFullscreenFailed,Ts as EventGyroscopeChanged,Ps as EventGyroscopeFailed,Is as EventGyroscopeStarted,xs as EventGyroscopeStopped,Cs as EventHomeScreenAdded,Os as EventHomeScreenChecked,Ws as EventHomeScreenFailed,zt as EventInvoiceClosed,Ls as EventLocationChecked,Es as EventLocationRequested,Kt as EventMainButtonPressed,Xt as EventPhoneRequested,Yt as EventPopupClosed,us as EventPreparedMessageFailed,ds as EventPreparedMessageSent,es as EventQrTextReceived,Zt as EventReloadIframe,ns as EventSafeAreaChanged,ts as EventScanQrPopupClosed,js as EventSecondaryButtonPressed,ss as EventSetCustomStyle,as as EventSettingsButtonPressed,os as EventThemeChanged,rs as EventViewportChanged,Fs as EventVisibilityChanged,is as EventWriteAccessRequested,Et as Method,Rt as MethodAddToHomeScreen,At as MethodCheckHomeScreen,ze as MethodClose,Ke as MethodCloseScanQrPopup,Xe as MethodDataSend,qt as MethodExitFullscreen,Ye as MethodExpand,Ze as MethodIframeReady,et as MethodIframeWillReload,Qe as MethodInvokeCustomMethod,tt as MethodOpenInvoice,st as MethodOpenLink,at as MethodOpenPopup,Ue as MethodOpenScanQrPopup,ot as MethodOpenTgLink,Je as MethodReadTextFromClipboard,rt as MethodReady,ft as MethodRequestContentSafeArea,Pt as MethodRequestEmojiStatusAccess,It as MethodRequestFileDownload,yt as MethodRequestFullscreen,Ve as MethodRequestPhone,St as MethodRequestSafeArea,it as MethodRequestTheme,nt as MethodRequestViewport,ct as MethodRequestWriteAccess,Bt as MethodSendPreparedMessage,dt as MethodSetBackgroundColor,_t as MethodSetBottomBarColor,Tt as MethodSetEmojiStatus,ut as MethodSetHeaderColor,pt as MethodSetupBackButton,lt as MethodSetupClosingBehavior,gt as MethodSetupMainButton,mt as MethodSetupSettingsButton,vt as MethodSetupSwipeBehavior,ht as MethodShareToStory,bt as MethodSwitchInlineQuery,kt as MethodToggleOrientationLock,wt as MethodTriggerHapticFeedback,p as NOT_SUPPORTED,Us as ProviderTWA,u as TG_DESKTOP,d as TG_PHONE,c as TG_WEB,Be as bridgeAddToHomeScreen,Re as bridgeCheckHomeScreen,w as bridgeClose,h as bridgeCloseScanQrPopup,f as bridgeDataSend,Ne as bridgeDownloadFile,q as bridgeExpand,$t as bridgeGetInitData,b as bridgeGetThemeParams,R as bridgeIframeReady,B as bridgeIframeWillReload,P as bridgeInvokeCustomMethod,x as bridgeOpenInvoice,O as bridgeOpenLink,L as bridgeOpenPopup,j as bridgeOpenScanQrPopup,G as bridgeOpenTgLink,M as bridgeReadTextFromClipboard,N as bridgeReady,xe as bridgeRequestContentSafeAreaInset,je as bridgeRequestEmojiStatus,Q as bridgeRequestPhone,Pe as bridgeRequestSafeAreaInset,J as bridgeRequestTheme,z as bridgeRequestViewport,X as bridgeRequestWriteAccess,Qt as bridgeSend,he as bridgeSessionStorageGet,we as bridgeSessionStorageSet,Z as bridgeSetBackgroundColor,ae as bridgeSetBottomBarColor,Ge as bridgeSetEmojiStatus,te as bridgeSetHeaderColor,re as bridgeSetupBackButton,ne as bridgeSetupClosingBehavior,Oe as bridgeSetupFullScreen,de as bridgeSetupMainButton,Le as bridgeSetupOrientation,_e as bridgeSetupSettingsButton,fe as bridgeSetupSwipeBehavior,Me as bridgeShareMessage,qe as bridgeShareToStory,le as bridgeSwitchInlineQuery,me as bridgeTriggerHapticFeedback,n as createIsViewportChanged,Nt as debug,$s as getAppData,_ as getPlatform,Ns as listener,Qt as sender,Te as supportAddToHomeScreen,Dt as supportBiometricManager,Ae as supportCheckHomeScreen,v as supportClose,S as supportCloseScanQrPopup,y as supportDataSend,$e as supportDownloadFile,k as supportExpand,A as supportIframeReady,T as supportIframeWillReload,I as supportInvokeCustomMethod,C as supportOpenInvoice,W as supportOpenLink,E as supportOpenPopup,F as supportOpenScanQrPopup,D as supportOpenTgLink,H as supportReadTextFromClipboard,$ as supportReady,Ce as supportRequestContentSafeAreaInset,Fe as supportRequestEmojiStatus,U as supportRequestPhone,Ie as supportRequestSafeAreaInset,V as supportRequestTheme,K as supportRequestViewport,Y as supportRequestWriteAccess,Se as supportSessionStorageGet,ve as supportSessionStorageSet,ee as supportSetBackgroundColor,oe as supportSetBottomBarColor,De as supportSetEmojiStatus,se as supportSetHeaderColor,ie as supportSetupBackButton,ce as supportSetupClosingBehavior,We as supportSetupFullScreen,ue as supportSetupMainButton,Ee as supportSetupOrientation,pe as supportSetupSettingsButton,ye as supportSetupSwipeBehavior,He as supportShareMessage,ke as supportShareToStory,ge as supportSwitchInlineQuery,be as supportTriggerHapticFeedback};
|