UNPKG

@zakarliuka/react-telegram-web-tools

Version:
1 lines 45 kB
{"version":3,"file":"react-telegram-web-tools.module.cjs","sources":["../../src/context.tsx","../../src/useWebApp.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/useCloudStorage.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","'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 { 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","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","BackButton","_ref","_useWebApp","onClick","backButton","useEffect","show","hide","offClick","MainButton","text","color","textColor","isActive","isProgressVisible","mainButton","setParams","text_color","is_active","is_visible","showProgress","disable","hideProgress","SecondaryButton","secondaryButton","WebAppProvider","children","_useState","useState","twa","setTwa","webapp","window","Telegram","WebApp","React","createElement","Provider","value","useAccelerometer","webApp","data","setData","_useState2","isTracking","setIsTracking","startTracking","useCallback","refreshRate","accelerometer","Accelerometer","start","refresh_rate","error","console","stopTracking","stop","handleAccelerometerChanged","x","y","z","onEvent","offEvent","isAvailable","useBackgroundColor","setBackgroundColor","useClose","close","useClosingConfirmation","isClosingEnabled","setIsClosingEnabled","isClosingConfirmationEnabled","enableClosingConfirmation","disableClosingConfirmation","useCloudStorage","cloudStorage","CloudStorage","getItem","key","Promise","resolve","reject","setItem","state","getItems","removeItem","removeItems","getKeys","useCloudItem","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","useExpand","isExpanded","setIsExpanded","handleEvent","payload","isStateStable","expand","useFullscreen","isFullscreen","setIsFullscreen","requestFullscreen","exitFullscreen","handleFullscreenChanged","useGyroscope","gyroscope","Gyroscope","handleGyroscopeChanged","useHapticFeedback","HapticFeedback","impactOccurred","apply","slice","call","arguments","notificationOccurred","selectionChanged","useHeaderColor","setHeaderColor","useInitData","initData","initDataUnsafe","useOnEvent","event","cb","useOpenInvoice","url","openInvoice","useOpenLink","openLink","openTelegramLink","useOrientation","deviceOrientation","DeviceOrientation","handleOrientationChanged","alpha","beta","gamma","useReadTextFromClipboard","readTextFromClipboard","useRequestContact","requestContact","useRequestWriteAccess","requestWriteAccess","useScanQrPopup","params","callback","showScanQrPopup","closeScanQrPopup","useSecureStorage","secureStorage","SecureStorage","success","Error","useSendData","sendData","useShareToStory","shareToStory","mediaUrl","widget_link","widgetLink","useShowAlert","message","showAlert","useShowConfirm","showConfirm","useShowPopup","showPopup","useSwitchInlineQuery","switchInlineQuery","useThemeParams","theme","themeParams","colorScheme","useViewport","height","viewportHeight","stableHeight","viewportStableHeight","viewport","setViewport","handleViewportChanged","useWaInfo","isVersionAtLeast","version","platform"],"mappings":"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"}