@tma.js/sdk 2.6.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +9 -9
- package/dist/dts/composables/AsyncMountable.d.ts +44 -0
- package/dist/dts/composables/Button.d.ts +140 -0
- package/dist/dts/composables/Mountable.d.ts +43 -0
- package/dist/dts/composables/Stateful.d.ts +35 -0
- package/dist/dts/errors.d.ts +41 -0
- package/dist/dts/features/BackButton/BackButton.d.ts +96 -0
- package/dist/dts/features/BackButton/exports.d.ts +2 -0
- package/dist/dts/features/BackButton/instance.d.ts +2 -0
- package/dist/dts/features/Biometry/Biometry.d.ts +122 -0
- package/dist/dts/features/Biometry/exports.d.ts +3 -0
- package/dist/dts/features/Biometry/instance.d.ts +2 -0
- package/dist/dts/features/Biometry/types.d.ts +84 -0
- package/dist/dts/features/ClosingBehavior/ClosingBehavior.d.ts +51 -0
- package/dist/dts/features/ClosingBehavior/exports.d.ts +2 -0
- package/dist/dts/features/ClosingBehavior/instance.d.ts +2 -0
- package/dist/dts/features/CloudStorage/CloudStorage.d.ts +90 -0
- package/dist/dts/features/CloudStorage/exports.d.ts +2 -0
- package/dist/dts/features/CloudStorage/instance.d.ts +2 -0
- package/dist/dts/features/HapticFeedback/HapticFeedback.d.ts +57 -0
- package/dist/dts/features/HapticFeedback/exports.d.ts +2 -0
- package/dist/dts/features/HapticFeedback/instance.d.ts +2 -0
- package/dist/dts/features/InitData/InitData.d.ts +84 -0
- package/dist/dts/features/InitData/exports.d.ts +2 -0
- package/dist/dts/features/InitData/instance.d.ts +2 -0
- package/dist/dts/features/Invoice/Invoice.d.ts +54 -0
- package/dist/dts/features/Invoice/exports.d.ts +2 -0
- package/dist/dts/features/Invoice/instance.d.ts +2 -0
- package/dist/dts/features/LocationManager/LocationManager.d.ts +74 -0
- package/dist/dts/features/LocationManager/exports.d.ts +3 -0
- package/dist/dts/features/LocationManager/instance.d.ts +2 -0
- package/dist/dts/features/LocationManager/types.d.ts +65 -0
- package/dist/dts/features/MainButton/MainButton.d.ts +214 -0
- package/dist/dts/features/MainButton/exports.d.ts +2 -0
- package/dist/dts/features/MainButton/instance.d.ts +2 -0
- package/dist/dts/features/MiniApp/MiniApp.d.ts +192 -0
- package/dist/dts/features/MiniApp/exports.d.ts +2 -0
- package/dist/dts/features/MiniApp/instance.d.ts +2 -0
- package/dist/dts/features/Popup/Popup.d.ts +56 -0
- package/dist/dts/features/Popup/exports.d.ts +3 -0
- package/dist/dts/features/Popup/instance.d.ts +2 -0
- package/dist/dts/features/Popup/prepareParams.d.ts +9 -0
- package/dist/dts/{components → features}/Popup/types.d.ts +5 -12
- package/dist/dts/features/QrScanner/QrScanner.d.ts +132 -0
- package/dist/dts/features/QrScanner/exports.d.ts +2 -0
- package/dist/dts/features/QrScanner/instance.d.ts +2 -0
- package/dist/dts/features/SecondaryButton/SecondaryButton.d.ts +253 -0
- package/dist/dts/features/SecondaryButton/exports.d.ts +2 -0
- package/dist/dts/features/SecondaryButton/instance.d.ts +2 -0
- package/dist/dts/features/SettingsButton/SettingsButton.d.ts +96 -0
- package/dist/dts/features/SettingsButton/exports.d.ts +2 -0
- package/dist/dts/features/SettingsButton/instance.d.ts +2 -0
- package/dist/dts/features/SwipeBehavior/SwipeBehavior.d.ts +62 -0
- package/dist/dts/features/SwipeBehavior/exports.d.ts +2 -0
- package/dist/dts/features/SwipeBehavior/instance.d.ts +2 -0
- package/dist/dts/features/ThemeParams/ThemeParams.d.ts +127 -0
- package/dist/dts/features/ThemeParams/exports.d.ts +2 -0
- package/dist/dts/features/ThemeParams/instance.d.ts +2 -0
- package/dist/dts/features/Viewport/Viewport.d.ts +220 -0
- package/dist/dts/features/Viewport/exports.d.ts +2 -0
- package/dist/dts/features/Viewport/instance.d.ts +2 -0
- package/dist/dts/features/emoji-status/exports.d.ts +2 -0
- package/dist/dts/features/emoji-status/requestEmojiStatusAccess.d.ts +16 -0
- package/dist/dts/features/emoji-status/setEmojiStatus.d.ts +28 -0
- package/dist/dts/features/home-screen/addToHomeScreen.d.ts +11 -0
- package/dist/dts/features/home-screen/checkHomeScreenStatus.d.ts +14 -0
- package/dist/dts/features/home-screen/exports.d.ts +2 -0
- package/dist/dts/features/links/exports.d.ts +3 -0
- package/dist/dts/features/links/openLink.d.ts +31 -0
- package/dist/dts/features/links/openTelegramLink.d.ts +18 -0
- package/dist/dts/features/links/shareURL.d.ts +18 -0
- package/dist/dts/features/privacy/exports.d.ts +3 -0
- package/dist/dts/features/privacy/requestContact.d.ts +59 -0
- package/dist/dts/features/privacy/requestPhoneAccess.d.ts +19 -0
- package/dist/dts/features/privacy/requestWriteAccess.d.ts +14 -0
- package/dist/dts/features/uncategorized/copyTextToClipboard.d.ts +5 -0
- package/dist/dts/features/uncategorized/downloadFile.d.ts +21 -0
- package/dist/dts/features/uncategorized/exports.d.ts +11 -0
- package/dist/dts/features/uncategorized/getCurrentTime.d.ts +15 -0
- package/dist/dts/features/uncategorized/hideKeyboard.d.ts +13 -0
- package/dist/dts/features/uncategorized/readTextFromClipboard.d.ts +13 -0
- package/dist/dts/features/uncategorized/retrieveAndroidDeviceData.d.ts +6 -0
- package/dist/dts/features/uncategorized/retrieveAndroidDeviceDataFrom.d.ts +14 -0
- package/dist/dts/features/uncategorized/sendData.d.ts +20 -0
- package/dist/dts/features/uncategorized/shareMessage.d.ts +14 -0
- package/dist/dts/features/uncategorized/shareStory.d.ts +50 -0
- package/dist/dts/features/uncategorized/switchInlineQuery.d.ts +28 -0
- package/dist/dts/fn-options/bottomButtonOptions.d.ts +11 -0
- package/dist/dts/fn-options/buttonOptions.d.ts +10 -0
- package/dist/dts/fn-options/createFnOption.d.ts +2 -0
- package/dist/dts/fn-options/sharedFeatureOptions.d.ts +8 -0
- package/dist/dts/fn-options/withInvokeCustomMethod.d.ts +11 -0
- package/dist/dts/fn-options/withPostEvent.d.ts +8 -0
- package/dist/dts/fn-options/withRequest.d.ts +8 -0
- package/dist/dts/fn-options/withStateRestore.d.ts +13 -0
- package/dist/dts/fn-options/withVersion.d.ts +9 -0
- package/dist/dts/globals/createRequestId.d.ts +4 -0
- package/dist/dts/globals/inline-mode.d.ts +4 -0
- package/dist/dts/globals/invokeCustomMethod.d.ts +16 -0
- package/dist/dts/globals/post-event.d.ts +4 -0
- package/dist/dts/globals/request.d.ts +3 -0
- package/dist/dts/globals/resetGlobals.d.ts +4 -0
- package/dist/dts/globals/signals-registry.d.ts +39 -0
- package/dist/dts/globals/themeParams.d.ts +4 -0
- package/dist/dts/globals/version.d.ts +4 -0
- package/dist/dts/helpers/access.d.ts +2 -0
- package/dist/dts/helpers/component-storage.d.ts +9 -0
- package/dist/dts/helpers/createIsSupportedSignal.d.ts +5 -0
- package/dist/dts/helpers/css-vars.d.ts +11 -0
- package/dist/dts/helpers/isColorDark.d.ts +11 -0
- package/dist/dts/{navigation/isPageReload.d.ts → helpers/navigation.d.ts} +1 -1
- package/dist/dts/helpers/removeUndefined.d.ts +10 -0
- package/dist/dts/helpers/shallowEqual.d.ts +1 -0
- package/dist/dts/index.d.ts +33 -168
- package/dist/dts/init.d.ts +42 -0
- package/dist/dts/types.d.ts +6 -0
- package/dist/dts/with-checks/throwifyWithChecksFp.d.ts +3 -0
- package/dist/dts/with-checks/withChecksFp.d.ts +172 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.iife.js +3 -1
- package/dist/index.iife.js.map +1 -1
- package/dist/index.js +3824 -2925
- package/dist/index.js.map +1 -1
- package/package.json +19 -9
- package/dist/dts/bridge/events/event-emitter/createMiniAppsEventEmitter.d.ts +0 -15
- package/dist/dts/bridge/events/event-emitter/singleton.d.ts +0 -8
- package/dist/dts/bridge/events/event-handlers/cleanupEventHandlers.d.ts +0 -4
- package/dist/dts/bridge/events/event-handlers/defineEventHandlers.d.ts +0 -6
- package/dist/dts/bridge/events/event-handlers/emitMiniAppsEvent.d.ts +0 -9
- package/dist/dts/bridge/events/listening/off.d.ts +0 -8
- package/dist/dts/bridge/events/listening/on.d.ts +0 -12
- package/dist/dts/bridge/events/listening/subscribe.d.ts +0 -9
- package/dist/dts/bridge/events/listening/unsubscribe.d.ts +0 -7
- package/dist/dts/bridge/events/types.d.ts +0 -302
- package/dist/dts/bridge/methods/createPostEvent.d.ts +0 -13
- package/dist/dts/bridge/methods/postEvent.d.ts +0 -38
- package/dist/dts/bridge/methods/types/custom-methods.d.ts +0 -57
- package/dist/dts/bridge/methods/types/haptic.d.ts +0 -40
- package/dist/dts/bridge/methods/types/index.d.ts +0 -4
- package/dist/dts/bridge/methods/types/methods.d.ts +0 -392
- package/dist/dts/bridge/methods/types/popup.d.ts +0 -49
- package/dist/dts/bridge/parseMessage.d.ts +0 -18
- package/dist/dts/bridge/target-origin.d.ts +0 -13
- package/dist/dts/bridge/utils/captureSameReq.d.ts +0 -10
- package/dist/dts/bridge/utils/invokeCustomMethod.d.ts +0 -23
- package/dist/dts/bridge/utils/request.d.ts +0 -47
- package/dist/dts/classes/State/State.d.ts +0 -46
- package/dist/dts/classes/State/types.d.ts +0 -29
- package/dist/dts/classes/WithStateUtils.d.ts +0 -18
- package/dist/dts/classes/WithSupports.d.ts +0 -19
- package/dist/dts/classes/WithSupportsAndStateUtils.d.ts +0 -24
- package/dist/dts/classes/WithSupportsAndTrackableState.d.ts +0 -16
- package/dist/dts/classes/WithTrackableState.d.ts +0 -16
- package/dist/dts/classnames/classNames.d.ts +0 -12
- package/dist/dts/classnames/mergeClassNames.d.ts +0 -14
- package/dist/dts/colors/isColorDark.d.ts +0 -6
- package/dist/dts/colors/isRGB.d.ts +0 -7
- package/dist/dts/colors/isRGBShort.d.ts +0 -7
- package/dist/dts/colors/toRGB.d.ts +0 -12
- package/dist/dts/colors/types.d.ts +0 -8
- package/dist/dts/components/BackButton/BackButton.d.ts +0 -41
- package/dist/dts/components/BackButton/initBackButton.d.ts +0 -7
- package/dist/dts/components/BackButton/types.d.ts +0 -25
- package/dist/dts/components/BiometryManager/BiometryManager.d.ts +0 -61
- package/dist/dts/components/BiometryManager/formatEvent.d.ts +0 -34
- package/dist/dts/components/BiometryManager/initBiometryManager.d.ts +0 -7
- package/dist/dts/components/BiometryManager/requestBiometryInfo.d.ts +0 -8
- package/dist/dts/components/BiometryManager/types.d.ts +0 -40
- package/dist/dts/components/ClosingBehavior/ClosingBehavior.d.ts +0 -26
- package/dist/dts/components/ClosingBehavior/initClosingBehavior.d.ts +0 -7
- package/dist/dts/components/ClosingBehavior/types.d.ts +0 -20
- package/dist/dts/components/CloudStorage/CloudStorage.d.ts +0 -47
- package/dist/dts/components/CloudStorage/initCloudStorage.d.ts +0 -7
- package/dist/dts/components/HapticFeedback/HapticFeedback.d.ts +0 -34
- package/dist/dts/components/HapticFeedback/initHapticFeedback.d.ts +0 -7
- package/dist/dts/components/InitData/InitData.d.ts +0 -55
- package/dist/dts/components/InitData/initInitData.d.ts +0 -7
- package/dist/dts/components/InitData/parseInitData.d.ts +0 -7
- package/dist/dts/components/InitData/parsers/chat.d.ts +0 -3
- package/dist/dts/components/InitData/parsers/initData.d.ts +0 -7
- package/dist/dts/components/InitData/parsers/user.d.ts +0 -3
- package/dist/dts/components/InitData/types.d.ts +0 -132
- package/dist/dts/components/Invoice/Invoice.d.ts +0 -31
- package/dist/dts/components/Invoice/initInvoice.d.ts +0 -7
- package/dist/dts/components/Invoice/types.d.ts +0 -20
- package/dist/dts/components/MainButton/MainButton.d.ts +0 -106
- package/dist/dts/components/MainButton/initMainButton.d.ts +0 -7
- package/dist/dts/components/MainButton/types.d.ts +0 -40
- package/dist/dts/components/MiniApp/MiniApp.d.ts +0 -120
- package/dist/dts/components/MiniApp/initMiniApp.d.ts +0 -7
- package/dist/dts/components/MiniApp/parsing/contact.d.ts +0 -7
- package/dist/dts/components/MiniApp/types.d.ts +0 -53
- package/dist/dts/components/Popup/Popup.d.ts +0 -30
- package/dist/dts/components/Popup/initPopup.d.ts +0 -7
- package/dist/dts/components/Popup/preparePopupParams.d.ts +0 -8
- package/dist/dts/components/QRScanner/QRScanner.d.ts +0 -33
- package/dist/dts/components/QRScanner/initQRScanner.d.ts +0 -7
- package/dist/dts/components/QRScanner/types.d.ts +0 -31
- package/dist/dts/components/SettingsButton/SettingsButton.d.ts +0 -37
- package/dist/dts/components/SettingsButton/initSettingsButton.d.ts +0 -7
- package/dist/dts/components/SettingsButton/types.d.ts +0 -25
- package/dist/dts/components/ThemeParams/ThemeParams.d.ts +0 -57
- package/dist/dts/components/ThemeParams/initThemeParams.d.ts +0 -7
- package/dist/dts/components/ThemeParams/keys.d.ts +0 -11
- package/dist/dts/components/ThemeParams/parsing/parseThemeParams.d.ts +0 -7
- package/dist/dts/components/ThemeParams/parsing/serializeThemeParams.d.ts +0 -6
- package/dist/dts/components/ThemeParams/parsing/themeParams.d.ts +0 -4
- package/dist/dts/components/ThemeParams/requestThemeParams.d.ts +0 -8
- package/dist/dts/components/ThemeParams/types.d.ts +0 -29
- package/dist/dts/components/Utils/Utils.d.ts +0 -54
- package/dist/dts/components/Utils/initUtils.d.ts +0 -7
- package/dist/dts/components/Viewport/Viewport.d.ts +0 -77
- package/dist/dts/components/Viewport/initViewport.d.ts +0 -7
- package/dist/dts/components/Viewport/requestViewport.d.ts +0 -13
- package/dist/dts/components/Viewport/types.d.ts +0 -35
- package/dist/dts/css-vars/bindMiniAppCSSVars.d.ts +0 -29
- package/dist/dts/css-vars/bindThemeParamsCSSVars.d.ts +0 -29
- package/dist/dts/css-vars/bindViewportCSSVars.d.ts +0 -32
- package/dist/dts/css-vars/setCSSVar.d.ts +0 -6
- package/dist/dts/debug/debug.d.ts +0 -14
- package/dist/dts/env/hasExternalNotify.d.ts +0 -10
- package/dist/dts/env/hasWebviewProxy.d.ts +0 -10
- package/dist/dts/env/initWeb.d.ts +0 -11
- package/dist/dts/env/isIframe.d.ts +0 -5
- package/dist/dts/env/isSSR.d.ts +0 -4
- package/dist/dts/env/isTMA.d.ts +0 -4
- package/dist/dts/env/mockTelegramEnv.d.ts +0 -7
- package/dist/dts/errors/SDKError.d.ts +0 -9
- package/dist/dts/errors/createError.d.ts +0 -10
- package/dist/dts/errors/errors.d.ts +0 -49
- package/dist/dts/errors/isSDKError.d.ts +0 -7
- package/dist/dts/errors/isSDKErrorOfType.d.ts +0 -8
- package/dist/dts/events/event-emitter/EventEmitter.d.ts +0 -54
- package/dist/dts/events/event-emitter/types.d.ts +0 -45
- package/dist/dts/events/onWindow.d.ts +0 -10
- package/dist/dts/events/types.d.ts +0 -6
- package/dist/dts/index.low-level.d.ts +0 -41
- package/dist/dts/launch-params/parseLaunchParams.d.ts +0 -7
- package/dist/dts/launch-params/retrieveFromLocation.d.ts +0 -7
- package/dist/dts/launch-params/retrieveFromPerformance.d.ts +0 -7
- package/dist/dts/launch-params/retrieveFromStorage.d.ts +0 -7
- package/dist/dts/launch-params/retrieveFromUrl.d.ts +0 -8
- package/dist/dts/launch-params/retrieveLaunchParams.d.ts +0 -7
- package/dist/dts/launch-params/saveToStorage.d.ts +0 -7
- package/dist/dts/launch-params/serializeLaunchParams.d.ts +0 -7
- package/dist/dts/launch-params/types.d.ts +0 -51
- package/dist/dts/logger/Logger.d.ts +0 -29
- package/dist/dts/misc/createCleanup.d.ts +0 -11
- package/dist/dts/misc/createComponentInitFn/createComponentInitFn.d.ts +0 -16
- package/dist/dts/misc/createComponentInitFn/types.d.ts +0 -54
- package/dist/dts/misc/createSingleton.d.ts +0 -15
- package/dist/dts/misc/isRecord.d.ts +0 -5
- package/dist/dts/misc/objectFromKeys.d.ts +0 -6
- package/dist/dts/navigation/BasicNavigator/BasicNavigator.d.ts +0 -118
- package/dist/dts/navigation/BasicNavigator/prepareItem.d.ts +0 -8
- package/dist/dts/navigation/BasicNavigator/types.d.ts +0 -37
- package/dist/dts/navigation/BrowserNavigator/BrowserNavigator.d.ts +0 -198
- package/dist/dts/navigation/BrowserNavigator/basicItemToBrowser.d.ts +0 -7
- package/dist/dts/navigation/BrowserNavigator/createBrowserNavigatorFromLocation.d.ts +0 -4
- package/dist/dts/navigation/BrowserNavigator/prepareItem.d.ts +0 -25
- package/dist/dts/navigation/BrowserNavigator/types.d.ts +0 -64
- package/dist/dts/navigation/createSafeURL.d.ts +0 -7
- package/dist/dts/navigation/drop.d.ts +0 -4
- package/dist/dts/navigation/ensurePrefix.d.ts +0 -7
- package/dist/dts/navigation/getFirstNavigationEntry.d.ts +0 -6
- package/dist/dts/navigation/getHash.d.ts +0 -15
- package/dist/dts/navigation/getPathname.d.ts +0 -7
- package/dist/dts/navigation/go.d.ts +0 -5
- package/dist/dts/navigation/initNavigator.d.ts +0 -9
- package/dist/dts/navigation/urlToPath.d.ts +0 -7
- package/dist/dts/parsing/ArrayParser/ArrayParser.d.ts +0 -17
- package/dist/dts/parsing/ArrayParser/types.d.ts +0 -12
- package/dist/dts/parsing/ValueParser/ValueParser.d.ts +0 -17
- package/dist/dts/parsing/ValueParser/types.d.ts +0 -28
- package/dist/dts/parsing/createTypeError.d.ts +0 -6
- package/dist/dts/parsing/createValueParserGenerator.d.ts +0 -10
- package/dist/dts/parsing/parseBySchema.d.ts +0 -9
- package/dist/dts/parsing/parsers/array.d.ts +0 -7
- package/dist/dts/parsing/parsers/boolean.d.ts +0 -6
- package/dist/dts/parsing/parsers/date.d.ts +0 -6
- package/dist/dts/parsing/parsers/json.d.ts +0 -9
- package/dist/dts/parsing/parsers/number.d.ts +0 -6
- package/dist/dts/parsing/parsers/rgb.d.ts +0 -7
- package/dist/dts/parsing/parsers/searchParams.d.ts +0 -9
- package/dist/dts/parsing/parsers/string.d.ts +0 -6
- package/dist/dts/parsing/toRecord.d.ts +0 -7
- package/dist/dts/parsing/types.d.ts +0 -30
- package/dist/dts/request-id/createRequestIdGenerator.d.ts +0 -6
- package/dist/dts/request-id/types.d.ts +0 -9
- package/dist/dts/storage/storage.d.ts +0 -42
- package/dist/dts/supports/createSupportsFn.d.ts +0 -12
- package/dist/dts/supports/createSupportsParamFn.d.ts +0 -16
- package/dist/dts/supports/supports.d.ts +0 -16
- package/dist/dts/supports/types.d.ts +0 -4
- package/dist/dts/timeout/createTimeoutError.d.ts +0 -7
- package/dist/dts/timeout/sleep.d.ts +0 -5
- package/dist/dts/timeout/withTimeout.d.ts +0 -6
- package/dist/dts/types/index.d.ts +0 -6
- package/dist/dts/types/logical.d.ts +0 -16
- package/dist/dts/types/methods.d.ts +0 -16
- package/dist/dts/types/misc.d.ts +0 -12
- package/dist/dts/types/platform.d.ts +0 -4
- package/dist/dts/types/unions.d.ts +0 -20
- package/dist/dts/types/utils.d.ts +0 -24
- package/dist/dts/version/compareVersions.d.ts +0 -10
- package/dist/dts/version/types.d.ts +0 -5
- package/dist/index.low-level.iife.js +0 -2
- package/dist/index.low-level.iife.js.map +0 -1
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { MethodName, MethodNameWithVersionedParams, MethodVersionedParams } from '@tma.js/bridge';
|
|
2
|
+
import { Computed } from '@tma.js/signals';
|
|
3
|
+
import { If, IsNever, AnyFnAnyEither, RightOfReturn, LeftOfReturn, MaybeMonadReturnTypeToCommon, AnyFn } from '@tma.js/toolkit';
|
|
4
|
+
import { Version } from '@tma.js/types';
|
|
5
|
+
import { FunctionUnavailableError } from '../errors.js';
|
|
6
|
+
import { MaybeAccessor } from '../types.js';
|
|
7
|
+
import * as O from 'fp-ts/Option';
|
|
8
|
+
import * as E from 'fp-ts/Either';
|
|
9
|
+
import * as TE from 'fp-ts/TaskEither';
|
|
10
|
+
type IfReturnsTask<Fn extends AnyFnAnyEither, A, B> = ReturnType<Fn> extends TE.TaskEither<any, any> ? A : B;
|
|
11
|
+
type OptionsBasedRequires<O extends WithChecksOptions<any>> = O extends {
|
|
12
|
+
requires: any;
|
|
13
|
+
} ? true : false;
|
|
14
|
+
type OptionsBasedSupports<O extends WithChecksOptions<any>> = O extends {
|
|
15
|
+
supports: any;
|
|
16
|
+
} ? Extract<keyof O['supports'], string> : never;
|
|
17
|
+
type OptionsBasedFn<Opts extends WithChecksOptions<any>> = (...args: any[]) => (Opts['returns'] extends 'plain' ? any : Opts['returns'] extends 'promise' ? PromiseLike<any> : Opts['returns'] extends 'task' ? TE.TaskEither<any, any> : E.Either<any, any>);
|
|
18
|
+
/**
|
|
19
|
+
* @returns Error text if something is wrong.
|
|
20
|
+
*/
|
|
21
|
+
export type CustomSupportFn = () => string | undefined;
|
|
22
|
+
export type Require = MethodName | CustomSupportFn | {
|
|
23
|
+
every: (MethodName | CustomSupportFn)[];
|
|
24
|
+
} | {
|
|
25
|
+
some: (MethodName | CustomSupportFn)[];
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* A map where the key is a method name with versioned parameters, and the value is a tuple
|
|
29
|
+
* containing the method and parameter names. The third tuple value is a function accepting
|
|
30
|
+
* the wrapped function arguments and returning true if support check must be applied.
|
|
31
|
+
*/
|
|
32
|
+
export type SupportsMap<Args extends any[]> = {
|
|
33
|
+
[OptionName: string]: {
|
|
34
|
+
[M in MethodNameWithVersionedParams]: {
|
|
35
|
+
/**
|
|
36
|
+
* Method name.
|
|
37
|
+
* @example 'web_app_set_header_color'
|
|
38
|
+
*/
|
|
39
|
+
method: M;
|
|
40
|
+
/**
|
|
41
|
+
* Method version-dependent parameter.
|
|
42
|
+
* @example `color`
|
|
43
|
+
*/
|
|
44
|
+
param: MethodVersionedParams<M>;
|
|
45
|
+
/**
|
|
46
|
+
* @returns True if the support function should be called.
|
|
47
|
+
* @param args - function arguments.
|
|
48
|
+
*/
|
|
49
|
+
shouldCheck: (...args: Args) => boolean;
|
|
50
|
+
};
|
|
51
|
+
}[MethodNameWithVersionedParams];
|
|
52
|
+
};
|
|
53
|
+
type WrappedFnReturnType<Fn extends AnyFn> = ReturnType<Fn> extends E.Either<any, any> ? E.Either<FunctionUnavailableError | LeftOfReturn<Fn>, RightOfReturn<Fn>> : ReturnType<Fn> extends TE.TaskEither<any, any> ? TE.TaskEither<FunctionUnavailableError | LeftOfReturn<Fn>, RightOfReturn<Fn>> : ReturnType<Fn> extends PromiseLike<infer U> ? TE.TaskEither<FunctionUnavailableError, U> : E.Either<FunctionUnavailableError, ReturnType<Fn>>;
|
|
54
|
+
export type WrappedFn<Fn extends AnyFn> = (...args: Parameters<Fn>) => WrappedFnReturnType<Fn>;
|
|
55
|
+
export type WithChecksFp<Fn extends AnyFn, HasSupportCheck extends boolean, SupportsMapKeySchema extends string = never> = WrappedFn<Fn> & {
|
|
56
|
+
/**
|
|
57
|
+
* A signal returning `true` if the function is available in the current environment and
|
|
58
|
+
* conditions.
|
|
59
|
+
*
|
|
60
|
+
* To be more accurate, the method checks the following:
|
|
61
|
+
* 1. The current environment is Telegram Mini Apps.
|
|
62
|
+
* 2. The SDK package is initialized (if this requirement is specified).
|
|
63
|
+
* 3. If passed, the `isSupported` signal returned true.
|
|
64
|
+
* 4. If passed, the `isMounted` signal returned true.
|
|
65
|
+
*
|
|
66
|
+
* *You should use this function when possible because it provides must-have code security
|
|
67
|
+
* mechanisms and makes a developer sure that he is using the package properly.*
|
|
68
|
+
*
|
|
69
|
+
* @returns True if the function is available in the current environment.
|
|
70
|
+
* @example
|
|
71
|
+
* if (backButton.show.isAvailable()) {
|
|
72
|
+
* backButton.show();
|
|
73
|
+
* }
|
|
74
|
+
*/
|
|
75
|
+
isAvailable: Computed<boolean>;
|
|
76
|
+
/**
|
|
77
|
+
* Calls the function only in case it is available.
|
|
78
|
+
*
|
|
79
|
+
* It uses the `isAvailable` internally to check if the function is available for call.
|
|
80
|
+
* @example
|
|
81
|
+
* backButton.show.ifAvailable();
|
|
82
|
+
*/
|
|
83
|
+
ifAvailable(...args: Parameters<Fn>): O.Option<ReturnType<Fn>>;
|
|
84
|
+
} & If<HasSupportCheck, {
|
|
85
|
+
/**
|
|
86
|
+
* The signal returning `true` if the function is supported by the Telegram client,
|
|
87
|
+
* including some possible additional conditions.
|
|
88
|
+
*
|
|
89
|
+
* It is highly recommended to use this signal only in certain narrow cases when only the
|
|
90
|
+
* function support check is required, but not its availability.
|
|
91
|
+
*
|
|
92
|
+
* This signal is not applying additional operations like checking if the current environment
|
|
93
|
+
* is Mini Apps and the SDK is initialized.
|
|
94
|
+
*
|
|
95
|
+
* To check if the function is available for use, use the `isAvailable` signal.
|
|
96
|
+
*
|
|
97
|
+
* @returns True if this function is supported.
|
|
98
|
+
* @see isAvailable
|
|
99
|
+
* @example
|
|
100
|
+
* if (backButton.show.isSupported()) {
|
|
101
|
+
* console.log('The method is supported');
|
|
102
|
+
* }
|
|
103
|
+
*/
|
|
104
|
+
isSupported: Computed<boolean>;
|
|
105
|
+
}, {}> & If<IsNever<SupportsMapKeySchema>, {}, {
|
|
106
|
+
/**
|
|
107
|
+
* A map where the key is the function-specific option name and value is a signal indicating
|
|
108
|
+
* if it is supported by the current environment.
|
|
109
|
+
* @example
|
|
110
|
+
* if (miniApp.setHeaderColor.isAvailable()) {
|
|
111
|
+
* if (miniApp.setHeaderColor.supports('rgb')) {
|
|
112
|
+
* miniApp.setHeaderColor('#ffaabb');
|
|
113
|
+
* } else {
|
|
114
|
+
* miniApp.setHeaderColor('bg_color');
|
|
115
|
+
* }
|
|
116
|
+
* }
|
|
117
|
+
*/
|
|
118
|
+
supports: (key: SupportsMapKeySchema) => boolean;
|
|
119
|
+
}>;
|
|
120
|
+
export type WithChecks<Fn extends AnyFn, HasSupportCheck extends boolean, SupportsMapKeySchema extends string = never> = ((...args: Parameters<Fn>) => MaybeMonadReturnTypeToCommon<Fn>) & Omit<WithChecksFp<Fn, HasSupportCheck, SupportsMapKeySchema>, 'ifAvailable'> & {
|
|
121
|
+
/**
|
|
122
|
+
* Calls the function only in case it is available.
|
|
123
|
+
*
|
|
124
|
+
* It uses the `isAvailable` internally to check if the function is available for call.
|
|
125
|
+
* @example
|
|
126
|
+
* backButton.show.ifAvailable();
|
|
127
|
+
*/
|
|
128
|
+
ifAvailable(...args: Parameters<Fn>): {
|
|
129
|
+
ok: true;
|
|
130
|
+
data: MaybeMonadReturnTypeToCommon<Fn>;
|
|
131
|
+
} | {
|
|
132
|
+
ok: false;
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
export interface WithChecksOptions<Fn extends AnyFn> {
|
|
136
|
+
/**
|
|
137
|
+
* Signal returning true if the owning component is mounted.
|
|
138
|
+
*/
|
|
139
|
+
isMounted?: () => boolean;
|
|
140
|
+
/**
|
|
141
|
+
* Signal returning true if the owning component is mounting.
|
|
142
|
+
*/
|
|
143
|
+
isMounting?: () => boolean;
|
|
144
|
+
/**
|
|
145
|
+
* A value determining the function requirements. This will enable additional checks for
|
|
146
|
+
* the function before being called.
|
|
147
|
+
*/
|
|
148
|
+
requires?: Require;
|
|
149
|
+
/**
|
|
150
|
+
* A signal to retrieve the current Telegram Mini Apps version or the value itself.
|
|
151
|
+
*/
|
|
152
|
+
isTma: MaybeAccessor<boolean>;
|
|
153
|
+
/**
|
|
154
|
+
* A map where the key is a method name with versioned parameters, and the value is a tuple
|
|
155
|
+
* containing the method and parameter names. The third tuple value is a function accepting
|
|
156
|
+
* the wrapped function arguments and returning true if support check must be applied.
|
|
157
|
+
*/
|
|
158
|
+
supports?: SupportsMap<Parameters<Fn>>;
|
|
159
|
+
/**
|
|
160
|
+
* A signal to retrieve the current Telegram Mini Apps version or the value itself.
|
|
161
|
+
*/
|
|
162
|
+
version?: MaybeAccessor<Version>;
|
|
163
|
+
/**
|
|
164
|
+
* Allows to determine what exactly should be returned from the function - TaskEither or Either.
|
|
165
|
+
* There is no other way to know it until the function itself is called, but we need to perform
|
|
166
|
+
* some checks before calling it and return a valid value based on the function return type.
|
|
167
|
+
*/
|
|
168
|
+
returns: Fn extends AnyFnAnyEither ? IfReturnsTask<Fn, 'task', 'either'> : ReturnType<Fn> extends PromiseLike<any> ? 'promise' : 'plain';
|
|
169
|
+
}
|
|
170
|
+
export declare function withChecksFp<Fn extends AnyFn, O extends WithChecksOptions<Fn>>(fn: Fn, options: O): WithChecksFp<Fn, OptionsBasedRequires<O>, OptionsBasedSupports<O>>;
|
|
171
|
+
export declare function createWithChecksFp<O extends WithChecksOptions<any>>(options: O): <Fn extends OptionsBasedFn<O>>(fn: Fn) => WithChecksFp<Fn, OptionsBasedRequires<O>, OptionsBasedSupports<O>>;
|
|
172
|
+
export {};
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var Se=Object.defineProperty;var Pe=(e,t,s)=>t in e?Se(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var c=(e,t,s)=>Pe(e,typeof t!="symbol"?t+"":t,s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function vt(e,t){let s;const n=()=>{s!==void 0&&t&&t(s),s=void 0};return[()=>s===void 0?s=e(n):s,n]}function K(e){const t=O(),{count:s}=t;t.unsubscribe(e),s&&!t.count&&Me()}function St(e){return O().subscribe(e),()=>K(e)}class Re{constructor(t,s={}){this.scope=t,this.options=s}print(t,...s){const n=new Date,r=Intl.DateTimeFormat("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3,timeZone:"UTC"}).format(n),{textColor:i,bgColor:o}=this.options,a="font-weight: bold;padding: 0 5px;border-radius:5px";console[t](`%c${r}%c / %c${this.scope}`,`${a};background-color: lightblue;color:black`,"",`${a};${i?`color:${i};`:""}${o?`background-color:${o}`:""}`,...s)}error(...t){this.print("error",...t)}log(...t){this.print("log",...t)}}const Q=new Re("SDK",{bgColor:"forestgreen",textColor:"white"});let F=!1;const wt=({name:e,payload:t})=>{Q.log("Event received:",t?{name:e,payload:t}:{name:e})};function Te(e){F!==e&&(F=e,e?St(wt):K(wt))}function Ce(...e){F&&Q.log(...e)}class S{constructor(){c(this,"listeners",new Map);c(this,"listenersCount",0);c(this,"subscribeListeners",[])}clear(){this.listeners.clear(),this.subscribeListeners=[]}get count(){return this.listenersCount+this.subscribeListeners.length}emit(t,...s){this.subscribeListeners.forEach(r=>r({event:t,args:s})),(this.listeners.get(t)||[]).forEach(([r,i])=>{r(...s),i&&this.off(t,r)})}on(t,s,n){let r=this.listeners.get(t);return r||this.listeners.set(t,r=[]),r.push([s,n]),this.listenersCount+=1,()=>this.off(t,s)}off(t,s){const n=this.listeners.get(t)||[];for(let r=0;r<n.length;r+=1)if(s===n[r][0]){n.splice(r,1),this.listenersCount-=1;return}}subscribe(t){return this.subscribeListeners.push(t),()=>this.unsubscribe(t)}unsubscribe(t){for(let s=0;s<this.subscribeListeners.length;s+=1)if(this.subscribeListeners[s]===t){this.subscribeListeners.splice(s,1);return}}}function J(e,t,s){return window.addEventListener(e,t,s),()=>window.removeEventListener(e,t,s)}function X(...e){let t=!1;const s=[...e];return[n=>!t&&s.push(n),()=>{t||(t=!0,s.forEach(n=>n()))},t]}class q extends Error{constructor(t,s,n){super(s,{cause:n}),this.type=t,Object.setPrototypeOf(this,q.prototype)}}function g(e,t,s){return new q(e,t,s)}const Pt="ERR_METHOD_UNSUPPORTED",Rt="ERR_METHOD_PARAMETER_UNSUPPORTED",Tt="ERR_UNKNOWN_ENV",Ct="ERR_INVOKE_CUSTOM_METHOD_RESPONSE",xt="ERR_TIMED_OUT",At="ERR_UNEXPECTED_TYPE",Z="ERR_PARSE",It="ERR_NAVIGATION_LIST_EMPTY",Nt="ERR_NAVIGATION_CURSOR_INVALID",xe="ERR_NAVIGATION_ITEM_INVALID",Ae="ERR_SSR_INIT",qt="ERR_INVALID_PATH_BASE";function R(){return g(At,"Value has unexpected type")}class B{constructor(t,s,n){this.parser=t,this.isOptional=s,this.type=n}parse(t){if(!(this.isOptional&&t===void 0))try{return this.parser(t)}catch(s){throw g(Z,`Unable to parse value${this.type?` as ${this.type}`:""}`,s)}}optional(){return this.isOptional=!0,this}}function T(e,t){return()=>new B(e,!1,t)}const w=T(e=>{if(typeof e=="boolean")return e;const t=String(e);if(t==="1"||t==="true")return!0;if(t==="0"||t==="false")return!1;throw R()},"boolean");function kt(e,t){const s={};for(const n in e){const r=e[n];if(!r)continue;let i,o;if(typeof r=="function"||"parse"in r)i=n,o=typeof r=="function"?r:r.parse.bind(r);else{const{type:a}=r;i=r.from||n,o=typeof a=="function"?a:a.parse.bind(a)}try{const a=o(t(i));a!==void 0&&(s[n]=a)}catch(a){throw g(Z,`Unable to parse field "${n}"`,a)}}return s}function tt(e){let t=e;if(typeof t=="string"&&(t=JSON.parse(t)),typeof t!="object"||t===null||Array.isArray(t))throw R();return t}function l(e,t){return new B(s=>{const n=tt(s);return kt(e,r=>n[r])},!1,t)}const y=T(e=>{if(typeof e=="number")return e;if(typeof e=="string"){const t=Number(e);if(!Number.isNaN(t))return t}throw R()},"number");function L(e){return/^#[\da-f]{6}$/i.test(e)}function Dt(e){return/^#[\da-f]{3}$/i.test(e)}function et(e){const t=e.replace(/\s/g,"").toLowerCase();if(L(t))return t;if(Dt(t)){let n="#";for(let r=0;r<3;r+=1)n+=t[1+r].repeat(2);return n}const s=t.match(/^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)$/)||t.match(/^rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),\d{1,3}\)$/);if(!s)throw new Error(`Value "${e}" does not satisfy any of known RGB formats.`);return s.slice(1).reduce((n,r)=>{const i=parseInt(r,10).toString(16);return n+(i.length===1?"0":"")+i},"#")}const h=T(e=>{if(typeof e=="string"||typeof e=="number")return e.toString();throw R()},"string"),st=T(e=>et(h().parse(e)),"rgb");function Mt(e){return l({eventType:h(),eventData:t=>t}).parse(e)}function Ie(){["TelegramGameProxy_receiveEvent","TelegramGameProxy","Telegram"].forEach(e=>{delete window[e]})}function Y(e,t){window.dispatchEvent(new MessageEvent("message",{data:JSON.stringify({eventType:e,eventData:t}),source:window.parent}))}function Ne(){[["TelegramGameProxy_receiveEvent"],["TelegramGameProxy","receiveEvent"],["Telegram","WebView","receiveEvent"]].forEach(e=>{let t=window;e.forEach((s,n,r)=>{if(n===r.length-1){t[s]=Y;return}s in t||(t[s]={}),t=t[s]})})}const qe={clipboard_text_received:l({req_id:h(),data:e=>e===null?e:h().optional().parse(e)}),custom_method_invoked:l({req_id:h(),result:e=>e,error:h().optional()}),invoice_closed:l({slug:h(),status:h()}),phone_requested:l({status:h()}),popup_closed:{parse(e){return l({button_id:t=>t==null?void 0:h().parse(t)}).parse(e??{})}},qr_text_received:l({data:h().optional()}),theme_changed:l({theme_params:e=>{const t=st().optional();return Object.entries(tt(e)).reduce((s,[n,r])=>(s[n]=t.parse(r),s),{})}}),viewport_changed:l({height:y(),width:e=>e==null?window.innerWidth:y().parse(e),is_state_stable:w(),is_expanded:w()}),write_access_requested:l({status:h()})};function ke(){const e=new S,t=new S;t.subscribe(n=>{e.emit("event",{name:n.event,payload:n.args[0]})}),Ne();const[,s]=X(Ie,J("resize",()=>{t.emit("viewport_changed",{width:window.innerWidth,height:window.innerHeight,is_state_stable:!0,is_expanded:!0})}),J("message",n=>{if(n.source!==window.parent)return;let r;try{r=Mt(n.data)}catch{return}const{eventType:i,eventData:o}=r,a=qe[i];try{const p=a?a.parse(o):o;t.emit(...p?[i,p]:[i])}catch(p){Q.error(`An error occurred processing the "${i}" event from the Telegram application. Please, file an issue here: https://github.com/Telegram-Mini-Apps/tma.js/issues/new/choose`,r,p)}}),()=>e.clear(),()=>t.clear());return[{on:t.on.bind(t),off:t.off.bind(t),subscribe(n){return e.on("event",n)},unsubscribe(n){e.off("event",n)},get count(){return t.count+e.count}},s]}const[De,Me]=vt(e=>{const[t,s]=ke(),n=t.off.bind(t);return t.off=(r,i)=>{const{count:o}=t;n(r,i),o&&!t.count&&e()},[t,s]},([,e])=>e());function O(){return De()[0]}function k(e,t){O().off(e,t)}function b(e,t,s){return O().on(e,t,s)}function D(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Vt(e,t){const s=e.split("."),n=t.split("."),r=Math.max(s.length,n.length);for(let i=0;i<r;i+=1){const o=parseInt(s[i]||"0",10),a=parseInt(n[i]||"0",10);if(o!==a)return o>a?1:-1}return 0}function f(e,t){return Vt(e,t)<=0}function E(e,t,s){if(typeof s=="string"){if(e==="web_app_open_link"){if(t==="try_instant_view")return f("6.4",s);if(t==="try_browser")return f("7.6",s)}if(e==="web_app_set_header_color"&&t==="color")return f("6.9",s);if(e==="web_app_close"&&t==="return_back")return f("7.6",s)}switch(e){case"web_app_open_tg_link":case"web_app_open_invoice":case"web_app_setup_back_button":case"web_app_set_background_color":case"web_app_set_header_color":case"web_app_trigger_haptic_feedback":return f("6.1",t);case"web_app_open_popup":return f("6.2",t);case"web_app_close_scan_qr_popup":case"web_app_open_scan_qr_popup":case"web_app_read_text_from_clipboard":return f("6.4",t);case"web_app_switch_inline_query":return f("6.7",t);case"web_app_invoke_custom_method":case"web_app_request_write_access":case"web_app_request_phone":return f("6.9",t);case"web_app_setup_settings_button":return f("6.10",t);case"web_app_biometry_get_info":case"web_app_biometry_open_settings":case"web_app_biometry_request_access":case"web_app_biometry_request_auth":case"web_app_biometry_update_token":return f("7.2",t);default:return["iframe_ready","iframe_will_reload","web_app_close","web_app_data_send","web_app_expand","web_app_open_link","web_app_ready","web_app_request_theme","web_app_request_viewport","web_app_setup_main_button","web_app_setup_closing_behavior"].includes(e)}}function Bt(e){return"external"in e&&D(e.external)&&"notify"in e.external&&typeof e.external.notify=="function"}function Lt(e){return"TelegramWebviewProxy"in e&&D(e.TelegramWebviewProxy)&&"postEvent"in e.TelegramWebviewProxy&&typeof e.TelegramWebviewProxy.postEvent=="function"}function nt(){try{return window.self!==window.top}catch{return!0}}let Ot="https://web.telegram.org";function Ve(e){Ot=e}function Ut(){return Ot}function P(e,t,s){let n={},r;t===void 0&&s===void 0?n={}:t!==void 0&&s!==void 0?(n=s,r=t):t!==void 0&&("targetOrigin"in t?n=t:r=t);const{targetOrigin:i=Ut()}=n;if(Ce("Posting event:",r?{event:e,data:r}:{event:e}),nt()){window.parent.postMessage(JSON.stringify({eventType:e,eventData:r}),i);return}if(Bt(window)){window.external.notify(JSON.stringify({eventType:e,eventData:r}));return}if(Lt(window)){window.TelegramWebviewProxy.postEvent(e,JSON.stringify(r));return}throw g(Tt,"Unable to determine current environment and possible way to send event. You are probably trying to use Mini Apps method outside of Telegram application environment.")}function $t(e){return(t,s)=>{if(!E(t,e))throw g(Pt,`Method "${t}" is unsupported in Mini Apps version ${e}`);if(D(s)){let n;if(t==="web_app_open_link"&&"try_instant_view"in s?n="try_instant_view":t==="web_app_set_header_color"&&"color"in s&&(n="color"),n&&!E(t,n,e))throw g(Rt,`Parameter "${n}" of "${t}" method is unsupported in Mini Apps version ${e}`)}return P(t,s)}}function rt(e){return({req_id:t})=>t===e}function Wt(e){return g(xt,`Timeout reached: ${e}ms`)}function it(e,t){return Promise.race([typeof e=="function"?e():e,new Promise((s,n)=>{setTimeout(()=>{n(Wt(t))},t)})])}async function d(e){let t;const s=new Promise(a=>{t=a}),{event:n,capture:r,timeout:i}=e,[,o]=X(...(Array.isArray(n)?n:[n]).map(a=>b(a,p=>(!r||r(p))&&t(p))));try{return(e.postEvent||P)(e.method,e.params),await(i?it(s,i):s)}finally{o()}}async function v(e,t,s,n={}){const{result:r,error:i}=await d({...n,method:"web_app_invoke_custom_method",event:"custom_method_invoked",params:{method:e,params:t,req_id:s},capture:rt(s)});if(i)throw g(Ct,i);return r}function V(...e){return e.map(t=>{if(typeof t=="string")return t;if(D(t))return V(Object.entries(t).map(s=>s[1]&&s[0]));if(Array.isArray(t))return V(...t)}).filter(Boolean).join(" ")}function Be(...e){return e.reduce((t,s)=>(D(s)&&Object.entries(s).forEach(([n,r])=>{const i=V(t[n],r);i.length&&(t[n]=i)}),t),{})}function ot(e){const t=et(e);return Math.sqrt([.299,.587,.114].reduce((s,n,r)=>{const i=parseInt(t.slice(1+r*2,1+(r+1)*2),16);return s+i*i*n},0))<120}class Le{constructor(t){c(this,"ee",new S);c(this,"on",this.ee.on.bind(this.ee));c(this,"off",this.ee.off.bind(this.ee));this.state=t}clone(){return{...this.state}}set(t,s){Object.entries(typeof t=="string"?{[t]:s}:t).reduce((r,[i,o])=>this.state[i]===o||o===void 0?r:(this.state[i]=o,this.ee.emit(`change:${i}`,o),!0),!1)&&this.ee.emit("change",this.state)}get(t){return this.state[t]}}class at{constructor(t){c(this,"state");c(this,"get");c(this,"set");c(this,"clone");this.state=new Le(t),this.set=this.state.set.bind(this.state),this.get=this.state.get.bind(this.state),this.clone=this.state.clone.bind(this.state)}}function Ht(e,t){return s=>E(t[s],e)}class ct extends at{constructor(s,n,r){super(s);c(this,"supports");this.supports=Ht(n,r)}}class Gt extends ct{constructor(s,n,r){super({isVisible:s},n,{show:"web_app_setup_back_button",hide:"web_app_setup_back_button"});c(this,"on",(s,n)=>s==="click"?b("back_button_pressed",n):this.state.on(s,n));c(this,"off",(s,n)=>s==="click"?k("back_button_pressed",n):this.state.off(s,n));this.postEvent=r}set isVisible(s){this.set("isVisible",s),this.postEvent("web_app_setup_back_button",{is_visible:s})}get isVisible(){return this.get("isVisible")}hide(){this.isVisible=!1}show(){this.isVisible=!0}}const ht=T(e=>e instanceof Date?e:new Date(y().parse(e)*1e3),"Date");function U(e,t){return new B(s=>{if(typeof s!="string"&&!(s instanceof URLSearchParams))throw R();const n=typeof s=="string"?new URLSearchParams(s):s;return kt(e,r=>{const i=n.get(r);return i===null?void 0:i})},!1,t)}const Oe=l({id:y(),type:h(),title:h(),photoUrl:{type:h().optional(),from:"photo_url"},username:h().optional()},"Chat").optional(),mt=l({addedToAttachmentMenu:{type:w().optional(),from:"added_to_attachment_menu"},allowsWriteToPm:{type:w().optional(),from:"allows_write_to_pm"},firstName:{type:h(),from:"first_name"},id:y(),isBot:{type:w().optional(),from:"is_bot"},isPremium:{type:w().optional(),from:"is_premium"},languageCode:{type:h().optional(),from:"language_code"},lastName:{type:h().optional(),from:"last_name"},photoUrl:{type:h().optional(),from:"photo_url"},username:h().optional()},"User").optional();function jt(){return U({authDate:{type:ht(),from:"auth_date"},canSendAfter:{type:y().optional(),from:"can_send_after"},chat:Oe,chatInstance:{type:h().optional(),from:"chat_instance"},chatType:{type:h().optional(),from:"chat_type"},hash:h(),queryId:{type:h().optional(),from:"query_id"},receiver:mt,startParam:{type:h().optional(),from:"start_param"},user:mt},"InitData")}function Ue(e){return e.replace(/_[a-z]/g,t=>t[1].toUpperCase())}function $e(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}const zt=T(e=>{const t=st().optional();return Object.entries(tt(e)).reduce((s,[n,r])=>(s[Ue(n)]=t.parse(r),s),{})},"ThemeParams");function $(e){return U({botInline:{type:w().optional(),from:"tgWebAppBotInline"},initData:{type:jt().optional(),from:"tgWebAppData"},initDataRaw:{type:h().optional(),from:"tgWebAppData"},platform:{type:h(),from:"tgWebAppPlatform"},showSettings:{type:w().optional(),from:"tgWebAppShowSettings"},startParam:{type:h().optional(),from:"tgWebAppStartParam"},themeParams:{type:zt(),from:"tgWebAppThemeParams"},version:{type:h(),from:"tgWebAppVersion"}}).parse(e)}function Ft(e){return $(e.replace(/^[^?#]*[?#]/,"").replace(/[?#]/g,"&"))}function We(){return Ft(window.location.href)}function Jt(){return performance.getEntriesByType("navigation")[0]}function He(){const e=Jt();if(!e)throw new Error("Unable to get first navigation entry.");return Ft(e.name)}function Yt(e){return`tma.js/${e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}`}function Kt(e,t){sessionStorage.setItem(Yt(e),JSON.stringify(t))}function Qt(e){const t=sessionStorage.getItem(Yt(e));try{return t?JSON.parse(t):void 0}catch{}}function Ge(){return $(Qt("launchParams")||"")}function pt(e){return JSON.stringify(Object.fromEntries(Object.entries(e).map(([t,s])=>[$e(t),s])))}function Xt(e){const{initDataRaw:t,themeParams:s,platform:n,version:r,showSettings:i,startParam:o,botInline:a}=e,p=new URLSearchParams;return p.set("tgWebAppPlatform",n),p.set("tgWebAppThemeParams",pt(s)),p.set("tgWebAppVersion",r),t&&p.set("tgWebAppData",t),o&&p.set("tgWebAppStartParam",o),typeof i=="boolean"&&p.set("tgWebAppShowSettings",i?"1":"0"),typeof a=="boolean"&&p.set("tgWebAppBotInline",a?"1":"0"),p.toString()}function Zt(e){Kt("launchParams",Xt(e))}function te(){for(const e of[We,He,Ge])try{const t=e();return Zt(t),t}catch{}throw new Error("Unable to retrieve launch parameters from any known source.")}function ut(){const e=Jt();return!!(e&&e.type==="reload")}function je(){let e=0;return()=>(e+=1).toString()}const[ze]=vt(je);function _(e,t){return()=>{const s=te(),n={...s,postEvent:$t(s.version),createRequestId:ze()};if(typeof e=="function")return e(n);const[r,i,o]=X(),a=t({...n,state:ut()?Qt(e):void 0,addCleanup:r}),p=u=>(o||r(u.on("change",ve=>{Kt(e,ve)})),u);return[a instanceof Promise?a.then(p):p(a),i]}}const Fe=_("backButton",({postEvent:e,version:t,state:s={isVisible:!1}})=>new Gt(s.isVisible,t,e));class M extends ct{constructor(){super(...arguments);c(this,"on",this.state.on.bind(this.state));c(this,"off",this.state.off.bind(this.state))}}function ee(e){const t=e.available?e:{available:!1,device_id:"",token_saved:!1,access_requested:!1,access_granted:!1,type:""};return{available:!0,type:t.type,deviceId:t.device_id,tokenSaved:t.token_saved,accessRequested:t.access_requested,accessGranted:t.access_granted}}class se extends M{constructor({postEvent:s,version:n,...r}){super(r,n,{auth:"web_app_biometry_request_auth",openSettings:"web_app_biometry_open_settings",requestAccess:"web_app_biometry_request_access",updateToken:"web_app_biometry_update_token"});c(this,"postEvent");c(this,"authPromise");c(this,"accessPromise");this.postEvent=s}get available(){return this.get("available")}get accessGranted(){return this.get("accessGranted")}get accessRequested(){return this.get("accessRequested")}async authenticate({reason:s,...n}){return this.authPromise||(this.authPromise=d({...n,method:"web_app_biometry_request_auth",event:"biometry_auth_requested",postEvent:this.postEvent,params:{reason:(s||"").trim()}}).then(({token:r})=>r).finally(()=>this.authPromise=void 0)),this.authPromise}get deviceId(){return this.get("deviceId")}openSettings(){this.postEvent("web_app_biometry_open_settings")}requestAccess({reason:s,...n}={}){return this.accessPromise||(this.accessPromise=d({...n,postEvent:this.postEvent,method:"web_app_biometry_request_access",event:"biometry_info_received",params:{reason:s||""}}).then(r=>{const i=ee(r);return this.set(i),i.accessGranted}).finally(()=>this.accessPromise=void 0)),this.accessPromise}get biometryType(){return this.get("biometryType")}get tokenSaved(){return this.get("tokenSaved")}async updateToken({token:s,...n}={}){return["removed","updated"].includes((await d({...n,postEvent:this.postEvent,method:"web_app_biometry_update_token",event:"biometry_token_updated",params:{token:s||""}})).status)}}async function ne(e){return ee(await d({...e||{},method:"web_app_biometry_get_info",event:"biometry_info_received"}))}const Je=_("biometryManager",async({postEvent:e,version:t,state:s})=>new se({...s||E("web_app_biometry_get_info",t)?s||await ne({timeout:1e3}):{available:!1,accessGranted:!1,accessRequested:!1,tokenSaved:!1,deviceId:""},version:t,postEvent:e}));class lt extends at{constructor(){super(...arguments);c(this,"on",this.state.on.bind(this.state));c(this,"off",this.state.off.bind(this.state))}}class re extends lt{constructor(t,s){super({isConfirmationNeeded:t}),this.postEvent=s}set isConfirmationNeeded(t){this.set("isConfirmationNeeded",t),this.postEvent("web_app_setup_closing_behavior",{need_confirmation:t})}get isConfirmationNeeded(){return this.get("isConfirmationNeeded")}disableConfirmation(){this.isConfirmationNeeded=!1}enableConfirmation(){this.isConfirmationNeeded=!0}}const Ye=_("closingBehavior",({postEvent:e,state:t={isConfirmationNeeded:!1}})=>new re(t.isConfirmationNeeded,e));class dt{constructor(t,s){c(this,"supports");this.supports=Ht(t,s)}}function Ke(e){if(Array.isArray(e))return e;if(typeof e=="string")try{const t=JSON.parse(e);if(Array.isArray(t))return t}catch{}throw R()}class Qe extends B{constructor(s,n,r){super(Ke,n,r);c(this,"itemParser");this.itemParser=typeof s=="function"?s:s.parse.bind(s)}parse(s){const n=super.parse(s);return n===void 0?n:n.map(this.itemParser)}of(s){return this.itemParser=typeof s=="function"?s:s.parse.bind(s),this}}function ie(e){return new Qe(t=>t,!1,e)}function yt(e,t){return Object.fromEntries(e.map(s=>[s,t]))}class oe extends dt{constructor(t,s,n){super(t,{delete:"web_app_invoke_custom_method",get:"web_app_invoke_custom_method",getKeys:"web_app_invoke_custom_method",set:"web_app_invoke_custom_method"}),this.createRequestId=s,this.postEvent=n}async delete(t,s={}){const n=Array.isArray(t)?t:[t];n.length&&await v("deleteStorageValues",{keys:n},this.createRequestId(),{...s,postEvent:this.postEvent})}async getKeys(t={}){return ie().of(h()).parse(await v("getStorageKeys",{},this.createRequestId(),{...t,postEvent:this.postEvent}))}async get(t,s={}){const n=Array.isArray(t)?t:[t];if(!n.length)return yt(n,"");const r=await v("getStorageValues",{keys:n},this.createRequestId(),{...s,postEvent:this.postEvent}),i=l(yt(n,h()),"CloudStorageData").parse(r);return Array.isArray(t)?i:i[t]}async set(t,s,n={}){await v("saveStorageValue",{key:t,value:s},this.createRequestId(),{...n,postEvent:this.postEvent})}}const Xe=_(({createRequestId:e,postEvent:t,version:s})=>new oe(s,e,t));class ae extends dt{constructor(t,s){super(t,{impactOccurred:"web_app_trigger_haptic_feedback",notificationOccurred:"web_app_trigger_haptic_feedback",selectionChanged:"web_app_trigger_haptic_feedback"}),this.postEvent=s}impactOccurred(t){this.postEvent("web_app_trigger_haptic_feedback",{type:"impact",impact_style:t})}notificationOccurred(t){this.postEvent("web_app_trigger_haptic_feedback",{type:"notification",notification_type:t})}selectionChanged(){this.postEvent("web_app_trigger_haptic_feedback",{type:"selection_change"})}}const Ze=_(({version:e,postEvent:t})=>new ae(e,t));class ce{constructor(t){this.initData=t}get authDate(){return this.initData.authDate}get canSendAfter(){return this.initData.canSendAfter}get canSendAfterDate(){const{canSendAfter:t}=this;return t?new Date(this.authDate.getTime()+t*1e3):void 0}get chat(){return this.initData.chat}get chatType(){return this.initData.chatType}get chatInstance(){return this.initData.chatInstance}get hash(){return this.initData.hash}get queryId(){return this.initData.queryId}get receiver(){return this.initData.receiver}get startParam(){return this.initData.startParam}get user(){return this.initData.user}}const ts=_(({initData:e})=>e?new ce(e):void 0);function es(e){return jt().parse(e)}class he extends M{constructor(t,s,n){super({isOpened:t},s,{open:"web_app_open_invoice"}),this.postEvent=n}set isOpened(t){this.set("isOpened",t)}get isOpened(){return this.get("isOpened")}async open(t,s){if(this.isOpened)throw new Error("Invoice is already opened");let n;if(!s)n=t;else{const{hostname:r,pathname:i}=new URL(t,window.location.href);if(r!=="t.me")throw new Error(`Incorrect hostname: ${r}`);const o=i.match(/^\/(\$|invoice\/)([A-Za-z0-9\-_=]+)$/);if(!o)throw new Error('Link pathname has incorrect format. Expected to receive "/invoice/{slug}" or "/${slug}"');[,,n]=o}this.isOpened=!0;try{return(await d({method:"web_app_open_invoice",event:"invoice_closed",params:{slug:n},postEvent:this.postEvent,capture(i){return n===i.slug}})).status}finally{this.isOpened=!1}}}const ss=_(({version:e,postEvent:t})=>new he(!1,e,t));class pe extends at{constructor({postEvent:s,...n}){super(n);c(this,"postEvent");c(this,"on",(s,n)=>s==="click"?b("main_button_pressed",n):this.state.on(s,n));c(this,"off",(s,n)=>s==="click"?k("main_button_pressed",n):this.state.off(s,n));this.postEvent=s}get bgColor(){return this.get("bgColor")}commit(){this.text!==""&&this.postEvent("web_app_setup_main_button",{is_visible:this.isVisible,is_active:this.isEnabled,is_progress_visible:this.isLoaderVisible,text:this.text,color:this.bgColor,text_color:this.textColor})}disable(){return this.isEnabled=!1,this}enable(){return this.isEnabled=!0,this}hide(){return this.isVisible=!1,this}hideLoader(){return this.isLoaderVisible=!1,this}set isEnabled(s){this.setParams({isEnabled:s})}get isEnabled(){return this.get("isEnabled")}set isLoaderVisible(s){this.setParams({isLoaderVisible:s})}get isLoaderVisible(){return this.get("isLoaderVisible")}set isVisible(s){this.setParams({isVisible:s})}get isVisible(){return this.get("isVisible")}show(){return this.isVisible=!0,this}showLoader(){return this.isLoaderVisible=!0,this}setText(s){return this.setParams({text:s})}setTextColor(s){return this.setParams({textColor:s})}setBgColor(s){return this.setParams({bgColor:s})}setParams(s){return this.set(s),this.commit(),this}get text(){return this.get("text")}get textColor(){return this.get("textColor")}}const ns=_("mainButton",({postEvent:e,themeParams:t,state:s={isVisible:!1,isEnabled:!1,text:"",isLoaderVisible:!1,textColor:t.buttonTextColor||"#ffffff",bgColor:t.buttonColor||"#000000"}})=>new pe({...s,postEvent:e}));function rs(){return U({contact:l({userId:{type:y(),from:"user_id"},phoneNumber:{type:h(),from:"phone_number"},firstName:{type:h(),from:"first_name"},lastName:{type:h().optional(),from:"last_name"}}),authDate:{type:ht(),from:"auth_date"},hash:h()},"RequestedContact")}function ue(e,t){return s=>{const[n,r]=t[s];return E(n,r,e)}}function is(e){return new Promise(t=>{setTimeout(t,e)})}class le extends M{constructor({postEvent:s,createRequestId:n,version:r,botInline:i,...o}){super(o,r,{requestPhoneAccess:"web_app_request_phone",requestWriteAccess:"web_app_request_write_access",switchInlineQuery:"web_app_switch_inline_query",setHeaderColor:"web_app_set_header_color",setBackgroundColor:"web_app_set_background_color"});c(this,"botInline");c(this,"postEvent");c(this,"createRequestId");c(this,"requestPhoneAccessPromise");c(this,"requestWriteAccessPromise");c(this,"supportsParam");this.createRequestId=n,this.postEvent=s,this.botInline=i;const a=this.supports.bind(this);this.supports=p=>a(p)?p!=="switchInlineQuery"||i:!1,this.supportsParam=ue(r,{"setHeaderColor.color":["web_app_set_header_color","color"]})}async getRequestedContact({timeout:s=1e4}={}){return rs().parse(await v("getRequestedContact",{},this.createRequestId(),{postEvent:this.postEvent,timeout:s}))}get bgColor(){return this.get("bgColor")}close(){this.postEvent("web_app_close")}get headerColor(){return this.get("headerColor")}get isBotInline(){return this.botInline}get isDark(){return ot(this.bgColor)}ready(){this.postEvent("web_app_ready")}async requestContact({timeout:s=5e3}={}){try{return await this.getRequestedContact()}catch{}if(await this.requestPhoneAccess()!=="sent")throw new Error("Access denied.");const r=Date.now()+s;let i=50;return it(async()=>{for(;Date.now()<r;){try{return await this.getRequestedContact()}catch{}await is(i),i+=50}throw Wt(s)},s)}async requestPhoneAccess(s={}){return this.requestPhoneAccessPromise||(this.requestPhoneAccessPromise=d({...s,method:"web_app_request_phone",event:"phone_requested",postEvent:this.postEvent}).then(({status:n})=>n).finally(()=>this.requestPhoneAccessPromise=void 0)),this.requestPhoneAccessPromise}async requestWriteAccess(s={}){return this.requestWriteAccessPromise||(this.requestWriteAccessPromise=d({...s,method:"web_app_request_write_access",event:"write_access_requested",postEvent:this.postEvent}).then(({status:n})=>n).finally(()=>this.requestWriteAccessPromise=void 0)),this.requestWriteAccessPromise}sendData(s){const{size:n}=new Blob([s]);if(!n||n>4096)throw new Error(`Passed data has incorrect size: ${n}`);this.postEvent("web_app_data_send",{data:s})}setHeaderColor(s){this.postEvent("web_app_set_header_color",L(s)?{color:s}:{color_key:s}),this.set("headerColor",s)}setBgColor(s){this.postEvent("web_app_set_background_color",{color:s}),this.set("bgColor",s)}switchInlineQuery(s,n=[]){if(!this.supports("switchInlineQuery")&&!this.isBotInline)throw new Error("Method is unsupported because Mini App should be launched in inline mode.");this.postEvent("web_app_switch_inline_query",{query:s,chat_types:n})}}const os=_("miniApp",({themeParams:e,botInline:t=!1,state:s={bgColor:e.bgColor||"#ffffff",headerColor:e.headerBgColor||"#000000"},...n})=>new le({...n,...s,botInline:t}));function as(e){const t=e.message.trim(),s=(e.title||"").trim(),n=e.buttons||[];let r;if(s.length>64)throw new Error(`Title has incorrect size: ${s.length}`);if(!t.length||t.length>256)throw new Error(`Message has incorrect size: ${t.length}`);if(n.length>3)throw new Error(`Buttons have incorrect size: ${n.length}`);return n.length?r=n.map(i=>{const{id:o=""}=i;if(o.length>64)throw new Error(`Button ID has incorrect size: ${o}`);if(!i.type||i.type==="default"||i.type==="destructive"){const a=i.text.trim();if(!a.length||a.length>64){const p=i.type||"default";throw new Error(`Button text with type "${p}" has incorrect size: ${i.text.length}`)}return{...i,text:a,id:o}}return{...i,id:o}}):r=[{type:"close",id:""}],{title:s,message:t,buttons:r}}class de extends M{constructor(t,s,n){super({isOpened:t},s,{open:"web_app_open_popup"}),this.postEvent=n}set isOpened(t){this.set("isOpened",t)}get isOpened(){return this.get("isOpened")}async open(t){if(this.isOpened)throw new Error("Popup is already opened.");this.isOpened=!0;try{const{button_id:s=null}=await d({event:"popup_closed",method:"web_app_open_popup",postEvent:this.postEvent,params:as(t)});return s}finally{this.isOpened=!1}}}const cs=_(({postEvent:e,version:t})=>new de(!1,t,e));class _e extends M{constructor(t,s,n){super({isOpened:t},s,{close:"web_app_close_scan_qr_popup",open:"web_app_open_scan_qr_popup"}),this.postEvent=n}close(){this.postEvent("web_app_close_scan_qr_popup"),this.isOpened=!1}set isOpened(t){this.set("isOpened",t)}get isOpened(){return this.get("isOpened")}async open(t){if(this.isOpened)throw new Error("The scanner is already opened");const{text:s,capture:n}=(typeof t=="string"?{text:t}:t)||{};this.isOpened=!0;try{const i=(await d({method:"web_app_open_scan_qr_popup",event:["qr_text_received","scan_qr_popup_closed"],postEvent:this.postEvent,params:{text:s},capture(o){return o.event==="scan_qr_popup_closed"||!n||n(o.payload)}})||{}).data||null;return i&&this.close(),i}finally{this.isOpened=!1}}}const hs=_(({version:e,postEvent:t})=>new _e(!1,e,t));class fe extends ct{constructor(s,n,r){super({isVisible:s},n,{show:"web_app_setup_settings_button",hide:"web_app_setup_settings_button"});c(this,"on",(s,n)=>s==="click"?b("settings_button_pressed",n):this.state.on(s,n));c(this,"off",(s,n)=>s==="click"?k("settings_button_pressed",n):this.state.off(s,n));this.postEvent=r}set isVisible(s){this.set("isVisible",s),this.postEvent("web_app_setup_settings_button",{is_visible:s})}get isVisible(){return this.get("isVisible")}hide(){this.isVisible=!1}show(){this.isVisible=!0}}const ps=_("settingsButton",({version:e,postEvent:t,state:s={isVisible:!1}})=>new fe(s.isVisible,e,t));function _t(e){return zt().parse(e)}class ge extends lt{get accentTextColor(){return this.get("accentTextColor")}get bgColor(){return this.get("bgColor")}get buttonColor(){return this.get("buttonColor")}get buttonTextColor(){return this.get("buttonTextColor")}get destructiveTextColor(){return this.get("destructiveTextColor")}getState(){return this.clone()}get headerBgColor(){return this.get("headerBgColor")}get hintColor(){return this.get("hintColor")}get isDark(){return!this.bgColor||ot(this.bgColor)}get linkColor(){return this.get("linkColor")}get secondaryBgColor(){return this.get("secondaryBgColor")}get sectionBgColor(){return this.get("sectionBgColor")}get sectionHeaderTextColor(){return this.get("sectionHeaderTextColor")}get sectionSeparatorColor(){return this.get("sectionHeaderTextColor")}listen(){return b("theme_changed",t=>{this.set(_t(t.theme_params))})}get subtitleTextColor(){return this.get("subtitleTextColor")}get textColor(){return this.get("textColor")}}const us=_("themeParams",({themeParams:e,state:t=e,addCleanup:s})=>{const n=new ge(t);return s(n.listen()),n});function ls(e={}){return d({...e,method:"web_app_request_theme",event:"theme_changed"}).then(_t)}class be extends dt{constructor(s,n,r){super(s,{readTextFromClipboard:"web_app_read_text_from_clipboard"});c(this,"supportsParam");this.version=s,this.createRequestId=n,this.postEvent=r,this.supportsParam=ue(s,{"openLink.tryInstantView":["web_app_open_link","try_instant_view"]})}openLink(s,n){const r=new URL(s,window.location.href).toString();if(!E("web_app_open_link",this.version)){window.open(r,"_blank");return}this.postEvent("web_app_open_link",{url:r,...typeof n=="boolean"?{try_instant_view:n}:{}})}openTelegramLink(s){const{hostname:n,pathname:r,search:i}=new URL(s,"https://t.me");if(n!=="t.me")throw new Error(`URL has not allowed hostname: ${n}. Only "t.me" is allowed`);if(!E("web_app_open_tg_link",this.version)){window.location.href=s;return}this.postEvent("web_app_open_tg_link",{path_full:r+i})}async readTextFromClipboard(){const s=this.createRequestId(),{data:n=null}=await d({method:"web_app_read_text_from_clipboard",event:"clipboard_text_received",postEvent:this.postEvent,params:{req_id:s},capture:rt(s)});return n}shareURL(s,n){this.openTelegramLink("https://t.me/share/url?"+new URLSearchParams({url:s,text:n||""}).toString())}}const ds=_(({version:e,postEvent:t,createRequestId:s})=>new be(e,s,t));async function ft(e={}){const{is_expanded:t,is_state_stable:s,...n}=await d({...e,method:"web_app_request_viewport",event:"viewport_changed"});return{...n,isExpanded:t,isStateStable:s}}function C(e){return e<0?0:e}class we extends lt{constructor({postEvent:s,stableHeight:n,height:r,width:i,isExpanded:o}){super({height:C(r),isExpanded:o,stableHeight:C(n),width:C(i)});c(this,"postEvent");this.postEvent=s}async sync(s){const{isStateStable:n,...r}=await ft(s);this.set({...r,stableHeight:n?r.height:this.get("stableHeight")})}get height(){return this.get("height")}get stableHeight(){return this.get("stableHeight")}listen(){return b("viewport_changed",s=>{const{height:n,width:r,is_expanded:i,is_state_stable:o}=s,a=C(n);this.set({height:a,isExpanded:i,width:C(r),...o?{stableHeight:a}:{}})})}get isExpanded(){return this.get("isExpanded")}get width(){return this.get("width")}expand(){this.postEvent("web_app_expand"),this.set("isExpanded",!0)}get isStable(){return this.stableHeight===this.height}}const _s=_("viewport",async({state:e,platform:t,postEvent:s,addCleanup:n})=>{let r=!1,i=0,o=0,a=0;if(e)r=e.isExpanded,i=e.height,o=e.width,a=e.stableHeight;else if(["macos","tdesktop","unigram","webk","weba","web"].includes(t))r=!0,i=window.innerHeight,o=window.innerWidth,a=window.innerHeight;else{const u=await ft({timeout:1e3,postEvent:s});r=u.isExpanded,i=u.height,o=u.width,a=u.isStateStable?i:0}const p=new we({postEvent:s,height:i,width:o,stableHeight:a,isExpanded:r});return n(p.listen()),p});function m(e,t){document.documentElement.style.setProperty(e,t)}function fs(e,t,s){s||(s=a=>`--tg-${a}-color`);const n=s("header"),r=s("bg"),i=()=>{const{headerColor:a}=e;if(L(a))m(n,a);else{const{bgColor:p,secondaryBgColor:u}=t;a==="bg_color"&&p?m(n,p):a==="secondary_bg_color"&&u&&m(n,u)}m(r,e.bgColor)},o=[t.on("change",i),e.on("change",i)];return i(),()=>o.forEach(a=>a())}function gs(e,t){t||(t=n=>`--tg-theme-${n.replace(/[A-Z]/g,r=>`-${r.toLowerCase()}`)}`);const s=()=>{Object.entries(e.getState()).forEach(([n,r])=>{r&&m(t(n),r)})};return s(),e.on("change",s)}function bs(e,t){t||(t=u=>`--tg-viewport-${u}`);const[s,n,r]=["height","width","stable-height"].map(u=>t(u)),i=()=>m(s,`${e.height}px`),o=()=>m(n,`${e.width}px`),a=()=>m(r,`${e.stableHeight}px`),p=[e.on("change:height",i),e.on("change:width",o),e.on("change:stableHeight",a)];return i(),o(),a(),()=>p.forEach(u=>u())}function ws(e=!0){const t=[b("reload_iframe",()=>{P("iframe_will_reload"),window.location.reload()})],s=()=>t.forEach(n=>n());if(e){const n=document.createElement("style");n.id="telegram-custom-styles",document.head.appendChild(n),t.push(b("set_custom_style",r=>{n.innerHTML=r}),()=>document.head.removeChild(n))}return P("iframe_ready",{reload_supported:!0}),s}function ms(){return typeof window>"u"}async function ys(){if(Lt(window))return!0;try{return await d({method:"web_app_request_theme",event:"theme_changed",timeout:100}),!0}catch{return!1}}function Es(e){const t=typeof e=="string"?$(e):e;Zt(t);function s(r){if(typeof r=="string")try{const{eventType:i}=Mt(r);i==="web_app_request_theme"&&Y("theme_changed",{theme_params:JSON.parse(pt(t.themeParams))}),i==="web_app_request_viewport"&&Y("viewport_changed",{width:window.innerWidth,height:window.innerHeight,is_state_stable:!0,is_expanded:!0})}catch{}}if(nt()){const r=window.parent.postMessage.bind(window.parent);window.parent.postMessage=i=>{s(i),r(i)};return}if(Bt(window)){const r=window.external.notify.bind(window.external);window.external.notify=i=>{s(i),r(i)};return}const n=window.TelegramWebviewProxy;window.TelegramWebviewProxy={...n||{},postEvent(...r){s(JSON.stringify({eventType:r[0],eventData:r[1]})),n&&n.postEvent(...r)}}}function me(e){return e instanceof q}function vs(e,t){return me(e)&&e.type===t}function W(e,t){let s,n,r;return typeof e=="string"?s=e:(s=e.pathname===void 0?t:e.pathname,n=e.params,r=e.id),Object.freeze({id:r||(Math.random()*2**14|0).toString(16),pathname:s,params:n})}class ye{constructor(t,s,n=P){c(this,"history");c(this,"ee",new S);c(this,"attached",!1);c(this,"back",()=>this.go(-1));c(this,"on",this.ee.on.bind(this.ee));c(this,"off",this.ee.off.bind(this.ee));if(this._index=s,this.postEvent=n,t.length===0)throw g(It,"History should not be empty.");if(s<0||s>=t.length)throw g(Nt,"Index should not be zero and higher or equal than history size.");this.history=t.map(r=>W(r,""))}attach(){this.attached||(this.attached=!0,this.sync(),b("back_button_pressed",this.back))}get current(){return this.history[this.index]}detach(){this.attached=!1,k("back_button_pressed",this.back)}forward(){this.go(1)}go(t,s){const n=this.index+t,r=Math.min(Math.max(0,n),this.history.length-1);(n===r||s)&&this.replaceAndMove(r,this.history[r])}goTo(t,s){this.go(t-this.index,s)}get hasPrev(){return this.index>0}get hasNext(){return this.index!==this.history.length-1}get index(){return this._index}push(t){this.hasNext&&this.history.splice(this.index+1),this.replaceAndMove(this.index+1,W(t,this.current.pathname))}replace(t){this.replaceAndMove(this.index,W(t,this.current.pathname))}replaceAndMove(t,s){const n=t-this.index;if(!n&&this.current===s)return;const r=this.current;if(this.index!==t){const i=this._index;this._index=t,this.attached&&i>0!=t>0&&this.sync()}this.history[t]=s,this.ee.emit("change",{navigator:this,from:r,to:this.current,delta:n})}sync(){this.postEvent("web_app_setup_back_button",{is_visible:!!this.index})}}function H({params:e,...t}){return{...e||{hash:"",search:""},...t}}function A(e,t){return e.startsWith(t)?e:`${t}${e}`}function I(e){return new URL(typeof e=="string"?e:`${e.pathname||""}${A(e.search||"","?")}${A(e.hash||"","#")}`,"http://a")}function N(e){const t=typeof e=="string"?e.startsWith("/"):!!(e.pathname&&e.pathname.startsWith("/")),s=I(e);return`${t?s.pathname:s.pathname.slice(1)}${s.search}${s.hash}`}function G(e,t,s){let n,r;typeof e=="string"?n=e:(n=N(e),s=e.state,r=e.id);const{pathname:i,search:o,hash:a}=new URL(n,`http://a${A(t,"/")}`);return{id:r,pathname:i,params:{hash:a,search:o,state:s}}}async function x(e){return e===0?!0:Promise.race([new Promise(t=>{const s=J("popstate",()=>{s(),t(!0)});window.history.go(e)}),new Promise(t=>{setTimeout(t,50,!1)})])}async function Ss(){if(window.history.length<=1||(window.history.pushState(null,""),await x(1-window.history.length)))return;let t=await x(-1);for(;t;)t=await x(-1)}function gt(e){return I(e).pathname}const Et=0,j=1,z=2;class bt{constructor(t,s,{postEvent:n,hashMode:r="classic",base:i}={}){c(this,"navigator");c(this,"ee",new S);c(this,"hashMode");c(this,"base");c(this,"attached",!1);c(this,"onPopState",({state:t})=>{if(t===null)return this.push(this.parsePath(window.location.href));t===Et?window.history.forward():t===j&&this.back(),t===z&&this.forward()});c(this,"onNavigatorChange",async({to:t,from:s,delta:n})=>{this.attached&&await this.syncHistory(),this.ee.emit("change",{delta:n,from:H(s),to:H(t),navigator:this})});c(this,"on",this.ee.on.bind(this.ee));c(this,"off",this.ee.off.bind(this.ee));this.navigator=new ye(t.map(o=>G(o,"/")),s,n),this.navigator.on("change",o=>{this.onNavigatorChange(o)}),this.hashMode=r,this.base=gt(i||"")}async attach(){this.attached||(this.attached=!0,this.navigator.attach(),window.addEventListener("popstate",this.onPopState),await this.syncHistory())}back(){this.navigator.back()}detach(){this.attached=!1,this.navigator.detach(),window.removeEventListener("popstate",this.onPopState)}forward(){return this.navigator.forward()}get index(){return this.navigator.index}get id(){return this.navigator.current.id}go(t,s){return this.navigator.go(t,s)}goTo(t,s){this.navigator.goTo(t,s)}get hash(){return(this.navigator.current.params||{}).hash||""}get hasPrev(){return this.navigator.hasPrev}get hasNext(){return this.navigator.hasNext}get history(){return this.navigator.history.map(H)}get path(){return N(this)}get pathname(){return this.navigator.current.pathname}parsePath(t){let s=I(t);return this.hashMode&&(s=I(s.hash.slice(1))),{pathname:s.pathname,search:s.search,hash:s.hash}}push(t,s){const n=G(t,this.path),{state:r=s}=n.params;this.navigator.push({...n,params:{...n.params,state:r}})}replace(t,s){const n=G(t,this.path),{state:r=s}=n.params;this.navigator.replace({...n,params:{...n.params,state:r}})}renderPath(t){const s=(this.base.length===1?"":this.base)+A(N(t),"/");return this.hashMode?A(s.slice(1),this.hashMode==="classic"?"#":"#/"):s}async syncHistory(){window.removeEventListener("popstate",this.onPopState);const{state:t}=this,s=this.renderPath(this);await Ss(),this.hasPrev&&this.hasNext?(window.history.replaceState(j,""),window.history.pushState(t,"",s),window.history.pushState(z,""),await x(-1)):this.hasPrev?(window.history.replaceState(j,""),window.history.pushState(t,"",s)):this.hasNext?(window.history.replaceState(t,s),window.history.pushState(z,""),await x(-1)):(window.history.replaceState(Et,""),window.history.pushState(t,"",s)),window.addEventListener("popstate",this.onPopState)}get search(){return(this.navigator.current.params||{}).search||""}get state(){return(this.navigator.current.params||{}).state}}function Ee(e){e||(e={});const{href:t,hash:s}=window.location;let n=N(e.hashMode===null?t:s.includes("?")?s.slice(1):`?${s.slice(1)}`);const r=e.base?gt(e.base):void 0;if(r){if(!n.startsWith(r))throw g(qt,`Path "${n}" expected to be starting with "${r}"`);n=n.slice(r.length)}return new bt([n],0,e)}function Ps(e){const t=e.match(/#(.+)/);return t?t[1]:null}function Rs(e,t){if(ut()){const s=sessionStorage.getItem(e);if(s)try{const{index:n,history:r}=JSON.parse(s);return new bt(r,n,t)}catch(n){console.error("Unable to restore hash navigator state.",n)}}return Ee(t)}function Ts(e,t){const s=Rs(e,t),n=()=>sessionStorage.setItem(e,JSON.stringify({index:s.index,history:s.history}));return s.on("change",n),n(),s}exports.BackButton=Gt;exports.BasicNavigator=ye;exports.BiometryManager=se;exports.BrowserNavigator=bt;exports.ClosingBehavior=re;exports.CloudStorage=oe;exports.ERR_INVALID_PATH_BASE=qt;exports.ERR_INVOKE_CUSTOM_METHOD_RESPONSE=Ct;exports.ERR_METHOD_PARAMETER_UNSUPPORTED=Rt;exports.ERR_METHOD_UNSUPPORTED=Pt;exports.ERR_NAVIGATION_HISTORY_EMPTY=It;exports.ERR_NAVIGATION_INDEX_INVALID=Nt;exports.ERR_NAVIGATION_ITEM_INVALID=xe;exports.ERR_PARSE=Z;exports.ERR_SSR_INIT=Ae;exports.ERR_TIMED_OUT=xt;exports.ERR_UNEXPECTED_TYPE=At;exports.ERR_UNKNOWN_ENV=Tt;exports.EventEmitter=S;exports.HapticFeedback=ae;exports.InitData=ce;exports.Invoice=he;exports.MainButton=pe;exports.MiniApp=le;exports.Popup=de;exports.QRScanner=_e;exports.SDKError=q;exports.SettingsButton=fe;exports.ThemeParams=ge;exports.Utils=be;exports.Viewport=we;exports.array=ie;exports.bindMiniAppCSSVars=fs;exports.bindThemeParamsCSSVars=gs;exports.bindViewportCSSVars=bs;exports.boolean=w;exports.captureSameReq=rt;exports.classNames=V;exports.compareVersions=Vt;exports.createBrowserNavigatorFromLocation=Ee;exports.createPostEvent=$t;exports.createSafeURL=I;exports.date=ht;exports.getHash=Ps;exports.getPathname=gt;exports.initBackButton=Fe;exports.initBiometryManager=Je;exports.initClosingBehavior=Ye;exports.initCloudStorage=Xe;exports.initHapticFeedback=Ze;exports.initInitData=ts;exports.initInvoice=ss;exports.initMainButton=ns;exports.initMiniApp=os;exports.initNavigator=Ts;exports.initPopup=cs;exports.initQRScanner=hs;exports.initSettingsButton=ps;exports.initThemeParams=us;exports.initUtils=ds;exports.initViewport=_s;exports.initWeb=ws;exports.invokeCustomMethod=v;exports.isColorDark=ot;exports.isIframe=nt;exports.isPageReload=ut;exports.isRGB=L;exports.isRGBShort=Dt;exports.isSDKError=me;exports.isSDKErrorOfType=vs;exports.isSSR=ms;exports.isTMA=ys;exports.json=l;exports.mergeClassNames=Be;exports.mockTelegramEnv=Es;exports.number=y;exports.off=k;exports.on=b;exports.parseInitData=es;exports.parseLaunchParams=$;exports.parseThemeParams=_t;exports.postEvent=P;exports.request=d;exports.requestBiometryInfo=ne;exports.requestThemeParams=ls;exports.requestViewport=ft;exports.retrieveLaunchParams=te;exports.rgb=st;exports.searchParams=U;exports.serializeLaunchParams=Xt;exports.serializeThemeParams=pt;exports.setCSSVar=m;exports.setDebug=Te;exports.setTargetOrigin=Ve;exports.string=h;exports.subscribe=St;exports.supports=E;exports.targetOrigin=Ut;exports.toRGB=et;exports.unsubscribe=K;exports.urlToPath=N;exports.withTimeout=it;
|
|
1
|
+
"use strict";var cr=Object.defineProperty;var pr=(r,t,s)=>t in r?cr(r,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):r[t]=s;var e=(r,t,s)=>pr(r,typeof t!="symbol"?t+"":t,s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("@tma.js/signals"),h=require("@tma.js/bridge"),O=require("@tma.js/toolkit"),lr=require("better-promises"),q=require("@tma.js/transformers"),K=require("error-kid"),k=require("valibot");var hr=function(r,t,s){if(s||arguments.length===2)for(var n=0,i=t.length,o;n<i;n++)(o||!(n in t))&&(o||(o=Array.prototype.slice.call(t,0,n)),o[n]=t[n]);return r.concat(o||Array.prototype.slice.call(t))};function ot(r,t,s,n,i,o,u,a,l){switch(arguments.length){case 1:return r;case 2:return function(){return t(r.apply(this,arguments))};case 3:return function(){return s(t(r.apply(this,arguments)))};case 4:return function(){return n(s(t(r.apply(this,arguments))))};case 5:return function(){return i(n(s(t(r.apply(this,arguments)))))};case 6:return function(){return o(i(n(s(t(r.apply(this,arguments))))))};case 7:return function(){return u(o(i(n(s(t(r.apply(this,arguments)))))))};case 8:return function(){return a(u(o(i(n(s(t(r.apply(this,arguments))))))))};case 9:return function(){return l(a(u(o(i(n(s(t(r.apply(this,arguments)))))))))}}}function c(r,t,s,n,i,o,u,a,l){switch(arguments.length){case 1:return r;case 2:return t(r);case 3:return s(t(r));case 4:return n(s(t(r)));case 5:return i(n(s(t(r))));case 6:return o(i(n(s(t(r)))));case 7:return u(o(i(n(s(t(r))))));case 8:return a(u(o(i(n(s(t(r)))))));case 9:return l(a(u(o(i(n(s(t(r))))))));default:{for(var p=arguments[0],b=1;b<arguments.length;b++)p=arguments[b](p);return p}}}var he=function(r,t){var s=typeof r=="number"?function(n){return n.length>=r}:r;return function(){var n=Array.from(arguments);return s(arguments)?t.apply(this,n):function(i){return t.apply(void 0,hr([i],n,!1))}}},dr={_tag:"None"},fr=function(r){return{_tag:"Some",value:r}},mr=function(r){return r._tag==="Left"},it=function(r){return{_tag:"Left",left:r}},at=function(r){return{_tag:"Right",right:r}},qe={};function br(r,t){return function(s){return function(n){return r.ap(r.map(n,function(i){return function(o){return t.ap(i,o)}}),s)}}}function _r(r,t){return function(s){return function(n){return r.map(n,function(i){return t.map(i,s)})}}}function xe(r){return function(t,s){return function(n){return r.chain(n,function(i){return r.map(s(i),function(o){var u;return Object.assign({},i,(u={},u[t]=o,u))})})}}}var L=it,I=at,gr=he(2,function(r,t){return ne(r)?r:t(r.right)}),Me=function(r,t){return c(r,H(t))},ut=function(r,t){return c(r,Sr(t))},Te="Either",H=function(r){return function(t){return ne(t)?t:I(r(t.right))}},Fr={URI:Te,map:Me},Cr=I,wr=function(r){return function(t){return ne(t)?t:ne(r)?r:I(t.right(r.right))}},Sr=wr,vr={URI:Te,map:Me,ap:ut},yr={URI:Te,map:Me,ap:ut,chain:gr},kr=function(r,t){return function(s){return ne(s)?L(r(s.left)):I(t(s.right))}},ne=mr,ct=function(r,t){return function(s){return ne(s)?r(s.left):t(s.right)}},de=ct,Er=function(r,t){try{return I(r())}catch(s){return L(t(s))}},Ar=Cr(qe),Br=xe(yr),rt=Br;function D(r){return typeof r=="function"?r():r}function Y(r,t){return _.computed(()=>h.supports(r,D(t)))}var ie=dr,fe=fr,Pr=function(r,t){return c(r,xr(t))},Ir=function(r,t){return c(r,Tr(t))},qr="Option",xr=function(r){return function(t){return pe(t)?ie:fe(r(t.value))}},Mr=fe,Tr=function(r){return function(t){return pe(t)||pe(r)?ie:fe(t.value(r.value))}},Lr=he(2,function(r,t){return pe(r)?ie:t(r.value)}),Or={URI:qr,map:Pr,ap:Ir,chain:Lr},pe=function(r){return r._tag==="None"},Vr=function(r,t){return function(s){return pe(s)?r():t(s.value)}},pt=Vr,Rr=Mr(qe),st=xe(Or);function $r(r){return ot(I,r.of)}function jr(r){return ot(L,r.of)}function Dr(r){return _r(r,Fr)}function Ur(r){return br(r,vr)}function Gr(r){return function(t,s){return r.chain(t,function(n){return ne(n)?r.of(n):s(n.right)})}}function Hr(r){return function(t,s,n){return r.map(t,kr(s,n))}}function Qr(r){return function(t,s){return function(n){return r.map(n,de(t,s))}}}var Le=function(r,t){return c(r,Wr(t))},lt=function(r,t){return c(r,Kr(t))},Wr=function(r){return function(t){return function(){return Promise.resolve().then(t).then(r)}}},Kr=function(r){return function(t){return function(){return Promise.all([Promise.resolve().then(t),Promise.resolve().then(r)]).then(function(s){var n=s[0],i=s[1];return n(i)})}}},Oe=function(r){return function(){return Promise.resolve(r)}},zr=he(2,function(r,t){return function(){return Promise.resolve().then(r).then(function(s){return t(s)()})}}),Ve="Task",Re={URI:Ve,map:Le},ht={of:Oe},Nr={URI:Ve,map:Le,ap:lt},Jr={URI:Ve,map:Le,of:Oe,ap:lt,chain:zr},Yr=function(r,t,s,n){function i(o){return o instanceof s?o:new s(function(u){u(o)})}return new(s||(s=Promise))(function(o,u){function a(b){try{p(n.next(b))}catch(m){u(m)}}function l(b){try{p(n.throw(b))}catch(m){u(m)}}function p(b){b.done?o(b.value):i(b.value).then(a,l)}p((n=n.apply(r,t||[])).next())})},Zr=function(r,t){var s={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,i,o,u;return u={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(u[Symbol.iterator]=function(){return this}),u;function a(p){return function(b){return l([p,b])}}function l(p){if(n)throw new TypeError("Generator is already executing.");for(;u&&(u=0,p[0]&&(s=0)),s;)try{if(n=1,i&&(o=p[0]&2?i.return:p[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,p[1])).done)return o;switch(i=0,o&&(p=[p[0]&2,o.value]),p[0]){case 0:case 1:o=p;break;case 4:return s.label++,{value:p[1],done:!1};case 5:s.label++,i=p[1],p=[0];continue;case 7:p=s.ops.pop(),s.trys.pop();continue;default:if(o=s.trys,!(o=o.length>0&&o[o.length-1])&&(p[0]===6||p[0]===2)){s=0;continue}if(p[0]===3&&(!o||p[1]>o[0]&&p[1]<o[3])){s.label=p[1];break}if(p[0]===6&&s.label<o[1]){s.label=o[1],o=p;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(p);break}o[2]&&s.ops.pop(),s.trys.pop();continue}p=t.call(r,s)}catch(b){p=[6,b],i=0}finally{n=o=0}if(p[0]&5)throw p[1];return{value:p[0]?p[1]:void 0,done:!0}}},R=jr(ht),M=$r(ht),dt=Oe,Xr=Qr(Re),es=function(r,t){return function(){return Yr(void 0,void 0,void 0,function(){var s;return Zr(this,function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,r().then(at)];case 1:return[2,n.sent()];case 2:return s=n.sent(),[2,it(t(s))];case 3:return[2]}})})}},ts=function(r,t){return c(r,x(t))},rs=function(r,t){return c(r,ss(t))},x=Dr(Re),$e=he(3,Hr(Re)),ss=Ur(Nr),je=he(2,Gr(Jr)),ns=M,os="TaskEither",is={URI:os,map:ts,ap:rs,chain:je},as=ns(qe),us=xe(is),Ce=us,X=je,ae=je;function oe(r){return[r]}class ce extends K.errorClassWithData("ValidationError",(t,s)=>({input:t,issues:s}),"Validation error"){}class we extends K.errorClass("CSSVarsBoundError","CSS variables are already bound"){}class ft extends K.errorClass("NotAvailableError",oe){}class cs extends K.errorClass("InvalidEnvError",oe){}class mt extends K.errorClass("FunctionNotAvailableError",oe){}class J extends K.errorClass("InvalidArgumentsError",(t,s)=>[t,{cause:s}]){}class Se extends K.errorClass("ConcurrentCallError",oe){}class bt extends K.errorClass("SetEmojiStatusError",t=>[`Failed to set emoji status: ${t}`]){}class De extends K.errorClass("AccessDeniedError",oe){}class _t extends K.errorClass("FullscreenFailedError",oe){}class gt extends K.errorClass("ShareMessageError",oe){}class Ft extends K.errorClass("UnknownThemeParamsKeyError",t=>[`Unknown theme params key passed: ${t}`]){}function P(r,t){const s=_.computed(()=>D(t.version)||"100"),n=_.computed(()=>D(t.isTma)),{requires:i}=t,o=i?typeof i=="object"?i:{every:[i]}:void 0,u=w=>{if(!t.supports)return!0;const F=t.supports[w];return h.supports(F.method,F.param,s())},a=()=>{if(!o)return;const[w,F]="every"in o?["every",o.every]:["some",o.some];for(let g=0;g<F.length;g++){const v=F[g],d=typeof v=="function"?v():h.supports(v,s())?void 0:`it is unsupported in Mini Apps version ${s()}`;if(d&&(w==="every"||g===F.length-1))return d}},l=(...w)=>{for(const F in t.supports)if(t.supports[F].shouldCheck(...w)&&!u(F))return`option ${F} is not supported in Mini Apps version ${s()}`},p=_.computed(()=>!a()),b=_.computed(()=>s()!=="0.0"),m=_.computed(()=>t.isMounted?t.isMounted():!0),C=_.computed(()=>n()&&b()&&p()&&m()),S=w=>{const F=new mt(w);return["task","promise"].includes(t.returns)?R(F):L(F)};return Object.assign((...w)=>{var V;const F="Unable to call function:";if(!n())return S(`${F} it can't be called outside Mini Apps`);if(!b())return S(`${F} the SDK was not initialized. Use the SDK init() function`);const g=a();if(g)return S(`${F} ${g}`);const v=l(...w);if(v)return S(`${F} ${v}`);if(!m()){const j=(V=t.isMounting)!=null&&V.call(t)?"mounting. Wait for the mount completion":"unmounted. Use the mount() method";return S(`${F} the component is ${j}`)}const{returns:d}=t;return d==="plain"?Er(()=>r(...w),j=>j):d==="promise"?es(()=>r(...w),j=>j):r(...w)},r,{isAvailable:C,ifAvailable(...w){return C()?fe(r(...w)):ie}},o?{isSupported:p}:{},t.supports?{supports:u}:{})}function B(r){return t=>P(t,r)}function f(r){return Object.assign(O.throwifyFpFn(r),{ifAvailable(...t){return c(r.ifAvailable(...t),pt(()=>({ok:!1}),s=>({ok:!0,data:O.throwifyAnyEither(s)})))}})}function Ae(r){const t={};for(const s in r){const n=r[s];n!==void 0&&(t[s]=n)}return t}function ye(r,t){const s=Object.keys(r),n=Object.keys(t);return s.length!==n.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(t,i)&&r[i]===t[i])}class te{constructor({initialState:t,onChange:s}){e(this,"_state");e(this,"state");e(this,"setState",t=>{const s={...this.state(),...Ae(t)};ye(s,this.state())||this._state.set(s)});this._state=_.signal(t,{equals:ye}),this.state=_.computed(this._state),this.state.sub(s)}getter(t){return _.computed(()=>this._state()[t])}hasDiff(t){return!ye({...this.state(),...Ae(t)},this.state())}}class me{constructor({onMounted:t,restoreState:s,initialState:n,onUnmounted:i,isPageReload:o}){e(this,"_isMounted",_.signal(!1));e(this,"isMounted",_.computed(this._isMounted));e(this,"mount");e(this,"unmount");this.mount=()=>{if(this.isMounted())return I(void 0);const u=D(o)?s():void 0,a=u?I(u):typeof n=="function"?n():I(n);return c(a,H(l=>{_.batch(()=>{this._isMounted.set(!0),t==null||t(l)})}))},this.unmount=()=>{this._isMounted()&&_.batch(()=>{this._isMounted.set(!1),i==null||i()})}}}class ve{constructor({isTma:t,storage:s,onClick:n,offClick:i,initialState:o,isPageReload:u,postEvent:a,payload:l,method:p,version:b}){e(this,"isMounted");e(this,"isSupported");e(this,"state");e(this,"stateSetters");e(this,"stateBoolSetters");e(this,"setStateFp");e(this,"setState");e(this,"onClickFp");e(this,"onClick");e(this,"offClickFp");e(this,"offClick");e(this,"mountFp");e(this,"mount");e(this,"unmount");const m=new te({initialState:o,onChange(g){s.set(g)}}),C=new me({initialState:o,isPageReload:u,onMounted:m.setState,restoreState:s.get}),S={version:b,requires:p,isTma:t},w=B({...S,returns:"plain"}),F=B({...S,returns:"either",isMounted:C.isMounted});this.isMounted=C.isMounted,this.isSupported=Y(p,b),this.state=m.state,this.setStateFp=F(g=>{const v={...this.state(),...Ae(g)};return m.hasDiff(v)?c(a(p,l(v)),H(()=>{m.setState(v)})):I(void 0)}),this.setState=f(this.setStateFp),this.onClickFp=w(n),this.onClick=f(this.onClickFp),this.offClickFp=w(i),this.offClick=f(this.offClickFp),this.mountFp=w(()=>{const g=()=>{};return c(C.mount(),de(g,g))}),this.mount=f(this.mountFp),this.unmount=C.unmount,this.stateSetters=g=>{const v=F(d=>this.setStateFp({[g]:d}));return[f(v),v]},this.stateBoolSetters=g=>{const[,v]=this.stateSetters(g),d=F(()=>v(!1)),V=F(()=>v(!0));return[[f(d),d],[f(V),V]]}}stateGetter(t){return _.computed(()=>this.state()[t])}}class Ct{constructor(t){e(this,"isVisible");e(this,"isMounted");e(this,"isSupported");e(this,"hideFp");e(this,"hide");e(this,"showFp");e(this,"show");e(this,"onClickFp");e(this,"onClick");e(this,"offClickFp");e(this,"offClick");e(this,"mountFp");e(this,"mount");e(this,"unmount");const s=new ve({...t,method:"web_app_setup_back_button",payload:n=>({is_visible:n.isVisible}),initialState:{isVisible:!1}});this.isVisible=s.stateGetter("isVisible"),this.isMounted=s.isMounted,this.isSupported=s.isSupported,[[this.hide,this.hideFp],[this.show,this.showFp]]=s.stateBoolSetters("isVisible"),this.onClick=s.onClick,this.onClickFp=s.onClickFp,this.offClick=s.offClick,this.offClickFp=s.offClickFp,this.mount=s.mount,this.mountFp=s.mountFp,this.unmount=s.unmount}}function y(){return{isTma:_.computed(()=>h.isTMAFp())}}function ps(r){return{get:()=>O.getStorageValue(r),set(t){O.setStorageValue(r,t)}}}function ls(){return performance.getEntriesByType("navigation")[0]}function hs(){const r=ls();return!!r&&r.type==="reload"}function be(r){return t=>({...t,...D(r)})}function re(r){return be({storage:ps(r),isPageReload:hs})}function _e(r,t){return _.signal(r,t)}const wt=_e(h.postEventFp),ue=(...r)=>wt()(...r),St=(...r)=>O.throwifyAnyEither(ue(...r)),$=be({postEvent:ue}),Be=_e("0.0"),E=be({version:Be});function Ue(r,t){return{...c(y(),$,E,re(r)),onClick(s,n){return h.on(t,s,n)},offClick(s,n){h.off(t,s,n)}}}const ds=new Ct(Ue("backButton","back_button_pressed"));class Ge{constructor({initialState:t,onMounted:s,restoreState:n,onUnmounted:i,isPageReload:o}){e(this,"_isMounted",_.signal(!1));e(this,"isMounted",_.computed(this._isMounted));e(this,"mount");e(this,"unmount");this.mount=u=>{if(this._isMounted())return M(void 0);const a=D(o)?n():void 0;return c(a?M(a):t(u),x(l=>{this._isMounted()||_.batch(()=>{this._isMounted.set(!0),s==null||s(l)})}))},this.unmount=()=>{this._isMounted()&&_.batch(()=>{this._isMounted.set(!1),i==null||i()})}}}const nt=new ft("Biometry is not available");function ke(r){let t=!1,s=!1,n="",i=!1,o="",u=!1;return r.available&&(t=!0,s=r.token_saved,n=r.device_id,i=r.access_requested,o=r.type,u=r.access_granted),{available:t,tokenSaved:s,deviceId:n,type:o,accessGranted:u,accessRequested:i}}class vt{constructor({version:t,request:s,postEvent:n,storage:i,onInfoReceived:o,offInfoReceived:u,isTma:a,isPageReload:l}){e(this,"isAvailable");e(this,"isSupported");e(this,"isMounted");e(this,"state");e(this,"authenticateFp");e(this,"authenticate");e(this,"openSettingsFp");e(this,"openSettings");e(this,"requestAccessFp");e(this,"requestAccess");e(this,"updateTokenFp");e(this,"updateToken");e(this,"mountFp");e(this,"mount");e(this,"unmount");const p=g=>{b.setState(ke(g))},b=new te({initialState:{available:!1,type:"unknown",accessGranted:!1,accessRequested:!1,deviceId:"",tokenSaved:!1},onChange:i.set}),m=new Ge({initialState(g){return c(s("web_app_biometry_get_info","biometry_info_received",g),x(ke))},isPageReload:l,onMounted(g){b.setState(g),o(p)},onUnmounted(){u(p)},restoreState:i.get}),C={version:t,requires:"web_app_biometry_request_auth",isTma:a},S=B({...C,returns:"either"}),w=B({...C,returns:"task"}),F=B({...C,isMounted:m.isMounted,returns:"task"});this.isAvailable=b.getter("available"),this.isMounted=m.isMounted,this.isSupported=Y("web_app_biometry_request_auth",t),this.state=b.state,this.unmount=m.unmount,this.mountFp=w(m.mount),this.authenticateFp=F(g=>this.isAvailable()?c(s("web_app_biometry_request_auth","biometry_auth_requested",{...g,params:{reason:((g||{}).reason||"").trim()}}),x(v=>(b.setState({token:v.token}),v))):R(nt)),this.openSettingsFp=S(()=>n("web_app_biometry_open_settings")),this.requestAccessFp=F(g=>c(s("web_app_biometry_request_access","biometry_info_received",{...g,params:{reason:((g||{}).reason||"").trim()}}),X(v=>{const d=ke(v);return d.available?(b.setState(d),M(d.accessRequested)):R(nt)}))),this.updateTokenFp=F((g={})=>{var v;return c(s("web_app_biometry_update_token","biometry_token_updated",{...g,params:{token:g.token||"",reason:(v=g.reason)==null?void 0:v.trim()}}),x(d=>d.status))}),this.authenticate=f(this.authenticateFp),this.openSettings=f(this.openSettingsFp),this.requestAccess=f(this.requestAccessFp),this.updateToken=f(this.updateTokenFp),this.mount=f(this.mountFp)}}const He=(r,t,s)=>h.requestFp(r,t,{postEvent:ue,...s}),fs=(...r)=>lr.BetterPromise.fn(()=>He(...r)()),Q=be({request:He}),ms=new vt({...c(y(),$,E,Q,re("biometry")),offInfoReceived(r){h.off("biometry_info_received",r)},onInfoReceived(r){return h.on("biometry_info_received",r)}});class yt{constructor({postEvent:t,storage:s,isTma:n,isPageReload:i}){e(this,"isConfirmationEnabled");e(this,"isMounted");e(this,"mountFp");e(this,"mount");e(this,"unmount");e(this,"disableConfirmationFp");e(this,"disableConfirmation");e(this,"enableConfirmationFp");e(this,"enableConfirmation");const o=new te({initialState:{isConfirmationEnabled:!1},onChange(m){s.set(m)}}),u=new me({onMounted:o.setState,restoreState:s.get,initialState:{isConfirmationEnabled:!1},isPageReload:i}),a={requires:"web_app_setup_closing_behavior",isTma:n},l=B({...a,returns:"plain"}),p=B({...a,returns:"either",isMounted:u.isMounted}),b=m=>m===this.isConfirmationEnabled()?I(void 0):(o.setState({isConfirmationEnabled:m}),t("web_app_setup_closing_behavior",{need_confirmation:m}));this.isConfirmationEnabled=o.getter("isConfirmationEnabled"),this.isMounted=u.isMounted,this.disableConfirmationFp=p(()=>b(!1)),this.enableConfirmationFp=p(()=>b(!0)),this.mountFp=l(()=>{const m=()=>{};return c(u.mount(),de(m,m))}),this.unmount=u.unmount,this.disableConfirmation=f(this.disableConfirmationFp),this.enableConfirmation=f(this.enableConfirmationFp),this.mount=f(this.mountFp)}}const bs=new yt(c(y(),re("closingBehavior"),$));class kt{constructor({version:t,isTma:s,invokeCustomMethod:n}){e(this,"isSupported");e(this,"deleteItemFp");e(this,"deleteItem");e(this,"getItemFp");e(this,"getItem");e(this,"getItemsFp");e(this,"getItems");e(this,"getKeysFp");e(this,"getKeys");e(this,"setItemFp");e(this,"setItem");e(this,"clearFp");e(this,"clear");const i=B({version:t,requires:"web_app_invoke_custom_method",isTma:s,returns:"task"});this.isSupported=Y("web_app_invoke_custom_method",t),this.deleteItemFp=i((o,u)=>{const a=Array.isArray(o)?o:[o];return c(a.length?n("deleteStorageValues",{keys:a},u):M(void 0),x(()=>{}))}),this.getItemFp=i((o,u)=>c(this.getItemsFp([o],u),x(a=>a[o]||""))),this.getItemsFp=i((o,u)=>c(o.length?n("getStorageValues",{keys:o},u):M({}),x(a=>({...o.reduce((l,p)=>(l[p]="",l),{}),...k.parse(k.record(k.string(),k.string()),a)})))),this.getKeysFp=i(o=>c(n("getStorageKeys",{},o),x(u=>k.parse(k.array(k.string()),u)))),this.setItemFp=i((o,u,a)=>c(n("saveStorageValue",{key:o,value:u},a),x(()=>{}))),this.clearFp=i(o=>c(this.getKeysFp(o),X(this.deleteItemFp))),this.deleteItem=f(this.deleteItemFp),this.getItem=f(this.getItemFp),this.getItems=f(this.getItemsFp),this.getKeys=f(this.getKeysFp),this.setItem=f(this.setItemFp),this.clear=f(this.clearFp)}}const Ee=_e(0);function Qe(){return Ee.set(Ee()+1),Ee().toString()}function Et(r,t,s){return h.invokeCustomMethodFp(r,t,Qe(),{...s||{},postEvent:ue})}const We=be({invokeCustomMethod:Et}),_s=new kt(c(y(),E,We));function gs({request:r,...t}){return P(s=>c(r("web_app_request_emoji_status_access","emoji_status_access_requested",s),x(n=>n.status)),{...t,requires:"web_app_request_emoji_status_access",returns:"task"})}const At=gs(c(y(),E,Q)),Fs=f(At);function Cs({request:r,...t}){return P((s,n)=>c(r("web_app_set_emoji_status",["emoji_status_set","emoji_status_failed"],{params:{custom_emoji_id:s,duration:(n||{}).duration},...n}),ae(i=>i&&"error"in i?R(new bt(i.error)):M(void 0))),{...t,requires:"web_app_set_emoji_status",returns:"task"})}const Bt=Cs(c(y(),Q,E)),ws=f(Bt);class Pt{constructor({postEvent:t,isTma:s,version:n}){e(this,"isSupported");e(this,"impactOccurredFp");e(this,"impactOccurred");e(this,"notificationOccurredFp");e(this,"notificationOccurred");e(this,"selectionChangedFp");e(this,"selectionChanged");const i="web_app_trigger_haptic_feedback",o=B({requires:i,isTma:s,version:n,returns:"plain"});this.isSupported=Y(i,n),this.impactOccurredFp=o(u=>t(i,{type:"impact",impact_style:u})),this.notificationOccurredFp=o(u=>t(i,{type:"notification",notification_type:u})),this.selectionChangedFp=o(()=>t(i,{type:"selection_change"})),this.impactOccurred=f(this.impactOccurredFp),this.notificationOccurred=f(this.notificationOccurredFp),this.selectionChanged=f(this.selectionChangedFp)}}const Ss=new Pt(c(y(),$,E));function vs({postEvent:r,...t}){return P(()=>r("web_app_add_to_home_screen"),{...t,requires:"web_app_add_to_home_screen",returns:"either"})}const It=vs(c(y(),E,$)),ys=f(It);function ks({request:r,...t}){return P(s=>c(r("web_app_check_home_screen","home_screen_checked",s),x(n=>n.status||"unknown")),{...t,requires:"web_app_check_home_screen",returns:"task"})}const qt=ks(c(y(),E,Q)),Es=f(qt);class xt{constructor({retrieveInitData:t}){e(this,"_state",_.signal());e(this,"_raw",_.signal());e(this,"state",_.computed(this._state));e(this,"authDate",this.fromState("auth_date"));e(this,"canSendAfter",this.fromState("can_send_after"));e(this,"canSendAfterDate",_.computed(()=>{const t=this.authDate(),s=this.canSendAfter();return s&&t?new Date(t.getTime()+s*1e3):void 0}));e(this,"chat",this.fromState("chat"));e(this,"chatType",this.fromState("chat_type"));e(this,"chatInstance",this.fromState("chat_instance"));e(this,"hash",this.fromState("hash"));e(this,"queryId",this.fromState("query_id"));e(this,"raw",_.computed(this._raw));e(this,"receiver",this.fromState("receiver"));e(this,"signature",this.fromState("signature"));e(this,"startParam",this.fromState("start_param"));e(this,"user",this.fromState("user"));e(this,"restoreFp");e(this,"restore");this.restoreFp=()=>c(t(),H(pt(()=>{},({raw:s,obj:n})=>{this._state.set(n),this._raw.set(s)}))),this.restore=O.throwifyFpFn(this.restoreFp)}fromState(t){return _.computed(()=>{const s=this._state();return s?s[t]:void 0})}}const As=new xt({retrieveInitData(){return c(Ar,rt("obj",()=>c(h.retrieveLaunchParamsFp(),H(({tgWebAppData:r})=>r?fe(r):ie))),rt("raw",h.retrieveRawInitDataFp),H(({obj:r,raw:t})=>c(Rr,st("obj",()=>r),st("raw",()=>t))))}});class Mt{constructor({version:t,request:s,isTma:n}){e(this,"isOpened");e(this,"isSupported");e(this,"openSlugFp");e(this,"openSlug");e(this,"openUrlFp");e(this,"openUrl");const i=B({version:t,isTma:n,requires:"web_app_open_invoice",returns:"task"}),o=_.signal(!1),u=()=>{o.set(!1)};this.isSupported=Y("web_app_open_invoice",t),this.isOpened=_.computed(o),this.openSlugFp=i((a,l)=>c(this.isOpened()?R(new Se("Invoice is already opened")):M(void 0),X(()=>(o.set(!0),s("web_app_open_invoice","invoice_closed",{...l,params:{slug:a},capture:p=>a===p.slug}))),$e(p=>(u(),p),p=>(u(),p.status)))),this.openUrlFp=i((a,l)=>{const{hostname:p,pathname:b}=new URL(a,window.location.href);if(p!=="t.me")return R(new J(`Link has unexpected hostname: ${p}`));const m=b.match(/^\/(\$|invoice\/)([A-Za-z0-9\-_=]+)$/);return m?this.openSlugFp(m[2],l):R(new J('Expected to receive a link with a pathname in format "/invoice/{slug}" or "/${slug}"'))}),this.openUrl=f(this.openUrlFp),this.openSlug=f(this.openSlugFp)}}const Bs=new Mt(c(y(),Q,E));function Ps({postEvent:r,...t}){return P((s,n={})=>{if(typeof s=="string")try{s=new URL(s)}catch(i){return L(new J(`"${s.toString()}" is invalid URL`,i))}return r("web_app_open_link",{url:s.toString(),try_browser:n.tryBrowser,try_instant_view:n.tryInstantView})},{...t,returns:"either"})}const Tt=Ps(c(y(),$)),Is=f(Tt);function qs({postEvent:r,version:t,...s}){return P(n=>{const i=n.toString();return i.match(/^https:\/\/t.me\/.+/)?h.supports("web_app_open_tg_link",D(t))?(n=new URL(n),r("web_app_open_tg_link",{path_full:n.pathname+n.search})):(window.location.href=i,I(void 0)):L(new J(`"${i}" is invalid URL`))},{...s,returns:"either"})}const Ke=qs(c(y(),$,E)),xs=f(Ke);function Ms({openTelegramLink:r,...t}){return P((s,n)=>r("https://t.me/share/url?"+new URLSearchParams({url:s,text:n||""}).toString().replace(/\+/g,"%20")),{...t,returns:"either"})}const Lt=Ms({...y(),openTelegramLink:Ke}),Ts=f(Lt);function Ls(r){let t=!1,s,n;return r.available&&(t=!0,s=r.access_requested,n=r.access_granted),{available:t,accessGranted:n||!1,accessRequested:s||!1}}class Ot{constructor({version:t,request:s,postEvent:n,storage:i,isTma:o,isPageReload:u}){e(this,"state");e(this,"isAvailable");e(this,"isAccessGranted");e(this,"isAccessRequested");e(this,"isMounted");e(this,"isSupported");e(this,"openSettingsFp");e(this,"openSettings");e(this,"requestLocationFp");e(this,"requestLocation");e(this,"mountFp");e(this,"mount");e(this,"unmount");const a=new te({initialState:{available:!1,accessGranted:!1,accessRequested:!1},onChange:i.set}),l=new Ge({isPageReload:u,restoreState:i.get,onMounted:a.setState,initialState(S){return c(s("web_app_check_location","location_checked",S),x(Ls))}}),p={version:t,requires:"web_app_check_location",isTma:o},b=B({...p,returns:"either"}),m=B({...p,returns:"task"}),C=B({...p,returns:"task",isMounted:l.isMounted});this.isAvailable=a.getter("available"),this.isAccessRequested=a.getter("accessRequested"),this.isAccessGranted=a.getter("accessGranted"),this.isSupported=Y("web_app_check_location",t),this.isMounted=l.isMounted,this.state=a.state,this.unmount=l.unmount,this.mountFp=m(l.mount),this.openSettingsFp=b(()=>n("web_app_open_location_settings")),this.requestLocationFp=C(S=>c(s("web_app_request_location","location_requested",S),x(w=>{if(!w.available)return a.setState({available:!1}),null;const{available:F,...g}=w;return g}))),this.mount=f(this.mountFp),this.openSettings=f(this.openSettingsFp),this.requestLocation=f(this.requestLocationFp)}}const Os=new Ot(c(y(),$,E,Q,re("locationManager")));class Vt{constructor({defaults:t,...s}){e(this,"bgColor");e(this,"hasShineEffect");e(this,"isEnabled");e(this,"isLoaderVisible");e(this,"isVisible");e(this,"isMounted");e(this,"state");e(this,"text");e(this,"textColor");e(this,"showFp");e(this,"show");e(this,"hideFp");e(this,"hide");e(this,"enableFp");e(this,"enable");e(this,"enableShineEffectFp");e(this,"enableShineEffect");e(this,"disableFp");e(this,"disable");e(this,"disableShineEffectFp");e(this,"disableShineEffect");e(this,"setBgColorFp");e(this,"setBgColor");e(this,"setTextColorFp");e(this,"setTextColor");e(this,"setTextFp");e(this,"setText");e(this,"showLoaderFp");e(this,"showLoader");e(this,"hideLoaderFp");e(this,"hideLoader");e(this,"setParamsFp");e(this,"setParams");e(this,"mountFp");e(this,"mount");e(this,"unmount");e(this,"onClickFp");e(this,"onClick");e(this,"offClickFp");e(this,"offClick");const n=new ve({...s,version:"100",initialState:{hasShineEffect:!1,isEnabled:!0,isLoaderVisible:!1,isVisible:!1,text:"Continue"},method:"web_app_setup_main_button",payload:o=>({has_shine_effect:o.hasShineEffect,is_visible:o.isVisible,is_active:o.isEnabled,is_progress_visible:o.isLoaderVisible,text:o.text,color:o.bgColor,text_color:o.textColor})}),i=(o,u)=>{const a=n.stateGetter(o);return _.computed(()=>a()||D(u))};this.bgColor=i("bgColor",t.bgColor),this.textColor=i("textColor",t.textColor),this.hasShineEffect=n.stateGetter("hasShineEffect"),this.isEnabled=n.stateGetter("isEnabled"),this.isLoaderVisible=n.stateGetter("isLoaderVisible"),this.text=n.stateGetter("text"),this.isVisible=n.stateGetter("isVisible"),this.isMounted=n.isMounted,this.state=n.state,[this.setBgColor,this.setBgColorFp]=n.stateSetters("bgColor"),[this.setTextColor,this.setTextColorFp]=n.stateSetters("textColor"),[[this.disableShineEffect,this.disableShineEffectFp],[this.enableShineEffect,this.enableShineEffectFp]]=n.stateBoolSetters("hasShineEffect"),[[this.disable,this.disableFp],[this.enable,this.enableFp]]=n.stateBoolSetters("isEnabled"),[[this.hideLoader,this.hideLoaderFp],[this.showLoader,this.showLoaderFp]]=n.stateBoolSetters("isLoaderVisible"),[this.setText,this.setTextFp]=n.stateSetters("text"),[[this.hide,this.hideFp],[this.show,this.showFp]]=n.stateBoolSetters("isVisible"),this.setParams=n.setState,this.setParamsFp=n.setStateFp,this.onClick=n.onClick,this.onClickFp=n.onClickFp,this.offClick=n.offClick,this.offClickFp=n.offClickFp,this.mount=n.mount,this.mountFp=n.mountFp,this.unmount=n.unmount}}function Rt(r,t,s){return c(Ue(r,t),n=>({...n,defaults:s}))}const Pe=_e({});function ze(r,t){document.documentElement.style.setProperty(r,t)}function Ne(r){document.documentElement.style.removeProperty(r)}function $t(r){return c(q.toRGBFullFp(r),H(t=>Math.sqrt([.299,.587,.114].reduce((s,n,i)=>{const o=parseInt(t.slice(1+i*2,1+(i+1)*2),16);return s+o*o*n},0))<120))}const Je=O.throwifyFpFn($t);class jt{constructor({initialState:t,onChange:s,offChange:n,isTma:i,storage:o,isPageReload:u}){e(this,"accentTextColor");e(this,"bgColor");e(this,"buttonColor");e(this,"buttonTextColor");e(this,"bottomBarBgColor");e(this,"destructiveTextColor");e(this,"headerBgColor");e(this,"hintColor");e(this,"linkColor");e(this,"secondaryBgColor");e(this,"sectionBgColor");e(this,"sectionHeaderTextColor");e(this,"sectionSeparatorColor");e(this,"subtitleTextColor");e(this,"textColor");e(this,"_isCssVarsBound",_.signal(!1));e(this,"isCssVarsBound",_.computed(this._isCssVarsBound));e(this,"bindCssVarsFp");e(this,"bindCssVars");e(this,"state");e(this,"isDark",_.computed(()=>{const t=this.bgColor();return!t||Je(t)}));e(this,"isMounted");e(this,"mountFp");e(this,"mount");e(this,"unmount");const a=new te({initialState:{},onChange:o.set}),l=S=>{a.setState(S.theme_params)},p=new me({initialState:()=>I(D(t)),isPageReload:u,onMounted(S){a.setState(S),s(l)},onUnmounted(){n(l)},restoreState:o.get}),b={isTma:i,returns:"either"},m=B(b),C=B({...b,isMounted:p.isMounted});this.accentTextColor=a.getter("accent_text_color"),this.bgColor=a.getter("bg_color"),this.buttonColor=a.getter("button_color"),this.buttonTextColor=a.getter("button_text_color"),this.bottomBarBgColor=a.getter("bottom_bar_bg_color"),this.destructiveTextColor=a.getter("destructive_text_color"),this.headerBgColor=a.getter("header_bg_color"),this.hintColor=a.getter("hint_color"),this.linkColor=a.getter("link_color"),this.secondaryBgColor=a.getter("secondary_bg_color"),this.sectionBgColor=a.getter("section_bg_color"),this.sectionHeaderTextColor=a.getter("section_header_text_color"),this.sectionSeparatorColor=a.getter("section_separator_color"),this.subtitleTextColor=a.getter("subtitle_text_color"),this.textColor=a.getter("text_color"),this.state=a.state,this.isMounted=p.isMounted,this.bindCssVarsFp=C(S=>{if(this._isCssVarsBound())return L(new we);S||(S=g=>`--tg-theme-${O.snakeToKebab(g)}`);const w=g=>{Object.entries(a.state()).forEach(([v,d])=>{d&&g(v,d)})},F=()=>{w((g,v)=>{ze(S(g),v)})};return F(),a.state.sub(F),this._isCssVarsBound.set(!0),I(()=>{w(Ne),a.state.unsub(F),this._isCssVarsBound.set(!1)})}),this.mountFp=m(p.mount),this.unmount=p.unmount,this.bindCssVars=f(this.bindCssVarsFp),this.mount=f(this.mountFp)}}const le=new jt({...c(y(),re("themeParams")),offChange(r){h.off("theme_changed",r)},onChange(r){h.on("theme_changed",r)},initialState:Pe}),Vs=new Vt(Rt("mainButton","main_button_pressed",{bgColor:_.computed(()=>le.buttonColor()||"#2481cc"),textColor:_.computed(()=>le.buttonTextColor()||"#ffffff")}));class Dt{constructor({storage:t,isPageReload:s,version:n,postEvent:i,isTma:o,theme:u,onVisibilityChanged:a,offVisibilityChanged:l}){e(this,"isSupported");e(this,"isDark",_.computed(()=>{const t=this.bgColorRgb();return t?Je(t):!1}));e(this,"isActive");e(this,"state");e(this,"isCssVarsBound");e(this,"bindCssVarsFp");e(this,"bindCssVars");e(this,"isMounted");e(this,"mountFp");e(this,"mount");e(this,"unmount");e(this,"bgColor");e(this,"bgColorRgb");e(this,"setBgColorFp");e(this,"setBgColor");e(this,"headerColor");e(this,"headerColorRgb");e(this,"setHeaderColorFp");e(this,"setHeaderColor");e(this,"bottomBarColor");e(this,"bottomBarColorRgb");e(this,"setBottomBarColorFp");e(this,"setBottomBarColor");e(this,"closeFp");e(this,"close");e(this,"readyFp");e(this,"ready");const p=d=>{C.setState({isActive:d.is_visible})},b=d=>{[[this.headerColor,"web_app_set_header_color"],[this.bgColor,"web_app_set_background_color"],[this.bottomBarColor,"web_app_set_bottom_bar_color"]].forEach(([V,j])=>{const U=V();if(!q.isRGB(U)&&(j==="web_app_set_header_color"||!["bg_color","secondary_bg_color"].includes(U))){const G=d[U];G&&i(j,{color:G})}})},m=new me({initialState(){const d=D(u);return I({bgColor:d.bg_color||"bg_color",headerColor:d.header_bg_color||"header_bg_color",bottomBarColor:d.bottom_bar_bg_color||"bottom_bar_bg_color",isActive:!0})},isPageReload:s,onMounted:d=>{this.setBgColorFp.ifAvailable(d.bgColor),this.setBottomBarColorFp.ifAvailable(d.bottomBarColor),this.setHeaderColorFp.ifAvailable(d.headerColor),a(p),u.sub(b),C.setState(d)},onUnmounted(){l(p),u.unsub(b)},restoreState:t.get});this.isMounted=m.isMounted,this.mountFp=P(()=>{const d=()=>{};return c(m.mount(),de(d,d))},{isTma:o,returns:"plain"}),this.mount=f(this.mountFp),this.unmount=m.unmount;const C=new te({initialState:{bgColor:"bg_color",bottomBarColor:"bottom_bar_bg_color",headerColor:"bg_color",isActive:!1},onChange:t.set});this.state=C.state;const S=d=>q.isRGB(d)?d:D(u)[d],w=d=>_.computed(()=>S(d()));this.isActive=C.getter("isActive"),this.isSupported=_.computed(()=>["web_app_set_header_color","web_app_set_background_color","web_app_set_bottom_bar_color"].some(d=>h.supports(d,D(n))));const F=_.signal(!1);this.isCssVarsBound=_.computed(F),this.bindCssVarsFp=P(d=>{if(F())return L(new we);const[V,j]=O.createCbCollector(()=>{F.set(!1)}),U=(G,W)=>{const z=()=>{ze(G,W()||null)};z(),V(W.sub(z),Ne.bind(null,G))};return d||(d=G=>`--tg-${O.camelToKebab(G)}`),U(d("bgColor"),this.bgColorRgb),U(d("bottomBarColor"),this.bottomBarColorRgb),U(d("headerColor"),this.headerColorRgb),F.set(!0),I(j)},{isTma:o,returns:"either",isMounted:this.isMounted}),this.bindCssVars=f(this.bindCssVarsFp);const g=d=>{const V=C.getter(d),j=w(V),U={headerColor:"web_app_set_header_color",bgColor:"web_app_set_background_color",bottomBarColor:"web_app_set_bottom_bar_color"}[d],G=P(W=>{if(W===V())return I(void 0);if(U==="web_app_set_header_color"&&(W==="bg_color"||W==="secondary_bg_color"))return i("web_app_set_header_color",{color_key:W});const z=S(W);return c(z?i(U,{color:z}):L(new Ft(W)),H(()=>{C.setState({[d]:z})}))},{isTma:o,version:n,requires:U,isMounted:this.isMounted,returns:"either",supports:d==="headerColor"?{rgb:{method:"web_app_set_header_color",param:"color",shouldCheck:q.isRGB}}:void 0});return[V,j,f(G),G]};[this.bgColor,this.bgColorRgb,this.setBgColor,this.setBgColorFp]=g("bgColor"),[this.headerColor,this.headerColorRgb,this.setHeaderColor,this.setHeaderColorFp]=g("headerColor"),[this.bottomBarColor,this.bottomBarColorRgb,this.setBottomBarColor,this.setBottomBarColorFp]=g("bottomBarColor");const v=B({isTma:o,returns:"either"});this.closeFp=v(d=>i("web_app_close",{return_back:d})),this.close=f(this.closeFp),this.readyFp=v(()=>i("web_app_ready")),this.ready=f(this.readyFp)}}const Ut=new Dt({...c(y(),$,E,re("miniApp")),offVisibilityChanged(r){h.off("visibility_changed",r)},onVisibilityChanged(r){h.on("visibility_changed",r)},theme:le.state});function Rs(r){const t=r.message.trim(),s=(r.title||"").trim(),n=r.buttons||[];if(s.length>64)return L(new J(`Invalid title: ${s}`));if(!t||t.length>256)return L(new J(`Invalid message: ${t}`));if(n.length>3)return L(new J(`Invalid buttons count: ${n.length}`));const i=[];if(!n.length)i.push({type:"close",id:""});else for(let o=0;o<n.length;o++){const u=n[o],a=u.id||"";if(a.length>64)return L(new J(`Button with index ${o} has invalid id: ${a}`));if(!u.type||u.type==="default"||u.type==="destructive"){const l=u.text.trim();if(!l||l.length>64)return L(new J(`Button with index ${o} has invalid text: ${l}`));i.push({type:u.type,text:l,id:a})}else i.push({type:u.type,id:a})}return I({title:s,message:t,buttons:i})}class Gt{constructor({version:t,isTma:s,request:n}){e(this,"isOpened");e(this,"isSupported");e(this,"showFp");e(this,"show");const i=_.signal(!1),o=()=>{i.set(!1)},u=B({version:t,isTma:s,requires:"web_app_open_popup",returns:"task"});this.isSupported=Y("web_app_open_popup",t),this.isOpened=_.computed(i),this.showFp=u(a=>c(this.isOpened()?R(new Se("A popup is already opened")):M(void 0),ae(()=>dt(Rs(a))),X(l=>(i.set(!0),n("web_app_open_popup","popup_closed",{...a,params:l}))),$e(l=>(o(),l),l=>(o(),l.button_id)))),this.show=f(this.showFp)}}const $s=new Gt(c(y(),Q,E));function js({request:r,...t}){return P(s=>c(r("web_app_request_phone","phone_requested",s),x(n=>n.status)),{...t,requires:"web_app_request_phone",returns:"task"})}const Ye=js(c(y(),E,Q)),Ds=f(Ye);function Us({invokeCustomMethod:r,requestPhoneAccess:t,...s}){const n=u=>c(r("getRequestedContact",{},{...u,timeout:(u||{}).timeout||5e3}),ae(a=>{const l=k.safeParse(k.string(),a);if(!l.success)return R(new ce(a,l.issues));if(!l.output)return M(void 0);const p=k.safeParse(q.pipeQueryToSchema(k.looseObject({contact:q.pipeJsonToSchema(k.looseObject({user_id:k.number(),phone_number:k.string(),first_name:k.string(),last_name:k.optional(k.string())})),auth_date:k.pipe(k.string(),k.transform(b=>new Date(Number(b)*1e3)),k.date()),hash:k.string()})),l.output);return p.success?M({raw:l.output,parsed:p.output}):R(new ce(l.output,p.issues))})),i=u=>c(n(u),Xr(a=>ce.is(a)?L(a):I(void 0),a=>I(a))),o=u=>O.BetterTaskEither(async(a,l,p)=>{let b=50;for(;!p.isRejected;){const m=await i(p)();if(m._tag==="Left")return l(m.left);if(m.right)return a(m.right);await new Promise(C=>setTimeout(C,b)),b+=50}},u);return P(u=>O.BetterTaskEither.fn(a=>c(i(a),X(l=>l?M(l):c(t(a),ae(p=>p==="sent"?o(a):R(new De("User denied access")))))),u),{...s,returns:"task",requires:"web_app_request_phone"})}function Gs({requestContact:r,...t}){return P(r,{...t,returns:"task",requires:"web_app_request_phone"})}const Ze=Us({...c(y(),We,E),requestPhoneAccess:Ye}),Hs=f(Ze),Ht=Gs({...c(y(),E),requestContact(r){return c(Ze(r),x(t=>t.parsed))}}),Qs=f(Ht);function Ws({request:r,...t}){return P(s=>c(r("web_app_request_write_access","write_access_requested",s),x(n=>n.status)),{...t,requires:"web_app_request_write_access",returns:"task"})}const Qt=Ws(c(y(),E,Q)),Ks=f(Qt);class Wt{constructor({version:t,onClosed:s,onTextReceived:n,isTma:i,postEvent:o}){e(this,"isOpened");e(this,"isSupported");e(this,"captureFp");e(this,"capture");e(this,"closeFp");e(this,"close");e(this,"openFp");e(this,"open");const u={version:t,requires:"web_app_open_scan_qr_popup",isTma:i},a=B({...u,returns:"either"}),l=B({...u,returns:"task"}),p=_.signal(!1),b=()=>{p.set(!1)};this.isSupported=Y("web_app_open_scan_qr_popup",t),this.isOpened=_.computed(p),this.captureFp=l(m=>{let C;return c(this.openFp({...m,onCaptured:S=>{m.capture(S)&&(C=S,this.close())}}),x(()=>C))}),this.closeFp=a(()=>c(o("web_app_close_scan_qr_popup"),H(b))),this.openFp=l(m=>c(this.isOpened()?R(new Se("The QR Scanner is already opened")):async()=>o("web_app_open_scan_qr_popup",{text:m.text}),ae(()=>{const[C,S]=O.createCbCollector(),w=F=>(S(),F);return c(O.BetterTaskEither(F=>{C(s(F),n(m.onCaptured))},m),$e(w,w))}))),this.open=f(this.openFp),this.capture=f(this.captureFp),this.close=f(this.closeFp)}}const zs=new Wt({...c(y(),$,E),onClosed(r){return h.on("scan_qr_popup_closed",r)},onTextReceived(r){return h.on("qr_text_received",t=>{r(t.data)})}});class Kt{constructor({defaults:t,...s}){e(this,"isSupported");e(this,"position");e(this,"bgColor");e(this,"hasShineEffect");e(this,"isEnabled");e(this,"isLoaderVisible");e(this,"isVisible");e(this,"isMounted");e(this,"state");e(this,"text");e(this,"textColor");e(this,"showFp");e(this,"show");e(this,"hideFp");e(this,"hide");e(this,"enableFp");e(this,"enable");e(this,"enableShineEffectFp");e(this,"enableShineEffect");e(this,"disableFp");e(this,"disable");e(this,"disableShineEffectFp");e(this,"disableShineEffect");e(this,"setBgColorFp");e(this,"setBgColor");e(this,"setTextColorFp");e(this,"setTextColor");e(this,"setTextFp");e(this,"setText");e(this,"setPositionFp");e(this,"setPosition");e(this,"showLoaderFp");e(this,"showLoader");e(this,"hideLoaderFp");e(this,"hideLoader");e(this,"setParamsFp");e(this,"setParams");e(this,"mountFp");e(this,"mount");e(this,"unmount");e(this,"onClickFp");e(this,"onClick");e(this,"offClickFp");e(this,"offClick");const n=new ve({...s,initialState:{hasShineEffect:!1,isEnabled:!0,isLoaderVisible:!1,isVisible:!1,text:"Cancel",position:"left"},method:"web_app_setup_secondary_button",payload:o=>({has_shine_effect:o.hasShineEffect,is_visible:o.isVisible,is_active:o.isEnabled,is_progress_visible:o.isLoaderVisible,text:o.text,color:o.bgColor,text_color:o.textColor,position:o.position})}),i=(o,u)=>{const a=n.stateGetter(o);return _.computed(()=>a()||D(u))};this.isSupported=Y("web_app_setup_secondary_button",s.version),this.bgColor=i("bgColor",t.bgColor),this.textColor=i("textColor",t.textColor),this.position=n.stateGetter("position"),this.hasShineEffect=n.stateGetter("hasShineEffect"),this.isEnabled=n.stateGetter("isEnabled"),this.isLoaderVisible=n.stateGetter("isLoaderVisible"),this.text=n.stateGetter("text"),this.isVisible=n.stateGetter("isVisible"),this.isMounted=n.isMounted,this.state=n.state,[this.setPosition,this.setPositionFp]=n.stateSetters("position"),[this.setBgColor,this.setBgColorFp]=n.stateSetters("bgColor"),[this.setTextColor,this.setTextColorFp]=n.stateSetters("textColor"),[[this.disableShineEffect,this.disableShineEffectFp],[this.enableShineEffect,this.enableShineEffectFp]]=n.stateBoolSetters("hasShineEffect"),[[this.disable,this.disableFp],[this.enable,this.enableFp]]=n.stateBoolSetters("isEnabled"),[[this.hideLoader,this.hideLoaderFp],[this.showLoader,this.showLoaderFp]]=n.stateBoolSetters("isLoaderVisible"),[this.setText,this.setTextFp]=n.stateSetters("text"),[[this.hide,this.hideFp],[this.show,this.showFp]]=n.stateBoolSetters("isVisible"),this.setParams=n.setState,this.setParamsFp=n.setStateFp,this.onClick=n.onClick,this.onClickFp=n.onClickFp,this.offClick=n.offClick,this.offClickFp=n.offClickFp,this.mount=n.mount,this.mountFp=n.mountFp,this.unmount=n.unmount}}const Ns=new Kt(Rt("secondaryButton","secondary_button_pressed",{bgColor:_.computed(()=>Ut.bottomBarColorRgb()||"#000000"),textColor:_.computed(()=>le.buttonColor()||"#2481cc")}));class zt{constructor(t){e(this,"isVisible");e(this,"isMounted");e(this,"isSupported");e(this,"hideFp");e(this,"hide");e(this,"showFp");e(this,"show");e(this,"onClickFp");e(this,"onClick");e(this,"offClickFp");e(this,"offClick");e(this,"mountFp");e(this,"mount");e(this,"unmount");const s=new ve({...t,method:"web_app_setup_settings_button",payload:n=>({is_visible:n.isVisible}),initialState:{isVisible:!1}});this.isVisible=s.stateGetter("isVisible"),this.isMounted=s.isMounted,this.isSupported=s.isSupported,[[this.hide,this.hideFp],[this.show,this.showFp]]=s.stateBoolSetters("isVisible"),this.onClick=s.onClick,this.onClickFp=s.onClickFp,this.offClick=s.offClick,this.offClickFp=s.offClickFp,this.mount=s.mount,this.mountFp=s.mountFp,this.unmount=s.unmount}}const Js=new zt(Ue("settingsButton","settings_button_pressed"));class Nt{constructor({postEvent:t,storage:s,isTma:n,isPageReload:i,version:o}){e(this,"isSupported");e(this,"isVerticalEnabled");e(this,"isMounted");e(this,"mountFp");e(this,"mount");e(this,"unmount");e(this,"disableVerticalFp");e(this,"disableVertical");e(this,"enableVerticalFp");e(this,"enableVertical");const u=new te({initialState:{isVerticalEnabled:!1},onChange(C){s.set(C)}}),a=new me({initialState:{isVerticalEnabled:!1},isPageReload:i,onMounted:u.setState,restoreState:s.get}),l={requires:"web_app_setup_swipe_behavior",isTma:n,version:o},p=B({...l,returns:"plain"}),b=B({...l,isMounted:a.isMounted,returns:"either"}),m=C=>{const S={isVerticalEnabled:C};return u.hasDiff(S)?c(t("web_app_setup_swipe_behavior",{allow_vertical_swipe:C}),H(()=>{u.setState(S)})):I(void 0)};this.isSupported=Y("web_app_setup_swipe_behavior",o),this.isVerticalEnabled=u.getter("isVerticalEnabled"),this.isMounted=a.isMounted,this.disableVerticalFp=b(()=>m(!1)),this.enableVerticalFp=b(()=>m(!0)),this.mountFp=p(()=>{const C=()=>{};return c(a.mount(),de(C,C))}),this.unmount=a.unmount,this.disableVertical=f(this.disableVerticalFp),this.enableVertical=f(this.enableVerticalFp),this.mount=f(this.mountFp)}}const Ys=new Nt(c(y(),$,E,re("swipeBehavior")));async function Zs(r){try{const{clipboard:s}=navigator;if(s)return await s.writeText(r)}catch{}const t=document.createElement("textarea");t.value=r,t.style.top="0",t.style.left="0",t.style.position="fixed",document.body.appendChild(t),t.focus(),t.select();try{document.execCommand("copy")}finally{document.body.removeChild(t)}}function Xs({request:r,...t}){return P((s,n,i)=>c(r("web_app_request_file_download","file_download_requested",{...i,params:{url:s,file_name:n}}),X(o=>o.status==="downloading"?M(void 0):R(new De("User denied the action")))),{...t,requires:"web_app_request_file_download",returns:"task"})}const Jt=Xs(c(y(),Q,E)),en=f(Jt);function tn({invokeCustomMethod:r,...t}){return P(s=>c(r("getCurrentTime",{},s),X(n=>{const i=k.safeParse(k.pipe(k.number(),k.integer(),k.transform(o=>new Date(o*1e3)),k.date()),n);return i.success?M(i.output):R(new ce(n,i.issues))})),{...t,requires:"web_app_invoke_custom_method",returns:"task"})}const Yt=tn(c(y(),We,E)),rn=f(Yt);function sn({postEvent:r,...t}){return P(()=>r("web_app_hide_keyboard"),{...t,returns:"either",requires:"web_app_hide_keyboard"})}const Zt=sn(c(y(),$,E)),nn=f(Zt);function on({request:r,createRequestId:t,...s}){return P(n=>{const i=t();return c(r("web_app_read_text_from_clipboard","clipboard_text_received",{...n,params:{req_id:i},capture:h.captureSameReq(i)}),x(({data:o=null})=>o))},{...s,requires:"web_app_read_text_from_clipboard",returns:"task"})}const Xt=on({...c(y(),E,Q),createRequestId:Qe}),an=f(Xt);function er(r){const t={},s=r.match(/Telegram-Android(?:\/([^ ]+))?(?: (\([^)]+\))?|$)/);if(s){const[,n,i]=s;n&&(t.appVersion=n),i&&i.slice(1,i.length-1).split(";").forEach(o=>{const[u,a]=o.trim().split(" ");if(u==="Android")t.androidVersion=a;else if(u==="SDK"){const l=parseInt(a,10);l&&(t.sdkVersion=l)}else a?(t.manufacturer=u,t.model=a):t.performanceClass=u})}return t}function un(){return er(navigator.userAgent)}function cn({postEvent:r,...t}){return P(s=>{const{size:n}=new Blob([s]);return!n||n>4096?L(new J(n?"Maximum size of data to send is 4096 bytes":"Attempted to send empty data")):r("web_app_data_send",{data:s})},{...t,returns:"either"})}const tr=cn(c(y(),$)),pn=f(tr);function ln({request:r,...t}){return P((s,n)=>c(r("web_app_send_prepared_message",["prepared_message_failed","prepared_message_sent"],{...n,params:{id:s}}),X(i=>i&&"error"in i?R(new gt(i.error)):M(void 0))),{...t,requires:"web_app_send_prepared_message",returns:"task"})}const rr=ln(c(y(),Q,E)),hn=f(rr);function dn({postEvent:r,...t}){return P((s,n={})=>r("web_app_share_to_story",{text:n.text,media_url:s,widget_link:n.widgetLink}),{...t,requires:"web_app_share_to_story",returns:"either"})}const sr=dn(c(y(),$,E)),fn=f(sr),Ie=_e(!1);function mn({isInlineMode:r,postEvent:t,...s}){return P((n,i)=>t("web_app_switch_inline_query",{query:n,chat_types:i||[]}),{...s,requires:{every:["web_app_switch_inline_query",()=>D(r)?void 0:"The application must be launched in the inline mode"]},returns:"either"})}const nr=mn({...c(y(),$,E),isInlineMode:Ie}),bn=f(nr);class or{constructor({storage:t,isPageReload:s,onContentSafeAreaInsetsChanged:n,onSafeAreaInsetsChanged:i,onViewportChanged:o,onFullscreenChanged:u,offContentSafeAreaInsetsChanged:a,offFullscreenChanged:l,offSafeAreaInsetsChanged:p,offViewportChanged:b,request:m,isViewportStable:C,isFullscreen:S,isTma:w,version:F,postEvent:g}){e(this,"state");e(this,"height");e(this,"stableHeight");e(this,"width");e(this,"isExpanded");e(this,"isStable",_.computed(()=>this.height()===this.stableHeight()));e(this,"contentSafeAreaInsets");e(this,"contentSafeAreaInsetTop");e(this,"contentSafeAreaInsetLeft");e(this,"contentSafeAreaInsetRight");e(this,"contentSafeAreaInsetBottom");e(this,"safeAreaInsets");e(this,"safeAreaInsetTop");e(this,"safeAreaInsetLeft");e(this,"safeAreaInsetRight");e(this,"safeAreaInsetBottom");e(this,"isFullscreen");e(this,"requestFullscreenFp");e(this,"requestFullscreen");e(this,"exitFullscreenFp");e(this,"exitFullscreen");e(this,"isCssVarsBound");e(this,"bindCssVarsFp");e(this,"bindCssVars");e(this,"isMounted");e(this,"mountFp");e(this,"mount");e(this,"expandFp");e(this,"expand");const v={top:0,right:0,left:0,bottom:0},d=new te({initialState:{contentSafeAreaInsets:v,height:0,isExpanded:!1,isFullscreen:!1,safeAreaInsets:v,stableHeight:0,width:0},onChange:t.set}),V=A=>{d.setState({isExpanded:A.is_expanded,height:A.height,width:A.width,stableHeight:A.is_state_stable?A.height:void 0})},j=A=>{d.setState({isFullscreen:A.is_fullscreen})},U=A=>{d.setState({safeAreaInsets:A})},G=A=>{d.setState({contentSafeAreaInsets:A})},W=new Ge({initialState(A){const se=Z=>()=>{const[ee,N]=Z==="safe-area"?["web_app_request_safe_area","safe_area_changed"]:["web_app_request_content_safe_area","content_safe_area_changed"];return h.supports(ee,D(F))?m(ee,N,A):M({top:0,left:0,right:0,bottom:0})},T=Z=>()=>typeof Z=="boolean"?M(Z):dt(Z());return c(as,Ce("safeAreaInsets",se("safe-area")),Ce("contentSafeAreaInsets",se("content-safe-area")),Ce("isFullscreen",T(S)),Ce("isViewportStable",T(C)),ae(({isViewportStable:Z,...ee})=>Z?M({...ee,height:window.innerHeight,isExpanded:!0,stableHeight:window.innerHeight,width:window.innerWidth}):c(m("web_app_request_viewport","viewport_changed",A),x(N=>({...ee,height:N.height,isExpanded:N.is_expanded,stableHeight:N.is_state_stable?N.height:0,width:N.width})))))},isPageReload:s,onMounted(A){o(V),u(j),i(U),n(G),d.setState(A)},onUnmounted(){b(V),l(j),p(U),a(G)},restoreState:t.get}),z=A=>_.computed(()=>this.safeAreaInsets()[A]),ge=A=>_.computed(()=>this.contentSafeAreaInsets()[A]);this.state=d.state,this.height=d.getter("height"),this.stableHeight=d.getter("stableHeight"),this.width=d.getter("width"),this.isExpanded=d.getter("isExpanded"),this.safeAreaInsets=d.getter("safeAreaInsets"),this.safeAreaInsetTop=z("top"),this.safeAreaInsetBottom=z("bottom"),this.safeAreaInsetLeft=z("left"),this.safeAreaInsetRight=z("right"),this.contentSafeAreaInsets=d.getter("contentSafeAreaInsets"),this.contentSafeAreaInsetTop=ge("top"),this.contentSafeAreaInsetBottom=ge("bottom"),this.contentSafeAreaInsetLeft=ge("left"),this.contentSafeAreaInsetRight=ge("right");const ar=B({isTma:w,returns:"task"}),Xe=B({isTma:w,returns:"either"}),ur=B({isTma:w,requires:"web_app_request_fullscreen",version:F,returns:"task"}),et=A=>ur(se=>c(m(A?"web_app_request_fullscreen":"web_app_exit_fullscreen",["fullscreen_changed","fullscreen_failed"],se),X(T=>"error"in T&&T.error!=="ALREADY_FULLSCREEN"?R(new _t(T.error)):(d.setState({isFullscreen:"is_fullscreen"in T?T.is_fullscreen:!0}),M(void 0)))));this.isMounted=W.isMounted,this.mountFp=ar(W.mount),this.mount=f(this.mountFp),this.isFullscreen=d.getter("isFullscreen"),this.requestFullscreenFp=et(!0),this.requestFullscreen=f(this.requestFullscreenFp),this.exitFullscreenFp=et(!1),this.exitFullscreen=f(this.exitFullscreenFp);const Fe=_.signal(!1);this.isCssVarsBound=_.computed(Fe),this.bindCssVarsFp=Xe(A=>{if(Fe())return L(new we);A||(A=T=>`--tg-viewport-${O.camelToKebab(T)}`);const se=[["height",this.height],["stableHeight",this.stableHeight],["width",this.width],["safeAreaInsetTop",this.safeAreaInsetTop],["safeAreaInsetBottom",this.safeAreaInsetBottom],["safeAreaInsetLeft",this.safeAreaInsetLeft],["safeAreaInsetRight",this.safeAreaInsetRight],["contentSafeAreaInsetTop",this.contentSafeAreaInsetTop],["contentSafeAreaInsetBottom",this.contentSafeAreaInsetBottom],["contentSafeAreaInsetLeft",this.contentSafeAreaInsetLeft],["contentSafeAreaInsetRight",this.contentSafeAreaInsetRight]].reduce((T,[Z,ee])=>{const N=A(Z);if(N){const tt=()=>{ze(N,`${ee()}px`)};T.push({update:tt,removeListener:ee.sub(tt),cssVar:N})}return T},[]);return se.forEach(T=>{T.update()}),Fe.set(!0),I(()=>{se.forEach(T=>{T.removeListener(),Ne(T.cssVar)}),Fe.set(!1)})}),this.bindCssVars=f(this.bindCssVarsFp),this.expandFp=Xe(()=>g("web_app_expand")),this.expand=f(this.expandFp)}}function _n(){const r=o=>({on:u=>{h.on(o,u)},off:u=>{h.off(o,u)}}),t=r("viewport_changed"),s=r("fullscreen_changed"),n=r("safe_area_changed"),i=r("content_safe_area_changed");return new or({...c(y(),re("viewport"),E,$,Q),isFullscreen(){return c(h.retrieveLaunchParamsFp(),H(o=>!!o.tgWebAppFullscreen))},isViewportStable(){return c(h.retrieveLaunchParamsFp(),H(o=>["macos","tdesktop","unigram","webk","weba","web"].includes(o.tgWebAppPlatform)))},offContentSafeAreaInsetsChanged:i.off,offFullscreenChanged:s.off,offSafeAreaInsetsChanged:n.off,offViewportChanged:t.off,onContentSafeAreaInsetsChanged:i.on,onFullscreenChanged:s.on,onSafeAreaInsetsChanged:n.on,onViewportChanged:t.on})}const gn=_n();function ir(r={}){const{version:t,isInlineMode:s,themeParams:n}=r;if(t&&typeof s=="boolean"&&n)Be.set(t),Ie.set(s),Pe.set(n);else{const a=c(h.retrieveLaunchParamsFp(),ct(l=>l,l=>{Be.set(t||l.tgWebAppVersion),Ie.set(typeof s=="boolean"?s:!!l.tgWebAppBotInline),Pe.set(n||l.tgWebAppThemeParams)}));if(a)return L(a)}r.postEvent&&wt.set(r.postEvent);const[i,o]=O.createCbCollector(h.on("reload_iframe",()=>{h.logger().log("Received a request to reload the page"),St("iframe_will_reload"),window.location.reload()})),{acceptCustomStyles:u=!0}=r;if(u){const a=document.createElement("style");a.id="telegram-custom-styles",document.head.appendChild(a),i(h.on("set_custom_style",l=>{a.innerHTML=l}),()=>{document.head.removeChild(a)})}return c(ue("iframe_ready",{reload_supported:!0}),H(()=>(h.logger().log("The package was initialized"),o)))}const Fn=O.throwifyFpFn(ir);Object.defineProperty(exports,"CancelledError",{enumerable:!0,get:()=>h.CancelledError});Object.defineProperty(exports,"InvalidLaunchParamsError",{enumerable:!0,get:()=>h.InvalidLaunchParamsError});Object.defineProperty(exports,"InvokeCustomMethodFailedError",{enumerable:!0,get:()=>h.InvokeCustomMethodFailedError});Object.defineProperty(exports,"LaunchParamsRetrieveError",{enumerable:!0,get:()=>h.LaunchParamsRetrieveError});Object.defineProperty(exports,"MethodParameterUnsupportedError",{enumerable:!0,get:()=>h.MethodParameterUnsupportedError});Object.defineProperty(exports,"MethodUnsupportedError",{enumerable:!0,get:()=>h.MethodUnsupportedError});Object.defineProperty(exports,"TimeoutError",{enumerable:!0,get:()=>h.TimeoutError});Object.defineProperty(exports,"UnknownEnvError",{enumerable:!0,get:()=>h.UnknownEnvError});Object.defineProperty(exports,"applyPolyfills",{enumerable:!0,get:()=>h.applyPolyfills});Object.defineProperty(exports,"createLogger",{enumerable:!0,get:()=>h.createLogger});Object.defineProperty(exports,"createPostEvent",{enumerable:!0,get:()=>h.createPostEvent});Object.defineProperty(exports,"createStartParam",{enumerable:!0,get:()=>h.createStartParam});Object.defineProperty(exports,"createStartParamFp",{enumerable:!0,get:()=>h.createStartParamFp});Object.defineProperty(exports,"debug",{enumerable:!0,get:()=>h.debug});Object.defineProperty(exports,"decodeBase64Url",{enumerable:!0,get:()=>h.decodeBase64Url});Object.defineProperty(exports,"decodeBase64UrlFp",{enumerable:!0,get:()=>h.decodeBase64UrlFp});Object.defineProperty(exports,"decodeStartParam",{enumerable:!0,get:()=>h.decodeStartParam});Object.defineProperty(exports,"decodeStartParamFp",{enumerable:!0,get:()=>h.decodeStartParamFp});Object.defineProperty(exports,"deepSnakeToCamelObjKeys",{enumerable:!0,get:()=>h.deepSnakeToCamelObjKeys});Object.defineProperty(exports,"encodeBase64Url",{enumerable:!0,get:()=>h.encodeBase64Url});Object.defineProperty(exports,"getReleaseVersion",{enumerable:!0,get:()=>h.getReleaseVersion});Object.defineProperty(exports,"isSafeToCreateStartParam",{enumerable:!0,get:()=>h.isSafeToCreateStartParam});Object.defineProperty(exports,"isTMA",{enumerable:!0,get:()=>h.isTMA});Object.defineProperty(exports,"isTMAFp",{enumerable:!0,get:()=>h.isTMAFp});Object.defineProperty(exports,"logger",{enumerable:!0,get:()=>h.logger});Object.defineProperty(exports,"mockTelegramEnv",{enumerable:!0,get:()=>h.mockTelegramEnv});Object.defineProperty(exports,"off",{enumerable:!0,get:()=>h.off});Object.defineProperty(exports,"offAll",{enumerable:!0,get:()=>h.offAll});Object.defineProperty(exports,"on",{enumerable:!0,get:()=>h.on});Object.defineProperty(exports,"retrieveLaunchParams",{enumerable:!0,get:()=>h.retrieveLaunchParams});Object.defineProperty(exports,"retrieveLaunchParamsFp",{enumerable:!0,get:()=>h.retrieveLaunchParamsFp});Object.defineProperty(exports,"retrieveRawInitData",{enumerable:!0,get:()=>h.retrieveRawInitData});Object.defineProperty(exports,"retrieveRawInitDataFp",{enumerable:!0,get:()=>h.retrieveRawInitDataFp});Object.defineProperty(exports,"retrieveRawLaunchParams",{enumerable:!0,get:()=>h.retrieveRawLaunchParams});Object.defineProperty(exports,"retrieveRawLaunchParamsFp",{enumerable:!0,get:()=>h.retrieveRawLaunchParamsFp});Object.defineProperty(exports,"setDebug",{enumerable:!0,get:()=>h.setDebug});Object.defineProperty(exports,"setTargetOrigin",{enumerable:!0,get:()=>h.setTargetOrigin});Object.defineProperty(exports,"supports",{enumerable:!0,get:()=>h.supports});Object.defineProperty(exports,"targetOrigin",{enumerable:!0,get:()=>h.targetOrigin});Object.defineProperty(exports,"isAnyRGB",{enumerable:!0,get:()=>q.isAnyRGB});Object.defineProperty(exports,"isRGB",{enumerable:!0,get:()=>q.isRGB});Object.defineProperty(exports,"isRGBA",{enumerable:!0,get:()=>q.isRGBA});Object.defineProperty(exports,"isRGBAShort",{enumerable:!0,get:()=>q.isRGBAShort});Object.defineProperty(exports,"isRGBShort",{enumerable:!0,get:()=>q.isRGBShort});Object.defineProperty(exports,"parseInitDataQuery",{enumerable:!0,get:()=>q.parseInitDataQuery});Object.defineProperty(exports,"parseInitDataQueryFp",{enumerable:!0,get:()=>q.parseInitDataQueryFp});Object.defineProperty(exports,"parseLaunchParamsQuery",{enumerable:!0,get:()=>q.parseLaunchParamsQuery});Object.defineProperty(exports,"parseLaunchParamsQueryFp",{enumerable:!0,get:()=>q.parseLaunchParamsQueryFp});Object.defineProperty(exports,"serializeInitDataQuery",{enumerable:!0,get:()=>q.serializeInitDataQuery});Object.defineProperty(exports,"serializeLaunchParamsQuery",{enumerable:!0,get:()=>q.serializeLaunchParamsQuery});Object.defineProperty(exports,"toRGB",{enumerable:!0,get:()=>q.toRGB});Object.defineProperty(exports,"toRGBFp",{enumerable:!0,get:()=>q.toRGBFp});Object.defineProperty(exports,"toRGBFull",{enumerable:!0,get:()=>q.toRGBFull});Object.defineProperty(exports,"toRGBFullFp",{enumerable:!0,get:()=>q.toRGBFullFp});exports.AccessDeniedError=De;exports.BackButton=Ct;exports.Biometry=vt;exports.CSSVarsBoundError=we;exports.ClosingBehavior=yt;exports.CloudStorage=kt;exports.ConcurrentCallError=Se;exports.FullscreenFailedError=_t;exports.FunctionUnavailableError=mt;exports.HapticFeedback=Pt;exports.InitData=xt;exports.InvalidArgumentsError=J;exports.InvalidEnvError=cs;exports.Invoice=Mt;exports.LocationManager=Ot;exports.MainButton=Vt;exports.MiniApp=Dt;exports.NotAvailableError=ft;exports.Popup=Gt;exports.QrScanner=Wt;exports.SecondaryButton=Kt;exports.SetEmojiStatusError=bt;exports.SettingsButton=zt;exports.ShareMessageError=gt;exports.SwipeBehavior=Nt;exports.ThemeParams=jt;exports.UnknownThemeParamsKeyError=Ft;exports.ValidationError=ce;exports.Viewport=or;exports.addToHomeScreen=ys;exports.addToHomeScreenFp=It;exports.backButton=ds;exports.biometry=ms;exports.checkHomeScreenStatus=Es;exports.checkHomeScreenStatusFp=qt;exports.closingBehavior=bs;exports.cloudStorage=_s;exports.copyTextToClipboard=Zs;exports.createRequestId=Qe;exports.downloadFile=en;exports.downloadFileFp=Jt;exports.getCurrentTime=rn;exports.getCurrentTimeFp=Yt;exports.hapticFeedback=Ss;exports.hideKeyboard=nn;exports.hideKeyboardFp=Zt;exports.init=Fn;exports.initData=As;exports.initFp=ir;exports.invoice=Bs;exports.invokeCustomMethod=Et;exports.isColorDark=Je;exports.isColorDarkFp=$t;exports.locationManager=Os;exports.mainButton=Vs;exports.miniApp=Ut;exports.openLink=Is;exports.openLinkFp=Tt;exports.openTelegramLink=xs;exports.openTelegramLinkFp=Ke;exports.popup=$s;exports.postEvent=St;exports.postEventFp=ue;exports.qrScanner=zs;exports.readTextFromClipboard=an;exports.readTextFromClipboardFp=Xt;exports.request=fs;exports.requestContact=Qs;exports.requestContactComplete=Hs;exports.requestContactCompleteFp=Ze;exports.requestContactFp=Ht;exports.requestEmojiStatusAccess=Fs;exports.requestEmojiStatusAccessFp=At;exports.requestFp=He;exports.requestPhoneAccess=Ds;exports.requestPhoneAccessFp=Ye;exports.requestWriteAccess=Ks;exports.requestWriteAccessFp=Qt;exports.retrieveAndroidDeviceData=un;exports.retrieveAndroidDeviceDataFrom=er;exports.secondaryButton=Ns;exports.sendData=pn;exports.sendDataFp=tr;exports.setEmojiStatus=ws;exports.setEmojiStatusFp=Bt;exports.settingsButton=Js;exports.shareMessage=hn;exports.shareMessageFp=rr;exports.shareStory=fn;exports.shareStoryFp=sr;exports.shareURL=Ts;exports.shareURLFp=Lt;exports.swipeBehavior=Ys;exports.switchInlineQuery=bn;exports.switchInlineQueryFp=nr;exports.themeParams=le;exports.viewport=gn;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|