UNPKG

@zakarliuka/react-telegram-web-tools

Version:
3 lines (2 loc) 12.5 kB
var e=require("react");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=/*#__PURE__*/n(e),r=e.createContext(null),u=function(){return e.useContext(r)};function o(){return o=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},o.apply(null,arguments)}var l=function(){var n,t=null==(n=u())?void 0:n.CloudStorage;return{getItem:e.useCallback(function(e){return new Promise(function(n,r){null==t||t.getItem(e,function(e,t){e?r(e):n(t)})})},[t]),setItem:e.useCallback(function(e,n){return new Promise(function(r,u){null==t||t.setItem(e,n,function(e,n){!e&&n?r():u(e)})})},[t]),getItems:e.useCallback(function(e){return new Promise(function(n,r){null==t||t.getItems(e,function(e,t){!e&&t?n(t):r(e)})})},[t]),removeItem:e.useCallback(function(e){return new Promise(function(n,r){null==t||t.removeItem(e,function(e,t){!e&&t?n():r(e)})})},[t]),removeItems:e.useCallback(function(e){return new Promise(function(n,r){null==t||t.removeItems(e,function(e,t){!e&&t?n():r(e)})})},[t]),getKeys:e.useCallback(function(){return new Promise(function(e,n){null==t||t.getKeys(function(t,r){!t&&r?e(r):n(t)})})},[t])}};exports.BackButton=function(n){var t,r=n.onClick,o=null==(t=u())?void 0:t.BackButton;return e.useEffect(function(){return null==o||o.show(),function(){null==o||o.hide()}},[o]),e.useEffect(function(){if(r)return null==o||o.onClick(r),function(){null==o||o.offClick(r)}},[o,r]),null},exports.MainButton=function(n){var t,r=n.text,o=n.color,l=n.textColor,i=n.isActive,a=n.isProgressVisible,c=n.onClick,s=null==(t=u())?void 0:t.MainButton;return e.useEffect(function(){return null==s||s.setParams({text:r,color:o,text_color:l,is_active:i,is_visible:!0}),function(){null==s||s.hide()}},[s,o,i,r,l]),e.useEffect(function(){a?(null==s||s.showProgress(),null==s||s.disable()):null==s||s.hideProgress()},[s,a]),e.useEffect(function(){if(c)return null==s||s.onClick(c),function(){null==s||s.offClick(c)}},[s,c]),null},exports.SecondaryButton=function(n){var t,r=n.text,o=n.color,l=n.textColor,i=n.isActive,a=n.isProgressVisible,c=n.onClick,s=null==(t=u())?void 0:t.SecondaryButton;return e.useEffect(function(){return null==s||s.setParams({text:r,color:o,text_color:l,is_active:i,is_visible:!0}),function(){null==s||s.hide()}},[s,o,i,r,l]),e.useEffect(function(){a?(null==s||s.showProgress(),null==s||s.disable()):null==s||s.hideProgress()},[s,a]),e.useEffect(function(){if(c)return null==s||s.onClick(c),function(){null==s||s.offClick(c)}},[s,c]),null},exports.WebAppProvider=function(n){var u=n.children,o=e.useState(null),l=o[0],i=o[1];return e.useEffect(function(){var e=window.Telegram.WebApp;i(e)},[]),t.default.createElement(r.Provider,{value:l},u)},exports.useAccelerometer=function(){var n=u(),t=e.useState(null),r=t[0],o=t[1],l=e.useState(!1),i=l[0],a=l[1],c=e.useCallback(function(e){var t=null==n?void 0:n.Accelerometer;if(!t)return!1;try{return t.start({refresh_rate:e}),a(!0),!0}catch(e){return console.error("Failed to start accelerometer:",e),!1}},[n]),s=e.useCallback(function(){var e=null==n?void 0:n.Accelerometer;e&&(e.stop(),a(!1),o(null))},[n]);return e.useEffect(function(){var e=null==n?void 0:n.Accelerometer;if(e){var t=function(){e&&o({x:e.x||0,y:e.y||0,z:e.z||0})};return null==n||n.onEvent("accelerometerChanged",t),function(){null==n||n.offEvent("accelerometerChanged",t),s()}}},[n,s]),{data:r,isTracking:i,startTracking:c,stopTracking:s,isAvailable:!(null==n||!n.Accelerometer)}},exports.useBackgroundColor=function(){var n=u();return{setBackgroundColor:e.useCallback(function(e){null==n||n.setBackgroundColor(e)},[n])}},exports.useClose=function(){var n=u();return e.useCallback(function(){return null==n||null==n.close?void 0:n.close()},[n])},exports.useClosingConfirmation=function(){var n=u(),t=e.useState(!1),r=t[0],o=t[1];return e.useEffect(function(){n&&o(n.isClosingConfirmationEnabled)},[n,o]),{isClosingConfirmationEnabled:r,enableClosingConfirmation:e.useCallback(function(){null==n||n.enableClosingConfirmation(),o(!0)},[n]),disableClosingConfirmation:e.useCallback(function(){null==n||n.disableClosingConfirmation(),o(!1)},[n])}},exports.useCloudItem=function(n){var t=l(),r=e.useState({loading:!1,data:null,error:null}),u=r[0],i=r[1];return e.useEffect(function(){var e=new AbortController,r=e.signal;!function(){try{var u=function(){return function(){e.abort()}};i(function(e){return o({},e,{loading:!0})});var l=function(e,u){try{var o=function(){function e(e){function o(e){r.aborted||i({loading:!1,data:u?e:{key:e},error:null})}return u?o(e):Promise.resolve(t.getItem(n)).then(o)}var u=Array.isArray(n);return u?Promise.resolve(t.getItems(n)).then(e):e(0)}()}catch(e){return u(e)}return o&&o.then?o.then(void 0,u):o}(0,function(e){r.aborted||i({loading:!1,data:null,error:e})});return Promise.resolve(l&&l.then?l.then(u):u())}catch(e){return Promise.reject(e)}}()},[t,n,i]),u},exports.useCloudStorage=l,exports.useExpand=function(){var n=u(),t=e.useState(null==n?void 0:n.isExpanded),r=t[0],o=t[1];return e.useEffect(function(){if(n){var e=function(e){e.isStateStable&&o(n.isExpanded)};return n.onEvent("viewportChanged",e),function(){return n.offEvent("viewportChanged",e)}}},[n]),[r,e.useCallback(function(){return null==n||null==n.expand?void 0:n.expand()},[n])]},exports.useFullscreen=function(){var n=u(),t=e.useState(!1),r=t[0],o=t[1],l=e.useCallback(function(){null==n||null==n.requestFullscreen||n.requestFullscreen()},[n]),i=e.useCallback(function(){null==n||null==n.exitFullscreen||n.exitFullscreen()},[n]);return e.useEffect(function(){if(n){var e=function(){o((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:l,exitFullscreen:i}},exports.useGyroscope=function(){var n=u(),t=e.useState(null),r=t[0],o=t[1],l=e.useState(!1),i=l[0],a=l[1],c=e.useCallback(function(e){var t=null==n?void 0:n.Gyroscope;if(!t)return!1;try{return t.start({refresh_rate:e}),a(!0),!0}catch(e){return console.error("Failed to start gyroscope:",e),!1}},[n]),s=e.useCallback(function(){var e=null==n?void 0:n.Gyroscope;e&&(e.stop(),a(!1),o(null))},[n]);return e.useEffect(function(){var e=null==n?void 0:n.Gyroscope;if(e){var t=function(){e&&o({x:e.x||0,y:e.y||0,z:e.z||0})};return null==n||n.onEvent("gyroscopeChanged",t),function(){null==n||n.offEvent("gyroscopeChanged",t),s()}}},[n,s]),{data:r,isTracking:i,startTracking:c,stopTracking:s,isAvailable:!(null==n||!n.Gyroscope)}},exports.useHapticFeedback=function(){var n=u(),t=null==n?void 0:n.HapticFeedback,r=e.useCallback(function(){return null==t?void 0:t.impactOccurred.apply(t,[].slice.call(arguments))},[t]),o=e.useCallback(function(){return null==t?void 0:t.notificationOccurred.apply(t,[].slice.call(arguments))},[t]);return[r,o,e.useCallback(function(){return null==t?void 0:t.selectionChanged()},[t])]},exports.useHeaderColor=function(){var n=u();return{setHeaderColor:e.useCallback(function(e){null==n||n.setHeaderColor(e)},[n])}},exports.useInitData=function(){var e=u();return{initData:null==e?void 0:e.initData,initDataUnsafe:null==e?void 0:e.initDataUnsafe}},exports.useOnEvent=function(n,t){var r=u();e.useEffect(function(){return null==r||r.onEvent(n,t),function(){null==r||r.offEvent(n,t)}},[r,n,t])},exports.useOpenInvoice=function(){var n=u();return e.useCallback(function(e){return new Promise(function(t,r){try{null==n||n.openInvoice(e,t)}catch(e){r(e)}})},[n])},exports.useOpenLink=function(){var n=u(),t=e.useCallback(function(){return null==n||null==n.openLink?void 0:n.openLink.apply(n,[].slice.call(arguments))},[n]);return{openLink:t,openTelegramLink:e.useCallback(function(e){return null==n||null==n.openTelegramLink?void 0:n.openTelegramLink(e)},[n])}},exports.useOrientation=function(){var n=u(),t=e.useState(null),r=t[0],o=t[1],l=e.useState(!1),i=l[0],a=l[1],c=e.useCallback(function(e){var t=null==n?void 0:n.DeviceOrientation;if(!t)return!1;try{return t.start({refresh_rate:e}),a(!0),!0}catch(e){return console.error("Failed to start device orientation:",e),!1}},[n]),s=e.useCallback(function(){var e=null==n?void 0:n.DeviceOrientation;e&&(e.stop(),a(!1),o(null))},[n]);return e.useEffect(function(){var e=null==n?void 0:n.DeviceOrientation;if(e){var t=function(){e&&o({alpha:e.alpha||0,beta:e.beta||0,gamma:e.gamma||0})};return null==n||n.onEvent("deviceOrientationChanged",t),function(){null==n||n.offEvent("deviceOrientationChanged",t),s()}}},[n,s]),{data:r,isTracking:i,startTracking:c,stopTracking:s,isAvailable:!(null==n||!n.DeviceOrientation)}},exports.useReadTextFromClipboard=function(){var n=u();return e.useCallback(function(){return new Promise(function(e){return null==n||null==n.readTextFromClipboard?void 0:n.readTextFromClipboard(e)})},[n])},exports.useRequestContact=function(){var n=u();return e.useCallback(function(){return new Promise(function(e){return null==n||null==n.requestContact?void 0:n.requestContact(e)})},[n])},exports.useRequestWriteAccess=function(){var n=u();return e.useCallback(function(){return new Promise(function(e){return null==n||null==n.requestWriteAccess?void 0:n.requestWriteAccess(e)})},[n])},exports.useScanQrPopup=function(){var n=u();return[e.useCallback(function(e,t){return void 0===e&&(e={}),null==n||null==n.showScanQrPopup?void 0:n.showScanQrPopup(e,t)},[n]),e.useCallback(function(){return null==n||null==n.closeScanQrPopup?void 0:n.closeScanQrPopup()},[n])]},exports.useSecureStorage=function(){var n=u(),t=null==n?void 0:n.SecureStorage;return{setItem:e.useCallback(function(e,n){return new Promise(function(r,u){t?t.setItem(e,n,function(e,n){e?u(new Error(e)):n?r():u(new Error("Failed to set item"))}):u(new Error("SecureStorage not available"))})},[t]),getItem:e.useCallback(function(e){return new Promise(function(n,r){t?t.getItem(e,function(e,t){e?r(new Error(e)):n(t||null)}):r(new Error("SecureStorage not available"))})},[t]),removeItem:e.useCallback(function(e){return new Promise(function(n,r){t?t.removeItem(e,function(e,t){e?r(new Error(e)):t?n():r(new Error("Failed to remove item"))}):r(new Error("SecureStorage not available"))})},[t]),isAvailable:!!t}},exports.useSendData=function(){var n=u();return e.useCallback(function(e){return null==n||null==n.sendData?void 0:n.sendData(e)},[n])},exports.useShareToStory=function(){var n=u();return{shareToStory:e.useCallback(function(e){return new Promise(function(t,r){var u=null==n?void 0:n.shareToStory;if(u)try{u(e.mediaUrl,{text:e.text,widget_link:e.widgetLink}),t()}catch(e){r(e)}else r(new Error("shareToStory not available"))})},[n]),isAvailable:!(null==n||!n.shareToStory)}},exports.useShowAlert=function(){var n=u();return e.useCallback(function(e){return new Promise(function(t,r){try{null==n||n.showAlert(e,t)}catch(e){r(e)}})},[n])},exports.useShowConfirm=function(){var n=u();return e.useCallback(function(e){return new Promise(function(t,r){try{null==n||n.showConfirm(e,t)}catch(e){r(e)}})},[n])},exports.useShowPopup=function(){var n=u();return e.useCallback(function(e){return new Promise(function(t,r){try{null==n||n.showPopup(e,t)}catch(e){r(e)}})},[n])},exports.useSwitchInlineQuery=function(){var n=u();return e.useCallback(function(){return null==n||null==n.switchInlineQuery?void 0:n.switchInlineQuery.apply(n,[].slice.call(arguments))},[n])},exports.useThemeParams=function(){var n=u(),t=e.useCallback(function(e){return null==n?void 0:n.setHeaderColor(e)},[n]),r=e.useCallback(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:t,setBackgroundColor:r}},exports.useViewport=function(){var n=u(),t=e.useState({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=t[0],o=t[1];return e.useEffect(function(){if(n){var e=function(){o({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},exports.useWaInfo=function(){var n=u();return{isVersionAtLeast:e.useCallback(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}},exports.useWebApp=u,exports.webAppContext=r; //# sourceMappingURL=react-telegram-web-tools.cjs.map