UNPKG

@zakarliuka/react-telegram-web-tools

Version:
3 lines (2 loc) 9.93 kB
import e,{createContext as n,useContext as r,useEffect as l,useState as t,useCallback as o}from"react";const i=n(null),s=()=>r(i),u=({onClick:e})=>{var n;const r=null==(n=s())?void 0:n.BackButton;return l(()=>(null==r||r.show(),()=>{null==r||r.hide()}),[r]),l(()=>{if(e)return null==r||r.onClick(e),()=>{null==r||r.offClick(e)}},[r,e]),null},a=({text:e,color:n,textColor:r,isActive:t,isProgressVisible:o,onClick:i})=>{var u;const a=null==(u=s())?void 0:u.MainButton;return l(()=>(null==a||a.setParams({text:e,color:n,text_color:r,is_active:t,is_visible:!0}),()=>{null==a||a.hide()}),[a,n,t,e,r]),l(()=>{o?(null==a||a.showProgress(),null==a||a.disable()):null==a||a.hideProgress()},[a,o]),l(()=>{if(i)return null==a||a.onClick(i),()=>{null==a||a.offClick(i)}},[a,i]),null},c=({text:e,color:n,textColor:r,isActive:t,isProgressVisible:o,onClick:i})=>{var u;const a=null==(u=s())?void 0:u.SecondaryButton;return l(()=>(null==a||a.setParams({text:e,color:n,text_color:r,is_active:t,is_visible:!0}),()=>{null==a||a.hide()}),[a,n,t,e,r]),l(()=>{o?(null==a||a.showProgress(),null==a||a.disable()):null==a||a.hideProgress()},[a,o]),l(()=>{if(i)return null==a||a.onClick(i),()=>{null==a||a.offClick(i)}},[a,i]),null},d=({children:n})=>{const[r,o]=t(null);return l(()=>{const e=window.Telegram.WebApp;o(e)},[]),e.createElement(i.Provider,{value:r},n)},v=()=>{const e=s(),[n,r]=t(null),[i,u]=t(!1),a=o(n=>{const r=null==e?void 0:e.Accelerometer;if(!r)return!1;try{return r.start({refresh_rate:n}),u(!0),!0}catch(e){return console.error("Failed to start accelerometer:",e),!1}},[e]),c=o(()=>{const n=null==e?void 0:e.Accelerometer;n&&(n.stop(),u(!1),r(null))},[e]);return l(()=>{const n=null==e?void 0:e.Accelerometer;if(!n)return;const l=()=>{n&&r({x:n.x||0,y:n.y||0,z:n.z||0})};return null==e||e.onEvent("accelerometerChanged",l),()=>{null==e||e.offEvent("accelerometerChanged",l),c()}},[e,c]),{data:n,isTracking:i,startTracking:a,stopTracking:c,isAvailable:!(null==e||!e.Accelerometer)}},m=()=>{const e=s();return{setBackgroundColor:o(n=>{null==e||e.setBackgroundColor(n)},[e])}},g=()=>{const e=s();return o(()=>null==e||null==e.close?void 0:e.close(),[e])},h=()=>{const e=s(),[n,r]=t(!1);return l(()=>{e&&r(e.isClosingConfirmationEnabled)},[e,r]),{isClosingConfirmationEnabled:n,enableClosingConfirmation:o(()=>{null==e||e.enableClosingConfirmation(),r(!0)},[e]),disableClosingConfirmation:o(()=>{null==e||e.disableClosingConfirmation(),r(!1)},[e])}};function p(){return p=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var l in r)({}).hasOwnProperty.call(r,l)&&(e[l]=r[l])}return e},p.apply(null,arguments)}const f=()=>{var e;const n=null==(e=s())?void 0:e.CloudStorage;return{getItem:o(e=>new Promise((r,l)=>{null==n||n.getItem(e,(e,n)=>{e?l(e):r(n)})}),[n]),setItem:o((e,r)=>new Promise((l,t)=>{null==n||n.setItem(e,r,(e,n)=>{!e&&n?l():t(e)})}),[n]),getItems:o(e=>new Promise((r,l)=>{null==n||n.getItems(e,(e,n)=>{!e&&n?r(n):l(e)})}),[n]),removeItem:o(e=>new Promise((r,l)=>{null==n||n.removeItem(e,(e,n)=>{!e&&n?r():l(e)})}),[n]),removeItems:o(e=>new Promise((r,l)=>{null==n||n.removeItems(e,(e,n)=>{!e&&n?r():l(e)})}),[n]),getKeys:o(()=>new Promise((e,r)=>{null==n||n.getKeys((n,l)=>{!n&&l?e(l):r(n)})}),[n])}},w=e=>{const n=f(),[r,o]=t({loading:!1,data:null,error:null});return l(()=>{const r=(new AbortController).signal;(async()=>{o(e=>p({},e,{loading:!0}));try{const l=Array.isArray(e)?await n.getItems(e):{key:await n.getItem(e)};r.aborted||o({loading:!1,data:l,error:null})}catch(e){r.aborted||o({loading:!1,data:null,error:e})}})()},[n,e,o]),r},C=()=>{const e=s(),[n,r]=t(null==e?void 0:e.isExpanded);return l(()=>{if(!e)return;const n=n=>{n.isStateStable&&r(e.isExpanded)};return e.onEvent("viewportChanged",n),()=>e.offEvent("viewportChanged",n)},[e]),[n,o(()=>null==e||null==e.expand?void 0:e.expand(),[e])]},b=()=>{const e=s(),[n,r]=t(!1),i=o(()=>{null==e||null==e.requestFullscreen||e.requestFullscreen()},[e]),u=o(()=>{null==e||null==e.exitFullscreen||e.exitFullscreen()},[e]);return l(()=>{if(!e)return;const n=()=>{r((null==e?void 0:e.isFullscreen)||!1)};return null==e||e.onEvent("fullscreenChanged",n),()=>{null==e||e.offEvent("fullscreenChanged",n)}},[e]),{isFullscreen:n,requestFullscreen:i,exitFullscreen:u}},y=()=>{const e=s(),[n,r]=t(null),[i,u]=t(!1),a=o(n=>{const r=null==e?void 0:e.Gyroscope;if(!r)return!1;try{return r.start({refresh_rate:n}),u(!0),!0}catch(e){return console.error("Failed to start gyroscope:",e),!1}},[e]),c=o(()=>{const n=null==e?void 0:e.Gyroscope;n&&(n.stop(),u(!1),r(null))},[e]);return l(()=>{const n=null==e?void 0:e.Gyroscope;if(!n)return;const l=()=>{n&&r({x:n.x||0,y:n.y||0,z:n.z||0})};return null==e||e.onEvent("gyroscopeChanged",l),()=>{null==e||e.offEvent("gyroscopeChanged",l),c()}},[e,c]),{data:n,isTracking:i,startTracking:a,stopTracking:c,isAvailable:!(null==e||!e.Gyroscope)}},k=()=>{const e=s(),n=null==e?void 0:e.HapticFeedback;return[o((...e)=>null==n?void 0:n.impactOccurred(...e),[n]),o((...e)=>null==n?void 0:n.notificationOccurred(...e),[n]),o(()=>null==n?void 0:n.selectionChanged(),[n])]},P=()=>{const e=s();return{setHeaderColor:o(n=>{null==e||e.setHeaderColor(n)},[e])}},E=()=>{const e=s();return{initData:null==e?void 0:e.initData,initDataUnsafe:null==e?void 0:e.initDataUnsafe}},x=(e,n)=>{const r=s();l(()=>(null==r||r.onEvent(e,n),()=>{null==r||r.offEvent(e,n)}),[r,e,n])},S=()=>{const e=s();return o(n=>new Promise((r,l)=>{try{null==e||e.openInvoice(n,r)}catch(e){l(e)}}),[e])},I=()=>{const e=s();return{openLink:o((...n)=>null==e||null==e.openLink?void 0:e.openLink(...n),[e]),openTelegramLink:o(n=>null==e||null==e.openTelegramLink?void 0:e.openTelegramLink(n),[e])}},A=()=>{const e=s(),[n,r]=t(null),[i,u]=t(!1),a=o(n=>{const r=null==e?void 0:e.DeviceOrientation;if(!r)return!1;try{return r.start({refresh_rate:n}),u(!0),!0}catch(e){return console.error("Failed to start device orientation:",e),!1}},[e]),c=o(()=>{const n=null==e?void 0:e.DeviceOrientation;n&&(n.stop(),u(!1),r(null))},[e]);return l(()=>{const n=null==e?void 0:e.DeviceOrientation;if(!n)return;const l=()=>{n&&r({alpha:n.alpha||0,beta:n.beta||0,gamma:n.gamma||0})};return null==e||e.onEvent("deviceOrientationChanged",l),()=>{null==e||e.offEvent("deviceOrientationChanged",l),c()}},[e,c]),{data:n,isTracking:i,startTracking:a,stopTracking:c,isAvailable:!(null==e||!e.DeviceOrientation)}},T=()=>{const e=s();return o(()=>new Promise(n=>null==e||null==e.readTextFromClipboard?void 0:e.readTextFromClipboard(n)),[e])},F=()=>{const e=s();return o(()=>new Promise(n=>null==e||null==e.requestContact?void 0:e.requestContact(n)),[e])},H=()=>{const e=s();return o(()=>new Promise(n=>null==e||null==e.requestWriteAccess?void 0:e.requestWriteAccess(n)),[e])},O=()=>{const e=s();return[o((n={},r)=>null==e||null==e.showScanQrPopup?void 0:e.showScanQrPopup(n,r),[e]),o(()=>null==e||null==e.closeScanQrPopup?void 0:e.closeScanQrPopup(),[e])]},D=()=>{const e=s(),n=null==e?void 0:e.SecureStorage;return{setItem:o((e,r)=>new Promise((l,t)=>{n?n.setItem(e,r,(e,n)=>{e?t(new Error(e)):n?l():t(new Error("Failed to set item"))}):t(new Error("SecureStorage not available"))}),[n]),getItem:o(e=>new Promise((r,l)=>{n?n.getItem(e,(e,n)=>{e?l(new Error(e)):r(n||null)}):l(new Error("SecureStorage not available"))}),[n]),removeItem:o(e=>new Promise((r,l)=>{n?n.removeItem(e,(e,n)=>{e?l(new Error(e)):n?r():l(new Error("Failed to remove item"))}):l(new Error("SecureStorage not available"))}),[n]),isAvailable:!!n}},_=()=>{const e=s();return o(n=>null==e||null==e.sendData?void 0:e.sendData(n),[e])},L=()=>{const e=s();return{shareToStory:o(n=>new Promise((r,l)=>{const t=null==e?void 0:e.shareToStory;if(t)try{t(n.mediaUrl,{text:n.text,widget_link:n.widgetLink}),r()}catch(e){l(e)}else l(new Error("shareToStory not available"))}),[e]),isAvailable:!(null==e||!e.shareToStory)}},B=()=>{const e=s();return o(n=>new Promise((r,l)=>{try{null==e||e.showAlert(n,r)}catch(e){l(e)}}),[e])},q=()=>{const e=s();return o(n=>new Promise((r,l)=>{try{null==e||e.showConfirm(n,r)}catch(e){l(e)}}),[e])},Q=()=>{const e=s();return o(n=>new Promise((r,l)=>{try{null==e||e.showPopup(n,r)}catch(e){l(e)}}),[e])},z=()=>{const e=s();return o((...n)=>null==e||null==e.switchInlineQuery?void 0:e.switchInlineQuery(...n),[e])},G=()=>{const e=s(),n=o(n=>null==e?void 0:e.setHeaderColor(n),[e]),r=o(n=>null==e?void 0:e.setBackgroundColor(n),[e]);return{theme:(null==e?void 0:e.themeParams)||null,colorScheme:(null==e?void 0:e.colorScheme)||null,setHeaderColor:n,setBackgroundColor:r}},V=()=>{const e=s(),[n,r]=t({height:(null==e?void 0:e.viewportHeight)||0,stableHeight:(null==e?void 0:e.viewportStableHeight)||0,isExpanded:(null==e?void 0:e.isExpanded)||!1});return l(()=>{if(!e)return;const n=()=>{r({height:e.viewportHeight||0,stableHeight:(null==e?void 0:e.viewportStableHeight)||0,isExpanded:e.isExpanded||!1})};return null==e||e.onEvent("viewportChanged",n),n(),()=>{null==e||e.offEvent("viewportChanged",n)}},[e]),n},U=()=>{const e=s();return{isVersionAtLeast:o(n=>null==e?void 0:e.isVersionAtLeast(n),[e]),version:(null==e?void 0:e.version)||null,platform:(null==e?void 0:e.platform)||null}};export{u as BackButton,a as MainButton,c as SecondaryButton,d as WebAppProvider,v as useAccelerometer,m as useBackgroundColor,g as useClose,h as useClosingConfirmation,w as useCloudItem,f as useCloudStorage,C as useExpand,b as useFullscreen,y as useGyroscope,k as useHapticFeedback,P as useHeaderColor,E as useInitData,x as useOnEvent,S as useOpenInvoice,I as useOpenLink,A as useOrientation,T as useReadTextFromClipboard,F as useRequestContact,H as useRequestWriteAccess,O as useScanQrPopup,D as useSecureStorage,_ as useSendData,L as useShareToStory,B as useShowAlert,q as useShowConfirm,Q as useShowPopup,z as useSwitchInlineQuery,G as useThemeParams,V as useViewport,U as useWaInfo,s as useWebApp,i as webAppContext}; //# sourceMappingURL=react-telegram-web-tools.modern.js.map