@zakarliuka/react-telegram-web-tools
Version:
React components for Telegram WebApp
1 lines • 44.5 kB
Source Map (JSON)
{"version":3,"file":"react-telegram-web-tools.cjs","sources":["../../src/context.tsx","../../src/useWebApp.ts","../../src/useCloudStorage.ts","../../src/BackButton.tsx","../../src/MainButton.tsx","../../src/SecondaryButton.tsx","../../src/WebAppProvider.tsx","../../src/useAccelerometer.ts","../../src/useBackgroundColor.ts","../../src/useClose.ts","../../src/useClosingConfirmation.ts","../../src/useCloudItem.ts","../../src/useExpand.ts","../../src/useFullscreen.ts","../../src/useGyroscope.ts","../../src/useHapticFeedback.ts","../../src/useHeaderColor.ts","../../src/useInitData.ts","../../src/useOnEvent.ts","../../src/useOpenInvoice.ts","../../src/useOpenLink.ts","../../src/useOrientation.ts","../../src/useReadTextFromClipboard.ts","../../src/useRequestContact.ts","../../src/useRequestWriteAccess.ts","../../src/useScanQrPopup.ts","../../src/useSecureStorage.ts","../../src/useSendData.ts","../../src/useShareToStory.ts","../../src/useShowAlert.ts","../../src/useShowConfirm.ts","../../src/useShowPopup.ts","../../src/useSwitchInlineQuery.ts","../../src/useThemeParams.ts","../../src/useViewport.ts","../../src/useWaInfo.ts"],"sourcesContent":["'use client';\n\nimport { WebApp as WebAppTypes } from '@twa-dev/types';\nimport { createContext } from 'react';\n\nexport const webAppContext = createContext<WebAppTypes | null>(null);\n","import { useContext } from 'react';\nimport { webAppContext } from './context';\n\nconst useWebApp = () => {\n const context = useContext(webAppContext);\n return context;\n};\n\nexport default useWebApp;\n","import { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useCloudStorage = () => {\n const cloudStorage = useWebApp()?.CloudStorage;\n\n const getItem = useCallback(\n (key: string) =>\n new Promise<string | undefined>((resolve, reject) => {\n cloudStorage?.getItem(key, (error, value) => {\n if (!error) {\n resolve(value);\n } else {\n reject(error);\n }\n });\n }),\n [cloudStorage],\n );\n const setItem = useCallback(\n (key: string, value: string) =>\n new Promise<void>((resolve, reject) => {\n cloudStorage?.setItem(key, value, (error, state) => {\n if (!error && state) {\n resolve();\n } else {\n reject(error);\n }\n });\n }),\n [cloudStorage],\n );\n const getItems = useCallback(\n (key: string[]) =>\n new Promise<Record<string, string>>((resolve, reject) => {\n cloudStorage?.getItems(key, (error, value) => {\n if (!error && value) {\n resolve(value);\n } else {\n reject(error);\n }\n });\n }),\n [cloudStorage],\n );\n const removeItem = useCallback(\n (key: string) =>\n new Promise<void>((resolve, reject) => {\n cloudStorage?.removeItem(key, (error, state) => {\n if (!error && state) {\n resolve();\n } else {\n reject(error);\n }\n });\n }),\n [cloudStorage],\n );\n const removeItems = useCallback(\n (key: string[]) =>\n new Promise<void>((resolve, reject) => {\n cloudStorage?.removeItems(key, (error, state) => {\n if (!error && state) {\n resolve();\n } else {\n reject(error);\n }\n });\n }),\n [cloudStorage],\n );\n const getKeys = useCallback(\n () =>\n new Promise<string[]>((resolve, reject) => {\n cloudStorage?.getKeys((error, state) => {\n if (!error && state) {\n resolve(state);\n } else {\n reject(error);\n }\n });\n }),\n [cloudStorage],\n );\n\n return {\n getItem,\n setItem,\n getItems,\n removeItem,\n removeItems,\n getKeys,\n };\n};\n\nexport default useCloudStorage;\n","'use client';\n\nimport React, { useEffect } from 'react';\nimport useWebApp from './useWebApp';\n\nconst BackButton: React.FC<{ onClick?: () => void }> = ({ onClick }) => {\n const backButton = useWebApp()?.BackButton;\n\n useEffect(() => {\n backButton?.show();\n return () => {\n backButton?.hide();\n };\n }, [backButton]);\n\n useEffect(() => {\n if (!onClick) {\n return;\n }\n\n backButton?.onClick(onClick);\n\n return () => {\n backButton?.offClick(onClick);\n };\n }, [backButton, onClick]);\n\n return null;\n};\n\nexport default BackButton;\n","'use client';\n\nimport { useEffect } from 'react';\nimport useWebApp from './useWebApp';\n\nconst MainButton: React.FC<{\n text: string;\n color?: string;\n textColor?: string;\n isActive?: boolean;\n isProgressVisible?: boolean;\n onClick?: () => void;\n}> = ({ text, color, textColor, isActive, isProgressVisible, onClick }) => {\n const mainButton = useWebApp()?.MainButton;\n\n useEffect(() => {\n mainButton?.setParams({\n text,\n color,\n text_color: textColor,\n is_active: isActive,\n is_visible: true,\n });\n\n return () => {\n mainButton?.hide();\n };\n }, [mainButton, color, isActive, text, textColor]);\n\n useEffect(() => {\n if (isProgressVisible) {\n mainButton?.showProgress();\n mainButton?.disable();\n } else {\n mainButton?.hideProgress();\n }\n }, [mainButton, isProgressVisible]);\n\n useEffect(() => {\n if (!onClick) {\n return;\n }\n mainButton?.onClick(onClick);\n\n return () => {\n mainButton?.offClick(onClick);\n };\n }, [mainButton, onClick]);\n\n return null;\n};\n\nexport default MainButton;\n","'use client';\n\nimport { useEffect } from 'react';\nimport useWebApp from './useWebApp';\n\nconst SecondaryButton: React.FC<{\n text: string;\n color?: string;\n textColor?: string;\n isActive?: boolean;\n isProgressVisible?: boolean;\n onClick?: () => void;\n}> = ({ text, color, textColor, isActive, isProgressVisible, onClick }) => {\n const secondaryButton = (useWebApp() as any)?.SecondaryButton;\n\n useEffect(() => {\n secondaryButton?.setParams({\n text,\n color,\n text_color: textColor,\n is_active: isActive,\n is_visible: true,\n });\n\n return () => {\n secondaryButton?.hide();\n };\n }, [secondaryButton, color, isActive, text, textColor]);\n\n useEffect(() => {\n if (isProgressVisible) {\n secondaryButton?.showProgress();\n secondaryButton?.disable();\n } else {\n secondaryButton?.hideProgress();\n }\n }, [secondaryButton, isProgressVisible]);\n\n useEffect(() => {\n if (!onClick) {\n return;\n }\n secondaryButton?.onClick(onClick);\n\n return () => {\n secondaryButton?.offClick(onClick);\n };\n }, [secondaryButton, onClick]);\n\n return null;\n};\n\nexport default SecondaryButton;\n","'use client';\n\nimport { Telegram, WebApp as WebAppType } from '@twa-dev/types';\nimport React, { useEffect, useState } from 'react';\nimport { webAppContext } from './context';\n\nconst WebAppProvider: React.FC<React.PropsWithChildren> = ({ children }) => {\n const [twa, setTwa] = useState<WebAppType | null>(null);\n useEffect(() => {\n const webapp = (window as unknown as Window & { Telegram: Telegram })\n .Telegram.WebApp;\n setTwa(webapp);\n }, []);\n\n return (\n <webAppContext.Provider value={twa}>{children}</webAppContext.Provider>\n );\n};\n\nexport default WebAppProvider;\n","import { useCallback, useEffect, useState } from 'react';\nimport useWebApp from './useWebApp';\n\ninterface AccelerometerData {\n x: number;\n y: number;\n z: number;\n}\n\nconst useAccelerometer = () => {\n const webApp = useWebApp();\n const [data, setData] = useState<AccelerometerData | null>(null);\n const [isTracking, setIsTracking] = useState(false);\n\n const startTracking = useCallback(\n (refreshRate?: number) => {\n const accelerometer = (webApp as any)?.Accelerometer;\n if (!accelerometer) return false;\n\n try {\n accelerometer.start({ refresh_rate: refreshRate });\n setIsTracking(true);\n return true;\n } catch (error) {\n console.error('Failed to start accelerometer:', error);\n return false;\n }\n },\n [webApp],\n );\n\n const stopTracking = useCallback(() => {\n const accelerometer = (webApp as any)?.Accelerometer;\n if (!accelerometer) return;\n\n accelerometer.stop();\n setIsTracking(false);\n setData(null);\n }, [webApp]);\n\n useEffect(() => {\n const accelerometer = (webApp as any)?.Accelerometer;\n if (!accelerometer) return;\n\n const handleAccelerometerChanged = () => {\n // The event data should be accessed via webApp.Accelerometer properties\n if (accelerometer) {\n setData({\n x: accelerometer.x || 0,\n y: accelerometer.y || 0,\n z: accelerometer.z || 0,\n });\n }\n };\n\n webApp?.onEvent('accelerometerChanged', handleAccelerometerChanged);\n\n return () => {\n webApp?.offEvent('accelerometerChanged', handleAccelerometerChanged);\n stopTracking();\n };\n }, [webApp, stopTracking]);\n\n return {\n data,\n isTracking,\n startTracking,\n stopTracking,\n isAvailable: !!(webApp as any)?.Accelerometer,\n };\n};\n\nexport default useAccelerometer;\n","import { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useBackgroundColor = () => {\n const webApp = useWebApp();\n\n const setBackgroundColor = useCallback(\n (color: 'bg_color' | 'secondary_bg_color' | `#${string}`) => {\n webApp?.setBackgroundColor(color);\n },\n [webApp],\n );\n\n return { setBackgroundColor };\n};\n\nexport default useBackgroundColor;\n","import { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useClose = () => {\n const webApp = useWebApp();\n\n return useCallback(() => webApp?.close?.(), [webApp]);\n};\n\nexport default useClose;\n","import { useCallback, useEffect, useState } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useClosingConfirmation = () => {\n const webApp = useWebApp();\n const [isClosingEnabled, setIsClosingEnabled] = useState(false);\n\n useEffect(() => {\n if (!webApp) return;\n setIsClosingEnabled(webApp.isClosingConfirmationEnabled);\n }, [webApp, setIsClosingEnabled]);\n\n const enableClosingConfirmation = useCallback(() => {\n webApp?.enableClosingConfirmation();\n setIsClosingEnabled(true);\n }, [webApp]);\n\n const disableClosingConfirmation = useCallback(() => {\n webApp?.disableClosingConfirmation();\n setIsClosingEnabled(false);\n }, [webApp]);\n\n return {\n isClosingConfirmationEnabled: isClosingEnabled,\n enableClosingConfirmation,\n disableClosingConfirmation,\n };\n};\n\nexport default useClosingConfirmation;\n","import { useEffect, useState } from 'react';\nimport useCloudStorage from './useCloudStorage';\n\nconst useCloudItem = (key: string | string[]) => {\n const cloud = useCloudStorage();\n\n const [state, setState] = useState<{\n loading: boolean;\n data: Record<string, string | undefined> | null;\n error: Error | null;\n }>({ loading: false, data: null, error: null });\n\n useEffect(() => {\n const abortController = new AbortController();\n const signal = abortController.signal;\n\n const fetchData = async () => {\n setState(state => ({ ...state, loading: true }));\n try {\n const items = Array.isArray(key)\n ? await cloud.getItems(key)\n : { key: await cloud.getItem(key) };\n\n if (!signal.aborted) {\n setState({ loading: false, data: items, error: null });\n }\n } catch (e) {\n if (!signal.aborted) {\n setState({ loading: false, data: null, error: e as Error });\n }\n }\n return () => {\n abortController.abort();\n };\n };\n\n fetchData();\n }, [cloud, key, setState]);\n\n return state;\n};\n\nexport default useCloudItem;\n","import { useCallback, useEffect, useState } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useExpand = () => {\n const webApp = useWebApp();\n const [isExpanded, setIsExpanded] = useState(webApp?.isExpanded);\n\n useEffect(() => {\n if (!webApp) return;\n const handleEvent = (payload: { isStateStable: boolean }) => {\n if (payload.isStateStable) {\n setIsExpanded(webApp.isExpanded);\n }\n };\n\n webApp.onEvent('viewportChanged', handleEvent);\n return () => webApp.offEvent('viewportChanged', handleEvent);\n }, [webApp]);\n\n const handleExpand = useCallback(() => webApp?.expand?.(), [webApp]);\n\n return [isExpanded, handleExpand] as const;\n};\n\nexport default useExpand;\n","import { useCallback, useEffect, useState } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useFullscreen = () => {\n const webApp = useWebApp();\n const [isFullscreen, setIsFullscreen] = useState(false);\n\n const requestFullscreen = useCallback(() => {\n (webApp as any)?.requestFullscreen?.();\n }, [webApp]);\n\n const exitFullscreen = useCallback(() => {\n (webApp as any)?.exitFullscreen?.();\n }, [webApp]);\n\n useEffect(() => {\n if (!webApp) return;\n\n const handleFullscreenChanged = () => {\n setIsFullscreen((webApp as any)?.isFullscreen || false);\n };\n\n webApp?.onEvent('fullscreenChanged', handleFullscreenChanged);\n\n return () => {\n webApp?.offEvent('fullscreenChanged', handleFullscreenChanged);\n };\n }, [webApp]);\n\n return {\n isFullscreen,\n requestFullscreen,\n exitFullscreen,\n };\n};\n\nexport default useFullscreen;\n","import { useCallback, useEffect, useState } from 'react';\nimport useWebApp from './useWebApp';\n\ninterface GyroscopeData {\n x: number;\n y: number;\n z: number;\n}\n\nconst useGyroscope = () => {\n const webApp = useWebApp();\n const [data, setData] = useState<GyroscopeData | null>(null);\n const [isTracking, setIsTracking] = useState(false);\n\n const startTracking = useCallback(\n (refreshRate?: number) => {\n const gyroscope = (webApp as any)?.Gyroscope;\n if (!gyroscope) return false;\n\n try {\n gyroscope.start({ refresh_rate: refreshRate });\n setIsTracking(true);\n return true;\n } catch (error) {\n console.error('Failed to start gyroscope:', error);\n return false;\n }\n },\n [webApp],\n );\n\n const stopTracking = useCallback(() => {\n const gyroscope = (webApp as any)?.Gyroscope;\n if (!gyroscope) return;\n\n gyroscope.stop();\n setIsTracking(false);\n setData(null);\n }, [webApp]);\n\n useEffect(() => {\n const gyroscope = (webApp as any)?.Gyroscope;\n if (!gyroscope) return;\n\n const handleGyroscopeChanged = () => {\n // The event data should be accessed via webApp.Gyroscope properties\n if (gyroscope) {\n setData({\n x: gyroscope.x || 0,\n y: gyroscope.y || 0,\n z: gyroscope.z || 0,\n });\n }\n };\n\n webApp?.onEvent('gyroscopeChanged', handleGyroscopeChanged);\n\n return () => {\n webApp?.offEvent('gyroscopeChanged', handleGyroscopeChanged);\n stopTracking();\n };\n }, [webApp, stopTracking]);\n\n return {\n data,\n isTracking,\n startTracking,\n stopTracking,\n isAvailable: !!(webApp as any)?.Gyroscope,\n };\n};\n\nexport default useGyroscope;\n","import { HapticFeedback } from '@twa-dev/types';\n\nimport { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useHapticFeedback = () => {\n const webApp = useWebApp();\n const HapticFeedback = webApp?.HapticFeedback;\n\n const impactOccurred = useCallback(\n (...args: Parameters<HapticFeedback['impactOccurred']>) =>\n HapticFeedback?.impactOccurred(...args),\n [HapticFeedback],\n );\n\n const notificationOccurred = useCallback(\n (...args: Parameters<HapticFeedback['notificationOccurred']>) =>\n HapticFeedback?.notificationOccurred(...args),\n [HapticFeedback],\n );\n const selectionChanged = useCallback(\n () => HapticFeedback?.selectionChanged(),\n [HapticFeedback],\n );\n\n return [impactOccurred, notificationOccurred, selectionChanged] as const;\n};\n\nexport default useHapticFeedback;\n","import { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useHeaderColor = () => {\n const webApp = useWebApp();\n\n const setHeaderColor = useCallback(\n (color: 'bg_color' | 'secondary_bg_color' | `#${string}`) => {\n webApp?.setHeaderColor(color);\n },\n [webApp],\n );\n\n return { setHeaderColor };\n};\n\nexport default useHeaderColor;\n","import useWebApp from './useWebApp';\n\nconst useInitData = () => {\n const webApp = useWebApp();\n\n return {\n initData: webApp?.initData,\n initDataUnsafe: webApp?.initDataUnsafe,\n };\n};\n\nexport default useInitData;\n","import { WebApp } from '@twa-dev/types';\nimport { useEffect } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useOnEvent: WebApp['onEvent'] = (event, cb) => {\n const webApp = useWebApp();\n\n useEffect(() => {\n webApp?.onEvent(event, cb);\n\n return () => {\n webApp?.offEvent(event, cb);\n };\n }, [webApp, event, cb]);\n};\n\nexport default useOnEvent;\n","import { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useOpenInvoice = () => {\n const webApp = useWebApp();\n\n return useCallback(\n (url: string) => {\n return new Promise((resolve, reject) => {\n try {\n webApp?.openInvoice(url, resolve);\n } catch (e) {\n reject(e);\n }\n });\n },\n [webApp],\n );\n};\n\nexport default useOpenInvoice;\n","import { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nimport { WebApp } from '@twa-dev/types';\nconst useOpenLink = () => {\n const webApp = useWebApp();\n\n const openLink = useCallback<WebApp['openLink']>(\n (...args) => webApp?.openLink?.(...args),\n [webApp],\n );\n const openTelegramLink = useCallback(\n (url: string) => webApp?.openTelegramLink?.(url),\n [webApp],\n );\n\n return {\n openLink,\n openTelegramLink,\n };\n};\n\nexport default useOpenLink;\n","import { useCallback, useEffect, useState } from 'react';\nimport useWebApp from './useWebApp';\n\ninterface OrientationData {\n alpha: number;\n beta: number;\n gamma: number;\n}\n\nconst useOrientation = () => {\n const webApp = useWebApp();\n const [data, setData] = useState<OrientationData | null>(null);\n const [isTracking, setIsTracking] = useState(false);\n\n const startTracking = useCallback(\n (refreshRate?: number) => {\n const deviceOrientation = (webApp as any)?.DeviceOrientation;\n if (!deviceOrientation) return false;\n\n try {\n deviceOrientation.start({ refresh_rate: refreshRate });\n setIsTracking(true);\n return true;\n } catch (error) {\n console.error('Failed to start device orientation:', error);\n return false;\n }\n },\n [webApp],\n );\n\n const stopTracking = useCallback(() => {\n const deviceOrientation = (webApp as any)?.DeviceOrientation;\n if (!deviceOrientation) return;\n\n deviceOrientation.stop();\n setIsTracking(false);\n setData(null);\n }, [webApp]);\n\n useEffect(() => {\n const deviceOrientation = (webApp as any)?.DeviceOrientation;\n if (!deviceOrientation) return;\n\n const handleOrientationChanged = () => {\n // The event data should be accessed via webApp.DeviceOrientation properties\n if (deviceOrientation) {\n setData({\n alpha: deviceOrientation.alpha || 0,\n beta: deviceOrientation.beta || 0,\n gamma: deviceOrientation.gamma || 0,\n });\n }\n };\n\n webApp?.onEvent('deviceOrientationChanged', handleOrientationChanged);\n\n return () => {\n webApp?.offEvent('deviceOrientationChanged', handleOrientationChanged);\n stopTracking();\n };\n }, [webApp, stopTracking]);\n\n return {\n data,\n isTracking,\n startTracking,\n stopTracking,\n isAvailable: !!(webApp as any)?.DeviceOrientation,\n };\n};\n\nexport default useOrientation;\n","import { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useReadTextFromClipboard = () => {\n const webApp = useWebApp();\n\n return useCallback(\n () => new Promise(resolve => webApp?.readTextFromClipboard?.(resolve)),\n [webApp],\n );\n};\n\nexport default useReadTextFromClipboard;\n","import { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useRequestContact = () => {\n const webApp = useWebApp();\n\n return useCallback(\n () => new Promise(resolve => webApp?.requestContact?.(resolve)),\n [webApp],\n );\n};\n\nexport default useRequestContact;\n","import { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useRequestWriteAccess = () => {\n const webApp = useWebApp();\n\n return useCallback(\n () => new Promise(resolve => webApp?.requestWriteAccess?.(resolve)),\n [webApp],\n );\n};\n\nexport default useRequestWriteAccess;\n","import { WebApp } from '@twa-dev/types';\n\nimport { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useScanQrPopup = () => {\n const webApp = useWebApp();\n\n const showScanQrPopup = useCallback<WebApp['showScanQrPopup']>(\n (params = {}, callback) => webApp?.showScanQrPopup?.(params, callback),\n [webApp],\n );\n\n const closeScanQrPopup = useCallback(\n () => webApp?.closeScanQrPopup?.(),\n [webApp],\n );\n\n return [showScanQrPopup, closeScanQrPopup] as const;\n};\n\nexport default useScanQrPopup;\n","import { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useSecureStorage = () => {\n const webApp = useWebApp();\n const secureStorage = (webApp as any)?.SecureStorage;\n\n const setItem = useCallback(\n (key: string, value: string) =>\n new Promise<void>((resolve, reject) => {\n if (!secureStorage) {\n reject(new Error('SecureStorage not available'));\n return;\n }\n secureStorage.setItem(key, value, (error: any, success: any) => {\n if (error) {\n reject(new Error(error));\n } else if (success) {\n resolve();\n } else {\n reject(new Error('Failed to set item'));\n }\n });\n }),\n [secureStorage],\n );\n\n const getItem = useCallback(\n (key: string) =>\n new Promise<string | null>((resolve, reject) => {\n if (!secureStorage) {\n reject(new Error('SecureStorage not available'));\n return;\n }\n secureStorage.getItem(key, (error: any, value: any) => {\n if (error) {\n reject(new Error(error));\n } else {\n resolve(value || null);\n }\n });\n }),\n [secureStorage],\n );\n\n const removeItem = useCallback(\n (key: string) =>\n new Promise<void>((resolve, reject) => {\n if (!secureStorage) {\n reject(new Error('SecureStorage not available'));\n return;\n }\n secureStorage.removeItem(key, (error: any, success: any) => {\n if (error) {\n reject(new Error(error));\n } else if (success) {\n resolve();\n } else {\n reject(new Error('Failed to remove item'));\n }\n });\n }),\n [secureStorage],\n );\n\n return {\n setItem,\n getItem,\n removeItem,\n isAvailable: !!secureStorage,\n };\n};\n\nexport default useSecureStorage;\n","import { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useSendData = () => {\n const webApp = useWebApp();\n\n return useCallback((data: string) => webApp?.sendData?.(data), [webApp]);\n};\n\nexport default useSendData;\n","import { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\ninterface ShareToStoryParams {\n mediaUrl: string;\n text?: string;\n widgetLink?: {\n url: string;\n name?: string;\n };\n}\n\nconst useShareToStory = () => {\n const webApp = useWebApp();\n\n const shareToStory = useCallback(\n (params: ShareToStoryParams) =>\n new Promise<void>((resolve, reject) => {\n const shareToStory = (webApp as any)?.shareToStory;\n if (!shareToStory) {\n reject(new Error('shareToStory not available'));\n return;\n }\n\n try {\n shareToStory(params.mediaUrl, {\n text: params.text,\n widget_link: params.widgetLink,\n });\n resolve();\n } catch (error) {\n reject(error);\n }\n }),\n [webApp],\n );\n\n return {\n shareToStory,\n isAvailable: !!(webApp as any)?.shareToStory,\n };\n};\n\nexport default useShareToStory;\n","import { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useShowAlert = () => {\n const webApp = useWebApp();\n\n return useCallback(\n (message: string) => {\n return new Promise<void>((resolve, reject) => {\n try {\n webApp?.showAlert(message, resolve);\n } catch (e) {\n reject(e);\n }\n });\n },\n [webApp],\n );\n};\n\nexport default useShowAlert;\n","import { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useShowConfirm = () => {\n const webApp = useWebApp();\n\n return useCallback(\n (message: string) => {\n return new Promise((resolve, reject) => {\n try {\n webApp?.showConfirm(message, resolve);\n } catch (e) {\n reject(e);\n }\n });\n },\n [webApp],\n );\n};\n\nexport default useShowConfirm;\n","import { PopupParams } from '@twa-dev/types';\nimport { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useShowPopup = () => {\n const webApp = useWebApp();\n\n return useCallback(\n (params: PopupParams) => {\n return new Promise((resolve, reject) => {\n try {\n webApp?.showPopup(params, resolve);\n } catch (e) {\n reject(e);\n }\n });\n },\n [webApp],\n );\n};\n\nexport default useShowPopup;\n","import { WebApp } from '@twa-dev/types';\nimport { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useSwitchInlineQuery = () => {\n const webApp = useWebApp();\n\n return useCallback<WebApp['switchInlineQuery']>(\n (...args) => webApp?.switchInlineQuery?.(...args),\n [webApp],\n );\n};\n\nexport default useSwitchInlineQuery;\n","import { WebApp } from '@twa-dev/types';\nimport { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useThemeParams = () => {\n const webApp = useWebApp();\n\n const setHeaderColor = useCallback<WebApp['setHeaderColor']>(\n color => webApp?.setHeaderColor(color),\n [webApp],\n );\n const setBackgroundColor = useCallback<WebApp['setBackgroundColor']>(\n color => webApp?.setBackgroundColor(color),\n [webApp],\n );\n\n return {\n theme: webApp?.themeParams || null,\n colorScheme: webApp?.colorScheme || null,\n setHeaderColor,\n setBackgroundColor,\n };\n};\n\nexport default useThemeParams;\n","import { useEffect, useState } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useViewport = () => {\n const webApp = useWebApp();\n const [viewport, setViewport] = useState({\n height: webApp?.viewportHeight || 0,\n stableHeight: (webApp as any)?.viewportStableHeight || 0,\n isExpanded: webApp?.isExpanded || false,\n });\n\n useEffect(() => {\n if (!webApp) return;\n\n const handleViewportChanged = () => {\n setViewport({\n height: webApp.viewportHeight || 0,\n stableHeight: (webApp as any)?.viewportStableHeight || 0,\n isExpanded: webApp.isExpanded || false,\n });\n };\n\n webApp?.onEvent('viewportChanged', handleViewportChanged);\n\n // Initial update\n handleViewportChanged();\n\n return () => {\n webApp?.offEvent('viewportChanged', handleViewportChanged);\n };\n }, [webApp]);\n\n return viewport;\n};\n\nexport default useViewport;\n","import { useCallback } from 'react';\nimport useWebApp from './useWebApp';\n\nconst useWaInfo = () => {\n const webApp = useWebApp();\n\n const isVersionAtLeast = useCallback(\n (version: string) => webApp?.isVersionAtLeast(version),\n [webApp],\n );\n\n return {\n isVersionAtLeast,\n version: webApp?.version || null,\n platform: webApp?.platform || null,\n };\n};\n\nexport default useWaInfo;\n"],"names":["webAppContext","createContext","useWebApp","useContext","useCloudStorage","_useWebApp","cloudStorage","CloudStorage","getItem","useCallback","key","Promise","resolve","reject","error","value","setItem","state","getItems","removeItem","removeItems","getKeys","_ref","onClick","backButton","BackButton","useEffect","show","hide","offClick","text","color","textColor","isActive","isProgressVisible","mainButton","MainButton","setParams","text_color","is_active","is_visible","showProgress","disable","hideProgress","secondaryButton","SecondaryButton","children","_useState","useState","twa","setTwa","webapp","window","Telegram","WebApp","React","createElement","Provider","webApp","data","setData","_useState2","isTracking","setIsTracking","startTracking","refreshRate","accelerometer","Accelerometer","start","refresh_rate","console","stopTracking","stop","handleAccelerometerChanged","x","y","z","onEvent","offEvent","isAvailable","setBackgroundColor","close","isClosingEnabled","setIsClosingEnabled","isClosingConfirmationEnabled","enableClosingConfirmation","disableClosingConfirmation","cloud","loading","setState","abortController","AbortController","signal","_temp4","abort","_extends","_temp3","_temp2","_cloud$getItems","_temp","_cloud$getItem","aborted","_Array$isArray","then","Array","isArray","_catch","e","fetchData","isExpanded","setIsExpanded","handleEvent","payload","isStateStable","expand","isFullscreen","setIsFullscreen","requestFullscreen","exitFullscreen","handleFullscreenChanged","gyroscope","Gyroscope","handleGyroscopeChanged","HapticFeedback","impactOccurred","apply","slice","call","arguments","notificationOccurred","selectionChanged","setHeaderColor","initData","initDataUnsafe","event","cb","url","openInvoice","openLink","openTelegramLink","deviceOrientation","DeviceOrientation","handleOrientationChanged","alpha","beta","gamma","readTextFromClipboard","requestContact","requestWriteAccess","params","callback","showScanQrPopup","closeScanQrPopup","secureStorage","SecureStorage","success","Error","sendData","shareToStory","mediaUrl","widget_link","widgetLink","message","showAlert","showConfirm","showPopup","switchInlineQuery","theme","themeParams","colorScheme","height","viewportHeight","stableHeight","viewportStableHeight","viewport","setViewport","handleViewportChanged","isVersionAtLeast","version","platform"],"mappings":"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"}