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