@tma.js/sdk 1.4.8 → 1.5.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/dist/dts/bridge/captureSameReq.d.ts +10 -0
- package/dist/dts/bridge/errors/MethodUnsupportedError.d.ts +2 -2
- package/dist/dts/bridge/errors/ParameterUnsupportedError.d.ts +2 -2
- package/dist/dts/bridge/events/events.d.ts +13 -3
- package/dist/dts/bridge/events/on.d.ts +2 -3
- package/dist/dts/bridge/events/once.d.ts +2 -3
- package/dist/dts/bridge/events/parsers/clipboardTextReceived.d.ts +2 -2
- package/dist/dts/bridge/events/parsers/customMethodInvoked.d.ts +2 -2
- package/dist/dts/bridge/events/parsers/invoiceClosed.d.ts +1 -1
- package/dist/dts/bridge/events/parsers/phoneRequested.d.ts +1 -1
- package/dist/dts/bridge/events/parsers/popupClosed.d.ts +1 -1
- package/dist/dts/bridge/events/parsers/qrTextReceived.d.ts +1 -1
- package/dist/dts/bridge/events/parsers/theme-changed.d.ts +2 -2
- package/dist/dts/bridge/events/parsers/viewportChanged.d.ts +1 -1
- package/dist/dts/bridge/events/parsers/writeAccessRequested.d.ts +1 -1
- package/dist/dts/bridge/events/singletonEmitter.d.ts +1 -1
- package/dist/dts/bridge/events/subscribe.d.ts +2 -3
- package/dist/dts/bridge/events/types.d.ts +4 -0
- package/dist/dts/bridge/invokeCustomMethod.d.ts +2 -2
- package/dist/dts/bridge/methods/createPostEvent.d.ts +1 -1
- package/dist/dts/bridge/methods/custom-methods.d.ts +1 -1
- package/dist/dts/bridge/methods/methods.d.ts +9 -8
- package/dist/dts/bridge/request.d.ts +38 -40
- package/dist/dts/classnames/mergeClassNames.d.ts +2 -18
- package/dist/dts/{back-button → components/back-button}/BackButton.d.ts +4 -4
- package/dist/dts/{back-button → components/back-button}/types.d.ts +2 -2
- package/dist/dts/{closing-behavior → components/closing-behavior}/ClosingBehavior.d.ts +6 -3
- package/dist/dts/{closing-behavior → components/closing-behavior}/types.d.ts +1 -1
- package/dist/dts/{cloud-storage → components/cloud-storage}/CloudStorage.d.ts +5 -4
- package/dist/dts/{haptic-feedback → components/haptic-feedback}/HapticFeedback.d.ts +4 -3
- package/dist/dts/components/init-data/chatParser.d.ts +6 -0
- package/dist/dts/components/init-data/initDataParser.d.ts +6 -0
- package/dist/dts/components/init-data/userParser.d.ts +6 -0
- package/dist/dts/{invoice → components/invoice}/Invoice.d.ts +9 -5
- package/dist/dts/{invoice → components/invoice}/types.d.ts +1 -1
- package/dist/dts/{main-button → components/main-button}/MainButton.d.ts +2 -2
- package/dist/dts/{main-button → components/main-button}/types.d.ts +3 -3
- package/dist/dts/{mini-app → components/mini-app}/MiniApp.d.ts +11 -6
- package/dist/dts/components/mini-app/contactParser.d.ts +2 -0
- package/dist/dts/{mini-app → components/mini-app}/types.d.ts +6 -5
- package/dist/dts/{popup → components/popup}/Popup.d.ts +8 -5
- package/dist/dts/{popup → components/popup}/preparePopupParams.d.ts +1 -1
- package/dist/dts/{popup → components/popup}/types.d.ts +1 -1
- package/dist/dts/{qr-scanner → components/qr-scanner}/QRScanner.d.ts +8 -5
- package/dist/dts/{qr-scanner → components/qr-scanner}/types.d.ts +1 -1
- package/dist/dts/{settings-button → components/settings-button}/SettingsButton.d.ts +4 -4
- package/dist/dts/{settings-button → components/settings-button}/types.d.ts +2 -2
- package/dist/dts/{theme-params → components/theme-params}/ThemeParams.d.ts +8 -4
- package/dist/dts/components/theme-params/requestThemeParams.d.ts +7 -0
- package/dist/dts/components/theme-params/themeParamsParser.d.ts +3 -0
- package/dist/dts/{theme-params → components/theme-params}/types.d.ts +2 -2
- package/dist/dts/{utils → components/utils}/Utils.d.ts +4 -4
- package/dist/dts/{viewport → components/viewport}/Viewport.d.ts +9 -5
- package/dist/dts/{viewport → components/viewport}/isStableViewportPlatform.d.ts +1 -1
- package/dist/dts/{viewport → components/viewport}/requestViewport.d.ts +2 -2
- package/dist/dts/{viewport → components/viewport}/types.d.ts +2 -2
- package/dist/dts/css/bindMiniAppCSSVars.d.ts +2 -2
- package/dist/dts/css/bindThemeCSSVars.d.ts +1 -1
- package/dist/dts/css/bindViewportCSSVars.d.ts +1 -1
- package/dist/dts/event-emitter/types.d.ts +1 -1
- package/dist/dts/globals.d.ts +1 -1
- package/dist/dts/index.d.ts +144 -27
- package/dist/dts/init/creators/createBackButton.d.ts +2 -2
- package/dist/dts/init/creators/createClosingBehavior.d.ts +2 -2
- package/dist/dts/init/creators/createMainButton.d.ts +3 -3
- package/dist/dts/init/creators/createMiniApp.d.ts +5 -5
- package/dist/dts/init/creators/createRequestIdGenerator.d.ts +1 -1
- package/dist/dts/init/creators/createSettingsButton.d.ts +2 -2
- package/dist/dts/init/creators/createThemeParams.d.ts +2 -1
- package/dist/dts/init/creators/createViewport.d.ts +3 -3
- package/dist/dts/init/css/processCSSVarsOption.d.ts +3 -3
- package/dist/dts/init/types.d.ts +16 -16
- package/dist/dts/launch-params/launchParamsParser.d.ts +2 -1
- package/dist/dts/launch-params/types.d.ts +3 -3
- package/dist/dts/navigation/HashNavigator/HashNavigator.d.ts +6 -3
- package/dist/dts/navigation/HashNavigator/types.d.ts +1 -2
- package/dist/dts/navigation/Navigator/Navigator.d.ts +1 -1
- package/dist/dts/parsing/ValueParser.d.ts +1 -1
- package/dist/dts/parsing/parsers/array.d.ts +2 -2
- package/dist/dts/parsing/parsers/boolean.d.ts +2 -1
- package/dist/dts/parsing/parsers/date.d.ts +2 -1
- package/dist/dts/parsing/parsers/number.d.ts +2 -1
- package/dist/dts/parsing/parsers/rgb.d.ts +3 -1
- package/dist/dts/parsing/parsers/string.d.ts +2 -1
- package/dist/dts/state/State.d.ts +2 -2
- package/dist/dts/state/types.d.ts +1 -1
- package/dist/dts/storage.d.ts +2 -2
- package/dist/dts/supports/createSupportsFunc.d.ts +2 -2
- package/dist/dts/supports/createSupportsParamFunc.d.ts +2 -2
- package/dist/dts/supports/supports.d.ts +2 -2
- package/dist/dts/supports/types.d.ts +3 -0
- package/dist/dts/timeout/withTimeout.d.ts +2 -2
- package/dist/dts/types/logical.d.ts +16 -0
- package/dist/dts/types/methods.d.ts +1 -1
- package/dist/dts/types/unions.d.ts +20 -0
- package/dist/dts/types/utils.d.ts +0 -28
- package/dist/dts/version/compareVersions.d.ts +2 -1
- package/dist/dts/version/types.d.ts +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.iife.js +1 -1
- package/dist/index.mjs +1714 -1702
- package/package.json +1 -1
- package/dist/dts/back-button/index.d.ts +0 -2
- package/dist/dts/bridge/env/index.d.ts +0 -2
- package/dist/dts/bridge/errors/index.d.ts +0 -2
- package/dist/dts/bridge/events/index.d.ts +0 -9
- package/dist/dts/bridge/events/parsers/index.d.ts +0 -9
- package/dist/dts/bridge/index.d.ts +0 -7
- package/dist/dts/bridge/methods/index.d.ts +0 -6
- package/dist/dts/classnames/index.d.ts +0 -2
- package/dist/dts/closing-behavior/index.d.ts +0 -2
- package/dist/dts/cloud-storage/index.d.ts +0 -1
- package/dist/dts/colors/index.d.ts +0 -5
- package/dist/dts/css/index.d.ts +0 -4
- package/dist/dts/event-emitter/index.d.ts +0 -2
- package/dist/dts/haptic-feedback/index.d.ts +0 -1
- package/dist/dts/init/creators/index.d.ts +0 -8
- package/dist/dts/init/css/index.d.ts +0 -1
- package/dist/dts/init/index.d.ts +0 -2
- package/dist/dts/init-data/chatParser.d.ts +0 -5
- package/dist/dts/init-data/index.d.ts +0 -6
- package/dist/dts/init-data/initDataParser.d.ts +0 -5
- package/dist/dts/init-data/userParser.d.ts +0 -5
- package/dist/dts/invoice/index.d.ts +0 -2
- package/dist/dts/launch-params/index.d.ts +0 -10
- package/dist/dts/logger/index.d.ts +0 -1
- package/dist/dts/main-button/index.d.ts +0 -2
- package/dist/dts/mini-app/contactParser.d.ts +0 -2
- package/dist/dts/mini-app/index.d.ts +0 -2
- package/dist/dts/misc/index.d.ts +0 -5
- package/dist/dts/navigation/HashNavigator/index.d.ts +0 -2
- package/dist/dts/navigation/Navigator/index.d.ts +0 -2
- package/dist/dts/navigation/index.d.ts +0 -4
- package/dist/dts/parsing/index.d.ts +0 -10
- package/dist/dts/parsing/parsers/index.d.ts +0 -8
- package/dist/dts/popup/index.d.ts +0 -2
- package/dist/dts/qr-scanner/index.d.ts +0 -2
- package/dist/dts/settings-button/index.d.ts +0 -2
- package/dist/dts/state/index.d.ts +0 -2
- package/dist/dts/supports/index.d.ts +0 -4
- package/dist/dts/theme-params/index.d.ts +0 -6
- package/dist/dts/theme-params/requestThemeParams.d.ts +0 -7
- package/dist/dts/theme-params/themeParamsParser.d.ts +0 -2
- package/dist/dts/timeout/index.d.ts +0 -4
- package/dist/dts/types/index.d.ts +0 -4
- package/dist/dts/utils/index.d.ts +0 -1
- package/dist/dts/version/index.d.ts +0 -2
- package/dist/dts/viewport/index.d.ts +0 -4
- /package/dist/dts/{init-data → components/init-data}/InitData.d.ts +0 -0
- /package/dist/dts/{init-data → components/init-data}/parseInitData.d.ts +0 -0
- /package/dist/dts/{init-data → components/init-data}/types.d.ts +0 -0
- /package/dist/dts/{theme-params → components/theme-params}/keys.d.ts +0 -0
- /package/dist/dts/{theme-params → components/theme-params}/parseThemeParams.d.ts +0 -0
- /package/dist/dts/{theme-params → components/theme-params}/serializeThemeParams.d.ts +0 -0
- /package/dist/dts/{viewport → components/viewport}/utils.d.ts +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { InitDataParsed } from '../init-data/
|
|
2
|
-
import type { ThemeParamsParsed } from '../theme-params/
|
|
3
|
-
import type { Platform } from '../types/
|
|
1
|
+
import type { InitDataParsed } from '../components/init-data/types.js';
|
|
2
|
+
import type { ThemeParamsParsed } from '../components/theme-params/types.js';
|
|
3
|
+
import type { Platform } from '../types/platform.js';
|
|
4
4
|
/**
|
|
5
5
|
* Telegram Mini Apps launch parameters.
|
|
6
6
|
* @see https://docs.telegram-mini-apps.com/platform/launch-parameters
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { HashNavigatorEventsMap, HashNavigatorOptions } from './types.js';
|
|
2
|
-
import {
|
|
2
|
+
import { EventEmitter } from '../../event-emitter/EventEmitter.js';
|
|
3
|
+
import { Navigator } from '../Navigator/Navigator.js';
|
|
3
4
|
import type { NavigatorConEntry, PerformGoOptions, PerformPushOptions, PerformReplaceOptions } from '../Navigator/types.js';
|
|
5
|
+
type HashNavigatorEventEmitter = EventEmitter<HashNavigatorEventsMap>;
|
|
4
6
|
export declare class HashNavigator extends Navigator<Promise<void>> {
|
|
5
7
|
/**
|
|
6
8
|
* Creates navigator from current window location hash.
|
|
@@ -35,9 +37,10 @@ export declare class HashNavigator extends Navigator<Promise<void>> {
|
|
|
35
37
|
/**
|
|
36
38
|
* Adds new event listener.
|
|
37
39
|
*/
|
|
38
|
-
on:
|
|
40
|
+
on: HashNavigatorEventEmitter['on'];
|
|
39
41
|
/**
|
|
40
42
|
* Removes event listener.
|
|
41
43
|
*/
|
|
42
|
-
off:
|
|
44
|
+
off: HashNavigatorEventEmitter['off'];
|
|
43
45
|
}
|
|
46
|
+
export {};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { HashNavigator } from './HashNavigator.js';
|
|
2
|
-
import type { NavigatorOptions } from '../Navigator/
|
|
3
|
-
import type { NavigationEntry } from '../Navigator/types.js';
|
|
2
|
+
import type { NavigationEntry, NavigatorOptions } from '../Navigator/types.js';
|
|
4
3
|
export type HashNavigatorOptions = Omit<NavigatorOptions, 'loggerPrefix'>;
|
|
5
4
|
interface ChangeEventPayload {
|
|
6
5
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Logger } from '../../logger/index.js';
|
|
2
1
|
import type { AnyEntry, NavigationEntry, NavigatorConEntry, NavigatorOptions, PerformGoOptions, PerformPushOptions, PerformReplaceOptions } from './types.js';
|
|
2
|
+
import { Logger } from '../../logger/Logger.js';
|
|
3
3
|
/**
|
|
4
4
|
* Represents basic navigator implementation which uses only memory to store and control
|
|
5
5
|
* navigation state.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ArrayValueParser } from '../ArrayValueParser.js';
|
|
2
2
|
/**
|
|
3
3
|
* Parses incoming value as an array.
|
|
4
|
-
* @param
|
|
4
|
+
* @param parserTypeName - parser type name.
|
|
5
5
|
*/
|
|
6
|
-
export declare function array(
|
|
6
|
+
export declare function array(parserTypeName?: string): ArrayValueParser<unknown, false>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import type { ValueParserGenerator } from '../createValueParserGenerator.js';
|
|
1
2
|
/**
|
|
2
3
|
* Returns parser to parse value as boolean.
|
|
3
4
|
*/
|
|
4
|
-
export declare const boolean:
|
|
5
|
+
export declare const boolean: ValueParserGenerator<boolean>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import type { ValueParserGenerator } from '../createValueParserGenerator.js';
|
|
1
2
|
/**
|
|
2
3
|
* Returns parser to parse value as Date.
|
|
3
4
|
*/
|
|
4
|
-
export declare const date:
|
|
5
|
+
export declare const date: ValueParserGenerator<Date>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import type { ValueParserGenerator } from '../createValueParserGenerator.js';
|
|
1
2
|
/**
|
|
2
3
|
* Returns parser to parse value as number.
|
|
3
4
|
*/
|
|
4
|
-
export declare const number:
|
|
5
|
+
export declare const number: ValueParserGenerator<number>;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { RGB } from '../../colors/types.js';
|
|
2
|
+
import type { ValueParserGenerator } from '../createValueParserGenerator.js';
|
|
1
3
|
/**
|
|
2
4
|
* Returns parser to parse value as RGB color.
|
|
3
5
|
*/
|
|
4
|
-
export declare const rgb:
|
|
6
|
+
export declare const rgb: ValueParserGenerator<RGB>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import type { ValueParserGenerator } from '../createValueParserGenerator.js';
|
|
1
2
|
/**
|
|
2
3
|
* Returns parser to parse value as string.
|
|
3
4
|
*/
|
|
4
|
-
export declare const string:
|
|
5
|
+
export declare const string: ValueParserGenerator<string>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { EventEmitter } from '../event-emitter/index.js';
|
|
2
|
-
import type { StringKeys } from '../types/index.js';
|
|
3
1
|
import type { StateEvents } from './types.js';
|
|
2
|
+
import type { EventEmitter } from '../event-emitter/EventEmitter.js';
|
|
3
|
+
import type { StringKeys } from '../types/utils.js';
|
|
4
4
|
/**
|
|
5
5
|
* Represents state which is observable via passed EventEmitter.
|
|
6
6
|
*/
|
package/dist/dts/storage.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { HeaderColorKey } from './bridge/
|
|
2
|
-
import type { RGB } from './colors/
|
|
1
|
+
import type { HeaderColorKey } from './bridge/methods/methods.js';
|
|
2
|
+
import type { RGB } from './colors/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Describes storage keys and according values.
|
|
5
5
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { MiniAppsMethodName } from '../bridge/index.js';
|
|
2
|
-
import type { Version } from '../version/index.js';
|
|
3
1
|
import type { SupportsFunc } from './types.js';
|
|
2
|
+
import type { MiniAppsMethodName } from '../bridge/methods/methods.js';
|
|
3
|
+
import type { Version } from '../version/types.js';
|
|
4
4
|
/**
|
|
5
5
|
* Returns function, which accepts predefined method name and checks if it is supported
|
|
6
6
|
* via passed schema and version.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { MiniAppsMethodVersionedParams, MiniAppsMethodWithVersionedParams } from '../bridge/index.js';
|
|
2
|
-
import type { Version } from '../version/index.js';
|
|
3
1
|
import type { SupportsFunc } from './types.js';
|
|
2
|
+
import type { MiniAppsMethodVersionedParams, MiniAppsMethodWithVersionedParams } from '../bridge/methods/methods.js';
|
|
3
|
+
import type { Version } from '../version/types.js';
|
|
4
4
|
type HasCheckSupportMethodTuple = {
|
|
5
5
|
[M in MiniAppsMethodWithVersionedParams]: [M, MiniAppsMethodVersionedParams<M>];
|
|
6
6
|
}[MiniAppsMethodWithVersionedParams];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
1
|
+
import type { MiniAppsMethodName, MiniAppsMethodVersionedParams, MiniAppsMethodWithVersionedParams } from '../bridge/methods/methods.js';
|
|
2
|
+
import type { Version } from '../version/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Returns true in case, passed parameter in specified method is supported.
|
|
5
5
|
* @param method - method name
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Accepts specified function and instantly executes. It waits for timeout milliseconds for
|
|
3
3
|
* it to complete and throws an error in case, deadline was reached.
|
|
4
|
-
* @param
|
|
4
|
+
* @param funcOrPromise - function to execute or pending promise.
|
|
5
5
|
* @param timeout - completion timeout.
|
|
6
6
|
*/
|
|
7
|
-
export declare function withTimeout<T>(
|
|
7
|
+
export declare function withTimeout<T>(funcOrPromise: Promise<T> | (() => Promise<T>), timeout: number): Promise<T>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents classic "if" condition.
|
|
3
|
+
*/
|
|
4
|
+
export type If<Cond extends boolean, True, False> = Cond extends true ? True : False;
|
|
5
|
+
/**
|
|
6
|
+
* Represents classic "not" logical operation.
|
|
7
|
+
*/
|
|
8
|
+
export type Not<Cond extends boolean> = If<Cond, false, true>;
|
|
9
|
+
/**
|
|
10
|
+
* Represents classic "and" logical operation.
|
|
11
|
+
*/
|
|
12
|
+
export type And<A extends boolean, B extends boolean> = A extends true ? B extends true ? true : false : false;
|
|
13
|
+
/**
|
|
14
|
+
* Represents classic "or" logical operation.
|
|
15
|
+
*/
|
|
16
|
+
export type Or<A extends boolean, B extends boolean> = A extends true ? true : (B extends true ? true : false);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns union keys removing those, which values are not strings.
|
|
3
|
+
*/
|
|
4
|
+
export type UnionStringKeys<U> = U extends U ? {
|
|
5
|
+
[K in keyof U]-?: U[K] extends string | undefined ? K : never;
|
|
6
|
+
}[keyof U] : never;
|
|
7
|
+
/**
|
|
8
|
+
* Returns union required keys.
|
|
9
|
+
*/
|
|
10
|
+
export type UnionRequiredKeys<U> = U extends U ? {
|
|
11
|
+
[K in UnionStringKeys<U>]: ({} extends Pick<U, K> ? never : K);
|
|
12
|
+
}[UnionStringKeys<U>] : never;
|
|
13
|
+
/**
|
|
14
|
+
* Returns union optional keys.
|
|
15
|
+
*/
|
|
16
|
+
export type UnionOptionalKeys<U> = Exclude<UnionStringKeys<U>, UnionRequiredKeys<U>>;
|
|
17
|
+
/**
|
|
18
|
+
* Returns union object keys.
|
|
19
|
+
*/
|
|
20
|
+
export type UnionKeys<T> = T extends T ? keyof T : never;
|
|
@@ -2,34 +2,6 @@
|
|
|
2
2
|
* Returns true in case, T is never.
|
|
3
3
|
*/
|
|
4
4
|
export type IsNever<T> = [T] extends [never] ? true : false;
|
|
5
|
-
/**
|
|
6
|
-
* Represents classic "if" condition.
|
|
7
|
-
*/
|
|
8
|
-
export type If<Cond extends boolean, True, False> = Cond extends true ? True : False;
|
|
9
|
-
/**
|
|
10
|
-
* Represents classic "not" bitwise operation.
|
|
11
|
-
*/
|
|
12
|
-
export type Not<Cond extends boolean> = If<Cond, false, true>;
|
|
13
|
-
/**
|
|
14
|
-
* Represents classic "and" bitwise operation.
|
|
15
|
-
*/
|
|
16
|
-
export type And<A extends boolean, B extends boolean> = A extends true ? B extends true ? true : false : false;
|
|
17
|
-
/**
|
|
18
|
-
* Represents classic "or" bitwise operation.
|
|
19
|
-
*/
|
|
20
|
-
export type Or<A extends boolean, B extends boolean> = A extends true ? true : (B extends true ? true : false);
|
|
21
|
-
/**
|
|
22
|
-
* True if value includes undefined.
|
|
23
|
-
*/
|
|
24
|
-
export type HasUndefined<T> = undefined extends T ? true : false;
|
|
25
|
-
/**
|
|
26
|
-
* Returns true if specified property in type is marked as optional.
|
|
27
|
-
*/
|
|
28
|
-
export type IsOptional<Type, Key extends keyof Type> = {} extends Pick<Type, Key> ? true : false;
|
|
29
|
-
/**
|
|
30
|
-
* Returns union object keys.
|
|
31
|
-
*/
|
|
32
|
-
export type UnionKeys<T> = T extends T ? keyof T : never;
|
|
33
5
|
/**
|
|
34
6
|
* Returns object string keys.
|
|
35
7
|
*/
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Version } from './types.js';
|
|
1
2
|
/**
|
|
2
3
|
* Returns 1 in case, version "a" is greater than "b".
|
|
3
4
|
* Returns 0 in case, version "a" equal to "b".
|
|
@@ -5,4 +6,4 @@
|
|
|
5
6
|
* @param a - first version.
|
|
6
7
|
* @param b - second version.
|
|
7
8
|
*/
|
|
8
|
-
export declare function compareVersions(a:
|
|
9
|
+
export declare function compareVersions(a: Version, b: Version): number;
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var ot=Object.defineProperty;var at=(r,e,t)=>e in r?ot(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var o=(r,e,t)=>(at(r,typeof e!="symbol"?e+"":e,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function ve(){return performance.getEntriesByType("navigation")[0]}function ie(){try{return window.self!==window.top}catch{return!0}}function oe(){var r;return((r=ve())==null?void 0:r.type)==="reload"}function V(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}function B(){return new TypeError("Value has unexpected type")}class U extends Error{constructor(t,{cause:s,type:n}={}){super(`Unable to parse value${n?` as ${n}`:""}`,{cause:s});o(this,"type");this.value=t,Object.setPrototypeOf(this,U.prototype),this.type=n}}class J{constructor(e,t,s){this.parser=e,this.isOptional=t,this.type=s}parse(e){if(!(this.isOptional&&e===void 0))try{return this.parser(e)}catch(t){throw new U(e,{type:this.type,cause:t})}}optional(){return this.isOptional=!0,this}}function ct(r){if(Array.isArray(r))return r;if(typeof r=="string")try{const e=JSON.parse(r);if(Array.isArray(e))return e}catch{}throw B()}class ht extends J{constructor(t,s,n){super(ct,s,n);o(this,"itemParser");this.itemParser=typeof t=="function"?t:t.parse.bind(t)}parse(t){const s=super.parse(t);return s===void 0?s:s.map(this.itemParser)}of(t){return this.itemParser=typeof t=="function"?t:t.parse.bind(t),this}}function $(r,e){return()=>new J(r,!1,e)}class M extends Error{constructor(e,{cause:t,type:s}={}){super(`Unable to parse field "${e}"${s?` as ${s}`:""}`,{cause:t}),Object.setPrototypeOf(this,M.prototype)}}function Pe(r,e){const t={};for(const s in r){const n=r[s];if(!n)continue;let i,a;if(typeof n=="function"||"parse"in n)i=s,a=typeof n=="function"?n:n.parse.bind(n);else{const{type:p}=n;i=n.from||s,a=typeof p=="function"?p:p.parse.bind(p)}let c;const u=e(i);try{c=a(u)}catch(p){throw p instanceof U?new M(i,{type:p.type,cause:p}):new M(i,{cause:p})}c!==void 0&&(t[s]=c)}return t}function Se(r){return new ht(e=>e,!1,r)}const E=$(r=>{if(typeof r=="boolean")return r;const e=String(r);if(e==="1"||e==="true")return!0;if(e==="0"||e==="false")return!1;throw B()},"boolean"),x=$(r=>{if(typeof r=="number")return r;if(typeof r=="string"){const e=Number(r);if(!Number.isNaN(e))return e}throw B()},"number"),ae=$(r=>r instanceof Date?r:new Date(x().parse(r)*1e3),"Date");function ce(r){let e=r;if(typeof e=="string"&&(e=JSON.parse(e)),typeof e!="object"||e===null||Array.isArray(e))throw B();return e}function f(r,e){return new J(t=>{const s=ce(t);return Pe(r,n=>s[n])},!1,e)}function Q(r){return/^#[\da-f]{6}$/i.test(r)}function ke(r){return/^#[\da-f]{3}$/i.test(r)}function he(r){const e=r.replace(/\s/g,"").toLowerCase();if(Q(e))return e;if(ke(e)){let s="#";for(let n=0;n<3;n+=1)s+=e[1+n].repeat(2);return s}const t=e.match(/^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)$/)||e.match(/^rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),\d{1,3}\)$/);if(t===null)throw new Error(`Value "${r}" does not satisfy any of known RGB formats.`);return t.slice(1).reduce((s,n)=>{const i=parseInt(n,10).toString(16);return s+(i.length===1?"0":"")+i},"#")}function ue(r){const e=he(r);return Math.sqrt([.299,.587,.114].reduce((s,n,i)=>{const a=parseInt(e.slice(1+i*2,1+(i+1)*2),16);return s+a*a*n},0))<120}const h=$(r=>{if(typeof r=="string"||typeof r=="number")return r.toString();throw B()},"string"),pe=$(r=>he(h().parse(r)),"rgb");function Z(r,e){return new J(t=>{if(typeof t!="string"&&!(t instanceof URLSearchParams))throw B();const s=typeof t=="string"?new URLSearchParams(t):t;return Pe(r,n=>{const i=s.get(n);return i===null?void 0:i})},!1,e)}function xe(){return f({id:x(),type:h(),title:h(),photoUrl:{type:h().optional(),from:"photo_url"},username:h().optional()},"Chat")}class qe{constructor(e){this.initData=e}get authDate(){return this.initData.authDate}get canSendAfter(){return this.initData.canSendAfter}get canSendAfterDate(){const{canSendAfter:e}=this;return e===void 0?void 0:new Date(this.authDate.getTime()+e*1e3)}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}}function se(){return f({addedToAttachmentMenu:{type:E().optional(),from:"added_to_attachment_menu"},allowsWriteToPm:{type:E().optional(),from:"allows_write_to_pm"},firstName:{type:h(),from:"first_name"},id:x(),isBot:{type:E().optional(),from:"is_bot"},isPremium:{type:E().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")}function le(){return Z({authDate:{type:ae(),from:"auth_date"},canSendAfter:{type:x().optional(),from:"can_send_after"},chat:xe().optional(),chatInstance:{type:h().optional(),from:"chat_instance"},chatType:{type:h().optional(),from:"chat_type"},hash:h(),queryId:{type:h().optional(),from:"query_id"},receiver:se().optional(),startParam:{type:h().optional(),from:"start_param"},user:se().optional()},"InitData")}function ut(r){return le().parse(r)}function pt(r){return r.replace(/(^|_)bg/,(e,t)=>`${t}background`).replace(/_([a-z])/g,(e,t)=>t.toUpperCase())}function lt(r){return r.replace(/[A-Z]/g,e=>`_${e.toLowerCase()}`).replace(/(^|_)background/,(e,t)=>`${t}bg`)}const de=$(r=>{const e=pe().optional();return Object.entries(ce(r)).reduce((t,[s,n])=>(t[pt(s)]=e.parse(n),t),{})},"ThemeParams");function fe(r){return de().parse(r)}function dt(r={}){return b("web_app_request_theme","theme_changed",r).then(fe)}function Ae(r){return JSON.stringify(Object.entries(r).reduce((e,[t,s])=>(s&&(e[lt(t)]=s),e),{}))}class w{constructor(){o(this,"listeners",new Map);o(this,"subscribeListeners",[])}addListener(e,t,s){let n=this.listeners.get(e);return n||(n=[],this.listeners.set(e,n)),n.push([t,s]),()=>this.off(e,t)}emit(e,...t){this.subscribeListeners.forEach(n=>n(e,...t));const s=this.listeners.get(e);s&&s.forEach(([n,i],a)=>{n(...t),i&&s.splice(a,1)})}on(e,t){return this.addListener(e,t,!1)}once(e,t){return this.addListener(e,t,!0)}off(e,t){const s=this.listeners.get(e);if(s){for(let n=0;n<s.length;n+=1)if(t===s[n][0]){s.splice(n,1);return}}}subscribe(e){return this.subscribeListeners.push(e),()=>this.unsubscribe(e)}unsubscribe(e){for(let t=0;t<this.subscribeListeners.length;t+=1)if(this.subscribeListeners[t]===e){this.subscribeListeners.splice(t,1);return}}}class m{constructor(e,t){this.state=e,this.ee=t}internalSet(e,t){return this.state[e]===t||t===void 0?!1:(this.state[e]=t,this.ee.emit(`change:${e}`,t),!0)}clone(){return{...this.state}}set(e,t){let s=!1;if(typeof e=="string")s=this.internalSet(e,t);else for(const n in e)this.internalSet(n,e[n])&&(s=!0);s&&this.ee.emit("change")}get(e){return this.state[e]}}class Ve{constructor(e){o(this,"ee",new w);o(this,"state");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));this.state=new m(e,this.ee)}get accentTextColor(){return this.get("accentTextColor")}get backgroundColor(){return this.get("backgroundColor")}get buttonColor(){return this.get("buttonColor")}get buttonTextColor(){return this.get("buttonTextColor")}get destructiveTextColor(){return this.get("destructiveTextColor")}get(e){return this.state.get(e)}getState(){return this.state.clone()}get headerBackgroundColor(){return this.get("headerBackgroundColor")}get hintColor(){return this.get("hintColor")}get isDark(){return!this.backgroundColor||ue(this.backgroundColor)}get linkColor(){return this.get("linkColor")}get secondaryBackgroundColor(){return this.get("secondaryBackgroundColor")}get sectionBackgroundColor(){return this.get("sectionBackgroundColor")}get sectionHeaderTextColor(){return this.get("sectionHeaderTextColor")}listen(){return y("theme_changed",e=>{this.state.set(fe(e.theme_params))})}get subtitleTextColor(){return this.get("subtitleTextColor")}get textColor(){return this.get("textColor")}}function Re(){return Z({botInline:{type:E().optional(),from:"tgWebAppBotInline"},initData:{type:le().optional(),from:"tgWebAppData"},initDataRaw:{type:h().optional(),from:"tgWebAppData"},platform:{type:h(),from:"tgWebAppPlatform"},showSettings:{type:E().optional(),from:"tgWebAppShowSettings"},startParam:{type:h().optional(),from:"tgWebAppStartParam"},themeParams:{type:de(),from:"tgWebAppThemeParams"},version:{type:h(),from:"tgWebAppVersion"}},"LaunchParams")}function ge(r){return Re().parse(r)}function Te(r){const e=r.includes("?")?r.replace("#","&").slice(r.indexOf("?")+1):r.slice(r.indexOf("#")+1);return ge(e)}function ft(){return Te(window.location.href)}function gt(){const r=ve();if(!r)throw new Error("Unable to get first navigation entry.");return Te(r.name)}class Ie{constructor(e,t){this.prefix=e,this.enabled=t}print(e,...t){if(!this.enabled)return;const s=new Date,n=Intl.DateTimeFormat("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3,timeZone:"UTC"}).format(s);console[e](`[${n}]`,this.prefix,...t)}disable(){this.enabled=!1}error(...e){this.print("error",...e)}enable(){this.enabled=!0}log(...e){this.print("log",...e)}warn(...e){this.print("warn",...e)}}let Le="https://web.telegram.org";const A=new Ie("[SDK]",!1);function wt(r){if(r){A.enable();return}A.disable()}function _t(r){Le=r}function bt(){return Le}function Be(r){const{initDataRaw:e,themeParams:t,platform:s,version:n,showSettings:i,startParam:a,botInline:c}=r,u=new URLSearchParams;return e&&u.set("tgWebAppData",e),u.set("tgWebAppPlatform",s),u.set("tgWebAppThemeParams",Ae(t)),u.set("tgWebAppVersion",n),a&&u.set("tgWebAppStartParam",n),typeof i=="boolean"&&u.set("tgWebAppShowSettings",i?"1":"0"),typeof c=="boolean"&&u.set("tgWebAppBotInline",c?"1":"0"),u.toString()}const $e="telegram-mini-apps-launch-params";function mt(){return ge(sessionStorage.getItem($e)||"")}function yt(r){sessionStorage.setItem($e,Be(r))}function K(){const r=[];for(const e of[ft,gt,mt])try{const t=e();return yt(t),t}catch(t){r.push(t)}throw A.error("Unable to extract launch parameters. Received errors:",r),new Error("Unable to retrieve launch parameters from any known source.")}function Et(){return{launchParams:K(),isPageReload:oe()}}function Ct(){try{return K(),!0}catch{return!1}}function vt(r){return"external"in r&&V(r.external)&&"notify"in r.external&&typeof r.external.notify=="function"}function Pt(r){return"TelegramWebviewProxy"in r&&V(r.TelegramWebviewProxy)&&"postEvent"in r.TelegramWebviewProxy&&typeof r.TelegramWebviewProxy.postEvent=="function"}class Y extends Error{constructor(e,t){super(`Method "${e}" is unsupported in the Mini Apps version ${t}.`),Object.setPrototypeOf(this,Y.prototype)}}class X extends Error{constructor(e,t,s){super(`Parameter "${t}" in method "${e}" is unsupported in the Mini Apps version ${s}.`),Object.setPrototypeOf(this,X.prototype)}}const St=f({eventType:h(),eventData:r=>r});function De(r){return St.parse(r)}function kt(r,e){window.dispatchEvent(new MessageEvent("message",{data:JSON.stringify({eventType:r,eventData:e}),source:window.parent}))}function xt(){const r=window;"TelegramGameProxy_receiveEvent"in r||[["TelegramGameProxy_receiveEvent"],["TelegramGameProxy","receiveEvent"],["Telegram","WebView","receiveEvent"]].forEach(e=>{let t=r;e.forEach((s,n,i)=>{if(n===i.length-1){t[s]=kt;return}s in t||(t[s]={}),t=t[s]})})}function qt(r){xt(),window.addEventListener("message",e=>{if(e.source===window.parent)try{const{eventType:t,eventData:s}=De(e.data);r(t,s)}catch{}})}function At(){return f({req_id:h(),data:r=>r===null?r:h().optional().parse(r)})}function Vt(){return f({req_id:h(),result:r=>r,error:h().optional()})}function Rt(){return f({slug:h(),status:h()})}function Tt(){return f({status:h()})}function It(){return f({button_id:r=>r==null?void 0:h().parse(r)})}function Lt(){return f({data:h().optional()})}function Bt(){return f({theme_params:r=>{const e=pe().optional();return Object.entries(ce(r)).reduce((t,[s,n])=>(t[s]=e.parse(n),t),{})}})}function $t(){return f({height:x(),width:r=>r==null?window.innerWidth:x().parse(r),is_state_stable:E(),is_expanded:E()})}function Dt(){return f({status:h()})}function Nt(){const r=new w,e=(t,...s)=>{A.log("Emitting processed event:",t,...s),r.emit(t,...s)};return window.addEventListener("resize",()=>{e("viewport_changed",{width:window.innerWidth,height:window.innerHeight,is_state_stable:!0,is_expanded:!0})}),qt((t,s)=>{A.log("Received raw event:",t,s);try{switch(t){case"viewport_changed":return e(t,$t().parse(s));case"theme_changed":return e(t,Bt().parse(s));case"popup_closed":return s==null?e(t,{}):e(t,It().parse(s));case"set_custom_style":return e(t,h().parse(s));case"qr_text_received":return e(t,Lt().parse(s));case"clipboard_text_received":return e(t,At().parse(s));case"invoice_closed":return e(t,Rt().parse(s));case"phone_requested":return e("phone_requested",Tt().parse(s));case"custom_method_invoked":return e("custom_method_invoked",Vt().parse(s));case"write_access_requested":return e("write_access_requested",Dt().parse(s));case"main_button_pressed":case"back_button_pressed":case"settings_button_pressed":case"scan_qr_popup_closed":case"reload_iframe":return e(t);default:return e(t,s)}}catch(n){A.error("Error processing event:",n)}}),r}const ee="telegram-mini-apps-cached-emitter";function G(){const r=window;return r[ee]===void 0&&(r[ee]=Nt()),r[ee]}function T(r,e){G().off(r,e)}function y(r,e){return G().on(r,e),()=>T(r,e)}function Ht(r,e){return G().once(r,e),()=>T(r,e)}function Ne(r){G().unsubscribe(r)}function Ot(r){return G().subscribe(r),()=>Ne(r)}function He(r,e){const t=r.split("."),s=e.split("."),n=Math.max(t.length,s.length);for(let i=0;i<n;i+=1){const a=parseInt(t[i]||"0",10),c=parseInt(s[i]||"0",10);if(a!==c)return a>c?1:-1}return 0}function k(r,e){return He(r,e)<=0}function R(r,e,t){if(typeof t=="string"){if(r==="web_app_open_link"&&e==="try_instant_view")return k("6.4",t);if(r==="web_app_set_header_color"&&e==="color")return k("6.9",t)}switch(r){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 k("6.1",e);case"web_app_open_popup":return k("6.2",e);case"web_app_close_scan_qr_popup":case"web_app_open_scan_qr_popup":case"web_app_read_text_from_clipboard":return k("6.4",e);case"web_app_switch_inline_query":return k("6.7",e);case"web_app_invoke_custom_method":case"web_app_request_write_access":case"web_app_request_phone":return k("6.9",e);case"web_app_setup_settings_button":return k("6.10",e);default:return!0}}function v(r,e){return t=>R(e[t],r)}function Oe(r,e){return t=>{const[s,n]=e[t];return R(s,n,r)}}function d(r,e,t){let s={},n;e===void 0&&t===void 0?s={}:e!==void 0&&t!==void 0?(s=t,n=e):e!==void 0&&("targetOrigin"in e?s=e:n=e);const{targetOrigin:i=bt()}=s;if(A.log(`Calling method "${r}"`,n),ie()){window.parent.postMessage(JSON.stringify({eventType:r,eventData:n}),i);return}if(vt(window)){window.external.notify(JSON.stringify({eventType:r,eventData:n}));return}if(Pt(window)){window.TelegramWebviewProxy.postEvent(r,JSON.stringify(n));return}throw new Error("Unable to determine current environment and possible way to send event.")}function We(r){return(e,t)=>{if(!R(e,r))throw new Y(e,r);if(V(t)){let s;if(e==="web_app_open_link"&&"try_instant_view"in t?s="try_instant_view":e==="web_app_set_header_color"&&"color"in t&&(s="color"),s&&!R(e,s,r))throw new X(e,s,r)}return d(e,t)}}class j extends Error{constructor(e){super(`Async call timeout exceeded. Timeout: ${e}`),Object.setPrototypeOf(this,j.prototype)}}function Wt(r){return r instanceof j}function Mt(r){return new Promise(e=>{setTimeout(e,r)})}function Ut(r){return new Promise((e,t)=>{setTimeout(t,r,new j(r))})}function we(r,e){return Promise.race([r(),Ut(e)])}function b(r,e,t,s){let n,i,a,c;typeof e=="string"||Array.isArray(e)?(a=Array.isArray(e)?e:[e],n=t):(i=e,a=Array.isArray(t)?t:[t],n=s),V(i)&&typeof i.req_id=="string"&&(c=i.req_id);const{postEvent:u=d,timeout:p}=n||{},g=n&&"capture"in n?n.capture:null,_=()=>new Promise((I,l)=>{const P=a.map(S=>y(S,F=>{c&&(!V(F)||F.req_id!==c)||typeof g=="function"&&!g(F)||(q(),I(F))})),q=()=>P.forEach(S=>S());try{u(r,i)}catch(S){q(),l(S)}});return typeof p=="number"?we(_,p):_()}async function L(r,e,t,s={}){const{result:n,error:i}=await b("web_app_invoke_custom_method",{method:r,params:e,req_id:t},"custom_method_invoked",s);if(i)throw new Error(i);return n}class Me{constructor(e,t,s=d){o(this,"ee",new w);o(this,"state");o(this,"on",(e,t)=>e==="click"?y("back_button_pressed",t):this.ee.on(e,t));o(this,"off",(e,t)=>e==="click"?T("back_button_pressed",t):this.ee.off(e,t));o(this,"supports");this.postEvent=s,this.state=new m({isVisible:e},this.ee),this.supports=v(t,{show:"web_app_setup_back_button",hide:"web_app_setup_back_button"})}set isVisible(e){this.state.set("isVisible",e),this.postEvent("web_app_setup_back_button",{is_visible:e})}get isVisible(){return this.state.get("isVisible")}hide(){this.isVisible=!1}show(){this.isVisible=!0}}function me(r,e){return r+(r.length>0&&e.length>0?` ${e}`:e)}function Ue(...r){return r.reduce((e,t)=>{let s="";return typeof t=="string"?s=t:typeof t=="object"&&t!==null&&(s=Object.entries(t).reduce((n,[i,a])=>a?me(n,i):n,"")),me(e,s)},"")}function Gt(...r){return r.reduce((e,t)=>(V(t)&&Object.entries(t).forEach(([s,n])=>{const i=Ue(e[s],n);i.length>0&&(e[s]=i)}),e),{})}class Ge{constructor(e,t=d){o(this,"ee",new w);o(this,"state");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));this.postEvent=t,this.state=new m({isConfirmationNeeded:e},this.ee)}set isConfirmationNeeded(e){this.state.set("isConfirmationNeeded",e),this.postEvent("web_app_setup_closing_behavior",{need_confirmation:e})}get isConfirmationNeeded(){return this.state.get("isConfirmationNeeded")}disableConfirmation(){this.isConfirmationNeeded=!1}enableConfirmation(){this.isConfirmationNeeded=!0}}function ye(r,e){return r.reduce((t,s)=>(t[s]=e,t),{})}class je{constructor(e,t,s=d){o(this,"supports");this.createRequestId=t,this.postEvent=s,this.supports=v(e,{delete:"web_app_invoke_custom_method",get:"web_app_invoke_custom_method",getKeys:"web_app_invoke_custom_method",set:"web_app_invoke_custom_method"})}async delete(e,t={}){const s=Array.isArray(e)?e:[e];s.length!==0&&await L("deleteStorageValues",{keys:s},this.createRequestId(),{...t,postEvent:this.postEvent})}async getKeys(e={}){const t=await L("getStorageKeys",{},this.createRequestId(),{...e,postEvent:this.postEvent});return Se().of(h()).parse(t)}async get(e,t={}){const s=Array.isArray(e)?e:[e];if(s.length===0)return ye(s,"");const n=f(ye(s,h())),i=await L("getStorageValues",{keys:s},this.createRequestId(),{...t,postEvent:this.postEvent}).then(a=>n.parse(a));return Array.isArray(e)?i:i[e]}async set(e,t,s={}){await L("saveStorageValue",{key:e,value:t},this.createRequestId(),{...s,postEvent:this.postEvent})}}function C(r,e){document.documentElement.style.setProperty(r,e)}function Fe(r,e){const t=()=>{C("--tg-background-color",r.backgroundColor)},s=()=>{const{backgroundColor:n,secondaryBackgroundColor:i}=e;if(Q(r.headerColor)){C("--tg-header-color",r.headerColor);return}if(r.headerColor==="bg_color"&&n){C("--tg-header-color",n);return}r.headerColor==="secondary_bg_color"&&i&&C("--tg-header-color",i)};e.on("change",s),r.on("change:backgroundColor",t),r.on("change:headerColor",s),t(),s()}function ze(r){const e=()=>{const t=r.getState();Object.entries(t).forEach(([s,n])=>{if(n){const i=s.replace(/[A-Z]/g,a=>`-${a.toLowerCase()}`);C(`--tg-theme-${i}`,n)}})};r.on("change",e),e()}function ne(r){const e=()=>C("--tg-viewport-height",`${r.height}px`),t=()=>C("--tg-viewport-width",`${r.width}px`),s=()=>C("--tg-viewport-stable-height",`${r.stableHeight}px`);r.on("change:height",e),r.on("change:width",t),r.on("change:stableHeight",s),e(),t(),s()}class Je{constructor(e,t=d){o(this,"supports");this.postEvent=t,this.supports=v(e,{impactOccurred:"web_app_trigger_haptic_feedback",notificationOccurred:"web_app_trigger_haptic_feedback",selectionChanged:"web_app_trigger_haptic_feedback"})}impactOccurred(e){this.postEvent("web_app_trigger_haptic_feedback",{type:"impact",impact_style:e})}notificationOccurred(e){this.postEvent("web_app_trigger_haptic_feedback",{type:"notification",notification_type:e})}selectionChanged(){this.postEvent("web_app_trigger_haptic_feedback",{type:"selection_change"})}}function jt(){const r=document.createElement("style");r.id="telegram-custom-styles",document.head.appendChild(r),y("set_custom_style",e=>{r.innerHTML=e})}function Qe(r){return`telegram-mini-apps-${r}`}function D(r,e){sessionStorage.setItem(Qe(r),JSON.stringify(e))}function N(r){const e=sessionStorage.getItem(Qe(r));return e?JSON.parse(e):null}function Ft(r,e,t){const{isVisible:s=!1}=r?N("back-button")||{}:{},n=new Me(s,e,t);return n.on("change",()=>{D("back-button",{isVisible:n.isVisible})}),n}function zt(r,e){const{isConfirmationNeeded:t=!1}=r?N("closing-behavior")||{}:{},s=new Ge(t,e);return s.on("change",()=>D("closing-behavior",{isConfirmationNeeded:s.isConfirmationNeeded})),s}class Ze{constructor(e){o(this,"ee",new w);o(this,"state");o(this,"postEvent");o(this,"on",(e,t)=>e==="click"?y("main_button_pressed",t):this.ee.on(e,t));o(this,"off",(e,t)=>e==="click"?T("main_button_pressed",t):this.ee.off(e,t));const{postEvent:t=d,text:s,textColor:n,backgroundColor:i,isEnabled:a,isVisible:c,isLoaderVisible:u}=e;this.postEvent=t,this.state=new m({backgroundColor:i,isEnabled:a,isVisible:c,isLoaderVisible:u,text:s,textColor:n},this.ee)}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.backgroundColor,text_color:this.textColor})}set isEnabled(e){this.setParams({isEnabled:e})}get isEnabled(){return this.state.get("isEnabled")}set isLoaderVisible(e){this.setParams({isLoaderVisible:e})}get isLoaderVisible(){return this.state.get("isLoaderVisible")}set isVisible(e){this.setParams({isVisible:e})}get isVisible(){return this.state.get("isVisible")}get backgroundColor(){return this.state.get("backgroundColor")}get text(){return this.state.get("text")}get textColor(){return this.state.get("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}show(){return this.isVisible=!0,this}showLoader(){return this.isLoaderVisible=!0,this}setText(e){return this.setParams({text:e})}setTextColor(e){return this.setParams({textColor:e})}setBackgroundColor(e){return this.setParams({backgroundColor:e})}setParams(e){return this.state.set(e),this.commit(),this}}function Jt(r,e,t,s){const{backgroundColor:n=e,isEnabled:i=!1,isVisible:a=!1,isLoaderVisible:c=!1,textColor:u=t,text:p=""}=r?N("main-button")||{}:{},g=new Ze({backgroundColor:n,isEnabled:i,isLoaderVisible:c,isVisible:a,postEvent:s,text:p,textColor:u}),_=()=>D("main-button",{backgroundColor:g.backgroundColor,isEnabled:g.isEnabled,isLoaderVisible:g.isLoaderVisible,isVisible:g.isVisible,text:g.text,textColor:g.textColor});return g.on("change",_),g}const Qt=Z({contact:f({userId:{type:x(),from:"user_id"},phoneNumber:{type:h(),from:"phone_number"},firstName:{type:h(),from:"first_name"},lastName:{type:h().optional(),from:"last_name"}}),authDate:{type:ae(),from:"auth_date"},hash:h()});class Ke{constructor(e){o(this,"ee",new w);o(this,"state");o(this,"botInline");o(this,"postEvent");o(this,"createRequestId");o(this,"requestingPhoneAccess",!1);o(this,"requestingWriteAccess",!1);o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));o(this,"supports");o(this,"supportsParam");const{postEvent:t=d,headerColor:s,backgroundColor:n,version:i,botInline:a,createRequestId:c}=e,u=v(i,{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"});this.postEvent=t,this.botInline=a,this.createRequestId=c,this.supports=p=>!(!u(p)||p==="switchInlineQuery"&&!a),this.state=new m({backgroundColor:n,headerColor:s},this.ee),this.supportsParam=Oe(i,{"setHeaderColor.color":["web_app_set_header_color","color"]})}async getRequestedContact(){return L("getRequestedContact",{},this.createRequestId(),{postEvent:this.postEvent,timeout:1e4}).then(e=>Qt.parse(e))}get backgroundColor(){return this.state.get("backgroundColor")}close(){this.postEvent("web_app_close")}get headerColor(){return this.state.get("headerColor")}get isBotInline(){return this.botInline}get isDark(){return ue(this.backgroundColor)}get isRequestingPhoneAccess(){return this.requestingPhoneAccess}get isRequestingWriteAccess(){return this.requestingWriteAccess}ready(){this.postEvent("web_app_ready")}async requestContact({timeout:e=5e3}={}){try{return await this.getRequestedContact()}catch{}if(await this.requestPhoneAccess()!=="sent")throw new Error("Access denied.");const s=Date.now()+e;let n=50;return we(async()=>{for(;Date.now()<s;){try{return await this.getRequestedContact()}catch{}await Mt(n),n+=50}throw new Error("Unable to retrieve requested contact.")},e)}requestPhoneAccess(e={}){if(this.requestingPhoneAccess)throw new Error("Phone access is already being requested.");return this.requestingPhoneAccess=!0,b("web_app_request_phone","phone_requested",{...e,postEvent:this.postEvent}).then(t=>t.status).finally(()=>{this.requestingPhoneAccess=!1})}requestWriteAccess(e={}){if(this.requestingWriteAccess)throw new Error("Write access is already being requested.");return this.requestingWriteAccess=!0,b("web_app_request_write_access","write_access_requested",{...e,postEvent:this.postEvent}).then(t=>t.status).finally(()=>{this.requestingWriteAccess=!1})}sendData(e){const{size:t}=new Blob([e]);if(t===0||t>4096)throw new Error(`Passed data has incorrect size: ${t}`);this.postEvent("web_app_data_send",{data:e})}setHeaderColor(e){this.postEvent("web_app_set_header_color",Q(e)?{color:e}:{color_key:e}),this.state.set("headerColor",e)}setBackgroundColor(e){this.postEvent("web_app_set_background_color",{color:e}),this.state.set("backgroundColor",e)}switchInlineQuery(e,t=[]){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:e,chat_types:t})}}function Zt(r,e,t,s,n,i){const{backgroundColor:a=e,headerColor:c="bg_color"}=r?N("mini-app")||{}:{},u=new Ke({headerColor:c,backgroundColor:a,version:t,botInline:s,createRequestId:n,postEvent:i}),p=()=>D("mini-app",{backgroundColor:u.backgroundColor,headerColor:u.headerColor});return u.on("change",p),u}function Kt(){let r=0;return()=>(r+=1,r.toString())}class Ye{constructor(e,t,s=d){o(this,"ee",new w);o(this,"state");o(this,"on",(e,t)=>e==="click"?y("settings_button_pressed",t):this.ee.on(e,t));o(this,"off",(e,t)=>e==="click"?T("settings_button_pressed",t):this.ee.off(e,t));o(this,"supports");this.postEvent=s,this.state=new m({isVisible:e},this.ee),this.supports=v(t,{show:"web_app_setup_settings_button",hide:"web_app_setup_settings_button"})}set isVisible(e){this.state.set("isVisible",e),this.postEvent("web_app_setup_settings_button",{is_visible:e})}get isVisible(){return this.state.get("isVisible")}hide(){this.isVisible=!1}show(){this.isVisible=!0}}function Yt(r,e,t){const{isVisible:s=!1}=r?N("settings-button")||{}:{},n=new Ye(s,e,t);return n.on("change",()=>{D("settings-button",{isVisible:n.isVisible})}),n}function Xt(r){const e=new Ve(r);return e.listen(),e}function Xe(r){return["macos","tdesktop","unigram","web","weba"].includes(r)}async function _e(r){const e=await b("web_app_request_viewport","viewport_changed",r);return{height:e.height,width:e.width,isExpanded:e.is_expanded,isStateStable:e.is_state_stable}}function H(r){return r<0?0:r}class et{constructor(e){o(this,"ee",new w);o(this,"state");o(this,"postEvent");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));const{height:t,isExpanded:s,width:n,stableHeight:i,postEvent:a=d}=e;this.postEvent=a,this.state=new m({height:H(t),isExpanded:s,stableHeight:H(i),width:H(n)},this.ee)}sync(e){return _e(e).then(({height:t,isExpanded:s,width:n,isStateStable:i})=>{this.state.set({height:t,width:n,isExpanded:s,stableHeight:i?t:this.state.get("stableHeight")})})}get height(){return this.state.get("height")}get stableHeight(){return this.state.get("stableHeight")}listen(){return y("viewport_changed",e=>{const{height:t,width:s,is_expanded:n,is_state_stable:i}=e,a={height:H(t),isExpanded:n,width:H(s)};i&&(a.stableHeight=a.height),this.state.set(a)})}get isExpanded(){return this.state.get("isExpanded")}get width(){return this.state.get("width")}expand(){this.postEvent("web_app_expand"),this.state.set("isExpanded",!0)}get isStable(){return this.stableHeight===this.height}}function z(r){const e=new et(r);return e.on("change",()=>D("viewport",{height:e.height,isExpanded:e.isExpanded,stableHeight:e.stableHeight,width:e.width})),e.listen(),e}function er(r,e,t,s){const n=r?N("viewport"):null;if(n)return z({...n,postEvent:t});if(Xe(e))return z({height:window.innerHeight,isExpanded:!0,postEvent:t,stableHeight:window.innerHeight,width:window.innerWidth});if(s)return _e({postEvent:t,timeout:5e3}).then(({height:a,isStateStable:c,...u})=>z({...u,height:a,stableHeight:c?a:0}));const i=z({width:0,height:0,isExpanded:!1,postEvent:t,stableHeight:0});return i.sync({postEvent:t,timeout:5e3}).catch(a=>{console.error("Unable to actualize viewport state",a)}),i}function tr(r){return typeof r=="object"?r:r?{themeParams:!0,viewport:!0,miniApp:!0}:{}}function Ee(r,e,t,s){const n=tr(r);n.miniApp&&Fe(e,t),n.themeParams&&ze(t),n.viewport&&(s instanceof Promise?s.then(ne):ne(s))}function rr(r){const{hostname:e,pathname:t}=new URL(r,window.location.href);if(e!=="t.me")throw new Error(`Incorrect hostname: ${e}`);const s=t.match(/^\/(\$|invoice\/)([A-Za-z0-9\-_=]+)$/);if(s===null)throw new Error('Link pathname has incorrect format. Expected to receive "/invoice/{slug}" or "/${slug}"');return s[2]}class tt{constructor(e,t=d){o(this,"ee",new w);o(this,"state");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));o(this,"supports");this.postEvent=t,this.state=new m({isOpened:!1},this.ee),this.supports=v(e,{open:"web_app_open_invoice"})}set isOpened(e){this.state.set("isOpened",e)}get isOpened(){return this.state.get("isOpened")}async open(e,t){if(this.isOpened)throw new Error("Invoice is already opened");const s=t?rr(e):e;this.isOpened=!0;try{return(await b("web_app_open_invoice",{slug:s},"invoice_closed",{postEvent:this.postEvent,capture(i){return s===i.slug}})).status}finally{this.isOpened=!1}}}function sr(r){const e=r.message.trim(),t=(r.title||"").trim(),s=r.buttons||[];let n;if(t.length>64)throw new Error(`Title has incorrect size: ${t.length}`);if(e.length===0||e.length>256)throw new Error(`Message has incorrect size: ${e.length}`);if(s.length>3)throw new Error(`Buttons have incorrect size: ${s.length}`);return s.length===0?n=[{type:"close",id:""}]:n=s.map(i=>{const{id:a=""}=i;if(a.length>64)throw new Error(`Button ID has incorrect size: ${a}`);if(i.type===void 0||i.type==="default"||i.type==="destructive"){const c=i.text.trim();if(c.length===0||c.length>64){const u=i.type||"default";throw new Error(`Button text with type "${u}" has incorrect size: ${i.text.length}`)}return{...i,text:c,id:a}}return{...i,id:a}}),{title:t,message:e,buttons:n}}class rt{constructor(e,t=d){o(this,"ee",new w);o(this,"state");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));o(this,"supports");this.postEvent=t,this.state=new m({isOpened:!1},this.ee),this.supports=v(e,{open:"web_app_open_popup"})}set isOpened(e){this.state.set("isOpened",e)}get isOpened(){return this.state.get("isOpened")}open(e){if(this.isOpened)throw new Error("Popup is already opened.");return this.isOpened=!0,b("web_app_open_popup",sr(e),"popup_closed",{postEvent:this.postEvent}).then(({button_id:t=null})=>t).finally(()=>{this.isOpened=!1})}}class st{constructor(e,t=d){o(this,"ee",new w);o(this,"state");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));o(this,"supports");this.postEvent=t,this.state=new m({isOpened:!1},this.ee),this.supports=v(e,{close:"web_app_close_scan_qr_popup",open:"web_app_open_scan_qr_popup"})}close(){this.postEvent("web_app_close_scan_qr_popup"),this.isOpened=!1}set isOpened(e){this.state.set("isOpened",e)}get isOpened(){return this.state.get("isOpened")}async open(e){if(this.isOpened)throw new Error("QR scanner is already opened.");this.isOpened=!0;try{const t=await b("web_app_open_scan_qr_popup",{text:e},["qr_text_received","scan_qr_popup_closed"],{postEvent:this.postEvent});return typeof t=="object"&&typeof t.data=="string"?t.data:null}finally{this.isOpened=!1}}}class nt{constructor(e,t,s=d){o(this,"supports");o(this,"supportsParam");this.version=e,this.createRequestId=t,this.postEvent=s,this.supports=v(e,{readTextFromClipboard:"web_app_read_text_from_clipboard"}),this.supportsParam=Oe(e,{"openLink.tryInstantView":["web_app_open_link","try_instant_view"]})}openLink(e,t){const s=new URL(e,window.location.href).toString();if(!R("web_app_open_link",this.version)){window.open(s,"_blank");return}this.postEvent("web_app_open_link",{url:s,...typeof t=="boolean"?{try_instant_view:t}:{}})}openTelegramLink(e){const{hostname:t,pathname:s,search:n}=new URL(e,window.location.href);if(t!=="t.me")throw new Error(`URL has not allowed hostname: ${t}. Only "t.me" is allowed`);if(!R("web_app_open_tg_link",this.version)){window.location.href=e;return}this.postEvent("web_app_open_tg_link",{path_full:s+n})}readTextFromClipboard(){return b("web_app_read_text_from_clipboard",{req_id:this.createRequestId()},"clipboard_text_received",{postEvent:this.postEvent}).then(({data:e=null})=>e)}}function nr(r={}){const{async:e=!1,complete:t=e,cssVars:s=!1,acceptCustomStyles:n=!1}=r;try{const{initData:i,initDataRaw:a,version:c,platform:u,themeParams:p,botInline:g=!1}=K(),_=oe(),I=Kt(),l=We(c);ie()&&(n&&jt(),l("iframe_ready",{reload_supported:!0}),y("reload_iframe",()=>{l("iframe_will_reload"),window.location.reload()}));const P={backButton:Ft(_,c,l),closingBehavior:zt(_,l),cloudStorage:new je(c,I,l),createRequestId:I,hapticFeedback:new Je(c,l),invoice:new tt(c,l),mainButton:Jt(_,p.buttonColor||"#000000",p.buttonTextColor||"#ffffff",l),miniApp:Zt(_,p.backgroundColor||"#ffffff",c,g,I,l),popup:new rt(c,l),postEvent:l,qrScanner:new st(c,l),settingsButton:Yt(_,c,l),themeParams:Xt(p),utils:new nt(c,I,l),...i?{initData:new qe(i),initDataRaw:a}:{}},q=er(_,u,l,t);return q instanceof Promise||t?Promise.resolve(q).then(S=>(Ee(s,P.miniApp,P.themeParams,S),{...P,viewport:S})):(Ee(s,P.miniApp,P.themeParams,q),{...P,viewport:q})}catch(i){if(t)return Promise.reject(i);throw i}}function O(r,e){return r.startsWith(e)?r:`${e}${r}`}function ir(r){const e=r.match(/#(.+)/);return e?e[1]:null}async function W(r){return r===0?!0:Promise.race([new Promise(e=>{window.addEventListener("popstate",function t(){window.removeEventListener("popstate",t),e(!0)}),window.history.go(r)}),new Promise(e=>{setTimeout(e,50,!1)})])}async function or(){if(window.history.length<=1||(window.history.pushState(null,""),await W(1-window.history.length)))return;let e=await W(-1);for(;e;)e=await W(-1)}class it{constructor(e,t,{debug:s=!1,loggerPrefix:n="Navigator"}){o(this,"logger");o(this,"entries");if(this.entriesCursor=t,e.length===0)throw new Error("Entries list should not be empty.");if(t>=e.length)throw new Error("Cursor should be less than entries count.");this.entries=e.map(({pathname:i="",search:a,hash:c})=>{if(!i.startsWith("/")&&i.length>0)throw new Error('Pathname should start with "/"');return{pathname:O(i,"/"),search:a?O(a,"?"):"",hash:c?O(c,"#"):""}}),this.logger=new Ie(`[${n}]`,s)}formatEntry(e){let t;if(typeof e=="string")t=e;else{const{pathname:a="",search:c,hash:u}=e;t=a+(c?O(c,"?"):"")+(u?O(u,"#"):"")}const{pathname:s,search:n,hash:i}=new URL(t,`https://localhost${this.path}`);return{pathname:s,search:n,hash:i}}get entry(){return this.entries[this.entriesCursor]}back(){return this.go(-1)}get cursor(){return this.entriesCursor}get canGoBack(){return this.entriesCursor>0}get canGoForward(){return this.entriesCursor!==this.entries.length-1}forward(){return this.go(1)}go(e){this.logger.log(`called go(${e})`);const t=Math.min(this.entries.length-1,Math.max(this.entriesCursor+e,0));if(this.entriesCursor===t)return this.performGo({updated:!1,delta:e});const s=this.entry;this.entriesCursor=t;const n=this.entry;return this.logger.log("State changed",{before:s,after:n}),this.performGo({updated:!0,delta:e,before:s,after:n})}getEntries(){return this.entries.map(e=>({...e}))}get hash(){return this.entry.hash}push(e){this.entriesCursor!==this.entries.length-1&&this.entries.splice(this.entriesCursor+1);const t=this.formatEntry(e),s=this.entry;this.entriesCursor+=1,this.entries[this.entriesCursor]=t;const n=this.entry;return this.logger.log("State changed",{before:s,after:n}),this.performPush({before:s,after:n})}get path(){return`${this.pathname}${this.search}${this.hash}`}get pathname(){return this.entry.pathname}replace(e){const t=this.formatEntry(e);if(this.search===t.search&&this.pathname===t.pathname&&this.hash===t.hash)return this.performReplace({updated:!1,entry:t});const s=this.entry;this.entries[this.entriesCursor]=t;const n=this.entry;return this.logger.log("State changed",{before:s,after:n}),this.performReplace({updated:!0,before:s,after:n})}get search(){return this.entry.search}}const Ce=0,te=1,re=2;class be extends it{constructor(t,s,n={}){super(t,s,{...n,loggerPrefix:"HashNavigator"});o(this,"ee",new w);o(this,"attached",!1);o(this,"onPopState",async({state:t})=>{if(this.logger.log('"popstate" event received. State:',t),t===null)return this.push(window.location.hash.slice(1));if(t===Ce){this.logger.log("Void reached. Moving history forward"),window.history.forward();return}if(t===te)return this.back();if(t===re)return this.forward()});o(this,"back",()=>super.back());o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee))}static fromLocation(t){const{search:s,pathname:n,hash:i}=new URL(window.location.hash.slice(1),window.location.href);return new be([{search:s,pathname:n,hash:i}],0,t)}async performGo(t){t.updated&&(this.attached&&await this.syncHistory(),this.emitChanged(t.before,t.after))}async performPush({before:t,after:s}){this.attached&&await this.syncHistory(),this.emitChanged(t,s)}async performReplace(t){t.updated&&(this.attached&&window.history.replaceState(null,"",`#${this.path}`),this.emitChanged(t.before,t.after))}async syncHistory(){window.removeEventListener("popstate",this.onPopState);const t=`#${this.path}`;await or(),d("web_app_setup_back_button",{is_visible:this.canGoBack}),this.canGoBack&&this.canGoForward?(this.logger.log("Setting up history: [<-, *, ->]"),window.history.replaceState(te,""),window.history.pushState(null,"",t),window.history.pushState(re,""),await W(-1)):this.canGoBack?(this.logger.log("Setting up history: [<-, *]"),window.history.replaceState(te,""),window.history.pushState(null,"",t)):this.canGoForward?(this.logger.log("Setting up history: [*, ->]"),window.history.replaceState(null,t),window.history.pushState(re,""),await W(-1)):(this.logger.log("Setting up history: [~, *]"),window.history.replaceState(Ce,""),window.history.pushState(null,"",t)),window.addEventListener("popstate",this.onPopState)}emitChanged(t,s){this.ee.emit("change",{navigator:this,from:t,to:s})}async attach(){if(!this.attached)return this.logger.log("Attaching",this),this.attached=!0,y("back_button_pressed",this.back),this.syncHistory()}detach(){this.attached&&(this.logger.log("Detaching",this),this.attached=!1,window.removeEventListener("popstate",this.onPopState),T("back_button_pressed",this.back))}}exports.BackButton=Me;exports.ClosingBehavior=Ge;exports.CloudStorage=je;exports.HapticFeedback=Je;exports.HashNavigator=be;exports.InitData=qe;exports.Invoice=tt;exports.MainButton=Ze;exports.MethodUnsupportedError=Y;exports.MiniApp=Ke;exports.Navigator=it;exports.ParameterUnsupportedError=X;exports.ParseError=U;exports.ParseSchemaFieldError=M;exports.Popup=rt;exports.QRScanner=st;exports.SettingsButton=Ye;exports.ThemeParams=Ve;exports.TimeoutError=j;exports.Utils=nt;exports.Viewport=et;exports.array=Se;exports.bindMiniAppCSSVars=Fe;exports.bindThemeCSSVars=ze;exports.bindViewportCSSVars=ne;exports.boolean=E;exports.chatParser=xe;exports.classNames=Ue;exports.compareVersions=He;exports.createPostEvent=We;exports.date=ae;exports.getHash=ir;exports.init=nr;exports.initDataParser=le;exports.invokeCustomMethod=L;exports.isColorDark=ue;exports.isIframe=ie;exports.isPageReload=oe;exports.isRGB=Q;exports.isRGBShort=ke;exports.isRecord=V;exports.isStableViewportPlatform=Xe;exports.isTMA=Ct;exports.isTimeoutError=Wt;exports.json=f;exports.launchParamsParser=Re;exports.mergeClassNames=Gt;exports.number=x;exports.off=T;exports.on=y;exports.once=Ht;exports.parseInitData=ut;exports.parseLaunchParams=ge;exports.parseMessage=De;exports.parseThemeParams=fe;exports.postEvent=d;exports.request=b;exports.requestThemeParams=dt;exports.requestViewport=_e;exports.retrieveLaunchData=Et;exports.retrieveLaunchParams=K;exports.rgb=pe;exports.searchParams=Z;exports.serializeLaunchParams=Be;exports.serializeThemeParams=Ae;exports.setCSSVar=C;exports.setDebug=wt;exports.setTargetOrigin=_t;exports.string=h;exports.subscribe=Ot;exports.supports=R;exports.themeParamsParser=de;exports.toRGB=he;exports.unsubscribe=Ne;exports.userParser=se;exports.withTimeout=we;
|
|
1
|
+
"use strict";var ot=Object.defineProperty;var at=(r,e,t)=>e in r?ot(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var o=(r,e,t)=>(at(r,typeof e!="symbol"?e+"":e,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class Ce{constructor(e,t){this.prefix=e,this.enabled=t}print(e,...t){if(!this.enabled)return;const s=new Date,n=Intl.DateTimeFormat("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3,timeZone:"UTC"}).format(s);console[e](`[${n}]`,this.prefix,...t)}disable(){this.enabled=!1}error(...e){this.print("error",...e)}enable(){this.enabled=!0}log(...e){this.print("log",...e)}warn(...e){this.print("warn",...e)}}let ve="https://web.telegram.org";const x=new Ce("[SDK]",!1);function ct(r){if(r){x.enable();return}x.disable()}function ht(r){ve=r}function ut(){return ve}function se(){try{return window.self!==window.top}catch{return!0}}function H(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}function pt(r){return"external"in r&&H(r.external)&&"notify"in r.external&&typeof r.external.notify=="function"}function lt(r){return"TelegramWebviewProxy"in r&&H(r.TelegramWebviewProxy)&&"postEvent"in r.TelegramWebviewProxy&&typeof r.TelegramWebviewProxy.postEvent=="function"}function d(r,e,t){let s={},n;e===void 0&&t===void 0?s={}:e!==void 0&&t!==void 0?(s=t,n=e):e!==void 0&&("targetOrigin"in e?s=e:n=e);const{targetOrigin:i=ut()}=s;if(x.log(`Calling method "${r}"`,n),se()){window.parent.postMessage(JSON.stringify({eventType:r,eventData:n}),i);return}if(pt(window)){window.external.notify(JSON.stringify({eventType:r,eventData:n}));return}if(lt(window)){window.TelegramWebviewProxy.postEvent(r,JSON.stringify(n));return}throw new Error("Unable to determine current environment and possible way to send event.")}function Pe(r,e){const t=r.split("."),s=e.split("."),n=Math.max(t.length,s.length);for(let i=0;i<n;i+=1){const a=parseInt(t[i]||"0",10),c=parseInt(s[i]||"0",10);if(a!==c)return a>c?1:-1}return 0}function S(r,e){return Pe(r,e)<=0}function q(r,e,t){if(typeof t=="string"){if(r==="web_app_open_link"&&e==="try_instant_view")return S("6.4",t);if(r==="web_app_set_header_color"&&e==="color")return S("6.9",t)}switch(r){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 S("6.1",e);case"web_app_open_popup":return S("6.2",e);case"web_app_close_scan_qr_popup":case"web_app_open_scan_qr_popup":case"web_app_read_text_from_clipboard":return S("6.4",e);case"web_app_switch_inline_query":return S("6.7",e);case"web_app_invoke_custom_method":case"web_app_request_write_access":case"web_app_request_phone":return S("6.9",e);case"web_app_setup_settings_button":return S("6.10",e);default:return!0}}class F extends Error{constructor(e,t){super(`Method "${e}" is unsupported in the Mini Apps version ${t}.`),Object.setPrototypeOf(this,F.prototype)}}class z extends Error{constructor(e,t,s){super(`Parameter "${t}" in method "${e}" is unsupported in the Mini Apps version ${s}.`),Object.setPrototypeOf(this,z.prototype)}}function Se(r){return(e,t)=>{if(!q(e,r))throw new F(e,r);if(H(t)){let s;if(e==="web_app_open_link"&&"try_instant_view"in t?s="try_instant_view":e==="web_app_set_header_color"&&"color"in t&&(s="color"),s&&!q(e,s,r))throw new z(e,s,r)}return d(e,t)}}function ke(r){return({req_id:e})=>e===r}class W extends Error{constructor(t,{cause:s,type:n}={}){super(`Unable to parse value${n?` as ${n}`:""}`,{cause:s});o(this,"type");this.value=t,Object.setPrototypeOf(this,W.prototype),this.type=n}}class N extends Error{constructor(e,{cause:t,type:s}={}){super(`Unable to parse field "${e}"${s?` as ${s}`:""}`,{cause:t}),Object.setPrototypeOf(this,N.prototype)}}function xe(r,e){const t={};for(const s in r){const n=r[s];if(!n)continue;let i,a;if(typeof n=="function"||"parse"in n)i=s,a=typeof n=="function"?n:n.parse.bind(n);else{const{type:p}=n;i=n.from||s,a=typeof p=="function"?p:p.parse.bind(p)}let c;const u=e(i);try{c=a(u)}catch(p){throw p instanceof W?new N(i,{type:p.type,cause:p}):new N(i,{cause:p})}c!==void 0&&(t[s]=c)}return t}function T(){return new TypeError("Value has unexpected type")}function ne(r){let e=r;if(typeof e=="string"&&(e=JSON.parse(e)),typeof e!="object"||e===null||Array.isArray(e))throw T();return e}class J{constructor(e,t,s){this.parser=e,this.isOptional=t,this.type=s}parse(e){if(!(this.isOptional&&e===void 0))try{return this.parser(e)}catch(t){throw new W(e,{type:this.type,cause:t})}}optional(){return this.isOptional=!0,this}}function f(r,e){return new J(t=>{const s=ne(t);return xe(r,n=>s[n])},!1,e)}function I(r,e){return()=>new J(r,!1,e)}const h=I(r=>{if(typeof r=="string"||typeof r=="number")return r.toString();throw T()},"string");function qe(r){return f({eventType:h(),eventData:e=>e}).parse(r)}function dt(r,e){window.dispatchEvent(new MessageEvent("message",{data:JSON.stringify({eventType:r,eventData:e}),source:window.parent}))}function ft(){const r=window;"TelegramGameProxy_receiveEvent"in r||[["TelegramGameProxy_receiveEvent"],["TelegramGameProxy","receiveEvent"],["Telegram","WebView","receiveEvent"]].forEach(e=>{let t=r;e.forEach((s,n,i)=>{if(n===i.length-1){t[s]=dt;return}s in t||(t[s]={}),t=t[s]})})}function gt(r){ft(),window.addEventListener("message",e=>{if(e.source===window.parent)try{const{eventType:t,eventData:s}=qe(e.data);r(t,s)}catch{}})}function wt(){return f({req_id:h(),data:r=>r===null?r:h().optional().parse(r)})}function _t(){return f({req_id:h(),result:r=>r,error:h().optional()})}function bt(){return f({slug:h(),status:h()})}function mt(){return f({status:h()})}function yt(){return f({button_id:r=>r==null?void 0:h().parse(r)})}function Et(){return f({data:h().optional()})}function Q(r){return/^#[\da-f]{6}$/i.test(r)}function Ae(r){return/^#[\da-f]{3}$/i.test(r)}function ie(r){const e=r.replace(/\s/g,"").toLowerCase();if(Q(e))return e;if(Ae(e)){let s="#";for(let n=0;n<3;n+=1)s+=e[1+n].repeat(2);return s}const t=e.match(/^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)$/)||e.match(/^rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),\d{1,3}\)$/);if(t===null)throw new Error(`Value "${r}" does not satisfy any of known RGB formats.`);return t.slice(1).reduce((s,n)=>{const i=parseInt(n,10).toString(16);return s+(i.length===1?"0":"")+i},"#")}const oe=I(r=>ie(h().parse(r)),"rgb");function Ct(){return f({theme_params:r=>{const e=oe().optional();return Object.entries(ne(r)).reduce((t,[s,n])=>(t[s]=e.parse(n),t),{})}})}const C=I(r=>{if(typeof r=="boolean")return r;const e=String(r);if(e==="1"||e==="true")return!0;if(e==="0"||e==="false")return!1;throw T()},"boolean"),k=I(r=>{if(typeof r=="number")return r;if(typeof r=="string"){const e=Number(r);if(!Number.isNaN(e))return e}throw T()},"number");function vt(){return f({height:k(),width:r=>r==null?window.innerWidth:k().parse(r),is_state_stable:C(),is_expanded:C()})}function Pt(){return f({status:h()})}class w{constructor(){o(this,"listeners",new Map);o(this,"subscribeListeners",[])}addListener(e,t,s){let n=this.listeners.get(e);return n||(n=[],this.listeners.set(e,n)),n.push([t,s]),()=>this.off(e,t)}emit(e,...t){this.subscribeListeners.forEach(n=>n(e,...t));const s=this.listeners.get(e);s&&s.forEach(([n,i],a)=>{n(...t),i&&s.splice(a,1)})}on(e,t){return this.addListener(e,t,!1)}once(e,t){return this.addListener(e,t,!0)}off(e,t){const s=this.listeners.get(e);if(s){for(let n=0;n<s.length;n+=1)if(t===s[n][0]){s.splice(n,1);return}}}subscribe(e){return this.subscribeListeners.push(e),()=>this.unsubscribe(e)}unsubscribe(e){for(let t=0;t<this.subscribeListeners.length;t+=1)if(this.subscribeListeners[t]===e){this.subscribeListeners.splice(t,1);return}}}function St(){const r=new w,e=(t,...s)=>{x.log("Emitting processed event:",t,...s),r.emit(t,...s)};return window.addEventListener("resize",()=>{e("viewport_changed",{width:window.innerWidth,height:window.innerHeight,is_state_stable:!0,is_expanded:!0})}),gt((t,s)=>{x.log("Received raw event:",t,s);try{switch(t){case"viewport_changed":return e(t,vt().parse(s));case"theme_changed":return e(t,Ct().parse(s));case"popup_closed":return s==null?e(t,{}):e(t,yt().parse(s));case"set_custom_style":return e(t,h().parse(s));case"qr_text_received":return e(t,Et().parse(s));case"clipboard_text_received":return e(t,wt().parse(s));case"invoice_closed":return e(t,bt().parse(s));case"phone_requested":return e("phone_requested",mt().parse(s));case"custom_method_invoked":return e("custom_method_invoked",_t().parse(s));case"write_access_requested":return e("write_access_requested",Pt().parse(s));case"main_button_pressed":case"back_button_pressed":case"settings_button_pressed":case"scan_qr_popup_closed":case"reload_iframe":return e(t);default:return e(t,s)}}catch(n){x.error("Error processing event:",n)}}),r}const Y="telegram-mini-apps-cached-emitter";function M(){const r=window;return r[Y]===void 0&&(r[Y]=St()),r[Y]}function A(r,e){M().off(r,e)}function y(r,e){return M().on(r,e),()=>A(r,e)}class U extends Error{constructor(e){super(`Async call timeout exceeded. Timeout: ${e}`),Object.setPrototypeOf(this,U.prototype)}}function kt(r){return new Promise((e,t)=>{setTimeout(t,r,new U(r))})}function ae(r,e){return Promise.race([typeof r=="function"?r():r,kt(e)])}async function m(r,e,t){let s;const n=new Promise(b=>{s=b}),i=e?{...t,event:e,method:r}:r,{method:a,event:c,capture:u,postEvent:p=d,timeout:g}=i,_=(Array.isArray(c)?c:[c]).map(b=>y(b,l=>(!u||u(l))&&s(l)));try{return p(a,i.params),await(g?ae(n,g):n)}finally{_.forEach(b=>b())}}async function R(r,e,t,s={}){const{result:n,error:i}=await m("web_app_invoke_custom_method","custom_method_invoked",{...s,params:{method:r,params:e,req_id:t},capture:ke(t)});if(i)throw new Error(i);return n}function xt(r,e){return M().once(r,e),()=>A(r,e)}function Ve(r){M().unsubscribe(r)}function qt(r){return M().subscribe(r),()=>Ve(r)}function be(r,e){return r+(r.length>0&&e.length>0?` ${e}`:e)}function Re(...r){return r.reduce((e,t)=>{let s="";return typeof t=="string"?s=t:typeof t=="object"&&t!==null&&(s=Object.entries(t).reduce((n,[i,a])=>a?be(n,i):n,"")),be(e,s)},"")}function At(...r){return r.reduce((e,t)=>(H(t)&&Object.entries(t).forEach(([s,n])=>{const i=Re(e[s],n);i.length>0&&(e[s]=i)}),e),{})}function ce(r){const e=ie(r);return Math.sqrt([.299,.587,.114].reduce((s,n,i)=>{const a=parseInt(e.slice(1+i*2,1+(i+1)*2),16);return s+a*a*n},0))<120}class E{constructor(e,t){this.state=e,this.ee=t}internalSet(e,t){return this.state[e]===t||t===void 0?!1:(this.state[e]=t,this.ee.emit(`change:${e}`,t),!0)}clone(){return{...this.state}}set(e,t){let s=!1;if(typeof e=="string")s=this.internalSet(e,t);else for(const n in e)this.internalSet(n,e[n])&&(s=!0);s&&this.ee.emit("change")}get(e){return this.state[e]}}function P(r,e){return t=>q(e[t],r)}class Te{constructor(e,t,s=d){o(this,"ee",new w);o(this,"state");o(this,"on",(e,t)=>e==="click"?y("back_button_pressed",t):this.ee.on(e,t));o(this,"off",(e,t)=>e==="click"?A("back_button_pressed",t):this.ee.off(e,t));o(this,"supports");this.postEvent=s,this.state=new E({isVisible:e},this.ee),this.supports=P(t,{show:"web_app_setup_back_button",hide:"web_app_setup_back_button"})}set isVisible(e){this.state.set("isVisible",e),this.postEvent("web_app_setup_back_button",{is_visible:e})}get isVisible(){return this.state.get("isVisible")}hide(){this.isVisible=!1}show(){this.isVisible=!0}}class Ie{constructor(e,t=d){o(this,"ee",new w);o(this,"state");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));this.postEvent=t,this.state=new E({isConfirmationNeeded:e},this.ee)}set isConfirmationNeeded(e){this.state.set("isConfirmationNeeded",e),this.postEvent("web_app_setup_closing_behavior",{need_confirmation:e})}get isConfirmationNeeded(){return this.state.get("isConfirmationNeeded")}disableConfirmation(){this.isConfirmationNeeded=!1}enableConfirmation(){this.isConfirmationNeeded=!0}}function Vt(r){if(Array.isArray(r))return r;if(typeof r=="string")try{const e=JSON.parse(r);if(Array.isArray(e))return e}catch{}throw T()}class Rt extends J{constructor(t,s,n){super(Vt,s,n);o(this,"itemParser");this.itemParser=typeof t=="function"?t:t.parse.bind(t)}parse(t){const s=super.parse(t);return s===void 0?s:s.map(this.itemParser)}of(t){return this.itemParser=typeof t=="function"?t:t.parse.bind(t),this}}function Le(r){return new Rt(e=>e,!1,r)}function me(r,e){return r.reduce((t,s)=>(t[s]=e,t),{})}class Be{constructor(e,t,s=d){o(this,"supports");this.createRequestId=t,this.postEvent=s,this.supports=P(e,{delete:"web_app_invoke_custom_method",get:"web_app_invoke_custom_method",getKeys:"web_app_invoke_custom_method",set:"web_app_invoke_custom_method"})}async delete(e,t={}){const s=Array.isArray(e)?e:[e];s.length!==0&&await R("deleteStorageValues",{keys:s},this.createRequestId(),{...t,postEvent:this.postEvent})}async getKeys(e={}){const t=await R("getStorageKeys",{},this.createRequestId(),{...e,postEvent:this.postEvent});return Le().of(h()).parse(t)}async get(e,t={}){const s=Array.isArray(e)?e:[e];if(s.length===0)return me(s,"");const n=f(me(s,h())),i=await R("getStorageValues",{keys:s},this.createRequestId(),{...t,postEvent:this.postEvent}).then(a=>n.parse(a));return Array.isArray(e)?i:i[e]}async set(e,t,s={}){await R("saveStorageValue",{key:e,value:t},this.createRequestId(),{...s,postEvent:this.postEvent})}}class $e{constructor(e,t=d){o(this,"supports");this.postEvent=t,this.supports=P(e,{impactOccurred:"web_app_trigger_haptic_feedback",notificationOccurred:"web_app_trigger_haptic_feedback",selectionChanged:"web_app_trigger_haptic_feedback"})}impactOccurred(e){this.postEvent("web_app_trigger_haptic_feedback",{type:"impact",impact_style:e})}notificationOccurred(e){this.postEvent("web_app_trigger_haptic_feedback",{type:"notification",notification_type:e})}selectionChanged(){this.postEvent("web_app_trigger_haptic_feedback",{type:"selection_change"})}}function De(){return f({id:k(),type:h(),title:h(),photoUrl:{type:h().optional(),from:"photo_url"},username:h().optional()},"Chat")}class Oe{constructor(e){this.initData=e}get authDate(){return this.initData.authDate}get canSendAfter(){return this.initData.canSendAfter}get canSendAfterDate(){const{canSendAfter:e}=this;return e===void 0?void 0:new Date(this.authDate.getTime()+e*1e3)}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}}function te(){return f({addedToAttachmentMenu:{type:C().optional(),from:"added_to_attachment_menu"},allowsWriteToPm:{type:C().optional(),from:"allows_write_to_pm"},firstName:{type:h(),from:"first_name"},id:k(),isBot:{type:C().optional(),from:"is_bot"},isPremium:{type:C().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")}const he=I(r=>r instanceof Date?r:new Date(k().parse(r)*1e3),"Date");function Z(r,e){return new J(t=>{if(typeof t!="string"&&!(t instanceof URLSearchParams))throw T();const s=typeof t=="string"?new URLSearchParams(t):t;return xe(r,n=>{const i=s.get(n);return i===null?void 0:i})},!1,e)}function ue(){return Z({authDate:{type:he(),from:"auth_date"},canSendAfter:{type:k().optional(),from:"can_send_after"},chat:De().optional(),chatInstance:{type:h().optional(),from:"chat_instance"},chatType:{type:h().optional(),from:"chat_type"},hash:h(),queryId:{type:h().optional(),from:"query_id"},receiver:te().optional(),startParam:{type:h().optional(),from:"start_param"},user:te().optional()},"InitData")}function Tt(r){return ue().parse(r)}function It(r){const{hostname:e,pathname:t}=new URL(r,window.location.href);if(e!=="t.me")throw new Error(`Incorrect hostname: ${e}`);const s=t.match(/^\/(\$|invoice\/)([A-Za-z0-9\-_=]+)$/);if(s===null)throw new Error('Link pathname has incorrect format. Expected to receive "/invoice/{slug}" or "/${slug}"');return s[2]}class Ne{constructor(e,t=d){o(this,"ee",new w);o(this,"state");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));o(this,"supports");this.postEvent=t,this.state=new E({isOpened:!1},this.ee),this.supports=P(e,{open:"web_app_open_invoice"})}set isOpened(e){this.state.set("isOpened",e)}get isOpened(){return this.state.get("isOpened")}async open(e,t){if(this.isOpened)throw new Error("Invoice is already opened");const s=t?It(e):e;this.isOpened=!0;try{return(await m("web_app_open_invoice","invoice_closed",{params:{slug:s},postEvent:this.postEvent,capture(i){return s===i.slug}})).status}finally{this.isOpened=!1}}}class He{constructor(e){o(this,"ee",new w);o(this,"state");o(this,"postEvent");o(this,"on",(e,t)=>e==="click"?y("main_button_pressed",t):this.ee.on(e,t));o(this,"off",(e,t)=>e==="click"?A("main_button_pressed",t):this.ee.off(e,t));const{postEvent:t=d,text:s,textColor:n,backgroundColor:i,isEnabled:a,isVisible:c,isLoaderVisible:u}=e;this.postEvent=t,this.state=new E({backgroundColor:i,isEnabled:a,isVisible:c,isLoaderVisible:u,text:s,textColor:n},this.ee)}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.backgroundColor,text_color:this.textColor})}set isEnabled(e){this.setParams({isEnabled:e})}get isEnabled(){return this.state.get("isEnabled")}set isLoaderVisible(e){this.setParams({isLoaderVisible:e})}get isLoaderVisible(){return this.state.get("isLoaderVisible")}set isVisible(e){this.setParams({isVisible:e})}get isVisible(){return this.state.get("isVisible")}get backgroundColor(){return this.state.get("backgroundColor")}get text(){return this.state.get("text")}get textColor(){return this.state.get("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}show(){return this.isVisible=!0,this}showLoader(){return this.isLoaderVisible=!0,this}setText(e){return this.setParams({text:e})}setTextColor(e){return this.setParams({textColor:e})}setBackgroundColor(e){return this.setParams({backgroundColor:e})}setParams(e){return this.state.set(e),this.commit(),this}}const Lt=Z({contact:f({userId:{type:k(),from:"user_id"},phoneNumber:{type:h(),from:"phone_number"},firstName:{type:h(),from:"first_name"},lastName:{type:h().optional(),from:"last_name"}}),authDate:{type:he(),from:"auth_date"},hash:h()});function We(r,e){return t=>{const[s,n]=e[t];return q(s,n,r)}}function Bt(r){return new Promise(e=>{setTimeout(e,r)})}class Me{constructor(e){o(this,"ee",new w);o(this,"state");o(this,"botInline");o(this,"postEvent");o(this,"createRequestId");o(this,"requestingPhoneAccess",!1);o(this,"requestingWriteAccess",!1);o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));o(this,"supports");o(this,"supportsParam");const{postEvent:t=d,headerColor:s,backgroundColor:n,version:i,botInline:a,createRequestId:c}=e,u=P(i,{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"});this.postEvent=t,this.botInline=a,this.createRequestId=c,this.supports=p=>!(!u(p)||p==="switchInlineQuery"&&!a),this.state=new E({backgroundColor:n,headerColor:s},this.ee),this.supportsParam=We(i,{"setHeaderColor.color":["web_app_set_header_color","color"]})}async getRequestedContact(){return R("getRequestedContact",{},this.createRequestId(),{postEvent:this.postEvent,timeout:1e4}).then(e=>Lt.parse(e))}get backgroundColor(){return this.state.get("backgroundColor")}close(){this.postEvent("web_app_close")}get headerColor(){return this.state.get("headerColor")}get isBotInline(){return this.botInline}get isDark(){return ce(this.backgroundColor)}get isRequestingPhoneAccess(){return this.requestingPhoneAccess}get isRequestingWriteAccess(){return this.requestingWriteAccess}ready(){this.postEvent("web_app_ready")}async requestContact({timeout:e=5e3}={}){try{return await this.getRequestedContact()}catch{}if(await this.requestPhoneAccess()!=="sent")throw new Error("Access denied.");const s=Date.now()+e;let n=50;return ae(async()=>{for(;Date.now()<s;){try{return await this.getRequestedContact()}catch{}await Bt(n),n+=50}throw new Error("Unable to retrieve requested contact.")},e)}requestPhoneAccess(e={}){if(this.requestingPhoneAccess)throw new Error("Phone access is already being requested.");return this.requestingPhoneAccess=!0,m("web_app_request_phone","phone_requested",{...e,postEvent:this.postEvent}).then(t=>t.status).finally(()=>{this.requestingPhoneAccess=!1})}requestWriteAccess(e={}){if(this.requestingWriteAccess)throw new Error("Write access is already being requested.");return this.requestingWriteAccess=!0,m("web_app_request_write_access","write_access_requested",{...e,postEvent:this.postEvent}).then(t=>t.status).finally(()=>{this.requestingWriteAccess=!1})}sendData(e){const{size:t}=new Blob([e]);if(t===0||t>4096)throw new Error(`Passed data has incorrect size: ${t}`);this.postEvent("web_app_data_send",{data:e})}setHeaderColor(e){this.postEvent("web_app_set_header_color",Q(e)?{color:e}:{color_key:e}),this.state.set("headerColor",e)}setBackgroundColor(e){this.postEvent("web_app_set_background_color",{color:e}),this.state.set("backgroundColor",e)}switchInlineQuery(e,t=[]){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:e,chat_types:t})}}function $t(r){const e=r.message.trim(),t=(r.title||"").trim(),s=r.buttons||[];let n;if(t.length>64)throw new Error(`Title has incorrect size: ${t.length}`);if(e.length===0||e.length>256)throw new Error(`Message has incorrect size: ${e.length}`);if(s.length>3)throw new Error(`Buttons have incorrect size: ${s.length}`);return s.length===0?n=[{type:"close",id:""}]:n=s.map(i=>{const{id:a=""}=i;if(a.length>64)throw new Error(`Button ID has incorrect size: ${a}`);if(i.type===void 0||i.type==="default"||i.type==="destructive"){const c=i.text.trim();if(c.length===0||c.length>64){const u=i.type||"default";throw new Error(`Button text with type "${u}" has incorrect size: ${i.text.length}`)}return{...i,text:c,id:a}}return{...i,id:a}}),{title:t,message:e,buttons:n}}class Ue{constructor(e,t=d){o(this,"ee",new w);o(this,"state");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));o(this,"supports");this.postEvent=t,this.state=new E({isOpened:!1},this.ee),this.supports=P(e,{open:"web_app_open_popup"})}set isOpened(e){this.state.set("isOpened",e)}get isOpened(){return this.state.get("isOpened")}open(e){if(this.isOpened)throw new Error("Popup is already opened.");return this.isOpened=!0,m("web_app_open_popup","popup_closed",{postEvent:this.postEvent,params:$t(e)}).then(({button_id:t=null})=>t).finally(()=>{this.isOpened=!1})}}class Ge{constructor(e,t=d){o(this,"ee",new w);o(this,"state");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));o(this,"supports");this.postEvent=t,this.state=new E({isOpened:!1},this.ee),this.supports=P(e,{close:"web_app_close_scan_qr_popup",open:"web_app_open_scan_qr_popup"})}close(){this.postEvent("web_app_close_scan_qr_popup"),this.isOpened=!1}set isOpened(e){this.state.set("isOpened",e)}get isOpened(){return this.state.get("isOpened")}async open(e){if(this.isOpened)throw new Error("QR scanner is already opened.");this.isOpened=!0;try{const t=await m("web_app_open_scan_qr_popup",["qr_text_received","scan_qr_popup_closed"],{postEvent:this.postEvent,params:{text:e}});return typeof t=="object"&&typeof t.data=="string"?t.data:null}finally{this.isOpened=!1}}}class je{constructor(e,t,s=d){o(this,"ee",new w);o(this,"state");o(this,"on",(e,t)=>e==="click"?y("settings_button_pressed",t):this.ee.on(e,t));o(this,"off",(e,t)=>e==="click"?A("settings_button_pressed",t):this.ee.off(e,t));o(this,"supports");this.postEvent=s,this.state=new E({isVisible:e},this.ee),this.supports=P(t,{show:"web_app_setup_settings_button",hide:"web_app_setup_settings_button"})}set isVisible(e){this.state.set("isVisible",e),this.postEvent("web_app_setup_settings_button",{is_visible:e})}get isVisible(){return this.state.get("isVisible")}hide(){this.isVisible=!1}show(){this.isVisible=!0}}function Dt(r){return r.replace(/(^|_)bg/,(e,t)=>`${t}background`).replace(/_([a-z])/g,(e,t)=>t.toUpperCase())}function Ot(r){return r.replace(/[A-Z]/g,e=>`_${e.toLowerCase()}`).replace(/(^|_)background/,(e,t)=>`${t}bg`)}const pe=I(r=>{const e=oe().optional();return Object.entries(ne(r)).reduce((t,[s,n])=>(t[Dt(s)]=e.parse(n),t),{})},"ThemeParams");function le(r){return pe().parse(r)}function Nt(r){return m("web_app_request_theme","theme_changed",r).then(le)}function Fe(r){return JSON.stringify(Object.entries(r).reduce((e,[t,s])=>(s&&(e[Ot(t)]=s),e),{}))}class ze{constructor(e){o(this,"ee",new w);o(this,"state");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));this.state=new E(e,this.ee)}get accentTextColor(){return this.get("accentTextColor")}get backgroundColor(){return this.get("backgroundColor")}get buttonColor(){return this.get("buttonColor")}get buttonTextColor(){return this.get("buttonTextColor")}get destructiveTextColor(){return this.get("destructiveTextColor")}get(e){return this.state.get(e)}getState(){return this.state.clone()}get headerBackgroundColor(){return this.get("headerBackgroundColor")}get hintColor(){return this.get("hintColor")}get isDark(){return!this.backgroundColor||ce(this.backgroundColor)}get linkColor(){return this.get("linkColor")}get secondaryBackgroundColor(){return this.get("secondaryBackgroundColor")}get sectionBackgroundColor(){return this.get("sectionBackgroundColor")}get sectionHeaderTextColor(){return this.get("sectionHeaderTextColor")}listen(){return y("theme_changed",e=>{this.state.set(le(e.theme_params))})}get subtitleTextColor(){return this.get("subtitleTextColor")}get textColor(){return this.get("textColor")}}class Je{constructor(e,t,s=d){o(this,"supports");o(this,"supportsParam");this.version=e,this.createRequestId=t,this.postEvent=s,this.supports=P(e,{readTextFromClipboard:"web_app_read_text_from_clipboard"}),this.supportsParam=We(e,{"openLink.tryInstantView":["web_app_open_link","try_instant_view"]})}openLink(e,t){const s=new URL(e,window.location.href).toString();if(!q("web_app_open_link",this.version)){window.open(s,"_blank");return}this.postEvent("web_app_open_link",{url:s,...typeof t=="boolean"?{try_instant_view:t}:{}})}openTelegramLink(e){const{hostname:t,pathname:s,search:n}=new URL(e,window.location.href);if(t!=="t.me")throw new Error(`URL has not allowed hostname: ${t}. Only "t.me" is allowed`);if(!q("web_app_open_tg_link",this.version)){window.location.href=e;return}this.postEvent("web_app_open_tg_link",{path_full:s+n})}async readTextFromClipboard(){const e=this.createRequestId(),{data:t=null}=await m("web_app_read_text_from_clipboard","clipboard_text_received",{postEvent:this.postEvent,params:{req_id:e},capture:ke(e)});return t}}function Qe(r){return["macos","tdesktop","unigram","web","weba"].includes(r)}async function de(r){const e=await m("web_app_request_viewport","viewport_changed",r);return{height:e.height,width:e.width,isExpanded:e.is_expanded,isStateStable:e.is_state_stable}}function $(r){return r<0?0:r}class Ze{constructor(e){o(this,"ee",new w);o(this,"state");o(this,"postEvent");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));const{height:t,isExpanded:s,width:n,stableHeight:i,postEvent:a=d}=e;this.postEvent=a,this.state=new E({height:$(t),isExpanded:s,stableHeight:$(i),width:$(n)},this.ee)}sync(e){return de(e).then(({height:t,isExpanded:s,width:n,isStateStable:i})=>{this.state.set({height:t,width:n,isExpanded:s,stableHeight:i?t:this.state.get("stableHeight")})})}get height(){return this.state.get("height")}get stableHeight(){return this.state.get("stableHeight")}listen(){return y("viewport_changed",e=>{const{height:t,width:s,is_expanded:n,is_state_stable:i}=e,a={height:$(t),isExpanded:n,width:$(s)};i&&(a.stableHeight=a.height),this.state.set(a)})}get isExpanded(){return this.state.get("isExpanded")}get width(){return this.state.get("width")}expand(){this.postEvent("web_app_expand"),this.state.set("isExpanded",!0)}get isStable(){return this.stableHeight===this.height}}function v(r,e){document.documentElement.style.setProperty(r,e)}function Ke(r,e){const t=()=>{v("--tg-background-color",r.backgroundColor)},s=()=>{const{backgroundColor:n,secondaryBackgroundColor:i}=e;if(Q(r.headerColor)){v("--tg-header-color",r.headerColor);return}if(r.headerColor==="bg_color"&&n){v("--tg-header-color",n);return}r.headerColor==="secondary_bg_color"&&i&&v("--tg-header-color",i)};e.on("change",s),r.on("change:backgroundColor",t),r.on("change:headerColor",s),t(),s()}function Ye(r){const e=()=>{const t=r.getState();Object.entries(t).forEach(([s,n])=>{if(n){const i=s.replace(/[A-Z]/g,a=>`-${a.toLowerCase()}`);v(`--tg-theme-${i}`,n)}})};r.on("change",e),e()}function re(r){const e=()=>v("--tg-viewport-height",`${r.height}px`),t=()=>v("--tg-viewport-width",`${r.width}px`),s=()=>v("--tg-viewport-stable-height",`${r.stableHeight}px`);r.on("change:height",e),r.on("change:width",t),r.on("change:stableHeight",s),e(),t(),s()}function Ht(){const r=document.createElement("style");r.id="telegram-custom-styles",document.head.appendChild(r),y("set_custom_style",e=>{r.innerHTML=e})}function Xe(r){return`telegram-mini-apps-${r}`}function L(r,e){sessionStorage.setItem(Xe(r),JSON.stringify(e))}function B(r){const e=sessionStorage.getItem(Xe(r));return e?JSON.parse(e):null}function Wt(r,e,t){const{isVisible:s=!1}=r?B("back-button")||{}:{},n=new Te(s,e,t);return n.on("change",()=>{L("back-button",{isVisible:n.isVisible})}),n}function Mt(r,e){const{isConfirmationNeeded:t=!1}=r?B("closing-behavior")||{}:{},s=new Ie(t,e);return s.on("change",()=>L("closing-behavior",{isConfirmationNeeded:s.isConfirmationNeeded})),s}function Ut(r,e,t,s){const{backgroundColor:n=e,isEnabled:i=!1,isVisible:a=!1,isLoaderVisible:c=!1,textColor:u=t,text:p=""}=r?B("main-button")||{}:{},g=new He({backgroundColor:n,isEnabled:i,isLoaderVisible:c,isVisible:a,postEvent:s,text:p,textColor:u}),_=()=>L("main-button",{backgroundColor:g.backgroundColor,isEnabled:g.isEnabled,isLoaderVisible:g.isLoaderVisible,isVisible:g.isVisible,text:g.text,textColor:g.textColor});return g.on("change",_),g}function Gt(r,e,t,s,n,i){const{backgroundColor:a=e,headerColor:c="bg_color"}=r?B("mini-app")||{}:{},u=new Me({headerColor:c,backgroundColor:a,version:t,botInline:s,createRequestId:n,postEvent:i}),p=()=>L("mini-app",{backgroundColor:u.backgroundColor,headerColor:u.headerColor});return u.on("change",p),u}function jt(){let r=0;return()=>(r+=1,r.toString())}function Ft(r,e,t){const{isVisible:s=!1}=r?B("settings-button")||{}:{},n=new je(s,e,t);return n.on("change",()=>{L("settings-button",{isVisible:n.isVisible})}),n}function zt(r){const e=new ze(r);return e.listen(),e}function j(r){const e=new Ze(r);return e.on("change",()=>L("viewport",{height:e.height,isExpanded:e.isExpanded,stableHeight:e.stableHeight,width:e.width})),e.listen(),e}function Jt(r,e,t,s){const n=r?B("viewport"):null;if(n)return j({...n,postEvent:t});if(Qe(e))return j({height:window.innerHeight,isExpanded:!0,postEvent:t,stableHeight:window.innerHeight,width:window.innerWidth});if(s)return de({postEvent:t,timeout:5e3}).then(({height:a,isStateStable:c,...u})=>j({...u,height:a,stableHeight:c?a:0}));const i=j({width:0,height:0,isExpanded:!1,postEvent:t,stableHeight:0});return i.sync({postEvent:t,timeout:5e3}).catch(a=>{console.error("Unable to actualize viewport state",a)}),i}function Qt(r){return typeof r=="object"?r:r?{themeParams:!0,viewport:!0,miniApp:!0}:{}}function ye(r,e,t,s){const n=Qt(r);n.miniApp&&Ke(e,t),n.themeParams&&Ye(t),n.viewport&&(s instanceof Promise?s.then(re):re(s))}function et(){return Z({botInline:{type:C().optional(),from:"tgWebAppBotInline"},initData:{type:ue().optional(),from:"tgWebAppData"},initDataRaw:{type:h().optional(),from:"tgWebAppData"},platform:{type:h(),from:"tgWebAppPlatform"},showSettings:{type:C().optional(),from:"tgWebAppShowSettings"},startParam:{type:h().optional(),from:"tgWebAppStartParam"},themeParams:{type:pe(),from:"tgWebAppThemeParams"},version:{type:h(),from:"tgWebAppVersion"}},"LaunchParams")}function fe(r){return et().parse(r)}function tt(r){const e=r.includes("?")?r.replace("#","&").slice(r.indexOf("?")+1):r.slice(r.indexOf("#")+1);return fe(e)}function Zt(){return tt(window.location.href)}function rt(){return performance.getEntriesByType("navigation")[0]}function Kt(){const r=rt();if(!r)throw new Error("Unable to get first navigation entry.");return tt(r.name)}function st(r){const{initDataRaw:e,themeParams:t,platform:s,version:n,showSettings:i,startParam:a,botInline:c}=r,u=new URLSearchParams;return e&&u.set("tgWebAppData",e),u.set("tgWebAppPlatform",s),u.set("tgWebAppThemeParams",Fe(t)),u.set("tgWebAppVersion",n),a&&u.set("tgWebAppStartParam",n),typeof i=="boolean"&&u.set("tgWebAppShowSettings",i?"1":"0"),typeof c=="boolean"&&u.set("tgWebAppBotInline",c?"1":"0"),u.toString()}const nt="telegram-mini-apps-launch-params";function Yt(){return fe(sessionStorage.getItem(nt)||"")}function Xt(r){sessionStorage.setItem(nt,st(r))}function K(){const r=[];for(const e of[Zt,Kt,Yt])try{const t=e();return Xt(t),t}catch(t){r.push(t)}throw x.error("Unable to extract launch parameters. Received errors:",r),new Error("Unable to retrieve launch parameters from any known source.")}function ge(){var r;return((r=rt())==null?void 0:r.type)==="reload"}function er(r={}){const{async:e=!1,complete:t=e,cssVars:s=!1,acceptCustomStyles:n=!1}=r;try{const{initData:i,initDataRaw:a,version:c,platform:u,themeParams:p,botInline:g=!1}=K(),_=ge(),b=jt(),l=Se(c);se()&&(n&&Ht(),l("iframe_ready",{reload_supported:!0}),y("reload_iframe",()=>{l("iframe_will_reload"),window.location.reload()}));const V={backButton:Wt(_,c,l),closingBehavior:Mt(_,l),cloudStorage:new Be(c,b,l),createRequestId:b,hapticFeedback:new $e(c,l),invoice:new Ne(c,l),mainButton:Ut(_,p.buttonColor||"#000000",p.buttonTextColor||"#ffffff",l),miniApp:Gt(_,p.backgroundColor||"#ffffff",c,g,b,l),popup:new Ue(c,l),postEvent:l,qrScanner:new Ge(c,l),settingsButton:Ft(_,c,l),themeParams:zt(p),utils:new Je(c,b,l),...i?{initData:new Oe(i),initDataRaw:a}:{}},G=Jt(_,u,l,t);return G instanceof Promise||t?Promise.resolve(G).then(_e=>(ye(s,V.miniApp,V.themeParams,_e),{...V,viewport:_e})):(ye(s,V.miniApp,V.themeParams,G),{...V,viewport:G})}catch(i){if(t)return Promise.reject(i);throw i}}function tr(){return{launchParams:K(),isPageReload:ge()}}function rr(){try{return K(),!0}catch{return!1}}function sr(r){const e=r.match(/#(.+)/);return e?e[1]:null}async function O(r){return r===0?!0:Promise.race([new Promise(e=>{window.addEventListener("popstate",function t(){window.removeEventListener("popstate",t),e(!0)}),window.history.go(r)}),new Promise(e=>{setTimeout(e,50,!1)})])}async function nr(){if(window.history.length<=1||(window.history.pushState(null,""),await O(1-window.history.length)))return;let e=await O(-1);for(;e;)e=await O(-1)}function D(r,e){return r.startsWith(e)?r:`${e}${r}`}class it{constructor(e,t,{debug:s=!1,loggerPrefix:n="Navigator"}){o(this,"logger");o(this,"entries");if(this.entriesCursor=t,e.length===0)throw new Error("Entries list should not be empty.");if(t>=e.length)throw new Error("Cursor should be less than entries count.");this.entries=e.map(({pathname:i="",search:a,hash:c})=>{if(!i.startsWith("/")&&i.length>0)throw new Error('Pathname should start with "/"');return{pathname:D(i,"/"),search:a?D(a,"?"):"",hash:c?D(c,"#"):""}}),this.logger=new Ce(`[${n}]`,s)}formatEntry(e){let t;if(typeof e=="string")t=e;else{const{pathname:a="",search:c,hash:u}=e;t=a+(c?D(c,"?"):"")+(u?D(u,"#"):"")}const{pathname:s,search:n,hash:i}=new URL(t,`https://localhost${this.path}`);return{pathname:s,search:n,hash:i}}get entry(){return this.entries[this.entriesCursor]}back(){return this.go(-1)}get cursor(){return this.entriesCursor}get canGoBack(){return this.entriesCursor>0}get canGoForward(){return this.entriesCursor!==this.entries.length-1}forward(){return this.go(1)}go(e){this.logger.log(`called go(${e})`);const t=Math.min(this.entries.length-1,Math.max(this.entriesCursor+e,0));if(this.entriesCursor===t)return this.performGo({updated:!1,delta:e});const s=this.entry;this.entriesCursor=t;const n=this.entry;return this.logger.log("State changed",{before:s,after:n}),this.performGo({updated:!0,delta:e,before:s,after:n})}getEntries(){return this.entries.map(e=>({...e}))}get hash(){return this.entry.hash}push(e){this.entriesCursor!==this.entries.length-1&&this.entries.splice(this.entriesCursor+1);const t=this.formatEntry(e),s=this.entry;this.entriesCursor+=1,this.entries[this.entriesCursor]=t;const n=this.entry;return this.logger.log("State changed",{before:s,after:n}),this.performPush({before:s,after:n})}get path(){return`${this.pathname}${this.search}${this.hash}`}get pathname(){return this.entry.pathname}replace(e){const t=this.formatEntry(e);if(this.search===t.search&&this.pathname===t.pathname&&this.hash===t.hash)return this.performReplace({updated:!1,entry:t});const s=this.entry;this.entries[this.entriesCursor]=t;const n=this.entry;return this.logger.log("State changed",{before:s,after:n}),this.performReplace({updated:!0,before:s,after:n})}get search(){return this.entry.search}}const Ee=0,X=1,ee=2;class we extends it{constructor(t,s,n={}){super(t,s,{...n,loggerPrefix:"HashNavigator"});o(this,"ee",new w);o(this,"attached",!1);o(this,"onPopState",async({state:t})=>{if(this.logger.log('"popstate" event received. State:',t),t===null)return this.push(window.location.hash.slice(1));if(t===Ee){this.logger.log("Void reached. Moving history forward"),window.history.forward();return}if(t===X)return this.back();if(t===ee)return this.forward()});o(this,"back",()=>super.back());o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee))}static fromLocation(t){const{search:s,pathname:n,hash:i}=new URL(window.location.hash.slice(1),window.location.href);return new we([{search:s,pathname:n,hash:i}],0,t)}async performGo(t){t.updated&&(this.attached&&await this.syncHistory(),this.emitChanged(t.before,t.after))}async performPush({before:t,after:s}){this.attached&&await this.syncHistory(),this.emitChanged(t,s)}async performReplace(t){t.updated&&(this.attached&&window.history.replaceState(null,"",`#${this.path}`),this.emitChanged(t.before,t.after))}async syncHistory(){window.removeEventListener("popstate",this.onPopState);const t=`#${this.path}`;await nr(),d("web_app_setup_back_button",{is_visible:this.canGoBack}),this.canGoBack&&this.canGoForward?(this.logger.log("Setting up history: [<-, *, ->]"),window.history.replaceState(X,""),window.history.pushState(null,"",t),window.history.pushState(ee,""),await O(-1)):this.canGoBack?(this.logger.log("Setting up history: [<-, *]"),window.history.replaceState(X,""),window.history.pushState(null,"",t)):this.canGoForward?(this.logger.log("Setting up history: [*, ->]"),window.history.replaceState(null,t),window.history.pushState(ee,""),await O(-1)):(this.logger.log("Setting up history: [~, *]"),window.history.replaceState(Ee,""),window.history.pushState(null,"",t)),window.addEventListener("popstate",this.onPopState)}emitChanged(t,s){this.ee.emit("change",{navigator:this,from:t,to:s})}async attach(){if(!this.attached)return this.logger.log("Attaching",this),this.attached=!0,y("back_button_pressed",this.back),this.syncHistory()}detach(){this.attached&&(this.logger.log("Detaching",this),this.attached=!1,window.removeEventListener("popstate",this.onPopState),A("back_button_pressed",this.back))}}function ir(r){return r instanceof U}exports.BackButton=Te;exports.ClosingBehavior=Ie;exports.CloudStorage=Be;exports.HapticFeedback=$e;exports.HashNavigator=we;exports.InitData=Oe;exports.Invoice=Ne;exports.MainButton=He;exports.MethodUnsupportedError=F;exports.MiniApp=Me;exports.Navigator=it;exports.ParameterUnsupportedError=z;exports.ParseError=W;exports.ParseSchemaFieldError=N;exports.Popup=Ue;exports.QRScanner=Ge;exports.SettingsButton=je;exports.ThemeParams=ze;exports.TimeoutError=U;exports.Utils=Je;exports.Viewport=Ze;exports.array=Le;exports.bindMiniAppCSSVars=Ke;exports.bindThemeCSSVars=Ye;exports.bindViewportCSSVars=re;exports.boolean=C;exports.chatParser=De;exports.classNames=Re;exports.compareVersions=Pe;exports.createPostEvent=Se;exports.date=he;exports.getHash=sr;exports.init=er;exports.initDataParser=ue;exports.invokeCustomMethod=R;exports.isColorDark=ce;exports.isIframe=se;exports.isPageReload=ge;exports.isRGB=Q;exports.isRGBShort=Ae;exports.isRecord=H;exports.isStableViewportPlatform=Qe;exports.isTMA=rr;exports.isTimeoutError=ir;exports.json=f;exports.launchParamsParser=et;exports.mergeClassNames=At;exports.number=k;exports.off=A;exports.on=y;exports.once=xt;exports.parseInitData=Tt;exports.parseLaunchParams=fe;exports.parseMessage=qe;exports.parseThemeParams=le;exports.postEvent=d;exports.request=m;exports.requestThemeParams=Nt;exports.requestViewport=de;exports.retrieveLaunchData=tr;exports.retrieveLaunchParams=K;exports.rgb=oe;exports.searchParams=Z;exports.serializeLaunchParams=st;exports.serializeThemeParams=Fe;exports.setCSSVar=v;exports.setDebug=ct;exports.setTargetOrigin=ht;exports.string=h;exports.subscribe=qt;exports.supports=q;exports.themeParamsParser=pe;exports.toRGB=ie;exports.unsubscribe=Ve;exports.userParser=te;exports.withTimeout=ae;
|