UNPKG

@telegram-apps/sdk-react

Version:

React bindings for Mini Apps client SDK. Contains hooks, components and other useful tools which allow usage of React along with Mini Apps client SDK.

1 lines 3.91 kB
{"version":3,"file":"index.cjs","sources":["../src/hooks.ts"],"sourcesContent":["import { useMemo, useSyncExternalStore } from 'react';\nimport {\n retrieveLaunchParams,\n retrieveRawLaunchParams,\n retrieveRawInitData,\n retrieveAndroidDeviceData,\n retrieveAndroidDeviceDataFrom,\n type AndroidDeviceData,\n type RetrieveLPResult,\n type RetrieveLPResultCamelCased,\n} from '@telegram-apps/sdk';\n\n/**\n * Returns the underlying signal value updating it each time the signal value changes.\n * @param signal - a signal.\n * @param getServerSnapshot - an optional function returning the signal value snapshot. It is used\n * only during SSR to provide an initial value of the signal. When not set, defaults to the\n * signal itself.\n */\nexport function useSignal<T>(\n signal: {\n (): T;\n sub(fn: VoidFunction): VoidFunction;\n },\n getServerSnapshot?: () => T,\n): T {\n return useSyncExternalStore(\n (onStoreChange) => signal.sub(onStoreChange),\n signal,\n getServerSnapshot || signal,\n );\n}\n\n/**\n * @returns Launch parameters from any known source.\n * @param camelCase - should the output be camel-cased.\n * @throws {LaunchParamsRetrieveError} Unable to retrieve launch parameters. They are probably\n * invalid.\n */\nexport function useLaunchParams(camelCase?: false): RetrieveLPResult;\n/**\n * @returns Launch parameters from any known source.\n * @param camelCase - should the output be camel-cased.\n * @throws {LaunchParamsRetrieveError} Unable to retrieve launch parameters. They are probably\n * invalid.\n */\nexport function useLaunchParams(camelCase: true): RetrieveLPResultCamelCased;\nexport function useLaunchParams(camelCase?: boolean): RetrieveLPResult | RetrieveLPResultCamelCased {\n return useMemo(() => retrieveLaunchParams(camelCase as any), [camelCase]);\n}\n\n/**\n * @returns Launch parameters in a raw format from any known source.\n * @throws {LaunchParamsRetrieveError} Unable to retrieve launch parameters. They are probably\n * invalid.\n * @see retrieveRawLaunchParams\n */\nexport function useRawLaunchParams(): string {\n return useMemo(retrieveRawLaunchParams, []);\n}\n\n/**\n * @returns Raw init data from any known source.\n * @throws {LaunchParamsRetrieveError} Unable to retrieve launch params from any known source.\n */\nexport function useRawInitData(): string | undefined {\n return useMemo(retrieveRawInitData, []);\n}\n\n/**\n * Retrieves Android device data from the navigator.userAgent.\n * @see https://core.telegram.org/bots/webapps#additional-data-in-user-agent\n */\nexport function useAndroidDeviceData(): AndroidDeviceData {\n return useMemo(retrieveAndroidDeviceData, []);\n}\n\n/**\n * Retrieves Android device data from the specified User Agent.\n * @see https://core.telegram.org/bots/webapps#additional-data-in-user-agent\n * @param userAgent - user agent.\n */\nexport function useAndroidDeviceDataFrom(userAgent: string): AndroidDeviceData {\n return useMemo(() => retrieveAndroidDeviceDataFrom(userAgent), [userAgent]);\n}"],"names":["useSignal","signal","getServerSnapshot","useSyncExternalStore","onStoreChange","useLaunchParams","camelCase","useMemo","retrieveLaunchParams","useRawLaunchParams","retrieveRawLaunchParams","useRawInitData","retrieveRawInitData","useAndroidDeviceData","retrieveAndroidDeviceData","useAndroidDeviceDataFrom","userAgent","retrieveAndroidDeviceDataFrom"],"mappings":"yIAmBgB,SAAAA,EACdC,EAIAC,EACG,CACI,OAAAC,EAAA,qBACJC,GAAkBH,EAAO,IAAIG,CAAa,EAC3CH,EACAC,GAAqBD,CACvB,CACF,CAgBO,SAASI,EAAgBC,EAAoE,CAClG,OAAOC,EAAAA,QAAQ,IAAMC,EAAA,qBAAqBF,CAAgB,EAAG,CAACA,CAAS,CAAC,CAC1E,CAQO,SAASG,GAA6B,CACpC,OAAAF,EAAA,QAAQG,EAAyB,wBAAA,EAAE,CAC5C,CAMO,SAASC,GAAqC,CAC5C,OAAAJ,EAAA,QAAQK,EAAqB,oBAAA,EAAE,CACxC,CAMO,SAASC,GAA0C,CACjD,OAAAN,EAAA,QAAQO,EAA2B,0BAAA,EAAE,CAC9C,CAOO,SAASC,EAAyBC,EAAsC,CAC7E,OAAOT,EAAAA,QAAQ,IAAMU,EAAA,8BAA8BD,CAAS,EAAG,CAACA,CAAS,CAAC,CAC5E"}