{"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 RetrieveLaunchParamsResult,\n  deepSnakeToCamelObjKeys,\n  type DeepConvertSnakeKeysToCamelCase,\n} from '@tma.js/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 */\nexport function useLaunchParams(camelCase?: false): RetrieveLaunchParamsResult;\n/**\n * @returns Launch parameters from any known source.\n * @param camelCase - should the output be camel-cased.\n */\nexport function useLaunchParams(\n  camelCase: true,\n): DeepConvertSnakeKeysToCamelCase<RetrieveLaunchParamsResult>;\nexport function useLaunchParams(\n  camelCase?: boolean,\n): RetrieveLaunchParamsResult | DeepConvertSnakeKeysToCamelCase<RetrieveLaunchParamsResult> {\n  return useMemo(() => {\n    const lp = retrieveLaunchParams();\n    return camelCase ? deepSnakeToCamelObjKeys(lp) : lp;\n  }, [camelCase]);\n}\n\n/**\n * @returns Launch parameters in a raw format from any known source.\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 */\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}\n"],"names":["useSignal","signal","getServerSnapshot","useSyncExternalStore","onStoreChange","useLaunchParams","camelCase","useMemo","lp","retrieveLaunchParams","deepSnakeToCamelObjKeys","useRawLaunchParams","retrieveRawLaunchParams","useRawInitData","retrieveRawInitData","useAndroidDeviceData","retrieveAndroidDeviceData","useAndroidDeviceDataFrom","userAgent","retrieveAndroidDeviceDataFrom"],"mappings":"kIAoBgB,SAAAA,EACdC,EAIAC,EACG,CACI,OAAAC,EAAA,qBACLC,GAAiBH,EAAO,IAAIG,CAAa,EACzCH,EACAC,GAAqBD,CACvB,CACF,CAcO,SAASI,EACdC,EAC0F,CAC1F,OAAOC,UAAQ,IAAM,CACnB,MAAMC,EAAKC,EAAAA,qBAAqB,EACzB,OAAAH,EAAYI,EAAAA,wBAAwBF,CAAE,EAAIA,CAAA,EAChD,CAACF,CAAS,CAAC,CAChB,CAMO,SAASK,GAA6B,CACpC,OAAAJ,EAAA,QAAQK,EAAyB,wBAAA,EAAE,CAC5C,CAKO,SAASC,GAAqC,CAC5C,OAAAN,EAAA,QAAQO,EAAqB,oBAAA,EAAE,CACxC,CAMO,SAASC,GAA0C,CACjD,OAAAR,EAAA,QAAQS,EAA2B,0BAAA,EAAE,CAC9C,CAOO,SAASC,EAAyBC,EAAsC,CAC7E,OAAOX,EAAAA,QAAQ,IAAMY,EAAA,8BAA8BD,CAAS,EAAG,CAACA,CAAS,CAAC,CAC5E"}