@tma.js/sdk-react 0.4.4 → 0.4.5
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/{types → dts}/provider/SDKProvider.d.ts +2 -2
- package/dist/index.js +206 -0
- package/dist/index.js.map +1 -0
- package/dist/index.umd.cjs +2 -0
- package/dist/index.umd.cjs.map +1 -0
- package/package.json +14 -19
- package/dist/lib/browser.js +0 -2
- package/dist/lib/browser.js.map +0 -1
- package/dist/lib/index.cjs +0 -2
- package/dist/lib/index.cjs.map +0 -1
- package/dist/lib/index.mjs +0 -2
- package/dist/lib/index.mjs.map +0 -1
- /package/dist/{types → dts}/index.d.ts +0 -0
- /package/dist/{types → dts}/lib/back-button/index.d.ts +0 -0
- /package/dist/{types → dts}/lib/back-button/types.d.ts +0 -0
- /package/dist/{types → dts}/lib/back-button/useBackButton.d.ts +0 -0
- /package/dist/{types → dts}/lib/back-button/withBackButton.d.ts +0 -0
- /package/dist/{types → dts}/lib/closing-behavior/index.d.ts +0 -0
- /package/dist/{types → dts}/lib/closing-behavior/types.d.ts +0 -0
- /package/dist/{types → dts}/lib/closing-behavior/useClosingBehaviour.d.ts +0 -0
- /package/dist/{types → dts}/lib/closing-behavior/withClosingBehaviour.d.ts +0 -0
- /package/dist/{types → dts}/lib/cloud-storage.d.ts +0 -0
- /package/dist/{types → dts}/lib/haptic-feedback/index.d.ts +0 -0
- /package/dist/{types → dts}/lib/haptic-feedback/types.d.ts +0 -0
- /package/dist/{types → dts}/lib/haptic-feedback/useHapticFeedback.d.ts +0 -0
- /package/dist/{types → dts}/lib/haptic-feedback/withHapticFeedback.d.ts +0 -0
- /package/dist/{types → dts}/lib/hooks.d.ts +0 -0
- /package/dist/{types → dts}/lib/index.d.ts +0 -0
- /package/dist/{types → dts}/lib/init-data/index.d.ts +0 -0
- /package/dist/{types → dts}/lib/init-data/types.d.ts +0 -0
- /package/dist/{types → dts}/lib/init-data/useInitData.d.ts +0 -0
- /package/dist/{types → dts}/lib/init-data/withInitData.d.ts +0 -0
- /package/dist/{types → dts}/lib/launch-params/index.d.ts +0 -0
- /package/dist/{types → dts}/lib/launch-params/types.d.ts +0 -0
- /package/dist/{types → dts}/lib/launch-params/useLaunchParams.d.ts +0 -0
- /package/dist/{types → dts}/lib/launch-params/withLaunchParams.d.ts +0 -0
- /package/dist/{types → dts}/lib/main-button/index.d.ts +0 -0
- /package/dist/{types → dts}/lib/main-button/types.d.ts +0 -0
- /package/dist/{types → dts}/lib/main-button/useMainButton.d.ts +0 -0
- /package/dist/{types → dts}/lib/main-button/withMainButton.d.ts +0 -0
- /package/dist/{types → dts}/lib/popup/index.d.ts +0 -0
- /package/dist/{types → dts}/lib/popup/types.d.ts +0 -0
- /package/dist/{types → dts}/lib/popup/usePopup.d.ts +0 -0
- /package/dist/{types → dts}/lib/popup/withPopup.d.ts +0 -0
- /package/dist/{types → dts}/lib/qr-scanner/index.d.ts +0 -0
- /package/dist/{types → dts}/lib/qr-scanner/types.d.ts +0 -0
- /package/dist/{types → dts}/lib/qr-scanner/useQRScanner.d.ts +0 -0
- /package/dist/{types → dts}/lib/qr-scanner/withQRScanner.d.ts +0 -0
- /package/dist/{types → dts}/lib/theme-params/index.d.ts +0 -0
- /package/dist/{types → dts}/lib/theme-params/types.d.ts +0 -0
- /package/dist/{types → dts}/lib/theme-params/useThemeParams.d.ts +0 -0
- /package/dist/{types → dts}/lib/theme-params/withThemeParams.d.ts +0 -0
- /package/dist/{types → dts}/lib/viewport/index.d.ts +0 -0
- /package/dist/{types → dts}/lib/viewport/types.d.ts +0 -0
- /package/dist/{types → dts}/lib/viewport/useViewport.d.ts +0 -0
- /package/dist/{types → dts}/lib/viewport/withViewport.d.ts +0 -0
- /package/dist/{types → dts}/lib/web-app/index.d.ts +0 -0
- /package/dist/{types → dts}/lib/web-app/types.d.ts +0 -0
- /package/dist/{types → dts}/lib/web-app/useWebApp.d.ts +0 -0
- /package/dist/{types → dts}/lib/web-app/withWebApp.d.ts +0 -0
- /package/dist/{types → dts}/provider/context.d.ts +0 -0
- /package/dist/{types → dts}/provider/hocs.d.ts +0 -0
- /package/dist/{types → dts}/provider/hooks.d.ts +0 -0
- /package/dist/{types → dts}/provider/index.d.ts +0 -0
- /package/dist/{types → dts}/provider/types.d.ts +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { type PropsWithChildren } from 'react';
|
|
2
2
|
import { type InitOptions } from '@tma.js/sdk';
|
|
3
3
|
export type SDKInitOptions = InitOptions;
|
|
4
4
|
export type SDKProviderProps = PropsWithChildren<{
|
|
@@ -7,4 +7,4 @@ export type SDKProviderProps = PropsWithChildren<{
|
|
|
7
7
|
/**
|
|
8
8
|
* Component which provides access to SDK components.
|
|
9
9
|
*/
|
|
10
|
-
export declare const SDKProvider:
|
|
10
|
+
export declare const SDKProvider: import("react").NamedExoticComponent<SDKProviderProps>;
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import o, { createContext as w, useContext as E, memo as b, useState as c, useEffect as p, useMemo as f, useCallback as B } from "react";
|
|
2
|
+
import { init as P, retrieveLaunchParams as S } from "@tma.js/sdk";
|
|
3
|
+
const a = w({
|
|
4
|
+
components: null,
|
|
5
|
+
didInit: !1,
|
|
6
|
+
error: null
|
|
7
|
+
});
|
|
8
|
+
a.displayName = "SDKContext";
|
|
9
|
+
const l = () => E(a);
|
|
10
|
+
function i(n) {
|
|
11
|
+
const { components: r } = l();
|
|
12
|
+
if (r === null)
|
|
13
|
+
throw new Error(`Unable to get unit "${n}" as long as SDK is not initialized.`);
|
|
14
|
+
return r[n];
|
|
15
|
+
}
|
|
16
|
+
function q(n) {
|
|
17
|
+
return function(e) {
|
|
18
|
+
const t = { ...e, sdk: l() };
|
|
19
|
+
return /* @__PURE__ */ o.createElement(n, { ...t });
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const W = b((n) => {
|
|
23
|
+
const { children: r, initOptions: e } = n, [t, d] = c(!1), [s, m] = c(null), [h, g] = c(null);
|
|
24
|
+
p(() => {
|
|
25
|
+
d(!0), P(e).then(g).catch(m);
|
|
26
|
+
}, []);
|
|
27
|
+
const C = f(() => ({
|
|
28
|
+
components: h,
|
|
29
|
+
didInit: t,
|
|
30
|
+
error: s
|
|
31
|
+
}), [t, h, s]);
|
|
32
|
+
return /* @__PURE__ */ o.createElement(a.Provider, { value: C }, r);
|
|
33
|
+
});
|
|
34
|
+
W.displayName = "SDKProvider";
|
|
35
|
+
function k() {
|
|
36
|
+
const [, n] = c(0);
|
|
37
|
+
return B(() => n((r) => (r + 1) % 1e6), []);
|
|
38
|
+
}
|
|
39
|
+
function u(n, r) {
|
|
40
|
+
const e = k();
|
|
41
|
+
p(() => (r.forEach((t) => n.on(t, e)), () => r.forEach((t) => n.off(t, e))), [n, e, r]);
|
|
42
|
+
}
|
|
43
|
+
function N() {
|
|
44
|
+
return i("postEvent");
|
|
45
|
+
}
|
|
46
|
+
function v() {
|
|
47
|
+
const n = i("backButton");
|
|
48
|
+
return u(n, ["isVisibleChanged"]), n;
|
|
49
|
+
}
|
|
50
|
+
function O(n) {
|
|
51
|
+
return function(e) {
|
|
52
|
+
const t = { ...e, backButton: v() };
|
|
53
|
+
return /* @__PURE__ */ o.createElement(n, { ...t });
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function D() {
|
|
57
|
+
const n = i("closingBehavior");
|
|
58
|
+
return u(n, ["isConfirmationNeededChanged"]), n;
|
|
59
|
+
}
|
|
60
|
+
function Q(n) {
|
|
61
|
+
return function(e) {
|
|
62
|
+
const t = { ...e, closingBehaviour: D() };
|
|
63
|
+
return /* @__PURE__ */ o.createElement(n, { ...t });
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function x() {
|
|
67
|
+
return i("haptic");
|
|
68
|
+
}
|
|
69
|
+
function y(n) {
|
|
70
|
+
return function(e) {
|
|
71
|
+
const t = { ...e, hapticFeedback: x() };
|
|
72
|
+
return /* @__PURE__ */ o.createElement(n, { ...t });
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function A() {
|
|
76
|
+
return i("initData") || null;
|
|
77
|
+
}
|
|
78
|
+
function z(n) {
|
|
79
|
+
return function(e) {
|
|
80
|
+
const t = { ...e, initData: A() };
|
|
81
|
+
return /* @__PURE__ */ o.createElement(n, { ...t });
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function I() {
|
|
85
|
+
return f(S, []);
|
|
86
|
+
}
|
|
87
|
+
function $(n) {
|
|
88
|
+
return function(e) {
|
|
89
|
+
const t = { ...e, launchParams: I() };
|
|
90
|
+
return /* @__PURE__ */ o.createElement(n, { ...t });
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function K() {
|
|
94
|
+
const n = i("mainButton");
|
|
95
|
+
return u(n, [
|
|
96
|
+
"isEnabledChanged",
|
|
97
|
+
"backgroundColorChanged",
|
|
98
|
+
"isProgressVisibleChanged",
|
|
99
|
+
"textChanged",
|
|
100
|
+
"textColorChanged",
|
|
101
|
+
"isVisibleChanged"
|
|
102
|
+
]), n;
|
|
103
|
+
}
|
|
104
|
+
function j(n) {
|
|
105
|
+
return function(e) {
|
|
106
|
+
const t = { ...e, mainButton: K() };
|
|
107
|
+
return /* @__PURE__ */ o.createElement(n, { ...t });
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
function V() {
|
|
111
|
+
const n = i("popup");
|
|
112
|
+
return u(n, ["isOpenedChanged"]), n;
|
|
113
|
+
}
|
|
114
|
+
function G(n) {
|
|
115
|
+
return function(e) {
|
|
116
|
+
const t = { ...e, popup: V() };
|
|
117
|
+
return /* @__PURE__ */ o.createElement(n, { ...t });
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
function F() {
|
|
121
|
+
const n = i("qrScanner");
|
|
122
|
+
return u(n, ["isOpenedChanged"]), n;
|
|
123
|
+
}
|
|
124
|
+
function J(n) {
|
|
125
|
+
return function(e) {
|
|
126
|
+
const t = { ...e, qrScanner: F() };
|
|
127
|
+
return /* @__PURE__ */ o.createElement(n, { ...t });
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function H() {
|
|
131
|
+
const n = i("themeParams");
|
|
132
|
+
return u(n, ["changed"]), n;
|
|
133
|
+
}
|
|
134
|
+
function X(n) {
|
|
135
|
+
return function(e) {
|
|
136
|
+
const t = { ...e, themeParams: H() };
|
|
137
|
+
return /* @__PURE__ */ o.createElement(n, { ...t });
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function L() {
|
|
141
|
+
const n = i("viewport");
|
|
142
|
+
return u(n, [
|
|
143
|
+
"stableHeightChanged",
|
|
144
|
+
"isExpandedChanged",
|
|
145
|
+
"heightChanged",
|
|
146
|
+
"widthChanged"
|
|
147
|
+
]), n;
|
|
148
|
+
}
|
|
149
|
+
function Y(n) {
|
|
150
|
+
return function(e) {
|
|
151
|
+
const t = { ...e, viewport: L() };
|
|
152
|
+
return /* @__PURE__ */ o.createElement(n, { ...t });
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
function M() {
|
|
156
|
+
const n = i("webApp");
|
|
157
|
+
return u(n, ["headerColorChanged", "backgroundColorChanged"]), n;
|
|
158
|
+
}
|
|
159
|
+
function Z(n) {
|
|
160
|
+
return function(e) {
|
|
161
|
+
const t = { ...e, webApp: M() };
|
|
162
|
+
return /* @__PURE__ */ o.createElement(n, { ...t });
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
function R() {
|
|
166
|
+
return i("cloudStorage");
|
|
167
|
+
}
|
|
168
|
+
function _(n) {
|
|
169
|
+
return function(e) {
|
|
170
|
+
const t = { ...e, cloudStorage: R() };
|
|
171
|
+
return /* @__PURE__ */ o.createElement(n, { ...t });
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
export {
|
|
175
|
+
W as SDKProvider,
|
|
176
|
+
a as sdkContext,
|
|
177
|
+
v as useBackButton,
|
|
178
|
+
D as useClosingBehaviour,
|
|
179
|
+
R as useCloudStorage,
|
|
180
|
+
x as useHapticFeedback,
|
|
181
|
+
A as useInitData,
|
|
182
|
+
I as useLaunchParams,
|
|
183
|
+
K as useMainButton,
|
|
184
|
+
V as usePopup,
|
|
185
|
+
N as usePostEvent,
|
|
186
|
+
F as useQRScanner,
|
|
187
|
+
l as useSDK,
|
|
188
|
+
H as useThemeParams,
|
|
189
|
+
i as useUnit,
|
|
190
|
+
L as useViewport,
|
|
191
|
+
M as useWebApp,
|
|
192
|
+
O as withBackButton,
|
|
193
|
+
Q as withClosingBehaviour,
|
|
194
|
+
_ as withCloudStorage,
|
|
195
|
+
y as withHapticFeedback,
|
|
196
|
+
z as withInitData,
|
|
197
|
+
$ as withLaunchParams,
|
|
198
|
+
j as withMainButton,
|
|
199
|
+
G as withPopup,
|
|
200
|
+
J as withQRScanner,
|
|
201
|
+
q as withSDK,
|
|
202
|
+
X as withThemeParams,
|
|
203
|
+
Y as withViewport,
|
|
204
|
+
Z as withWebApp
|
|
205
|
+
};
|
|
206
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/provider/context.ts","../src/provider/hooks.ts","../src/provider/hocs.tsx","../src/provider/SDKProvider.tsx","../src/lib/hooks.ts","../src/lib/back-button/useBackButton.ts","../src/lib/back-button/withBackButton.tsx","../src/lib/closing-behavior/useClosingBehaviour.ts","../src/lib/closing-behavior/withClosingBehaviour.tsx","../src/lib/haptic-feedback/useHapticFeedback.ts","../src/lib/haptic-feedback/withHapticFeedback.tsx","../src/lib/init-data/useInitData.ts","../src/lib/init-data/withInitData.tsx","../src/lib/launch-params/useLaunchParams.ts","../src/lib/launch-params/withLaunchParams.tsx","../src/lib/main-button/useMainButton.ts","../src/lib/main-button/withMainButton.tsx","../src/lib/popup/usePopup.ts","../src/lib/popup/withPopup.tsx","../src/lib/qr-scanner/useQRScanner.ts","../src/lib/qr-scanner/withQRScanner.tsx","../src/lib/theme-params/useThemeParams.ts","../src/lib/theme-params/withThemeParams.tsx","../src/lib/viewport/useViewport.ts","../src/lib/viewport/withViewport.tsx","../src/lib/web-app/useWebApp.ts","../src/lib/web-app/withWebApp.tsx","../src/lib/cloud-storage.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nimport type { SDKContext } from './types.js';\n\nexport const sdkContext = createContext<SDKContext>({\n components: null,\n didInit: false,\n error: null,\n});\n\nsdkContext.displayName = 'SDKContext';\n","import { useContext } from 'react';\n\nimport { sdkContext } from './context.js';\nimport type { SDKComponent, SDKComponentName } from './types.js';\n\n/**\n * Returns current SDK information.\n */\nexport const useSDK = () => useContext(sdkContext);\n\n/**\n * Returns value by its field name from SDK init result.\n * @param name - component name.\n * @throws {Error} SDK is not initialized.\n */\nexport function useUnit<N extends SDKComponentName>(name: N): SDKComponent<N> {\n const { components } = useSDK();\n\n if (components === null) {\n throw new Error(`Unable to get unit \"${name}\" as long as SDK is not initialized.`);\n }\n return components[name];\n}\n","import React, { type ComponentType } from 'react';\n\nimport type { SDKContext } from './types.js';\nimport { useSDK } from './hooks.js';\n\n/**\n * HOC which passes SDK context to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withSDK<P extends { sdk?: SDKContext }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'sdk'>> {\n return function WithLaunchParams(props: Omit<P, 'sdk'>) {\n const p = { ...props, sdk: useSDK() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, {\n memo,\n useEffect,\n useMemo,\n useState,\n type PropsWithChildren,\n} from 'react';\nimport { init, type InitOptions } from '@tma.js/sdk';\n\nimport { sdkContext } from './context.js';\nimport type { SDKComponents, SDKContext } from './types.js';\n\nexport type SDKInitOptions = InitOptions;\n\nexport type SDKProviderProps = PropsWithChildren<{ initOptions?: SDKInitOptions }>;\n\n/**\n * Component which provides access to SDK components.\n */\nexport const SDKProvider = memo<SDKProviderProps>((props) => {\n const { children, initOptions } = props;\n const [didInit, setDidInit] = useState(false);\n const [error, setError] = useState<null | unknown>(null);\n const [components, setComponents] = useState<SDKComponents | null>(null);\n\n // Initialize SDK on DOM attach.\n useEffect(() => {\n // Update init status.\n setDidInit(true);\n\n // Init SDK.\n init(initOptions)\n .then(setComponents)\n .catch(setError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const context = useMemo<SDKContext>(() => ({\n components,\n didInit,\n error,\n }), [didInit, components, error]);\n\n return <sdkContext.Provider value={context}>{children}</sdkContext.Provider>;\n});\n\nSDKProvider.displayName = 'SDKProvider';\n","import { useCallback, useState, useEffect } from 'react';\nimport type { PostEvent } from '@tma.js/sdk/types';\nimport { useUnit } from '../provider/index.js';\n\ninterface Trackable {\n on: (event: any, ...args: any[]) => void;\n off: (event: any, ...args: any[]) => void;\n}\n\ntype EventName<T extends Trackable> = T extends {\n on(event: infer E, ...args: any[]): any\n} ? E : never;\n\n/**\n * The hook which returns function used for force update.\n */\nexport function useForceUpdate(): (() => void) {\n const [, setHash] = useState(0);\n // TODO: Maybe just assign new symbol?\n return useCallback(() => setHash((hash) => (hash + 1) % 1_000_000), []);\n}\n\n/**\n * The hook which listens to the specified object events and calls force update\n * in case, some of them was emitted.\n * @param trackable - object which allows events listening.\n * @param events - events to listen. This array will be memoized during first\n * hook call.\n */\nexport function useEventsTracking<T extends Trackable>(\n trackable: T,\n events: EventName<T>[],\n) {\n const forceUpdate = useForceUpdate();\n\n useEffect(() => {\n // Start listening to each event.\n events.forEach((event) => trackable.on(event, forceUpdate));\n\n // On cleanup remove event listeners.\n return () => events.forEach((event) => trackable.off(event, forceUpdate));\n }, [trackable, forceUpdate, events]);\n}\n\n/**\n * Returns event posting function which was created during SDK\n * initialization.\n */\nexport function usePostEvent(): PostEvent {\n return useUnit('postEvent');\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { BackButton } from './types.js';\n\n/**\n * Returns BackButton component instance.\n */\nexport function useBackButton(): BackButton {\n const backButton = useUnit('backButton');\n useEventsTracking(backButton, ['isVisibleChanged']);\n\n return backButton;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useBackButton } from './useBackButton.js';\nimport type { BackButton } from './types.js';\n\n/**\n * HOC which passes BackButton SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withBackButton<P extends { backButton?: BackButton }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'backButton'>> {\n return function WithBackButton(props: Omit<P, 'backButton'>) {\n const p = { ...props, backButton: useBackButton() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { ClosingBehaviour } from './types.js';\n\n/**\n * Returns ClosingBehaviour component instance.\n */\nexport function useClosingBehaviour(): ClosingBehaviour {\n const component = useUnit('closingBehavior');\n useEventsTracking(component, ['isConfirmationNeededChanged']);\n\n return component;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useClosingBehaviour } from './useClosingBehaviour.js';\nimport type { ClosingBehaviour } from './types.js';\n\n/**\n * HOC which passes ClosingBehaviour SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withClosingBehaviour<P extends { closingBehaviour?: ClosingBehaviour }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'closingBehaviour'>> {\n return function WithClosingConfirmation(props: Omit<P, 'closingBehaviour'>) {\n const p = { ...props, closingBehaviour: useClosingBehaviour() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport type { HapticFeedback } from './types.js';\n\n/**\n * Returns HapticFeedback component instance.\n */\nexport function useHapticFeedback(): HapticFeedback {\n return useUnit('haptic');\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useHapticFeedback } from './useHapticFeedback.js';\nimport type { HapticFeedback } from './types.js';\n\n/**\n * HOC which passes HapticFeedback SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withHapticFeedback<P extends { hapticFeedback?: HapticFeedback }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'hapticFeedback'>> {\n return function WithHapticFeedback(props: Omit<P, 'hapticFeedback'>) {\n const p = { ...props, hapticFeedback: useHapticFeedback() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport type { InitData } from './types.js';\n\n/**\n * Returns InitData component instance.\n */\nexport function useInitData(): InitData | null {\n return useUnit('initData') || null;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useInitData } from './useInitData.js';\nimport type { InitData } from './types.js';\n\n/**\n * HOC which passes InitData SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withInitData<P extends { initData?: InitData }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'initData'>> {\n return function WithInitData(props: Omit<P, 'initData'>) {\n const p = { ...props, initData: useInitData() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useMemo } from 'react';\nimport { retrieveLaunchParams } from '@tma.js/sdk';\n\nimport type { LaunchParams } from './types.js';\n\n/**\n * The hook which returns launch parameters initially passed to Web App.\n */\nexport function useLaunchParams(): LaunchParams {\n return useMemo(retrieveLaunchParams, []);\n}\n","import React, { type ComponentType } from 'react';\n\nimport type { LaunchParams } from './types.js';\nimport { useLaunchParams } from './useLaunchParams.js';\n\n/**\n * HOC which passes launch parameters to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withLaunchParams<P extends { launchParams?: LaunchParams }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'launchParams'>> {\n return function WithLaunchParams(props: Omit<P, 'launchParams'>) {\n const p = { ...props, launchParams: useLaunchParams() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { MainButton } from './types.js';\n\n/**\n * Returns MainButton component instance.\n */\nexport function useMainButton(): MainButton {\n const mainButton = useUnit('mainButton');\n useEventsTracking(mainButton, [\n 'isEnabledChanged', 'backgroundColorChanged', 'isProgressVisibleChanged',\n 'textChanged', 'textColorChanged', 'isVisibleChanged',\n ]);\n\n return mainButton;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useMainButton } from './useMainButton.js';\nimport type { MainButton } from './types.js';\n\n/**\n * HOC which passes MainButton SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withMainButton<P extends { mainButton?: MainButton }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'mainButton'>> {\n return function WithMainButton(props: Omit<P, 'mainButton'>) {\n const p = { ...props, mainButton: useMainButton() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { Popup } from './types.js';\n\n/**\n * Returns Popup component instance.\n */\nexport function usePopup(): Popup {\n const popup = useUnit('popup');\n useEventsTracking(popup, ['isOpenedChanged']);\n\n return popup;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { usePopup } from './usePopup.js';\nimport type { Popup } from './types.js';\n\n/**\n * HOC which passes Popup SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withPopup<P extends { popup?: Popup }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'popup'>> {\n return function WithPopup(props: Omit<P, 'popup'>) {\n const p = { ...props, popup: usePopup() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { QRScanner } from './types.js';\n\n/**\n * Returns QRScanner component instance.\n */\nexport function useQRScanner(): QRScanner {\n const qrScanner = useUnit('qrScanner');\n useEventsTracking(qrScanner, ['isOpenedChanged']);\n\n return qrScanner;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useQRScanner } from './useQRScanner.js';\nimport type { QRScanner } from './types.js';\n\n/**\n * HOC which passes QRScanner SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withQRScanner<P extends { qrScanner?: QRScanner }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'qrScanner'>> {\n return function WithQRScanner(props: Omit<P, 'qrScanner'>) {\n const p = { ...props, qrScanner: useQRScanner() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { ThemeParams } from './types.js';\n\n/**\n * Returns ThemeParams component instance.\n */\nexport function useThemeParams(): ThemeParams {\n const theme = useUnit('themeParams');\n useEventsTracking(theme, ['changed']);\n\n return theme;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useThemeParams } from './useThemeParams.js';\nimport type { ThemeParams } from './types.js';\n\n/**\n * HOC which passes ThemeParams SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withThemeParams<P extends { themeParams?: ThemeParams }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'themeParams'>> {\n return function WithThemeParams(props: Omit<P, 'themeParams'>) {\n const p = { ...props, themeParams: useThemeParams() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { Viewport } from './types.js';\n\n/**\n * Returns Viewport component instance.\n */\nexport function useViewport(): Viewport {\n const viewport = useUnit('viewport');\n useEventsTracking(viewport, [\n 'stableHeightChanged', 'isExpandedChanged', 'heightChanged', 'widthChanged',\n ]);\n\n return viewport;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useViewport } from './useViewport.js';\nimport type { Viewport } from './types.js';\n\n/**\n * HOC which passes Viewport SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withViewport<P extends { viewport?: Viewport }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'viewport'>> {\n return function WithViewport(props: Omit<P, 'viewport'>) {\n const p = { ...props, viewport: useViewport() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport type { WebApp } from './types.js';\nimport { useEventsTracking } from '../hooks.js';\n\n/**\n * Returns WebApp component instance.\n */\nexport function useWebApp(): WebApp {\n const webApp = useUnit('webApp');\n useEventsTracking(webApp, ['headerColorChanged', 'backgroundColorChanged']);\n\n return webApp;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useWebApp } from './useWebApp.js';\nimport type { WebApp } from './types.js';\n\n/**\n * HOC which passes WebApp SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withWebApp<P extends { webApp?: WebApp }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'webApp'>> {\n return function WithWebApp(props: Omit<P, 'webApp'>) {\n const p = { ...props, webApp: useWebApp() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport type { CloudStorage } from '@tma.js/sdk';\n\nimport { useUnit } from '../provider/index.js';\n\n/**\n * Returns CloudStorage component instance.\n */\nexport function useCloudStorage(): CloudStorage {\n return useUnit('cloudStorage');\n}\n\n/**\n * HOC which passes CloudStorage SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withCloudStorage<P extends { cloudStorage?: CloudStorage }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'cloudStorage'>> {\n return function WithCloudStorage(props: Omit<P, 'cloudStorage'>) {\n const p = { ...props, cloudStorage: useCloudStorage() } as P;\n\n return <Component {...p} />;\n };\n}\n\nexport type { CloudStorage };\n"],"names":["sdkContext","createContext","useSDK","useContext","useUnit","name","components","withSDK","Component","props","p","React","SDKProvider","memo","children","initOptions","didInit","setDidInit","useState","error","setError","setComponents","useEffect","init","context","useMemo","useForceUpdate","setHash","useCallback","hash","useEventsTracking","trackable","events","forceUpdate","event","usePostEvent","useBackButton","backButton","withBackButton","useClosingBehaviour","component","withClosingBehaviour","useHapticFeedback","withHapticFeedback","useInitData","withInitData","useLaunchParams","retrieveLaunchParams","withLaunchParams","useMainButton","mainButton","withMainButton","usePopup","popup","withPopup","useQRScanner","qrScanner","withQRScanner","useThemeParams","theme","withThemeParams","useViewport","viewport","withViewport","useWebApp","webApp","withWebApp","useCloudStorage","withCloudStorage"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(function(t,i){typeof exports=="object"&&typeof module<"u"?i(exports,require("react"),require("@tma.js/sdk")):typeof define=="function"&&define.amd?define(["exports","react","@tma.js/sdk"],i):(t=typeof globalThis<"u"?globalThis:t||self,i((t["@tma"]=t["@tma"]||{},t["@tma"]["js/sdk-react"]={}),t.React,t["@tma"]["js/sdk"]))})(this,function(t,i,h){"use strict";const c=i.createContext({components:null,didInit:!1,error:null});c.displayName="SDKContext";const s=()=>i.useContext(c);function r(n){const{components:o}=s();if(o===null)throw new Error(`Unable to get unit "${n}" as long as SDK is not initialized.`);return o[n]}function W(n){return function(u){const e={...u,sdk:s()};return i.createElement(n,{...e})}}const d=i.memo(n=>{const{children:o,initOptions:u}=n,[e,U]=i.useState(!1),[k,O]=i.useState(null),[v,N]=i.useState(null);i.useEffect(()=>{U(!0),h.init(u).then(N).catch(O)},[]);const z=i.useMemo(()=>({components:v,didInit:e,error:k}),[e,v,k]);return i.createElement(c.Provider,{value:z},o)});d.displayName="SDKProvider";function D(){const[,n]=i.useState(0);return i.useCallback(()=>n(o=>(o+1)%1e6),[])}function a(n,o){const u=D();i.useEffect(()=>(o.forEach(e=>n.on(e,u)),()=>o.forEach(e=>n.off(e,u))),[n,u,o])}function K(){return r("postEvent")}function f(){const n=r("backButton");return a(n,["isVisibleChanged"]),n}function T(n){return function(u){const e={...u,backButton:f()};return i.createElement(n,{...e})}}function m(){const n=r("closingBehavior");return a(n,["isConfirmationNeededChanged"]),n}function A(n){return function(u){const e={...u,closingBehaviour:m()};return i.createElement(n,{...e})}}function l(){return r("haptic")}function I(n){return function(u){const e={...u,hapticFeedback:l()};return i.createElement(n,{...e})}}function p(){return r("initData")||null}function M(n){return function(u){const e={...u,initData:p()};return i.createElement(n,{...e})}}function w(){return i.useMemo(h.retrieveLaunchParams,[])}function V(n){return function(u){const e={...u,launchParams:w()};return i.createElement(n,{...e})}}function C(){const n=r("mainButton");return a(n,["isEnabledChanged","backgroundColorChanged","isProgressVisibleChanged","textChanged","textColorChanged","isVisibleChanged"]),n}function F(n){return function(u){const e={...u,mainButton:C()};return i.createElement(n,{...e})}}function g(){const n=r("popup");return a(n,["isOpenedChanged"]),n}function H(n){return function(u){const e={...u,popup:g()};return i.createElement(n,{...e})}}function S(){const n=r("qrScanner");return a(n,["isOpenedChanged"]),n}function L(n){return function(u){const e={...u,qrScanner:S()};return i.createElement(n,{...e})}}function P(){const n=r("themeParams");return a(n,["changed"]),n}function j(n){return function(u){const e={...u,themeParams:P()};return i.createElement(n,{...e})}}function B(){const n=r("viewport");return a(n,["stableHeightChanged","isExpandedChanged","heightChanged","widthChanged"]),n}function y(n){return function(u){const e={...u,viewport:B()};return i.createElement(n,{...e})}}function E(){const n=r("webApp");return a(n,["headerColorChanged","backgroundColorChanged"]),n}function q(n){return function(u){const e={...u,webApp:E()};return i.createElement(n,{...e})}}function b(){return r("cloudStorage")}function Q(n){return function(u){const e={...u,cloudStorage:b()};return i.createElement(n,{...e})}}t.SDKProvider=d,t.sdkContext=c,t.useBackButton=f,t.useClosingBehaviour=m,t.useCloudStorage=b,t.useHapticFeedback=l,t.useInitData=p,t.useLaunchParams=w,t.useMainButton=C,t.usePopup=g,t.usePostEvent=K,t.useQRScanner=S,t.useSDK=s,t.useThemeParams=P,t.useUnit=r,t.useViewport=B,t.useWebApp=E,t.withBackButton=T,t.withClosingBehaviour=A,t.withCloudStorage=Q,t.withHapticFeedback=I,t.withInitData=M,t.withLaunchParams=V,t.withMainButton=F,t.withPopup=H,t.withQRScanner=L,t.withSDK=W,t.withThemeParams=j,t.withViewport=y,t.withWebApp=q,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});
|
|
2
|
+
//# sourceMappingURL=index.umd.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.umd.cjs","sources":["../src/provider/context.ts","../src/provider/hooks.ts","../src/provider/hocs.tsx","../src/provider/SDKProvider.tsx","../src/lib/hooks.ts","../src/lib/back-button/useBackButton.ts","../src/lib/back-button/withBackButton.tsx","../src/lib/closing-behavior/useClosingBehaviour.ts","../src/lib/closing-behavior/withClosingBehaviour.tsx","../src/lib/haptic-feedback/useHapticFeedback.ts","../src/lib/haptic-feedback/withHapticFeedback.tsx","../src/lib/init-data/useInitData.ts","../src/lib/init-data/withInitData.tsx","../src/lib/launch-params/useLaunchParams.ts","../src/lib/launch-params/withLaunchParams.tsx","../src/lib/main-button/useMainButton.ts","../src/lib/main-button/withMainButton.tsx","../src/lib/popup/usePopup.ts","../src/lib/popup/withPopup.tsx","../src/lib/qr-scanner/useQRScanner.ts","../src/lib/qr-scanner/withQRScanner.tsx","../src/lib/theme-params/useThemeParams.ts","../src/lib/theme-params/withThemeParams.tsx","../src/lib/viewport/useViewport.ts","../src/lib/viewport/withViewport.tsx","../src/lib/web-app/useWebApp.ts","../src/lib/web-app/withWebApp.tsx","../src/lib/cloud-storage.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nimport type { SDKContext } from './types.js';\n\nexport const sdkContext = createContext<SDKContext>({\n components: null,\n didInit: false,\n error: null,\n});\n\nsdkContext.displayName = 'SDKContext';\n","import { useContext } from 'react';\n\nimport { sdkContext } from './context.js';\nimport type { SDKComponent, SDKComponentName } from './types.js';\n\n/**\n * Returns current SDK information.\n */\nexport const useSDK = () => useContext(sdkContext);\n\n/**\n * Returns value by its field name from SDK init result.\n * @param name - component name.\n * @throws {Error} SDK is not initialized.\n */\nexport function useUnit<N extends SDKComponentName>(name: N): SDKComponent<N> {\n const { components } = useSDK();\n\n if (components === null) {\n throw new Error(`Unable to get unit \"${name}\" as long as SDK is not initialized.`);\n }\n return components[name];\n}\n","import React, { type ComponentType } from 'react';\n\nimport type { SDKContext } from './types.js';\nimport { useSDK } from './hooks.js';\n\n/**\n * HOC which passes SDK context to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withSDK<P extends { sdk?: SDKContext }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'sdk'>> {\n return function WithLaunchParams(props: Omit<P, 'sdk'>) {\n const p = { ...props, sdk: useSDK() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, {\n memo,\n useEffect,\n useMemo,\n useState,\n type PropsWithChildren,\n} from 'react';\nimport { init, type InitOptions } from '@tma.js/sdk';\n\nimport { sdkContext } from './context.js';\nimport type { SDKComponents, SDKContext } from './types.js';\n\nexport type SDKInitOptions = InitOptions;\n\nexport type SDKProviderProps = PropsWithChildren<{ initOptions?: SDKInitOptions }>;\n\n/**\n * Component which provides access to SDK components.\n */\nexport const SDKProvider = memo<SDKProviderProps>((props) => {\n const { children, initOptions } = props;\n const [didInit, setDidInit] = useState(false);\n const [error, setError] = useState<null | unknown>(null);\n const [components, setComponents] = useState<SDKComponents | null>(null);\n\n // Initialize SDK on DOM attach.\n useEffect(() => {\n // Update init status.\n setDidInit(true);\n\n // Init SDK.\n init(initOptions)\n .then(setComponents)\n .catch(setError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const context = useMemo<SDKContext>(() => ({\n components,\n didInit,\n error,\n }), [didInit, components, error]);\n\n return <sdkContext.Provider value={context}>{children}</sdkContext.Provider>;\n});\n\nSDKProvider.displayName = 'SDKProvider';\n","import { useCallback, useState, useEffect } from 'react';\nimport type { PostEvent } from '@tma.js/sdk/types';\nimport { useUnit } from '../provider/index.js';\n\ninterface Trackable {\n on: (event: any, ...args: any[]) => void;\n off: (event: any, ...args: any[]) => void;\n}\n\ntype EventName<T extends Trackable> = T extends {\n on(event: infer E, ...args: any[]): any\n} ? E : never;\n\n/**\n * The hook which returns function used for force update.\n */\nexport function useForceUpdate(): (() => void) {\n const [, setHash] = useState(0);\n // TODO: Maybe just assign new symbol?\n return useCallback(() => setHash((hash) => (hash + 1) % 1_000_000), []);\n}\n\n/**\n * The hook which listens to the specified object events and calls force update\n * in case, some of them was emitted.\n * @param trackable - object which allows events listening.\n * @param events - events to listen. This array will be memoized during first\n * hook call.\n */\nexport function useEventsTracking<T extends Trackable>(\n trackable: T,\n events: EventName<T>[],\n) {\n const forceUpdate = useForceUpdate();\n\n useEffect(() => {\n // Start listening to each event.\n events.forEach((event) => trackable.on(event, forceUpdate));\n\n // On cleanup remove event listeners.\n return () => events.forEach((event) => trackable.off(event, forceUpdate));\n }, [trackable, forceUpdate, events]);\n}\n\n/**\n * Returns event posting function which was created during SDK\n * initialization.\n */\nexport function usePostEvent(): PostEvent {\n return useUnit('postEvent');\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { BackButton } from './types.js';\n\n/**\n * Returns BackButton component instance.\n */\nexport function useBackButton(): BackButton {\n const backButton = useUnit('backButton');\n useEventsTracking(backButton, ['isVisibleChanged']);\n\n return backButton;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useBackButton } from './useBackButton.js';\nimport type { BackButton } from './types.js';\n\n/**\n * HOC which passes BackButton SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withBackButton<P extends { backButton?: BackButton }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'backButton'>> {\n return function WithBackButton(props: Omit<P, 'backButton'>) {\n const p = { ...props, backButton: useBackButton() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { ClosingBehaviour } from './types.js';\n\n/**\n * Returns ClosingBehaviour component instance.\n */\nexport function useClosingBehaviour(): ClosingBehaviour {\n const component = useUnit('closingBehavior');\n useEventsTracking(component, ['isConfirmationNeededChanged']);\n\n return component;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useClosingBehaviour } from './useClosingBehaviour.js';\nimport type { ClosingBehaviour } from './types.js';\n\n/**\n * HOC which passes ClosingBehaviour SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withClosingBehaviour<P extends { closingBehaviour?: ClosingBehaviour }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'closingBehaviour'>> {\n return function WithClosingConfirmation(props: Omit<P, 'closingBehaviour'>) {\n const p = { ...props, closingBehaviour: useClosingBehaviour() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport type { HapticFeedback } from './types.js';\n\n/**\n * Returns HapticFeedback component instance.\n */\nexport function useHapticFeedback(): HapticFeedback {\n return useUnit('haptic');\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useHapticFeedback } from './useHapticFeedback.js';\nimport type { HapticFeedback } from './types.js';\n\n/**\n * HOC which passes HapticFeedback SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withHapticFeedback<P extends { hapticFeedback?: HapticFeedback }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'hapticFeedback'>> {\n return function WithHapticFeedback(props: Omit<P, 'hapticFeedback'>) {\n const p = { ...props, hapticFeedback: useHapticFeedback() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport type { InitData } from './types.js';\n\n/**\n * Returns InitData component instance.\n */\nexport function useInitData(): InitData | null {\n return useUnit('initData') || null;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useInitData } from './useInitData.js';\nimport type { InitData } from './types.js';\n\n/**\n * HOC which passes InitData SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withInitData<P extends { initData?: InitData }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'initData'>> {\n return function WithInitData(props: Omit<P, 'initData'>) {\n const p = { ...props, initData: useInitData() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useMemo } from 'react';\nimport { retrieveLaunchParams } from '@tma.js/sdk';\n\nimport type { LaunchParams } from './types.js';\n\n/**\n * The hook which returns launch parameters initially passed to Web App.\n */\nexport function useLaunchParams(): LaunchParams {\n return useMemo(retrieveLaunchParams, []);\n}\n","import React, { type ComponentType } from 'react';\n\nimport type { LaunchParams } from './types.js';\nimport { useLaunchParams } from './useLaunchParams.js';\n\n/**\n * HOC which passes launch parameters to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withLaunchParams<P extends { launchParams?: LaunchParams }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'launchParams'>> {\n return function WithLaunchParams(props: Omit<P, 'launchParams'>) {\n const p = { ...props, launchParams: useLaunchParams() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { MainButton } from './types.js';\n\n/**\n * Returns MainButton component instance.\n */\nexport function useMainButton(): MainButton {\n const mainButton = useUnit('mainButton');\n useEventsTracking(mainButton, [\n 'isEnabledChanged', 'backgroundColorChanged', 'isProgressVisibleChanged',\n 'textChanged', 'textColorChanged', 'isVisibleChanged',\n ]);\n\n return mainButton;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useMainButton } from './useMainButton.js';\nimport type { MainButton } from './types.js';\n\n/**\n * HOC which passes MainButton SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withMainButton<P extends { mainButton?: MainButton }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'mainButton'>> {\n return function WithMainButton(props: Omit<P, 'mainButton'>) {\n const p = { ...props, mainButton: useMainButton() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { Popup } from './types.js';\n\n/**\n * Returns Popup component instance.\n */\nexport function usePopup(): Popup {\n const popup = useUnit('popup');\n useEventsTracking(popup, ['isOpenedChanged']);\n\n return popup;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { usePopup } from './usePopup.js';\nimport type { Popup } from './types.js';\n\n/**\n * HOC which passes Popup SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withPopup<P extends { popup?: Popup }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'popup'>> {\n return function WithPopup(props: Omit<P, 'popup'>) {\n const p = { ...props, popup: usePopup() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { QRScanner } from './types.js';\n\n/**\n * Returns QRScanner component instance.\n */\nexport function useQRScanner(): QRScanner {\n const qrScanner = useUnit('qrScanner');\n useEventsTracking(qrScanner, ['isOpenedChanged']);\n\n return qrScanner;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useQRScanner } from './useQRScanner.js';\nimport type { QRScanner } from './types.js';\n\n/**\n * HOC which passes QRScanner SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withQRScanner<P extends { qrScanner?: QRScanner }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'qrScanner'>> {\n return function WithQRScanner(props: Omit<P, 'qrScanner'>) {\n const p = { ...props, qrScanner: useQRScanner() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { ThemeParams } from './types.js';\n\n/**\n * Returns ThemeParams component instance.\n */\nexport function useThemeParams(): ThemeParams {\n const theme = useUnit('themeParams');\n useEventsTracking(theme, ['changed']);\n\n return theme;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useThemeParams } from './useThemeParams.js';\nimport type { ThemeParams } from './types.js';\n\n/**\n * HOC which passes ThemeParams SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withThemeParams<P extends { themeParams?: ThemeParams }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'themeParams'>> {\n return function WithThemeParams(props: Omit<P, 'themeParams'>) {\n const p = { ...props, themeParams: useThemeParams() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { Viewport } from './types.js';\n\n/**\n * Returns Viewport component instance.\n */\nexport function useViewport(): Viewport {\n const viewport = useUnit('viewport');\n useEventsTracking(viewport, [\n 'stableHeightChanged', 'isExpandedChanged', 'heightChanged', 'widthChanged',\n ]);\n\n return viewport;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useViewport } from './useViewport.js';\nimport type { Viewport } from './types.js';\n\n/**\n * HOC which passes Viewport SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withViewport<P extends { viewport?: Viewport }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'viewport'>> {\n return function WithViewport(props: Omit<P, 'viewport'>) {\n const p = { ...props, viewport: useViewport() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport type { WebApp } from './types.js';\nimport { useEventsTracking } from '../hooks.js';\n\n/**\n * Returns WebApp component instance.\n */\nexport function useWebApp(): WebApp {\n const webApp = useUnit('webApp');\n useEventsTracking(webApp, ['headerColorChanged', 'backgroundColorChanged']);\n\n return webApp;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useWebApp } from './useWebApp.js';\nimport type { WebApp } from './types.js';\n\n/**\n * HOC which passes WebApp SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withWebApp<P extends { webApp?: WebApp }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'webApp'>> {\n return function WithWebApp(props: Omit<P, 'webApp'>) {\n const p = { ...props, webApp: useWebApp() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport type { CloudStorage } from '@tma.js/sdk';\n\nimport { useUnit } from '../provider/index.js';\n\n/**\n * Returns CloudStorage component instance.\n */\nexport function useCloudStorage(): CloudStorage {\n return useUnit('cloudStorage');\n}\n\n/**\n * HOC which passes CloudStorage SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withCloudStorage<P extends { cloudStorage?: CloudStorage }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'cloudStorage'>> {\n return function WithCloudStorage(props: Omit<P, 'cloudStorage'>) {\n const p = { ...props, cloudStorage: useCloudStorage() } as P;\n\n return <Component {...p} />;\n };\n}\n\nexport type { CloudStorage };\n"],"names":["sdkContext","createContext","useSDK","useContext","useUnit","name","components","withSDK","Component","props","p","React","SDKProvider","memo","children","initOptions","didInit","setDidInit","useState","error","setError","setComponents","useEffect","init","context","useMemo","useForceUpdate","setHash","useCallback","hash","useEventsTracking","trackable","events","forceUpdate","event","usePostEvent","useBackButton","backButton","withBackButton","useClosingBehaviour","component","withClosingBehaviour","useHapticFeedback","withHapticFeedback","useInitData","withInitData","useLaunchParams","retrieveLaunchParams","withLaunchParams","useMainButton","mainButton","withMainButton","usePopup","popup","withPopup","useQRScanner","qrScanner","withQRScanner","useThemeParams","theme","withThemeParams","useViewport","viewport","withViewport","useWebApp","webApp","withWebApp","useCloudStorage","withCloudStorage"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tma.js/sdk-react",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.5",
|
|
4
4
|
"description": "React bindings for Web Apps client SDK. Contains hooks, components and other useful tools which allow usage of React along with Web Apps client SDK.",
|
|
5
5
|
"author": "Vladislav Kibenko <wolfram.deus@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/Telegram-Mini-Apps/tma.js#readme",
|
|
@@ -25,22 +25,16 @@
|
|
|
25
25
|
"dist",
|
|
26
26
|
"src"
|
|
27
27
|
],
|
|
28
|
-
"main": "dist/
|
|
29
|
-
"browser": "dist/
|
|
30
|
-
"module": "dist/
|
|
31
|
-
"types": "dist/
|
|
28
|
+
"main": "./dist/index.umd.cjs",
|
|
29
|
+
"browser": "./dist/index.umd.cjs",
|
|
30
|
+
"module": "./dist/index.js",
|
|
31
|
+
"types": "./dist/dts/index.d.ts",
|
|
32
32
|
"exports": {
|
|
33
33
|
".": {
|
|
34
|
-
"types": "./dist/
|
|
35
|
-
"import": "./dist/
|
|
36
|
-
"require": "./dist/
|
|
37
|
-
"default": "./dist/
|
|
38
|
-
},
|
|
39
|
-
"./*": {
|
|
40
|
-
"types": "./dist/types/*.d.ts",
|
|
41
|
-
"import": "./dist/lib/*.mjs",
|
|
42
|
-
"require": "./dist/lib/*.cjs",
|
|
43
|
-
"default": "./dist/lib/*.cjs"
|
|
34
|
+
"types": "./dist/dts/index.d.ts",
|
|
35
|
+
"import": "./dist/index.js",
|
|
36
|
+
"require": "./dist/index.umd.cjs",
|
|
37
|
+
"default": "./dist/index.umd.cjs"
|
|
44
38
|
}
|
|
45
39
|
},
|
|
46
40
|
"peerDependencies": {
|
|
@@ -53,18 +47,19 @@
|
|
|
53
47
|
}
|
|
54
48
|
},
|
|
55
49
|
"dependencies": {
|
|
56
|
-
"@tma.js/bridge": "1.3.
|
|
57
|
-
"@tma.js/sdk": "0.11.
|
|
50
|
+
"@tma.js/bridge": "1.3.4",
|
|
51
|
+
"@tma.js/sdk": "0.11.5"
|
|
58
52
|
},
|
|
59
53
|
"devDependencies": {
|
|
60
54
|
"tsconfig": "0.0.2",
|
|
61
|
-
"eslint-config-custom": "0.1.0"
|
|
55
|
+
"eslint-config-custom": "0.1.0",
|
|
56
|
+
"build-utils": "0.0.0"
|
|
62
57
|
},
|
|
63
58
|
"publishConfig": {
|
|
64
59
|
"access": "public"
|
|
65
60
|
},
|
|
66
61
|
"scripts": {
|
|
67
62
|
"lint": "eslint -c .eslintrc.cjs src/**/*",
|
|
68
|
-
"build": "
|
|
63
|
+
"build": "vite build"
|
|
69
64
|
}
|
|
70
65
|
}
|
package/dist/lib/browser.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
this["@tma"]=this["@tma"]||{},this["@tma"]["js/sdk-react"]=function(t,e){"use strict";const n=e.createContext({components:null,didInit:!1,error:null});n.displayName="SDKContext";const o=()=>e.useContext(n);function r(t){const{components:e}=o();if(null===e)throw new Error(`Unable to get unit "${t}" as long as SDK is not initialized.`);return e[t]}let s=class{listeners={};subscribeListeners=[];emit(t,...e){this.subscribeListeners.forEach((n=>n(t,...e)));const n=this.listeners[t];if(void 0===n)return;const o=[];n.forEach((t=>{"function"!=typeof t?(t.once&&o.push(t.listener),t.listener(...e)):t(...e)})),o.forEach((e=>this.off(t,e)))}on(t,e){const n=this.listeners[t];void 0===n?this.listeners[t]=[e]:n.push(e)}once(t,e){const n=this.listeners[t],o={listener:e,once:!0};void 0===n?this.listeners[t]=[o]:n.push(o)}off(t,e){const n=this.listeners[t];if(void 0!==n)for(let t=0;t<n.length;t+=1){const o=n[t];e===("function"==typeof o?o:o.listener)&&(n.splice(t,1),t-=1)}}subscribe(t){this.subscribeListeners.push(t)}unsubscribe(t){const e=this.subscribeListeners.indexOf(t);e>=0&&this.subscribeListeners.splice(e,1)}};function i(t){return/^#[\da-f]{6}$/i.test(t)}function a(t){const e=t.replace(/\s/g,"").toLowerCase();if(i(e))return e;if(function(t){return/^#[\da-f]{3}$/i.test(t)}(e)){let t="#";for(let n=0;n<3;n+=1)t+=e[1+n].repeat(2);return t}const n=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(null===n)throw new Error(`Value "${t}" does not satisfy any of known RGB formats.`);return n.slice(1).reduce(((t,e)=>{const n=parseInt(e,10).toString(16);return t+(1===n.length?"0":"")+n}),"#")}function c(t){const e=a(t);return Math.sqrt([.299,.587,.114].reduce(((t,n,o)=>{const r=parseInt(e.slice(1+2*o,1+2*(o+1)),16);return t+r*r*n}),0))<120}let u=class t{parser;isOptional;getDefault;isEmpty;static create(e){return new t(e,!1,void 0)}constructor(t,e,n,o=(t=>void 0===t)){this.parser=t,this.isOptional=e,this.getDefault=n,this.isEmpty=o}parse(t){return this.isOptional&&this.isEmpty(t)?this.getDefault?this.getDefault():void 0:this.parser(t)}optional(t){return this.isOptional=!0,t&&(this.isEmpty=t),this}default(t){return this.getDefault=t,this}};function p(t){const e="function"==typeof t?t:t.parse.bind(t);return t=>function(t){if(Array.isArray(t))return t;if("string"==typeof t)try{const e=JSON.parse(t);if(Array.isArray(e))return e}catch(t){}throw new Error(`Passed value does not satisfy any of known formats: ${JSON.stringify(t)}`)}(t).map(e)}let l=class extends u{constructor(t,e,n,o=(t=>void 0===t)){super(p(t),e,n,o)}of(t){return this.parser=p(t),this}};function h(t){return()=>u.create(t)}function d(t){return h((e=>{if(typeof e!==t)throw new TypeError(`Unable to parse value ${JSON.stringify(e)} as ${t}.`);return e}))}function g(t,e){const n={};for(const o in t){const r=t[o];if(!r)continue;let s,i,a,c;if("type"in r){const{from:t=o,type:e}=r;s=t,i="function"==typeof e?e:e.parse.bind(e),a="required"in r&&r.required}else s=o,a=!1,i="function"==typeof r?r:r.parse.bind(r);try{c=i(e(s))}catch(t){throw new Error(`Unable to parse field "${s}"`,{cause:t})}(void 0!==c||a)&&(n[o]=c)}return n}const _=d("string"),f=d("number"),b=d("boolean"),w=h((t=>{const e=_().parse(t);if(e){const t=Number(e),n=new Date(t.toString()===e?1e3*t:e);if("Invalid Date"!==n.toString())return n}throw new TypeError(`Unable to parse value "${t}" as Date.`)})),m=h((t=>{const e=_().parse(t);try{return a(e)}catch(t){throw new TypeError(`Unable to parse value "${e}" as RGB.`,{cause:t})}}));function y(t){return u.create((e=>{let n=e;if("string"==typeof n)try{n=JSON.parse(n)}catch(t){throw new TypeError("Value is not JSON object converted to string.")}if("object"!=typeof n||null===n||Array.isArray(n))throw new TypeError("Value is not JSON object.");return g(t,(t=>n[t]))}))}function v(t){return u.create((e=>{if("string"!=typeof e&&!(e instanceof URLSearchParams))throw new TypeError("Value has not processable type.");const n="string"==typeof e?new URLSearchParams(e):e;return g(t,(t=>{const e=n.get(t);return null===e?void 0:e}))}))}function C(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}function E(t,e){const n=t.split("."),o=e.split("."),r=Math.max(n.length,o.length);for(let t=0;t<r;t+=1){const e=parseInt(n[t]||"0",10),r=parseInt(o[t]||"0",10);if(e!==r)return e>r?1:-1}return 0}let k=class t extends Error{constructor(e){super(`Async call timeout exceeded. Timeout: ${e}`),Object.setPrototypeOf(this,t.prototype)}};function x(t){return new Promise(((e,n)=>{setTimeout(n,t,new k(t))}))}function P(t,e){return"function"==typeof t?(...n)=>Promise.race([t(...n),x(e)]):Promise.race([t,x(e)])}let S=!1,V="https://web.telegram.org";function q(t){V=t}function O(){return V}const D=(t,...e)=>{S&&function(t,...e){const n=new Date,o=Intl.DateTimeFormat("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3,timeZone:"UTC"}).format(n);console[t](`[${o}]`,...e)}(t,"[Bridge]",...e)};function T(t){return null==t}const A=y({theme_params:y({bg_color:m().optional(),text_color:m().optional(),hint_color:m().optional(),link_color:m().optional(),button_color:m().optional(),button_text_color:m().optional(),secondary_bg_color:m().optional()})}),$=y({height:f(),width:f().optional(T).default((()=>window.innerWidth)),is_state_stable:b(),is_expanded:b()}),B=y({button_id:_().optional(T)}),N=y({data:_().optional()}),I=y({slug:_(),status:_()}),L=y({req_id:_(),data:t=>null===t?t:_().optional().parse(t)}),R=y({status:_()}),H=y({status:_()}),W=y({req_id:_(),result:t=>t,error:_().optional()}),U=y({eventType:_(),eventData:t=>t});function M(t,e){window.dispatchEvent(new MessageEvent("message",{data:JSON.stringify({eventType:t,eventData:e})}))}const J="__telegram-cached-emitter__";function K(){const t=window;return void 0===t[J]&&(t[J]=function(){const t=new s,e=(e,...n)=>{D("log","Emitting processed event:",e,...n),t.emit(e,...n)};return window.addEventListener("resize",(()=>{e("viewport_changed",{width:window.innerWidth,height:window.innerHeight,is_state_stable:!0,is_expanded:!0})})),function(t){!function(){const t=window;"TelegramGameProxy_receiveEvent"in t||[["TelegramGameProxy_receiveEvent"],["TelegramGameProxy","receiveEvent"],["Telegram","WebView","receiveEvent"]].forEach((e=>{let n=t;e.forEach(((t,e,o)=>{e!==o.length-1?(t in n||(n[t]={}),n=n[t]):n[t]=M}))}))}(),window.addEventListener("message",(e=>{try{const{eventType:n,eventData:o}=U.parse(e.data);t(n,o)}catch{}}))}(((t,n)=>{D("log","Received raw event:",t,n);try{switch(t){case"viewport_changed":return e(t,$.parse(n));case"theme_changed":return e(t,A.parse(n));case"popup_closed":return e(t,null==n?{}:B.parse(n));case"set_custom_style":return e(t,_().parse(n));case"qr_text_received":return e(t,N.parse(n));case"clipboard_text_received":return e(t,L.parse(n));case"invoice_closed":return e(t,I.parse(n));case"phone_requested":return e("phone_requested",H.parse(n));case"custom_method_invoked":return e("custom_method_invoked",W.parse(n));case"write_access_requested":return e("write_access_requested",R.parse(n));case"main_button_pressed":case"back_button_pressed":case"settings_button_pressed":case"scan_qr_popup_closed":return e(t);default:return e(t,n)}}catch(t){D("error","Error processing event:",t)}})),t}()),t[J]}function j(t,e){K().off(t,e)}function z(t,e){return K().on(t,e),()=>j(t,e)}function F(t){return"external"in t&&C(t.external)&&"notify"in t.external&&"function"==typeof t.external.notify}function G(t){return"TelegramWebviewProxy"in t&&C(t.TelegramWebviewProxy)&&"postEvent"in t.TelegramWebviewProxy&&"function"==typeof t.TelegramWebviewProxy.postEvent}function Q(){try{return window.self!==window.top}catch(t){return!0}}function Z(t,e,n){let o,r={};void 0===e&&void 0===n?r={}:void 0!==e&&void 0!==n?(r=n,o=e):void 0!==e&&("targetOrigin"in e?r=e:o=e);const{targetOrigin:s=O()}=r;if(Q())window.parent.postMessage(JSON.stringify({eventType:t,eventData:o}),s);else if(F(window))window.external.notify(JSON.stringify({eventType:t,eventData:o}));else{if(!G(window))throw new Error("Unable to determine current environment and possible way to send event.");window.TelegramWebviewProxy.postEvent(t,JSON.stringify(o))}}function X(t,e,n,o){let r,s,i,a;"string"==typeof e||Array.isArray(e)?(i=Array.isArray(e)?e:[e],r=n):(s=e,i=Array.isArray(n)?n:[n],r=o),C(s)&&"string"==typeof s.req_id&&(a=s.req_id);const{postEvent:c=Z,timeout:u}=r||{},p=r&&"capture"in r?r.capture:null,l=new Promise(((e,n)=>{const o=i.map((t=>z(t,(t=>{("string"!=typeof a||C(t)&&t.req_id===a)&&("function"!=typeof p||p(t))&&(r(),e(t))})))),r=()=>o.forEach((t=>t()));try{c(t,s)}catch(t){r(),n(t)}}));return"number"==typeof u?P(l,u):l}function Y(t,e){return E(t,e)<=0}function tt(t,e,n){if("string"==typeof n){if("web_app_open_link"===t&&"try_instant_view"===e)return Y("6.4",n);if("web_app_set_header_color"===t&&"color"===e)return Y("6.9",n)}switch(t){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 Y("6.1",e);case"web_app_open_popup":return Y("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 Y("6.4",e);case"web_app_invoke_custom_method":case"web_app_request_write_access":case"web_app_request_phone":return Y("6.9",e);default:return!0}}function et(t,e){return{from:e,type:t}}const nt=y({firstName:et(_(),"first_name"),id:f(),isBot:et(b().optional(),"is_bot"),isPremium:et(b().optional(),"is_premium"),lastName:et(_().optional(),"last_name"),languageCode:et(_().optional(),"language_code"),photoUrl:et(_().optional(),"photo_url"),username:_().optional()}),ot=v({authDate:et(w(),"auth_date"),hash:_(),user:nt.optional(),receiver:nt.optional(),chat:y({id:f(),type:_(),title:_(),photoUrl:et(_().optional(),"photo_url"),username:_().optional()}).optional(),canSendAfter:et(w().optional(),"can_send_after"),queryId:et(_().optional(),"query_id"),startParam:et(_().optional(),"start_param")});function rt(t,e){return n=>tt(e[n],t)}class st{state;ee;constructor(t,e){this.state=t,this.ee=e}emit(t,e){this.ee&&this.ee.emit(t,e)}internalSet(t,e){return this.state[t]!==e&&(this.state[t]=e,this.emit(`${t}Changed`,e),!0)}set(t,e){let n=!1;if("string"==typeof t)n=this.internalSet(t,e);else for(const e in t)this.internalSet(e,t[e])&&(n=!0);n&&this.emit("changed")}get(t){return this.state[t]}}class it{postEvent;ee=new s;state;constructor(t,e,n=Z){this.postEvent=n,this.state=new st({isVisible:t},this.ee),this.supports=rt(e,{show:"web_app_setup_back_button",hide:"web_app_setup_back_button"})}set isVisible(t){this.state.set("isVisible",t),this.postEvent("web_app_setup_back_button",{is_visible:t})}get isVisible(){return this.state.get("isVisible")}hide(){this.isVisible=!1}on=(t,e)=>{if("click"===t)return z("back_button_pressed",e);this.ee.on(t,e)};off=(t,e)=>{if("click"===t)return j("back_button_pressed",e);this.ee.off(t,e)};show(){this.isVisible=!0}supports}class at{postEvent;ee=new s;state;constructor(t,e=Z){this.postEvent=e,this.state=new st({isConfirmationNeeded:t},this.ee)}set isConfirmationNeeded(t){this.state.set("isConfirmationNeeded",t),this.postEvent("web_app_setup_closing_behavior",{need_confirmation:t})}get isConfirmationNeeded(){return this.state.get("isConfirmationNeeded")}disableConfirmation(){this.isConfirmationNeeded=!1}enableConfirmation(){this.isConfirmationNeeded=!0}on=this.ee.on.bind(this.ee);off=this.ee.off.bind(this.ee)}const ct=new l((t=>t),!1,void 0).of(_());function ut(t,e){return t.reduce(((t,n)=>(t[n]=e,t)),{})}class pt{createRequestId;postEvent;constructor(t,e,n=Z){this.createRequestId=e,this.postEvent=n,this.supports=rt(t,{deleteKeys:"web_app_invoke_custom_method",getKeys:"web_app_invoke_custom_method",getValues:"web_app_invoke_custom_method",saveValue:"web_app_invoke_custom_method"})}async invokeCustomMethod(t,e,n={}){const{result:o,error:r}=await X("web_app_invoke_custom_method",{method:t,params:e,req_id:this.createRequestId()},"custom_method_invoked",{...n,postEvent:this.postEvent});if(r)throw new Error("string"==typeof r?r:`Unknown error: ${JSON.stringify(r)}`);return o}async deleteKeys(t,e){0!==t.length&&await this.invokeCustomMethod("deleteStorageValues",{keys:t},e)}async getKeys(t){const e=await this.invokeCustomMethod("getStorageKeys",{},t);return ct.parse(e)}async getValues(t,e){if(0===t.length)return ut(t,"");const n=y(ut(t,_())),o=await this.invokeCustomMethod("getStorageValues",{keys:t},e);return n.parse(o)}async saveValue(t,e,n){await this.invokeCustomMethod("saveStorageValue",{key:t,value:e},n)}supports}class lt{postEvent;constructor(t,e=Z){this.postEvent=e,this.supports=rt(t,{impactOccurred:"web_app_trigger_haptic_feedback",notificationOccurred:"web_app_trigger_haptic_feedback",selectionChanged:"web_app_trigger_haptic_feedback"})}impactOccurred(t){this.postEvent("web_app_trigger_haptic_feedback",{type:"impact",impact_style:t})}notificationOccurred(t){this.postEvent("web_app_trigger_haptic_feedback",{type:"notification",notification_type:t})}selectionChanged(){this.postEvent("web_app_trigger_haptic_feedback",{type:"selection_change"})}supports}class ht{state;constructor(t,e,n={}){const{chat:o=null,canSendAfter:r=null,user:s=null,queryId:i=null,receiver:a=null,startParam:c=null}=n;this.state=new st({authDate:t,canSendAfter:r,chat:o,user:s,queryId:i,receiver:a,startParam:c,hash:e})}get authDate(){return this.state.get("authDate")}get canSendAfter(){return this.state.get("canSendAfter")}get chat(){return this.state.get("chat")}get hash(){return this.state.get("hash")}get queryId(){return this.state.get("queryId")}get receiver(){return this.state.get("receiver")}get startParam(){return this.state.get("startParam")}get user(){return this.state.get("user")}}class dt{postEvent;ee=new s;state;constructor(t,e,n,o,r,s,i=Z){this.postEvent=i,this.state=new st({backgroundColor:t,isEnabled:e,isVisible:n,isProgressVisible:o,text:r,textColor:s},this.ee)}set isEnabled(t){this.state.set("isEnabled",t),this.commit()}get isEnabled(){return this.state.get("isEnabled")}set isProgressVisible(t){this.state.set("isProgressVisible",t),this.commit()}get isProgressVisible(){return this.state.get("isProgressVisible")}set isVisible(t){this.state.set("isVisible",t),this.commit()}get isVisible(){return this.state.get("isVisible")}commit(){""!==this.text&&this.postEvent("web_app_setup_main_button",{is_visible:this.isVisible,is_active:this.isEnabled,is_progress_visible:this.isProgressVisible,text:this.text,color:this.backgroundColor,text_color:this.textColor})}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}hideProgress(){return this.isProgressVisible=!1,this}on=(t,e)=>{if("click"===t)return z("main_button_pressed",e);this.ee.on(t,e)};off=(t,e)=>{if("click"===t)return j("main_button_pressed",e);this.ee.off(t,e)};show(){return this.isVisible=!0,this}showProgress(){return this.isProgressVisible=!0,this}setText(t){return this.state.set("text",t),this.commit(),this}setTextColor(t){return this.state.set("textColor",t),this.commit(),this}setBackgroundColor(t){return this.state.set("backgroundColor",t),this.commit(),this}}class gt{postEvent;ee=new s;state;constructor(t,e=Z){this.postEvent=e,this.state=new st({isOpened:!1},this.ee),this.supports=rt(t,{open:"web_app_open_popup"})}get isOpened(){return this.state.get("isOpened")}on=this.ee.on.bind(this.ee);off=this.ee.off.bind(this.ee);async open(t){if(this.isOpened)throw new Error("Popup is already opened.");this.state.set("isOpened",!0);try{const{button_id:e=null}=await X("web_app_open_popup",function(t){const e=t.message.trim(),n=(t.title||"").trim(),o=t.buttons||[];let r;if(n.length>64)throw new Error(`Title has incorrect size: ${n.length}`);if(0===e.length||e.length>256)throw new Error(`Message has incorrect size: ${e.length}`);if(o.length>3)throw new Error(`Buttons have incorrect size: ${o.length}`);return r=0===o.length?[{type:"close",id:""}]:o.map((t=>{const{id:e=""}=t;if(e.length>64)throw new Error(`Button ID has incorrect size: ${e}`);if(void 0===t.type||"default"===t.type||"destructive"===t.type){const n=t.text.trim();if(0===n.length||n.length>64){const e=t.type||"default";throw new Error(`Button text with type "${e}" has incorrect size: ${t.text.length}`)}return{...t,text:n,id:e}}return{...t,id:e}})),{title:n,message:e,buttons:r}}(t),"popup_closed",{postEvent:this.postEvent});return e}finally{this.state.set("isOpened",!1)}}supports}class _t{postEvent;ee=new s;state;constructor(t,e=Z){this.postEvent=e,this.state=new st({isOpened:!1},this.ee),this.supports=rt(t,{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(t){this.state.set("isOpened",t)}get isOpened(){return this.state.get("isOpened")}async open(t){if(this.isOpened)throw new Error("QR scanner is already opened.");this.isOpened=!0;try{const e=await X("web_app_open_scan_qr_popup",{text:t},["qr_text_received","scan_qr_popup_closed"],{postEvent:this.postEvent});return"object"==typeof e&&"string"==typeof e.data?e.data:null}finally{this.isOpened=!1}}on=this.ee.on.bind(this.ee);off=this.ee.off.bind(this.ee);supports}const ft=y({backgroundColor:{type:m().optional(),from:"bg_color"},buttonColor:{type:m().optional(),from:"button_color"},buttonTextColor:{type:m().optional(),from:"button_text_color"},hintColor:{type:m().optional(),from:"hint_color"},linkColor:{type:m().optional(),from:"link_color"},textColor:{type:m().optional(),from:"text_color"},secondaryBackgroundColor:{type:m().optional(),from:"secondary_bg_color"}});function bt(t){return ft.parse(t)}function wt(t){const{backgroundColor:e=null,buttonTextColor:n=null,buttonColor:o=null,hintColor:r=null,linkColor:s=null,textColor:i=null,secondaryBackgroundColor:a=null}=t;return{backgroundColor:e,buttonTextColor:n,buttonColor:o,hintColor:r,linkColor:s,textColor:i,secondaryBackgroundColor:a}}class mt{static async request(t={}){const{timeout:e=1e3,...n}=t;return bt((await X("web_app_request_theme","theme_changed",{...n,timeout:e})).theme_params)}static sync(t){z("theme_changed",(e=>{t.state.set(wt(bt(e.theme_params)))}))}static async synced(t){const e=await this.request(t),n=new mt(e);return this.sync(n),n}ee=new s;state;constructor(t){this.state=new st(wt(t),this.ee)}get backgroundColor(){return this.state.get("backgroundColor")}get buttonColor(){return this.state.get("buttonColor")}get buttonTextColor(){return this.state.get("buttonTextColor")}get hintColor(){return this.state.get("hintColor")}get isDark(){return null===this.backgroundColor||c(this.backgroundColor)}get linkColor(){return this.state.get("linkColor")}on=this.ee.on.bind(this.ee);off=this.ee.off.bind(this.ee);get secondaryBackgroundColor(){return this.state.get("secondaryBackgroundColor")}get textColor(){return this.state.get("textColor")}}function yt(t){return t<0?0:t}class vt{postEvent;static async request(t={}){const{timeout:e=1e3,...n}=t,{is_expanded:o,is_state_stable:r,...s}=await X("web_app_request_viewport","viewport_changed",{...n,timeout:e});return{...s,isExpanded:o,isStateStable:r}}static sync(t){z("viewport_changed",(e=>{const{height:n,width:o,is_expanded:r,is_state_stable:s}=e,i=yt(n);t.state.set({height:i,isExpanded:r,width:yt(o),stableHeight:s?i:void 0})}))}static async synced(t={}){const{height:e,isExpanded:n,width:o}=await this.request(t),r=new vt(e,o,e,n,t.postEvent);return this.sync(r),r}ee=new s;state;constructor(t,e,n,o,r=Z){this.postEvent=r,this.state=new st({height:yt(t),isExpanded:o,stableHeight:yt(n),width:yt(e)},this.ee)}get height(){return this.state.get("height")}get stableHeight(){return this.state.get("stableHeight")}get isExpanded(){return this.state.get("isExpanded")}get width(){return this.state.get("width")}expand(){this.state.set("isExpanded",!0),this.postEvent("web_app_expand")}get isStable(){return this.stableHeight===this.height}on=this.ee.on.bind(this.ee);off=this.ee.off.bind(this.ee)}function Ct(t){const e=document.createElement("a");if(e.href=t,"http:"!==e.protocol&&"https:"!==e.protocol)throw Error(`URL protocol is not supported by OS, or link has not allowed protocol: ${e.protocol}`);return e.href}class Et{currentVersion;currentPlatform;createRequestId;postEvent;ee=new s;state;constructor(t,e,n,o,r,s=Z){var i,a;this.currentVersion=n,this.currentPlatform=o,this.createRequestId=r,this.postEvent=s,this.state=new st({backgroundColor:e,headerColor:t},this.ee),this.supports=rt(n,{openInvoice:"web_app_open_invoice",readTextFromClipboard:"web_app_read_text_from_clipboard",setHeaderColor:"web_app_set_header_color",setBackgroundColor:"web_app_set_background_color",requestPhoneAccess:"web_app_request_phone",requestWriteAccess:"web_app_request_write_access"}),this.supportsParam=(i=n,a={"setHeaderColor.color":["web_app_set_header_color","color"],"openLink.tryInstantView":["web_app_open_link","try_instant_view"]},t=>{const[e,n]=a[t];return tt(e,n,i)})}get backgroundColor(){return this.state.get("backgroundColor")}get colorScheme(){return c(this.backgroundColor)?"dark":"light"}close(){this.postEvent("web_app_close")}get headerColor(){return this.state.get("headerColor")}isVersionAtLeast(t){return E(t,this.version)>=0}openLink(t,e){const n=Ct(t);if(tt("web_app_open_link",this.version))return this.postEvent("web_app_open_link",{url:n,..."boolean"==typeof e?{try_instant_view:e}:{}});window.open(n,"_blank")}openTelegramLink(t){const{hostname:e,pathname:n,search:o}=new URL(Ct(t));if("t.me"!==e)throw new Error(`URL has not allowed hostname: ${e}. Only "t.me" is allowed`);if(tt("web_app_open_tg_link",this.version))return this.postEvent("web_app_open_tg_link",{path_full:n+o});window.location.href=t}async openInvoice(t){const{hostname:e,pathname:n}=new URL(Ct(t));if("t.me"!==e)throw new Error(`Incorrect hostname: ${e}`);const o=n.match(/^\/(\$|invoice\/)([A-Za-z0-9\-_=]+)$/);if(null===o)throw new Error('Link pathname has incorrect format. Expected to receive "/invoice/slug" or "/$slug"');const[,,r]=o;return(await X("web_app_open_invoice",{slug:r},"invoice_closed",{postEvent:this.postEvent,capture:({slug:t})=>r===t})).status}on=this.ee.on.bind(this.ee);off=this.ee.off.bind(this.ee);get platform(){return this.currentPlatform}ready(){this.postEvent("web_app_ready")}async readTextFromClipboard(){const{data:t=null}=await X("web_app_read_text_from_clipboard",{req_id:this.createRequestId()},"clipboard_text_received",{postEvent:this.postEvent});return t}async requestPhoneAccess(){const{status:t}=await X("web_app_request_phone","phone_requested",{postEvent:this.postEvent});return t}async requestWriteAccess(){const{status:t}=await X("web_app_request_write_access","write_access_requested",{postEvent:this.postEvent});return t}sendData(t){const{size:e}=new Blob([t]);if(0===e||e>4096)throw new Error(`Passed data has incorrect size: ${e}`);this.postEvent("web_app_data_send",{data:t})}setHeaderColor(t){this.postEvent("web_app_set_header_color",i(t)?{color:t}:{color_key:t}),this.state.set("headerColor",t)}setBackgroundColor(t){this.postEvent("web_app_set_background_color",{color:t}),this.state.set("backgroundColor",t)}supports;supportsParam;get version(){return this.currentVersion}}function kt(t){return`telegram-web-apps-${t}`}function xt(t,e){sessionStorage.setItem(kt(t),JSON.stringify(e))}function Pt(t){const e=sessionStorage.getItem(kt(t));return e?JSON.parse(e):null}const St=v({version:{type:_(),from:"tgWebAppVersion"},initData:{type:ot.optional(),from:"tgWebAppData"},initDataRaw:{type:_().optional(),from:"tgWebAppData"},platform:{type:_(),from:"tgWebAppPlatform"},themeParams:{type:bt,from:"tgWebAppThemeParams"}});function Vt(t){return St.parse(t)}function qt(){const t=[];try{const t=window.location.hash.slice(1),e=Vt(t);return xt("launch-params",t),e}catch(e){t.push(e instanceof Error?e.message:"unknown error")}try{const e=Pt("launch-params");if(e)return Vt(e);t.push("Launch params are missing in local storage")}catch(e){t.push(e instanceof Error?e.message:"unknown error")}throw new Error(`Unable to extract launch params. Errors: "${t.join('", "')}"`)}function Ot(t,e){document.documentElement.style.setProperty(t,e)}function Dt(t,e){null!==e&&Ot(t,e)}function Tt(t,e){Ot(t,`${e}px`)}function At(t,e){const{isVisible:n=!1}=Pt("back-button")||{},o=new it(n,t,e);return o.on("isVisibleChanged",(()=>{xt("back-button",{isVisible:o.isVisible})})),o}function $t(t){const{isConfirmationNeeded:e=!1}=Pt("closing-behavior")||{},n=new at(e,t);return n.on("isConfirmationNeededChanged",(()=>xt("closing-behavior",{isConfirmationNeeded:n.isConfirmationNeeded}))),n}function Bt(t,e,n){const{backgroundColor:o=t,isEnabled:r=!1,isVisible:s=!1,isProgressVisible:i=!1,textColor:a=e,text:c=""}=Pt("main-button")||{},u=new dt(o,r,s,i,c,a,n),p=()=>xt("main-button",{backgroundColor:u.backgroundColor,isEnabled:u.isEnabled,isVisible:u.isVisible,isProgressVisible:u.isProgressVisible,text:u.text,textColor:u.textColor});return u.on("backgroundColorChanged",p),u.on("isEnabledChanged",p),u.on("isVisibleChanged",p),u.on("isProgressVisibleChanged",p),u.on("textColorChanged",p),u.on("textChanged",p),u}class Nt extends Error{constructor(t,e){super(`Method "${t}" is not supported in the Web Apps version ${e}.`),Object.setPrototypeOf(this,Nt.prototype)}}class It extends Error{constructor(t,e,n){super(`Parameter "${e}" in method "${t}" is not supported in the Web Apps version ${n}.`),Object.setPrototypeOf(this,It.prototype)}}function Lt(t,e){return t?(t,n)=>{if(!tt(t,e))throw new Nt(t,e);return C(n)&&function(t,e){return"web_app_open_link"===t&&"try_instant_view"in e?["try_instant_view"]:"web_app_set_header_color"===t&&"color"in e?["color"]:[]}(t,n).forEach((n=>{if(!tt(t,n,e))throw new It(t,n,e)})),Z(t,n)}:Z}async function Rt(t={}){const{checkCompat:e=!0,cssVars:n=!1,acceptScrollbarStyle:o=!0,acceptCustomStyles:r=o,targetOrigin:s,debug:i=!1,launchParams:a}=t;let c;i&&function(t){S=t}(i),"string"==typeof s&&q(s),c=a?a instanceof URLSearchParams||"string"==typeof a?Vt(a):a:qt();const{initData:u,initDataRaw:p,version:l,platform:h,themeParams:d}=c,{backgroundColor:g="#ffffff",buttonColor:_="#000000",buttonTextColor:f="#ffffff"}=d,b=function(){let t=0;return()=>(t+=1,t.toString())}(),w=Lt(e,l),m=function(t){const e=new mt(t);return mt.sync(e),e}(d),y=function(t,e,n,o,r){const{backgroundColor:s=t,headerColor:i="bg_color"}=Pt("web-app")||{},a=new Et(i,s,e,n,o,r),c=()=>xt("web-app",{backgroundColor:a.backgroundColor,headerColor:a.headerColor});return a.on("backgroundColorChanged",c),a.on("headerColorChanged",c),a}(g,l,h,b,w),{themeParams:v,viewport:C,webApp:E}="boolean"==typeof(k=n)?k?{themeParams:!0,viewport:!0,webApp:!0}:{}:k;var k;E&&function(t,e){const n=()=>function(t,e){const{backgroundColor:n,secondaryBackgroundColor:o}=e,{backgroundColor:r,headerColor:s}=t;Dt("--tg-bg-color",r),Dt("--tg-header-color","bg_color"===s?n:o)}(t,e);e.on("changed",n),t.on("backgroundColorChanged",n),t.on("headerColorChanged",n),n()}(y,m),v&&function(t){const e=()=>function(t){const{backgroundColor:e,buttonTextColor:n,secondaryBackgroundColor:o,hintColor:r,buttonColor:s,linkColor:i,textColor:a}=t;Dt("--tg-theme-bg-color",e),Dt("--tg-theme-button-color",s),Dt("--tg-theme-button-text-color",n),Dt("--tg-theme-hint-color",r),Dt("--tg-theme-link-color",i),Dt("--tg-theme-secondary-bg-color",o),Dt("--tg-theme-text-color",a)}(t);t.on("changed",e),e()}(m);const x=await async function(t,e){const{height:n=window.innerHeight,stableHeight:o=window.innerHeight,width:r=window.innerWidth,isExpanded:s=!1}=Pt("viewport")||{},i="macos"===t||"web"===t?(()=>{const t=new vt(n,r,o,s,e);return vt.sync(t),t})():await vt.synced({postEvent:e}),a=()=>xt("viewport",{height:i.height,isExpanded:i.isExpanded,stableHeight:i.stableHeight,width:i.width});return i.on("heightChanged",a),i.on("isExpandedChanged",a),i.on("stableHeightChanged",a),i.on("widthChanged",a),i}(h,w);if(C&&function(t){const e=()=>{Tt("--tg-viewport-height",t.height)},n=()=>{Tt("--tg-viewport-stable-height",t.stableHeight)};t.on("heightChanged",e),t.on("stableHeightChanged",n),e(),n()}(x),r&&Q()){const t=document.createElement("style");t.id="telegram-custom-styles",document.head.appendChild(t),z("set_custom_style",(e=>{t.innerHTML=e})),w("iframe_ready")}const P={backButton:At(l,w),closingBehavior:$t(w),cloudStorage:new pt(l,b,w),haptic:new lt(l,w),mainButton:Bt(_,f,w),popup:new gt(l,w),postEvent:w,qrScanner:new _t(l,w),themeParams:m,viewport:x,webApp:y};if(void 0!==u){const{authDate:t,hash:e,...n}=u;P.initData=new ht(t,e,n),P.initDataRaw=p}return P}const Ht=e.memo((t=>{const{children:o,initOptions:r}=t,[s,i]=e.useState(!1),[a,c]=e.useState(null),[u,p]=e.useState(null);e.useEffect((()=>{i(!0),function(t={}){return P(Rt(t),t.timeout||1e3)}(r).then(p).catch(c)}),[]);const l=e.useMemo((()=>({components:u,didInit:s,error:a})),[s,u,a]);return e.createElement(n.Provider,{value:l},o)}));function Wt(t,n){const o=function(){const[,t]=e.useState(0);return e.useCallback((()=>t((t=>(t+1)%1e6))),[])}();e.useEffect((()=>(n.forEach((e=>t.on(e,o))),()=>n.forEach((e=>t.off(e,o))))),[t,o,n])}function Ut(){const t=r("backButton");return Wt(t,["isVisibleChanged"]),t}function Mt(){const t=r("closingBehavior");return Wt(t,["isConfirmationNeededChanged"]),t}function Jt(){return r("haptic")}function Kt(){return r("initData")||null}function jt(){return e.useMemo(qt,[])}function zt(){const t=r("mainButton");return Wt(t,["isEnabledChanged","backgroundColorChanged","isProgressVisibleChanged","textChanged","textColorChanged","isVisibleChanged"]),t}function Ft(){const t=r("popup");return Wt(t,["isOpenedChanged"]),t}function Gt(){const t=r("qrScanner");return Wt(t,["isOpenedChanged"]),t}function Qt(){const t=r("themeParams");return Wt(t,["changed"]),t}function Zt(){const t=r("viewport");return Wt(t,["stableHeightChanged","isExpandedChanged","heightChanged","widthChanged"]),t}function Xt(){const t=r("webApp");return Wt(t,["headerColorChanged","backgroundColorChanged"]),t}function Yt(){return r("cloudStorage")}return Ht.displayName="SDKProvider",t.SDKProvider=Ht,t.sdkContext=n,t.useBackButton=Ut,t.useClosingBehaviour=Mt,t.useCloudStorage=Yt,t.useHapticFeedback=Jt,t.useInitData=Kt,t.useLaunchParams=jt,t.useMainButton=zt,t.usePopup=Ft,t.usePostEvent=function(){return r("postEvent")},t.useQRScanner=Gt,t.useSDK=o,t.useThemeParams=Qt,t.useUnit=r,t.useViewport=Zt,t.useWebApp=Xt,t.withBackButton=function(t){return function(n){const o={...n,backButton:Ut()};return e.createElement(t,{...o})}},t.withClosingBehaviour=function(t){return function(n){const o={...n,closingBehaviour:Mt()};return e.createElement(t,{...o})}},t.withCloudStorage=function(t){return function(n){const o={...n,cloudStorage:Yt()};return e.createElement(t,{...o})}},t.withHapticFeedback=function(t){return function(n){const o={...n,hapticFeedback:Jt()};return e.createElement(t,{...o})}},t.withInitData=function(t){return function(n){const o={...n,initData:Kt()};return e.createElement(t,{...o})}},t.withLaunchParams=function(t){return function(n){const o={...n,launchParams:jt()};return e.createElement(t,{...o})}},t.withMainButton=function(t){return function(n){const o={...n,mainButton:zt()};return e.createElement(t,{...o})}},t.withPopup=function(t){return function(n){const o={...n,popup:Ft()};return e.createElement(t,{...o})}},t.withQRScanner=function(t){return function(n){const o={...n,qrScanner:Gt()};return e.createElement(t,{...o})}},t.withSDK=function(t){return function(n){const r={...n,sdk:o()};return e.createElement(t,{...r})}},t.withThemeParams=function(t){return function(n){const o={...n,themeParams:Qt()};return e.createElement(t,{...o})}},t.withViewport=function(t){return function(n){const o={...n,viewport:Zt()};return e.createElement(t,{...o})}},t.withWebApp=function(t){return function(n){const o={...n,webApp:Xt()};return e.createElement(t,{...o})}},t}({},React);
|
|
2
|
-
//# sourceMappingURL=browser.js.map
|
package/dist/lib/browser.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sources":["../../src/provider/context.ts","../../src/provider/hooks.ts","../../../event-emitter/dist/lib/index.mjs","../../../colors/dist/lib/index.mjs","../../../parsing/dist/lib/index.mjs","../../../utils/dist/lib/index.mjs","../../../bridge/dist/lib/index.mjs","../../../logger/dist/lib/index.mjs","../../../init-data/dist/lib/index.mjs","../../../sdk/dist/lib/index.mjs","../../src/provider/SDKProvider.tsx","../../src/lib/hooks.ts","../../src/lib/back-button/useBackButton.ts","../../src/lib/closing-behavior/useClosingBehaviour.ts","../../src/lib/haptic-feedback/useHapticFeedback.ts","../../src/lib/init-data/useInitData.ts","../../src/lib/launch-params/useLaunchParams.ts","../../src/lib/main-button/useMainButton.ts","../../src/lib/popup/usePopup.ts","../../src/lib/qr-scanner/useQRScanner.ts","../../src/lib/theme-params/useThemeParams.ts","../../src/lib/viewport/useViewport.ts","../../src/lib/web-app/useWebApp.ts","../../src/lib/cloud-storage.tsx","../../src/lib/back-button/withBackButton.tsx","../../src/lib/closing-behavior/withClosingBehaviour.tsx","../../src/lib/haptic-feedback/withHapticFeedback.tsx","../../src/lib/init-data/withInitData.tsx","../../src/lib/launch-params/withLaunchParams.tsx","../../src/lib/main-button/withMainButton.tsx","../../src/lib/popup/withPopup.tsx","../../src/lib/qr-scanner/withQRScanner.tsx","../../src/provider/hocs.tsx","../../src/lib/theme-params/withThemeParams.tsx","../../src/lib/viewport/withViewport.tsx","../../src/lib/web-app/withWebApp.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nimport type { SDKContext } from './types.js';\n\nexport const sdkContext = createContext<SDKContext>({\n components: null,\n didInit: false,\n error: null,\n});\n\nsdkContext.displayName = 'SDKContext';\n","import { useContext } from 'react';\n\nimport { sdkContext } from './context.js';\nimport type { SDKComponent, SDKComponentName } from './types.js';\n\n/**\n * Returns current SDK information.\n */\nexport const useSDK = () => useContext(sdkContext);\n\n/**\n * Returns value by its field name from SDK init result.\n * @param name - component name.\n * @throws {Error} SDK is not initialized.\n */\nexport function useUnit<N extends SDKComponentName>(name: N): SDKComponent<N> {\n const { components } = useSDK();\n\n if (components === null) {\n throw new Error(`Unable to get unit \"${name}\" as long as SDK is not initialized.`);\n }\n return components[name];\n}\n","class s{listeners={};subscribeListeners=[];emit(s,...e){this.subscribeListeners.forEach((i=>i(s,...e)));const i=this.listeners[s];if(void 0===i)return;const t=[];i.forEach((s=>{\"function\"!=typeof s?(s.once&&t.push(s.listener),s.listener(...e)):s(...e)})),t.forEach((e=>this.off(s,e)))}on(s,e){const i=this.listeners[s];void 0===i?this.listeners[s]=[e]:i.push(e)}once(s,e){const i=this.listeners[s],t={listener:e,once:!0};void 0===i?this.listeners[s]=[t]:i.push(t)}off(s,e){const i=this.listeners[s];if(void 0!==i)for(let s=0;s<i.length;s+=1){const t=i[s];e===(\"function\"==typeof t?t:t.listener)&&(i.splice(s,1),s-=1)}}subscribe(s){this.subscribeListeners.push(s)}unsubscribe(s){const e=this.subscribeListeners.indexOf(s);e>=0&&this.subscribeListeners.splice(e,1)}}export{s as EventEmitter};\n//# sourceMappingURL=index.mjs.map\n","function t(t){return/^#[\\da-f]{3}$/i.test(t)}function r(t){return/^#[\\da-f]{6}$/i.test(t)}function e(e){const n=e.replace(/\\s/g,\"\").toLowerCase();if(r(n))return n;if(t(n)){let t=\"#\";for(let r=0;r<3;r+=1)t+=n[1+r].repeat(2);return t}const o=n.match(/^rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)$/)||n.match(/^rgba\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3}),\\d{1,3}\\)$/);if(null===o)throw new Error(`Value \"${e}\" does not satisfy any of known RGB formats.`);return o.slice(1).reduce(((t,r)=>{const e=parseInt(r,10).toString(16);return t+(1===e.length?\"0\":\"\")+e}),\"#\")}function n(t){const r=e(t);return Math.sqrt([.299,.587,.114].reduce(((t,e,n)=>{const o=parseInt(r.slice(1+2*n,1+2*(n+1)),16);return t+o*o*e}),0))<120}export{n as isColorDark,r as isRGB,t as isRGBShort,e as toRGB};\n//# sourceMappingURL=index.mjs.map\n","import{toRGB as t}from\"@tma.js/colors\";class r{parser;isOptional;getDefault;isEmpty;static create(t){return new r(t,!1,void 0)}constructor(t,r,e,n=(t=>void 0===t)){this.parser=t,this.isOptional=r,this.getDefault=e,this.isEmpty=n}parse(t){return this.isOptional&&this.isEmpty(t)?this.getDefault?this.getDefault():void 0:this.parser(t)}optional(t){return this.isOptional=!0,t&&(this.isEmpty=t),this}default(t){return this.getDefault=t,this}}function e(t){const r=\"function\"==typeof t?t:t.parse.bind(t);return t=>function(t){if(Array.isArray(t))return t;if(\"string\"==typeof t)try{const r=JSON.parse(t);if(Array.isArray(r))return r}catch(t){}throw new Error(`Passed value does not satisfy any of known formats: ${JSON.stringify(t)}`)}(t).map(r)}class n extends r{constructor(t,r,n,o=(t=>void 0===t)){super(e(t),r,n,o)}of(t){return this.parser=e(t),this}}function o(t){return()=>r.create(t)}function s(t){return o((r=>{if(typeof r!==t)throw new TypeError(`Unable to parse value ${JSON.stringify(r)} as ${t}.`);return r}))}function i(t,r){const e={};for(const n in t){const o=t[n];if(!o)continue;let s,i,a,u;if(\"type\"in o){const{from:t=n,type:r}=o;s=t,i=\"function\"==typeof r?r:r.parse.bind(r),a=\"required\"in o&&o.required}else s=n,a=!1,i=\"function\"==typeof o?o:o.parse.bind(o);try{u=i(r(s))}catch(t){throw new Error(`Unable to parse field \"${s}\"`,{cause:t})}(void 0!==u||a)&&(e[n]=u)}return e}const a=s(\"string\"),u=s(\"number\"),c=s(\"boolean\"),f=o((t=>{const r=a().parse(t);if(r){const t=Number(r),e=new Date(t.toString()===r?1e3*t:r);if(\"Invalid Date\"!==e.toString())return e}throw new TypeError(`Unable to parse value \"${t}\" as Date.`)})),p=o((r=>{const e=a().parse(r);try{return t(e)}catch(t){throw new TypeError(`Unable to parse value \"${e}\" as RGB.`,{cause:t})}}));function l(t){return r.create((r=>{let e=r;if(\"string\"==typeof e)try{e=JSON.parse(e)}catch(t){throw new TypeError(\"Value is not JSON object converted to string.\")}if(\"object\"!=typeof e||null===e||Array.isArray(e))throw new TypeError(\"Value is not JSON object.\");return i(t,(t=>e[t]))}))}function y(t){return r.create((r=>{if(\"string\"!=typeof r&&!(r instanceof URLSearchParams))throw new TypeError(\"Value has not processable type.\");const e=\"string\"==typeof r?new URLSearchParams(r):r;return i(t,(t=>{const r=e.get(t);return null===r?void 0:r}))}))}function h(){return new n((t=>t),!1,void 0)}export{n as ArrayValueParser,r as ValueParser,h as array,c as boolean,o as createParserGenerator,f as date,l as json,u as number,p as rgb,y as searchParams,a as string};\n//# sourceMappingURL=index.mjs.map\n","function t(t,e){return t+(t.length>0&&e.length>0?` ${e}`:e)}function e(...e){return e.reduce(((e,r)=>{let n=\"\";return\"string\"==typeof r?n=r:\"object\"==typeof r&&null!==r&&(n=Object.entries(r).reduce(((e,[r,n])=>n?t(e,r):e),\"\")),t(e,n)}),\"\")}function r(...t){return t.reduce(((t,r)=>{return\"object\"!=typeof(n=r)||null===n||Array.isArray(null)||Object.entries(r).forEach((([r,n])=>{const o=e(t[r],n);o.length>0&&(t[r]=o)})),t;var n}),{})}function n(t){return\"object\"==typeof t&&null!==t&&!Array.isArray(t)}function o(t,e){const r=t.split(\".\"),n=e.split(\".\"),o=Math.max(r.length,n.length);for(let t=0;t<o;t+=1){const e=parseInt(r[t]||\"0\",10),o=parseInt(n[t]||\"0\",10);if(e!==o)return e>o?1:-1}return 0}class u extends Error{constructor(t){super(`Async call timeout exceeded. Timeout: ${t}`),Object.setPrototypeOf(this,u.prototype)}}function c(t){return new Promise(((e,r)=>{setTimeout(r,t,new u(t))}))}function i(t,e){return\"function\"==typeof t?(...r)=>Promise.race([t(...r),c(e)]):Promise.race([t,c(e)])}function s(t){return t instanceof u}export{u as TimeoutError,e as classNames,o as compareVersions,n as isRecord,s as isTimeoutError,r as mergeClassNames,i as withTimeout};\n//# sourceMappingURL=index.mjs.map\n","import{EventEmitter as e}from\"@tma.js/event-emitter\";import{json as t,rgb as n,number as r,boolean as o,string as i}from\"@tma.js/parsing\";import{log as a}from\"@tma.js/logger\";import{isRecord as s,withTimeout as c,compareVersions as _}from\"@tma.js/utils\";let p=!1,u=\"https://web.telegram.org\";function d(e){p=e}function l(e){u=e}function w(){return u}const f=(e,...t)=>{p&&a(e,\"[Bridge]\",...t)};function v(e){return null==e}const g=t({theme_params:t({bg_color:n().optional(),text_color:n().optional(),hint_color:n().optional(),link_color:n().optional(),button_color:n().optional(),button_text_color:n().optional(),secondary_bg_color:n().optional()})}),m=t({height:r(),width:r().optional(v).default((()=>window.innerWidth)),is_state_stable:o(),is_expanded:o()}),b=t({button_id:i().optional(v)}),y=t({data:i().optional()}),h=t({slug:i(),status:i()}),x=t({req_id:i(),data:e=>null===e?e:i().optional().parse(e)}),E=t({status:i()}),q=t({status:i()}),T=t({req_id:i(),result:e=>e,error:i().optional()}),k=t({eventType:i(),eventData:e=>e});function P(e,t){window.dispatchEvent(new MessageEvent(\"message\",{data:JSON.stringify({eventType:e,eventData:t})}))}function W(e){!function(){const e=window;\"TelegramGameProxy_receiveEvent\"in e||[[\"TelegramGameProxy_receiveEvent\"],[\"TelegramGameProxy\",\"receiveEvent\"],[\"Telegram\",\"WebView\",\"receiveEvent\"]].forEach((t=>{let n=e;t.forEach(((e,t,r)=>{t!==r.length-1?(e in n||(n[e]={}),n=n[e]):n[e]=P}))}))}(),window.addEventListener(\"message\",(t=>{try{const{eventType:n,eventData:r}=k.parse(t.data);e(n,r)}catch{}}))}const A=\"__telegram-cached-emitter__\";function O(){const t=window;return void 0===t[A]&&(t[A]=function(){const t=new e,n=(e,...n)=>{f(\"log\",\"Emitting processed event:\",e,...n),t.emit(e,...n)};return window.addEventListener(\"resize\",(()=>{n(\"viewport_changed\",{width:window.innerWidth,height:window.innerHeight,is_state_stable:!0,is_expanded:!0})})),W(((e,t)=>{f(\"log\",\"Received raw event:\",e,t);try{switch(e){case\"viewport_changed\":return n(e,m.parse(t));case\"theme_changed\":return n(e,g.parse(t));case\"popup_closed\":return n(e,null==t?{}:b.parse(t));case\"set_custom_style\":return n(e,i().parse(t));case\"qr_text_received\":return n(e,y.parse(t));case\"clipboard_text_received\":return n(e,x.parse(t));case\"invoice_closed\":return n(e,h.parse(t));case\"phone_requested\":return n(\"phone_requested\",q.parse(t));case\"custom_method_invoked\":return n(\"custom_method_invoked\",T.parse(t));case\"write_access_requested\":return n(\"write_access_requested\",E.parse(t));case\"main_button_pressed\":case\"back_button_pressed\":case\"settings_button_pressed\":case\"scan_qr_popup_closed\":return n(e);default:return n(e,t)}}catch(e){f(\"error\",\"Error processing event:\",e)}})),t}()),t[A]}function D(e,t){O().off(e,t)}function j(e,t){return O().on(e,t),()=>D(e,t)}function J(e,t){return O().once(e,t),()=>D(e,t)}function N(e){O().unsubscribe(e)}function S(e){return O().subscribe(e),()=>N(e)}function G(e){return\"external\"in e&&s(e.external)&&\"notify\"in e.external&&\"function\"==typeof e.external.notify}function L(e){return\"TelegramWebviewProxy\"in e&&s(e.TelegramWebviewProxy)&&\"postEvent\"in e.TelegramWebviewProxy&&\"function\"==typeof e.TelegramWebviewProxy.postEvent}function M(){try{return window.self!==window.top}catch(e){return!0}}function z(e,t,n){let r,o={};void 0===t&&void 0===n?o={}:void 0!==t&&void 0!==n?(o=n,r=t):void 0!==t&&(\"targetOrigin\"in t?o=t:r=t);const{targetOrigin:i=w()}=o;if(M())window.parent.postMessage(JSON.stringify({eventType:e,eventData:r}),i);else if(G(window))window.external.notify(JSON.stringify({eventType:e,eventData:r}));else{if(!L(window))throw new Error(\"Unable to determine current environment and possible way to send event.\");window.TelegramWebviewProxy.postEvent(e,JSON.stringify(r))}}function B(e,t,n,r){let o,i,a,_;\"string\"==typeof t||Array.isArray(t)?(a=Array.isArray(t)?t:[t],o=n):(i=t,a=Array.isArray(n)?n:[n],o=r),s(i)&&\"string\"==typeof i.req_id&&(_=i.req_id);const{postEvent:p=z,timeout:u}=o||{},d=o&&\"capture\"in o?o.capture:null,l=new Promise(((t,n)=>{const r=a.map((e=>j(e,(e=>{(\"string\"!=typeof _||s(e)&&e.req_id===_)&&(\"function\"!=typeof d||d(e))&&(o(),t(e))})))),o=()=>r.forEach((e=>e()));try{p(e,i)}catch(e){o(),n(e)}}));return\"number\"==typeof u?c(l,u):l}function H(e,t){return _(e,t)<=0}function R(e,t){return\"web_app_open_link\"===e&&\"try_instant_view\"in t?[\"try_instant_view\"]:\"web_app_set_header_color\"===e&&\"color\"in t?[\"color\"]:[]}function U(e,t,n){if(\"string\"==typeof n){if(\"web_app_open_link\"===e&&\"try_instant_view\"===t)return H(\"6.4\",n);if(\"web_app_set_header_color\"===e&&\"color\"===t)return H(\"6.9\",n)}switch(e){case\"web_app_open_tg_link\":case\"web_app_open_invoice\":case\"web_app_setup_back_button\":case\"web_app_set_background_color\":case\"web_app_set_header_color\":case\"web_app_trigger_haptic_feedback\":return H(\"6.1\",t);case\"web_app_open_popup\":return H(\"6.2\",t);case\"web_app_close_scan_qr_popup\":case\"web_app_open_scan_qr_popup\":case\"web_app_read_text_from_clipboard\":return H(\"6.4\",t);case\"web_app_invoke_custom_method\":case\"web_app_request_write_access\":case\"web_app_request_phone\":return H(\"6.9\",t);default:return!0}}export{R as detectSupportParams,G as hasExternalNotify,L as hasWebviewProxy,M as isIframe,D as off,j as on,J as once,z as postEvent,B as request,d as setDebug,l as setTargetOrigin,S as subscribe,U as supports,N as unsubscribe};\n//# sourceMappingURL=index.mjs.map\n","function t(t,...i){const e=new Date,n=Intl.DateTimeFormat(\"en-GB\",{hour:\"2-digit\",minute:\"2-digit\",second:\"2-digit\",fractionalSecondDigits:3,timeZone:\"UTC\"}).format(e);console[t](`[${n}]`,...i)}export{t as log};\n//# sourceMappingURL=index.mjs.map\n","import{json as o,string as t,number as a,boolean as e,searchParams as i,date as n}from\"@tma.js/parsing\";function r(o,t){return{from:t,type:o}}const p=o({firstName:r(t(),\"first_name\"),id:a(),isBot:r(e().optional(),\"is_bot\"),isPremium:r(e().optional(),\"is_premium\"),lastName:r(t().optional(),\"last_name\"),languageCode:r(t().optional(),\"language_code\"),photoUrl:r(t().optional(),\"photo_url\"),username:t().optional()}),l=i({authDate:r(n(),\"auth_date\"),hash:t(),user:p.optional(),receiver:p.optional(),chat:o({id:a(),type:t(),title:t(),photoUrl:r(t().optional(),\"photo_url\"),username:t().optional()}).optional(),canSendAfter:r(n().optional(),\"can_send_after\"),queryId:r(t().optional(),\"query_id\"),startParam:r(t().optional(),\"start_param\")});export{l as initData};\n//# sourceMappingURL=index.mjs.map\n","import{EventEmitter as t}from\"@tma.js/event-emitter\";import{supports as e,postEvent as o,on as s,off as n,request as r,detectSupportParams as i,setDebug as a,setTargetOrigin as h,isIframe as c}from\"@tma.js/bridge\";import{array as p,string as l,json as u,rgb as d,searchParams as g}from\"@tma.js/parsing\";import{isColorDark as b,isRGB as _}from\"@tma.js/colors\";import{compareVersions as m,isRecord as w,withTimeout as f}from\"@tma.js/utils\";import{initData as C}from\"@tma.js/init-data\";function v(t,o){return s=>e(o[s],t)}class y{state;ee;constructor(t,e){this.state=t,this.ee=e}emit(t,e){this.ee&&this.ee.emit(t,e)}internalSet(t,e){return this.state[t]!==e&&(this.state[t]=e,this.emit(`${t}Changed`,e),!0)}set(t,e){let o=!1;if(\"string\"==typeof t)o=this.internalSet(t,e);else for(const e in t)this.internalSet(e,t[e])&&(o=!0);o&&this.emit(\"changed\")}get(t){return this.state[t]}}class k{postEvent;ee=new t;state;constructor(t,e,s=o){this.postEvent=s,this.state=new y({isVisible:t},this.ee),this.supports=v(e,{show:\"web_app_setup_back_button\",hide:\"web_app_setup_back_button\"})}set isVisible(t){this.state.set(\"isVisible\",t),this.postEvent(\"web_app_setup_back_button\",{is_visible:t})}get isVisible(){return this.state.get(\"isVisible\")}hide(){this.isVisible=!1}on=(t,e)=>{if(\"click\"===t)return s(\"back_button_pressed\",e);this.ee.on(t,e)};off=(t,e)=>{if(\"click\"===t)return n(\"back_button_pressed\",e);this.ee.off(t,e)};show(){this.isVisible=!0}supports}class E{postEvent;ee=new t;state;constructor(t,e=o){this.postEvent=e,this.state=new y({isConfirmationNeeded:t},this.ee)}set isConfirmationNeeded(t){this.state.set(\"isConfirmationNeeded\",t),this.postEvent(\"web_app_setup_closing_behavior\",{need_confirmation:t})}get isConfirmationNeeded(){return this.state.get(\"isConfirmationNeeded\")}disableConfirmation(){this.isConfirmationNeeded=!1}enableConfirmation(){this.isConfirmationNeeded=!0}on=this.ee.on.bind(this.ee);off=this.ee.off.bind(this.ee)}const x=p().of(l());function V(t,e){return t.reduce(((t,o)=>(t[o]=e,t)),{})}class P{createRequestId;postEvent;constructor(t,e,s=o){this.createRequestId=e,this.postEvent=s,this.supports=v(t,{deleteKeys:\"web_app_invoke_custom_method\",getKeys:\"web_app_invoke_custom_method\",getValues:\"web_app_invoke_custom_method\",saveValue:\"web_app_invoke_custom_method\"})}async invokeCustomMethod(t,e,o={}){const{result:s,error:n}=await r(\"web_app_invoke_custom_method\",{method:t,params:e,req_id:this.createRequestId()},\"custom_method_invoked\",{...o,postEvent:this.postEvent});if(n)throw new Error(\"string\"==typeof n?n:`Unknown error: ${JSON.stringify(n)}`);return s}async deleteKeys(t,e){0!==t.length&&await this.invokeCustomMethod(\"deleteStorageValues\",{keys:t},e)}async getKeys(t){const e=await this.invokeCustomMethod(\"getStorageKeys\",{},t);return x.parse(e)}async getValues(t,e){if(0===t.length)return V(t,\"\");const o=u(V(t,l())),s=await this.invokeCustomMethod(\"getStorageValues\",{keys:t},e);return o.parse(s)}async saveValue(t,e,o){await this.invokeCustomMethod(\"saveStorageValue\",{key:t,value:e},o)}supports}class q{postEvent;constructor(t,e=o){this.postEvent=e,this.supports=v(t,{impactOccurred:\"web_app_trigger_haptic_feedback\",notificationOccurred:\"web_app_trigger_haptic_feedback\",selectionChanged:\"web_app_trigger_haptic_feedback\"})}impactOccurred(t){this.postEvent(\"web_app_trigger_haptic_feedback\",{type:\"impact\",impact_style:t})}notificationOccurred(t){this.postEvent(\"web_app_trigger_haptic_feedback\",{type:\"notification\",notification_type:t})}selectionChanged(){this.postEvent(\"web_app_trigger_haptic_feedback\",{type:\"selection_change\"})}supports}class O{state;constructor(t,e,o={}){const{chat:s=null,canSendAfter:n=null,user:r=null,queryId:i=null,receiver:a=null,startParam:h=null}=o;this.state=new y({authDate:t,canSendAfter:n,chat:s,user:r,queryId:i,receiver:a,startParam:h,hash:e})}get authDate(){return this.state.get(\"authDate\")}get canSendAfter(){return this.state.get(\"canSendAfter\")}get chat(){return this.state.get(\"chat\")}get hash(){return this.state.get(\"hash\")}get queryId(){return this.state.get(\"queryId\")}get receiver(){return this.state.get(\"receiver\")}get startParam(){return this.state.get(\"startParam\")}get user(){return this.state.get(\"user\")}}class S{postEvent;ee=new t;state;constructor(t,e,s,n,r,i,a=o){this.postEvent=a,this.state=new y({backgroundColor:t,isEnabled:e,isVisible:s,isProgressVisible:n,text:r,textColor:i},this.ee)}set isEnabled(t){this.state.set(\"isEnabled\",t),this.commit()}get isEnabled(){return this.state.get(\"isEnabled\")}set isProgressVisible(t){this.state.set(\"isProgressVisible\",t),this.commit()}get isProgressVisible(){return this.state.get(\"isProgressVisible\")}set isVisible(t){this.state.set(\"isVisible\",t),this.commit()}get isVisible(){return this.state.get(\"isVisible\")}commit(){\"\"!==this.text&&this.postEvent(\"web_app_setup_main_button\",{is_visible:this.isVisible,is_active:this.isEnabled,is_progress_visible:this.isProgressVisible,text:this.text,color:this.backgroundColor,text_color:this.textColor})}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}hideProgress(){return this.isProgressVisible=!1,this}on=(t,e)=>{if(\"click\"===t)return s(\"main_button_pressed\",e);this.ee.on(t,e)};off=(t,e)=>{if(\"click\"===t)return n(\"main_button_pressed\",e);this.ee.off(t,e)};show(){return this.isVisible=!0,this}showProgress(){return this.isProgressVisible=!0,this}setText(t){return this.state.set(\"text\",t),this.commit(),this}setTextColor(t){return this.state.set(\"textColor\",t),this.commit(),this}setBackgroundColor(t){return this.state.set(\"backgroundColor\",t),this.commit(),this}}class ${postEvent;ee=new t;state;constructor(t,e=o){this.postEvent=e,this.state=new y({isOpened:!1},this.ee),this.supports=v(t,{open:\"web_app_open_popup\"})}get isOpened(){return this.state.get(\"isOpened\")}on=this.ee.on.bind(this.ee);off=this.ee.off.bind(this.ee);async open(t){if(this.isOpened)throw new Error(\"Popup is already opened.\");this.state.set(\"isOpened\",!0);try{const{button_id:e=null}=await r(\"web_app_open_popup\",function(t){const e=t.message.trim(),o=(t.title||\"\").trim(),s=t.buttons||[];let n;if(o.length>64)throw new Error(`Title has incorrect size: ${o.length}`);if(0===e.length||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 n=0===s.length?[{type:\"close\",id:\"\"}]:s.map((t=>{const{id:e=\"\"}=t;if(e.length>64)throw new Error(`Button ID has incorrect size: ${e}`);if(void 0===t.type||\"default\"===t.type||\"destructive\"===t.type){const o=t.text.trim();if(0===o.length||o.length>64){const e=t.type||\"default\";throw new Error(`Button text with type \"${e}\" has incorrect size: ${t.text.length}`)}return{...t,text:o,id:e}}return{...t,id:e}})),{title:o,message:e,buttons:n}}(t),\"popup_closed\",{postEvent:this.postEvent});return e}finally{this.state.set(\"isOpened\",!1)}}supports}class A{postEvent;ee=new t;state;constructor(t,e=o){this.postEvent=e,this.state=new y({isOpened:!1},this.ee),this.supports=v(t,{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(t){this.state.set(\"isOpened\",t)}get isOpened(){return this.state.get(\"isOpened\")}async open(t){if(this.isOpened)throw new Error(\"QR scanner is already opened.\");this.isOpened=!0;try{const e=await r(\"web_app_open_scan_qr_popup\",{text:t},[\"qr_text_received\",\"scan_qr_popup_closed\"],{postEvent:this.postEvent});return\"object\"==typeof e&&\"string\"==typeof e.data?e.data:null}finally{this.isOpened=!1}}on=this.ee.on.bind(this.ee);off=this.ee.off.bind(this.ee);supports}const B=u({backgroundColor:{type:d().optional(),from:\"bg_color\"},buttonColor:{type:d().optional(),from:\"button_color\"},buttonTextColor:{type:d().optional(),from:\"button_text_color\"},hintColor:{type:d().optional(),from:\"hint_color\"},linkColor:{type:d().optional(),from:\"link_color\"},textColor:{type:d().optional(),from:\"text_color\"},secondaryBackgroundColor:{type:d().optional(),from:\"secondary_bg_color\"}});function H(t){return B.parse(t)}function I(t){const{backgroundColor:e=null,buttonTextColor:o=null,buttonColor:s=null,hintColor:n=null,linkColor:r=null,textColor:i=null,secondaryBackgroundColor:a=null}=t;return{backgroundColor:e,buttonTextColor:o,buttonColor:s,hintColor:n,linkColor:r,textColor:i,secondaryBackgroundColor:a}}class D{static async request(t={}){const{timeout:e=1e3,...o}=t;return H((await r(\"web_app_request_theme\",\"theme_changed\",{...o,timeout:e})).theme_params)}static sync(t){s(\"theme_changed\",(e=>{t.state.set(I(H(e.theme_params)))}))}static async synced(t){const e=await this.request(t),o=new D(e);return this.sync(o),o}ee=new t;state;constructor(t){this.state=new y(I(t),this.ee)}get backgroundColor(){return this.state.get(\"backgroundColor\")}get buttonColor(){return this.state.get(\"buttonColor\")}get buttonTextColor(){return this.state.get(\"buttonTextColor\")}get hintColor(){return this.state.get(\"hintColor\")}get isDark(){return null===this.backgroundColor||b(this.backgroundColor)}get linkColor(){return this.state.get(\"linkColor\")}on=this.ee.on.bind(this.ee);off=this.ee.off.bind(this.ee);get secondaryBackgroundColor(){return this.state.get(\"secondaryBackgroundColor\")}get textColor(){return this.state.get(\"textColor\")}}function R(t){return t<0?0:t}class T{postEvent;static async request(t={}){const{timeout:e=1e3,...o}=t,{is_expanded:s,is_state_stable:n,...i}=await r(\"web_app_request_viewport\",\"viewport_changed\",{...o,timeout:e});return{...i,isExpanded:s,isStateStable:n}}static sync(t){s(\"viewport_changed\",(e=>{const{height:o,width:s,is_expanded:n,is_state_stable:r}=e,i=R(o);t.state.set({height:i,isExpanded:n,width:R(s),stableHeight:r?i:void 0})}))}static async synced(t={}){const{height:e,isExpanded:o,width:s}=await this.request(t),n=new T(e,s,e,o,t.postEvent);return this.sync(n),n}ee=new t;state;constructor(t,e,s,n,r=o){this.postEvent=r,this.state=new y({height:R(t),isExpanded:n,stableHeight:R(s),width:R(e)},this.ee)}get height(){return this.state.get(\"height\")}get stableHeight(){return this.state.get(\"stableHeight\")}get isExpanded(){return this.state.get(\"isExpanded\")}get width(){return this.state.get(\"width\")}expand(){this.state.set(\"isExpanded\",!0),this.postEvent(\"web_app_expand\")}get isStable(){return this.stableHeight===this.height}on=this.ee.on.bind(this.ee);off=this.ee.off.bind(this.ee)}function N(t){const e=document.createElement(\"a\");if(e.href=t,\"http:\"!==e.protocol&&\"https:\"!==e.protocol)throw Error(`URL protocol is not supported by OS, or link has not allowed protocol: ${e.protocol}`);return e.href}class L{currentVersion;currentPlatform;createRequestId;postEvent;ee=new t;state;constructor(t,s,n,r,i,a=o){var h,c;this.currentVersion=n,this.currentPlatform=r,this.createRequestId=i,this.postEvent=a,this.state=new y({backgroundColor:s,headerColor:t},this.ee),this.supports=v(n,{openInvoice:\"web_app_open_invoice\",readTextFromClipboard:\"web_app_read_text_from_clipboard\",setHeaderColor:\"web_app_set_header_color\",setBackgroundColor:\"web_app_set_background_color\",requestPhoneAccess:\"web_app_request_phone\",requestWriteAccess:\"web_app_request_write_access\"}),this.supportsParam=(h=n,c={\"setHeaderColor.color\":[\"web_app_set_header_color\",\"color\"],\"openLink.tryInstantView\":[\"web_app_open_link\",\"try_instant_view\"]},t=>{const[o,s]=c[t];return e(o,s,h)})}get backgroundColor(){return this.state.get(\"backgroundColor\")}get colorScheme(){return b(this.backgroundColor)?\"dark\":\"light\"}close(){this.postEvent(\"web_app_close\")}get headerColor(){return this.state.get(\"headerColor\")}isVersionAtLeast(t){return m(t,this.version)>=0}openLink(t,o){const s=N(t);if(e(\"web_app_open_link\",this.version))return this.postEvent(\"web_app_open_link\",{url:s,...\"boolean\"==typeof o?{try_instant_view:o}:{}});window.open(s,\"_blank\")}openTelegramLink(t){const{hostname:o,pathname:s,search:n}=new URL(N(t));if(\"t.me\"!==o)throw new Error(`URL has not allowed hostname: ${o}. Only \"t.me\" is allowed`);if(e(\"web_app_open_tg_link\",this.version))return this.postEvent(\"web_app_open_tg_link\",{path_full:s+n});window.location.href=t}async openInvoice(t){const{hostname:e,pathname:o}=new URL(N(t));if(\"t.me\"!==e)throw new Error(`Incorrect hostname: ${e}`);const s=o.match(/^\\/(\\$|invoice\\/)([A-Za-z0-9\\-_=]+)$/);if(null===s)throw new Error('Link pathname has incorrect format. Expected to receive \"/invoice/slug\" or \"/$slug\"');const[,,n]=s;return(await r(\"web_app_open_invoice\",{slug:n},\"invoice_closed\",{postEvent:this.postEvent,capture:({slug:t})=>n===t})).status}on=this.ee.on.bind(this.ee);off=this.ee.off.bind(this.ee);get platform(){return this.currentPlatform}ready(){this.postEvent(\"web_app_ready\")}async readTextFromClipboard(){const{data:t=null}=await r(\"web_app_read_text_from_clipboard\",{req_id:this.createRequestId()},\"clipboard_text_received\",{postEvent:this.postEvent});return t}async requestPhoneAccess(){const{status:t}=await r(\"web_app_request_phone\",\"phone_requested\",{postEvent:this.postEvent});return t}async requestWriteAccess(){const{status:t}=await r(\"web_app_request_write_access\",\"write_access_requested\",{postEvent:this.postEvent});return t}sendData(t){const{size:e}=new Blob([t]);if(0===e||e>4096)throw new Error(`Passed data has incorrect size: ${e}`);this.postEvent(\"web_app_data_send\",{data:t})}setHeaderColor(t){this.postEvent(\"web_app_set_header_color\",_(t)?{color:t}:{color_key:t}),this.state.set(\"headerColor\",t)}setBackgroundColor(t){this.postEvent(\"web_app_set_background_color\",{color:t}),this.state.set(\"backgroundColor\",t)}supports;supportsParam;get version(){return this.currentVersion}}function j(t){return`telegram-web-apps-${t}`}function W(t,e){sessionStorage.setItem(j(t),JSON.stringify(e))}function z(t){const e=sessionStorage.getItem(j(t));return e?JSON.parse(e):null}const M=g({version:{type:l(),from:\"tgWebAppVersion\"},initData:{type:C.optional(),from:\"tgWebAppData\"},initDataRaw:{type:l().optional(),from:\"tgWebAppData\"},platform:{type:l(),from:\"tgWebAppPlatform\"},themeParams:{type:H,from:\"tgWebAppThemeParams\"}});function U(t){return M.parse(t)}function K(){const t=[];try{const t=window.location.hash.slice(1),e=U(t);return W(\"launch-params\",t),e}catch(e){t.push(e instanceof Error?e.message:\"unknown error\")}try{const e=z(\"launch-params\");if(e)return U(e);t.push(\"Launch params are missing in local storage\")}catch(e){t.push(e instanceof Error?e.message:\"unknown error\")}throw new Error(`Unable to extract launch params. Errors: \"${t.join('\", \"')}\"`)}function J(t,e){document.documentElement.style.setProperty(t,e)}function F(t,e){null!==e&&J(t,e)}function Q(t,e){J(t,`${e}px`)}function Z(t){const e=()=>function(t){const{backgroundColor:e,buttonTextColor:o,secondaryBackgroundColor:s,hintColor:n,buttonColor:r,linkColor:i,textColor:a}=t;F(\"--tg-theme-bg-color\",e),F(\"--tg-theme-button-color\",r),F(\"--tg-theme-button-text-color\",o),F(\"--tg-theme-hint-color\",n),F(\"--tg-theme-link-color\",i),F(\"--tg-theme-secondary-bg-color\",s),F(\"--tg-theme-text-color\",a)}(t);t.on(\"changed\",e),e()}function G(t,e){const o=()=>function(t,e){const{backgroundColor:o,secondaryBackgroundColor:s}=e,{backgroundColor:n,headerColor:r}=t;F(\"--tg-bg-color\",n),F(\"--tg-header-color\",\"bg_color\"===r?o:s)}(t,e);e.on(\"changed\",o),t.on(\"backgroundColorChanged\",o),t.on(\"headerColorChanged\",o),o()}function X(t,e){const{isVisible:o=!1}=z(\"back-button\")||{},s=new k(o,t,e);return s.on(\"isVisibleChanged\",(()=>{W(\"back-button\",{isVisible:s.isVisible})})),s}function Y(t){const{isConfirmationNeeded:e=!1}=z(\"closing-behavior\")||{},o=new E(e,t);return o.on(\"isConfirmationNeededChanged\",(()=>W(\"closing-behavior\",{isConfirmationNeeded:o.isConfirmationNeeded}))),o}function tt(t,e,o){const{backgroundColor:s=t,isEnabled:n=!1,isVisible:r=!1,isProgressVisible:i=!1,textColor:a=e,text:h=\"\"}=z(\"main-button\")||{},c=new S(s,n,r,i,h,a,o),p=()=>W(\"main-button\",{backgroundColor:c.backgroundColor,isEnabled:c.isEnabled,isVisible:c.isVisible,isProgressVisible:c.isProgressVisible,text:c.text,textColor:c.textColor});return c.on(\"backgroundColorChanged\",p),c.on(\"isEnabledChanged\",p),c.on(\"isVisibleChanged\",p),c.on(\"isProgressVisibleChanged\",p),c.on(\"textColorChanged\",p),c.on(\"textChanged\",p),c}class et extends Error{constructor(t,e){super(`Method \"${t}\" is not supported in the Web Apps version ${e}.`),Object.setPrototypeOf(this,et.prototype)}}class ot extends Error{constructor(t,e,o){super(`Parameter \"${e}\" in method \"${t}\" is not supported in the Web Apps version ${o}.`),Object.setPrototypeOf(this,ot.prototype)}}function st(t,s){return t?(t,n)=>{if(!e(t,s))throw new et(t,s);return w(n)&&i(t,n).forEach((o=>{if(!e(t,o,s))throw new ot(t,o,s)})),o(t,n)}:o}async function nt(t={}){const{checkCompat:e=!0,cssVars:o=!1,acceptScrollbarStyle:n=!0,acceptCustomStyles:r=n,targetOrigin:i,debug:p=!1,launchParams:l}=t;let u;p&&a(p),\"string\"==typeof i&&h(i),u=l?l instanceof URLSearchParams||\"string\"==typeof l?U(l):l:K();const{initData:d,initDataRaw:g,version:b,platform:_,themeParams:m}=u,{backgroundColor:w=\"#ffffff\",buttonColor:f=\"#000000\",buttonTextColor:C=\"#ffffff\"}=m,v=function(){let t=0;return()=>(t+=1,t.toString())}(),y=st(e,b),k=function(t){const e=new D(t);return D.sync(e),e}(m),E=function(t,e,o,s,n){const{backgroundColor:r=t,headerColor:i=\"bg_color\"}=z(\"web-app\")||{},a=new L(i,r,e,o,s,n),h=()=>W(\"web-app\",{backgroundColor:a.backgroundColor,headerColor:a.headerColor});return a.on(\"backgroundColorChanged\",h),a.on(\"headerColorChanged\",h),a}(w,b,_,v,y),{themeParams:x,viewport:V,webApp:S}=\"boolean\"==typeof(B=o)?B?{themeParams:!0,viewport:!0,webApp:!0}:{}:B;var B;S&&G(E,k),x&&Z(k);const H=await async function(t,e){const{height:o=window.innerHeight,stableHeight:s=window.innerHeight,width:n=window.innerWidth,isExpanded:r=!1}=z(\"viewport\")||{},i=\"macos\"===t||\"web\"===t?(()=>{const t=new T(o,n,s,r,e);return T.sync(t),t})():await T.synced({postEvent:e}),a=()=>W(\"viewport\",{height:i.height,isExpanded:i.isExpanded,stableHeight:i.stableHeight,width:i.width});return i.on(\"heightChanged\",a),i.on(\"isExpandedChanged\",a),i.on(\"stableHeightChanged\",a),i.on(\"widthChanged\",a),i}(_,y);if(V&&function(t){const e=()=>{Q(\"--tg-viewport-height\",t.height)},o=()=>{Q(\"--tg-viewport-stable-height\",t.stableHeight)};t.on(\"heightChanged\",e),t.on(\"stableHeightChanged\",o),e(),o()}(H),r&&c()){const t=document.createElement(\"style\");t.id=\"telegram-custom-styles\",document.head.appendChild(t),s(\"set_custom_style\",(e=>{t.innerHTML=e})),y(\"iframe_ready\")}const I={backButton:X(b,y),closingBehavior:Y(y),cloudStorage:new P(b,v,y),haptic:new q(b,y),mainButton:tt(f,C,y),popup:new $(b,y),postEvent:y,qrScanner:new A(b,y),themeParams:k,viewport:H,webApp:E};if(void 0!==d){const{authDate:t,hash:e,...o}=d;I.initData=new O(t,e,o),I.initDataRaw=g}return I}function rt(t={}){return f(nt(t),t.timeout||1e3)}function it(){try{return K(),!0}catch(t){return!1}}export{k as BackButton,E as ClosingBehaviour,P as CloudStorage,q as HapticFeedback,O as InitData,S as MainButton,et as MethodNotSupportedError,$ as Popup,A as QRScanner,D as ThemeParams,T as Viewport,L as WebApp,N as formatURL,rt as init,it as isTWA,U as parseLaunchParams,H as parseThemeParams,K as retrieveLaunchParams};\n//# sourceMappingURL=index.mjs.map\n","import React, {\n memo,\n useEffect,\n useMemo,\n useState,\n type PropsWithChildren,\n} from 'react';\nimport { init, type InitOptions } from '@tma.js/sdk';\n\nimport { sdkContext } from './context.js';\nimport type { SDKComponents, SDKContext } from './types.js';\n\nexport type SDKInitOptions = InitOptions;\n\nexport type SDKProviderProps = PropsWithChildren<{ initOptions?: SDKInitOptions }>;\n\n/**\n * Component which provides access to SDK components.\n */\nexport const SDKProvider = memo<SDKProviderProps>((props) => {\n const { children, initOptions } = props;\n const [didInit, setDidInit] = useState(false);\n const [error, setError] = useState<null | unknown>(null);\n const [components, setComponents] = useState<SDKComponents | null>(null);\n\n // Initialize SDK on DOM attach.\n useEffect(() => {\n // Update init status.\n setDidInit(true);\n\n // Init SDK.\n init(initOptions)\n .then(setComponents)\n .catch(setError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const context = useMemo<SDKContext>(() => ({\n components,\n didInit,\n error,\n }), [didInit, components, error]);\n\n return <sdkContext.Provider value={context}>{children}</sdkContext.Provider>;\n});\n\nSDKProvider.displayName = 'SDKProvider';\n","import { useCallback, useState, useEffect } from 'react';\nimport type { PostEvent } from '@tma.js/sdk/types';\nimport { useUnit } from '../provider/index.js';\n\ninterface Trackable {\n on: (event: any, ...args: any[]) => void;\n off: (event: any, ...args: any[]) => void;\n}\n\ntype EventName<T extends Trackable> = T extends {\n on(event: infer E, ...args: any[]): any\n} ? E : never;\n\n/**\n * The hook which returns function used for force update.\n */\nexport function useForceUpdate(): (() => void) {\n const [, setHash] = useState(0);\n // TODO: Maybe just assign new symbol?\n return useCallback(() => setHash((hash) => (hash + 1) % 1_000_000), []);\n}\n\n/**\n * The hook which listens to the specified object events and calls force update\n * in case, some of them was emitted.\n * @param trackable - object which allows events listening.\n * @param events - events to listen. This array will be memoized during first\n * hook call.\n */\nexport function useEventsTracking<T extends Trackable>(\n trackable: T,\n events: EventName<T>[],\n) {\n const forceUpdate = useForceUpdate();\n\n useEffect(() => {\n // Start listening to each event.\n events.forEach((event) => trackable.on(event, forceUpdate));\n\n // On cleanup remove event listeners.\n return () => events.forEach((event) => trackable.off(event, forceUpdate));\n }, [trackable, forceUpdate, events]);\n}\n\n/**\n * Returns event posting function which was created during SDK\n * initialization.\n */\nexport function usePostEvent(): PostEvent {\n return useUnit('postEvent');\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { BackButton } from './types.js';\n\n/**\n * Returns BackButton component instance.\n */\nexport function useBackButton(): BackButton {\n const backButton = useUnit('backButton');\n useEventsTracking(backButton, ['isVisibleChanged']);\n\n return backButton;\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { ClosingBehaviour } from './types.js';\n\n/**\n * Returns ClosingBehaviour component instance.\n */\nexport function useClosingBehaviour(): ClosingBehaviour {\n const component = useUnit('closingBehavior');\n useEventsTracking(component, ['isConfirmationNeededChanged']);\n\n return component;\n}\n","import { useUnit } from '../../provider/index.js';\nimport type { HapticFeedback } from './types.js';\n\n/**\n * Returns HapticFeedback component instance.\n */\nexport function useHapticFeedback(): HapticFeedback {\n return useUnit('haptic');\n}\n","import { useUnit } from '../../provider/index.js';\nimport type { InitData } from './types.js';\n\n/**\n * Returns InitData component instance.\n */\nexport function useInitData(): InitData | null {\n return useUnit('initData') || null;\n}\n","import { useMemo } from 'react';\nimport { retrieveLaunchParams } from '@tma.js/sdk';\n\nimport type { LaunchParams } from './types.js';\n\n/**\n * The hook which returns launch parameters initially passed to Web App.\n */\nexport function useLaunchParams(): LaunchParams {\n return useMemo(retrieveLaunchParams, []);\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { MainButton } from './types.js';\n\n/**\n * Returns MainButton component instance.\n */\nexport function useMainButton(): MainButton {\n const mainButton = useUnit('mainButton');\n useEventsTracking(mainButton, [\n 'isEnabledChanged', 'backgroundColorChanged', 'isProgressVisibleChanged',\n 'textChanged', 'textColorChanged', 'isVisibleChanged',\n ]);\n\n return mainButton;\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { Popup } from './types.js';\n\n/**\n * Returns Popup component instance.\n */\nexport function usePopup(): Popup {\n const popup = useUnit('popup');\n useEventsTracking(popup, ['isOpenedChanged']);\n\n return popup;\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { QRScanner } from './types.js';\n\n/**\n * Returns QRScanner component instance.\n */\nexport function useQRScanner(): QRScanner {\n const qrScanner = useUnit('qrScanner');\n useEventsTracking(qrScanner, ['isOpenedChanged']);\n\n return qrScanner;\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { ThemeParams } from './types.js';\n\n/**\n * Returns ThemeParams component instance.\n */\nexport function useThemeParams(): ThemeParams {\n const theme = useUnit('themeParams');\n useEventsTracking(theme, ['changed']);\n\n return theme;\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { Viewport } from './types.js';\n\n/**\n * Returns Viewport component instance.\n */\nexport function useViewport(): Viewport {\n const viewport = useUnit('viewport');\n useEventsTracking(viewport, [\n 'stableHeightChanged', 'isExpandedChanged', 'heightChanged', 'widthChanged',\n ]);\n\n return viewport;\n}\n","import { useUnit } from '../../provider/index.js';\nimport type { WebApp } from './types.js';\nimport { useEventsTracking } from '../hooks.js';\n\n/**\n * Returns WebApp component instance.\n */\nexport function useWebApp(): WebApp {\n const webApp = useUnit('webApp');\n useEventsTracking(webApp, ['headerColorChanged', 'backgroundColorChanged']);\n\n return webApp;\n}\n","import React, { type ComponentType } from 'react';\n\nimport type { CloudStorage } from '@tma.js/sdk';\n\nimport { useUnit } from '../provider/index.js';\n\n/**\n * Returns CloudStorage component instance.\n */\nexport function useCloudStorage(): CloudStorage {\n return useUnit('cloudStorage');\n}\n\n/**\n * HOC which passes CloudStorage SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withCloudStorage<P extends { cloudStorage?: CloudStorage }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'cloudStorage'>> {\n return function WithCloudStorage(props: Omit<P, 'cloudStorage'>) {\n const p = { ...props, cloudStorage: useCloudStorage() } as P;\n\n return <Component {...p} />;\n };\n}\n\nexport type { CloudStorage };\n","import React, { type ComponentType } from 'react';\n\nimport { useBackButton } from './useBackButton.js';\nimport type { BackButton } from './types.js';\n\n/**\n * HOC which passes BackButton SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withBackButton<P extends { backButton?: BackButton }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'backButton'>> {\n return function WithBackButton(props: Omit<P, 'backButton'>) {\n const p = { ...props, backButton: useBackButton() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useClosingBehaviour } from './useClosingBehaviour.js';\nimport type { ClosingBehaviour } from './types.js';\n\n/**\n * HOC which passes ClosingBehaviour SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withClosingBehaviour<P extends { closingBehaviour?: ClosingBehaviour }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'closingBehaviour'>> {\n return function WithClosingConfirmation(props: Omit<P, 'closingBehaviour'>) {\n const p = { ...props, closingBehaviour: useClosingBehaviour() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useHapticFeedback } from './useHapticFeedback.js';\nimport type { HapticFeedback } from './types.js';\n\n/**\n * HOC which passes HapticFeedback SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withHapticFeedback<P extends { hapticFeedback?: HapticFeedback }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'hapticFeedback'>> {\n return function WithHapticFeedback(props: Omit<P, 'hapticFeedback'>) {\n const p = { ...props, hapticFeedback: useHapticFeedback() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useInitData } from './useInitData.js';\nimport type { InitData } from './types.js';\n\n/**\n * HOC which passes InitData SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withInitData<P extends { initData?: InitData }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'initData'>> {\n return function WithInitData(props: Omit<P, 'initData'>) {\n const p = { ...props, initData: useInitData() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport type { LaunchParams } from './types.js';\nimport { useLaunchParams } from './useLaunchParams.js';\n\n/**\n * HOC which passes launch parameters to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withLaunchParams<P extends { launchParams?: LaunchParams }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'launchParams'>> {\n return function WithLaunchParams(props: Omit<P, 'launchParams'>) {\n const p = { ...props, launchParams: useLaunchParams() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useMainButton } from './useMainButton.js';\nimport type { MainButton } from './types.js';\n\n/**\n * HOC which passes MainButton SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withMainButton<P extends { mainButton?: MainButton }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'mainButton'>> {\n return function WithMainButton(props: Omit<P, 'mainButton'>) {\n const p = { ...props, mainButton: useMainButton() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { usePopup } from './usePopup.js';\nimport type { Popup } from './types.js';\n\n/**\n * HOC which passes Popup SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withPopup<P extends { popup?: Popup }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'popup'>> {\n return function WithPopup(props: Omit<P, 'popup'>) {\n const p = { ...props, popup: usePopup() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useQRScanner } from './useQRScanner.js';\nimport type { QRScanner } from './types.js';\n\n/**\n * HOC which passes QRScanner SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withQRScanner<P extends { qrScanner?: QRScanner }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'qrScanner'>> {\n return function WithQRScanner(props: Omit<P, 'qrScanner'>) {\n const p = { ...props, qrScanner: useQRScanner() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport type { SDKContext } from './types.js';\nimport { useSDK } from './hooks.js';\n\n/**\n * HOC which passes SDK context to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withSDK<P extends { sdk?: SDKContext }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'sdk'>> {\n return function WithLaunchParams(props: Omit<P, 'sdk'>) {\n const p = { ...props, sdk: useSDK() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useThemeParams } from './useThemeParams.js';\nimport type { ThemeParams } from './types.js';\n\n/**\n * HOC which passes ThemeParams SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withThemeParams<P extends { themeParams?: ThemeParams }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'themeParams'>> {\n return function WithThemeParams(props: Omit<P, 'themeParams'>) {\n const p = { ...props, themeParams: useThemeParams() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useViewport } from './useViewport.js';\nimport type { Viewport } from './types.js';\n\n/**\n * HOC which passes Viewport SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withViewport<P extends { viewport?: Viewport }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'viewport'>> {\n return function WithViewport(props: Omit<P, 'viewport'>) {\n const p = { ...props, viewport: useViewport() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useWebApp } from './useWebApp.js';\nimport type { WebApp } from './types.js';\n\n/**\n * HOC which passes WebApp SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withWebApp<P extends { webApp?: WebApp }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'webApp'>> {\n return function WithWebApp(props: Omit<P, 'webApp'>) {\n const p = { ...props, webApp: useWebApp() } as P;\n\n return <Component {...p} />;\n };\n}\n"],"names":["sdkContext","createContext","components","didInit","error","displayName","useSDK","useContext","useUnit","name","Error","s$1","listeners","subscribeListeners","emit","s","e","this","forEach","i","t","once","push","listener","off","on","length","splice","subscribe","unsubscribe","indexOf","r","test","n","replace","toLowerCase","repeat","o","match","slice","reduce","parseInt","toString","Math","sqrt","parser","isOptional","getDefault","isEmpty","static","constructor","parse","optional","default","bind","Array","isArray","JSON","stringify","map","n$1","super","of","create","TypeError","a","u","from","type","required","cause","c","f","Number","Date","p","l","y","URLSearchParams","get","split","max","u$1","Object","setPrototypeOf","prototype","Promise","setTimeout","race","w","Intl","DateTimeFormat","hour","minute","second","fractionalSecondDigits","timeZone","format","console","v","g","theme_params","bg_color","text_color","hint_color","link_color","button_color","button_text_color","secondary_bg_color","m","height","width","window","innerWidth","is_state_stable","is_expanded","b","button_id","data","h","slug","status","x","req_id","E","q","T","result","k","eventType","eventData","P","dispatchEvent","MessageEvent","A","O","addEventListener","innerHeight","W","D","j","G","external","notify","L","TelegramWebviewProxy","postEvent","M","self","top","z","targetOrigin","parent","postMessage","B","_","timeout","d","capture","H","U","firstName","id","isBot","isPremium","lastName","languageCode","photoUrl","username","authDate","hash","user","receiver","chat","title","canSendAfter","queryId","startParam","state","ee","internalSet","set","isVisible","supports","show","hide","is_visible","isConfirmationNeeded","need_confirmation","disableConfirmation","enableConfirmation","V","createRequestId","deleteKeys","getKeys","getValues","saveValue","async","method","params","invokeCustomMethod","keys","key","value","impactOccurred","notificationOccurred","selectionChanged","impact_style","notification_type","S","backgroundColor","isEnabled","isProgressVisible","text","textColor","commit","is_active","is_progress_visible","color","disable","enable","hideProgress","showProgress","setText","setTextColor","setBackgroundColor","$","isOpened","open","message","trim","buttons","close","buttonColor","buttonTextColor","hintColor","linkColor","secondaryBackgroundColor","I","request","sync","isDark","R","isExpanded","isStateStable","stableHeight","expand","isStable","N","document","createElement","href","protocol","currentVersion","currentPlatform","headerColor","openInvoice","readTextFromClipboard","setHeaderColor","requestPhoneAccess","requestWriteAccess","supportsParam","colorScheme","isVersionAtLeast","version","openLink","url","try_instant_view","openTelegramLink","hostname","pathname","search","URL","path_full","location","platform","ready","sendData","size","Blob","color_key","sessionStorage","setItem","getItem","initData","C","initDataRaw","themeParams","K","join","J","documentElement","style","setProperty","F","Q","X","Y","tt","et","ot","st","nt","checkCompat","cssVars","acceptScrollbarStyle","acceptCustomStyles","debug","launchParams","viewport","webApp","Z","synced","head","appendChild","innerHTML","backButton","closingBehavior","cloudStorage","haptic","mainButton","popup","qrScanner","SDKProvider","memo","props","children","initOptions","setDidInit","useState","setError","setComponents","useEffect","init","then","catch","context","useMemo","React","Provider","useEventsTracking","trackable","events","forceUpdate","setHash","useCallback","useForceUpdate","event","useBackButton","useClosingBehaviour","component","useHapticFeedback","useInitData","useLaunchParams","retrieveLaunchParams","useMainButton","usePopup","useQRScanner","useThemeParams","theme","useViewport","useWebApp","useCloudStorage","Component","closingBehaviour","hapticFeedback","sdk"],"mappings":"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"}
|
package/dist/lib/index.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var t=require("react"),e=require("@tma.js/sdk");const n=t.createContext({components:null,didInit:!1,error:null});n.displayName="SDKContext";const r=()=>t.useContext(n);function o(t){const{components:e}=r();if(null===e)throw new Error(`Unable to get unit "${t}" as long as SDK is not initialized.`);return e[t]}const u=t.memo((r=>{const{children:o,initOptions:u}=r,[i,s]=t.useState(!1),[c,a]=t.useState(null),[p,h]=t.useState(null);t.useEffect((()=>{s(!0),e.init(u).then(h).catch(a)}),[]);const l=t.useMemo((()=>({components:p,didInit:i,error:c})),[i,p,c]);return t.createElement(n.Provider,{value:l},o)}));function i(e,n){const r=function(){const[,e]=t.useState(0);return t.useCallback((()=>e((t=>(t+1)%1e6))),[])}();t.useEffect((()=>(n.forEach((t=>e.on(t,r))),()=>n.forEach((t=>e.off(t,r))))),[e,r,n])}function s(){const t=o("backButton");return i(t,["isVisibleChanged"]),t}function c(){const t=o("closingBehavior");return i(t,["isConfirmationNeededChanged"]),t}function a(){return o("haptic")}function p(){return o("initData")||null}function h(){return t.useMemo(e.retrieveLaunchParams,[])}function l(){const t=o("mainButton");return i(t,["isEnabledChanged","backgroundColorChanged","isProgressVisibleChanged","textChanged","textColorChanged","isVisibleChanged"]),t}function f(){const t=o("popup");return i(t,["isOpenedChanged"]),t}function d(){const t=o("qrScanner");return i(t,["isOpenedChanged"]),t}function m(){const t=o("themeParams");return i(t,["changed"]),t}function x(){const t=o("viewport");return i(t,["stableHeightChanged","isExpandedChanged","heightChanged","widthChanged"]),t}function g(){const t=o("webApp");return i(t,["headerColorChanged","backgroundColorChanged"]),t}function C(){return o("cloudStorage")}u.displayName="SDKProvider",exports.SDKProvider=u,exports.sdkContext=n,exports.useBackButton=s,exports.useClosingBehaviour=c,exports.useCloudStorage=C,exports.useHapticFeedback=a,exports.useInitData=p,exports.useLaunchParams=h,exports.useMainButton=l,exports.usePopup=f,exports.usePostEvent=function(){return o("postEvent")},exports.useQRScanner=d,exports.useSDK=r,exports.useThemeParams=m,exports.useUnit=o,exports.useViewport=x,exports.useWebApp=g,exports.withBackButton=function(e){return function(n){const r={...n,backButton:s()};return t.createElement(e,{...r})}},exports.withClosingBehaviour=function(e){return function(n){const r={...n,closingBehaviour:c()};return t.createElement(e,{...r})}},exports.withCloudStorage=function(e){return function(n){const r={...n,cloudStorage:C()};return t.createElement(e,{...r})}},exports.withHapticFeedback=function(e){return function(n){const r={...n,hapticFeedback:a()};return t.createElement(e,{...r})}},exports.withInitData=function(e){return function(n){const r={...n,initData:p()};return t.createElement(e,{...r})}},exports.withLaunchParams=function(e){return function(n){const r={...n,launchParams:h()};return t.createElement(e,{...r})}},exports.withMainButton=function(e){return function(n){const r={...n,mainButton:l()};return t.createElement(e,{...r})}},exports.withPopup=function(e){return function(n){const r={...n,popup:f()};return t.createElement(e,{...r})}},exports.withQRScanner=function(e){return function(n){const r={...n,qrScanner:d()};return t.createElement(e,{...r})}},exports.withSDK=function(e){return function(n){const o={...n,sdk:r()};return t.createElement(e,{...o})}},exports.withThemeParams=function(e){return function(n){const r={...n,themeParams:m()};return t.createElement(e,{...r})}},exports.withViewport=function(e){return function(n){const r={...n,viewport:x()};return t.createElement(e,{...r})}},exports.withWebApp=function(e){return function(n){const r={...n,webApp:g()};return t.createElement(e,{...r})}};
|
|
2
|
-
//# sourceMappingURL=index.cjs.map
|
package/dist/lib/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/provider/context.ts","../../src/provider/hooks.ts","../../src/provider/SDKProvider.tsx","../../src/lib/hooks.ts","../../src/lib/back-button/useBackButton.ts","../../src/lib/closing-behavior/useClosingBehaviour.ts","../../src/lib/haptic-feedback/useHapticFeedback.ts","../../src/lib/init-data/useInitData.ts","../../src/lib/launch-params/useLaunchParams.ts","../../src/lib/main-button/useMainButton.ts","../../src/lib/popup/usePopup.ts","../../src/lib/qr-scanner/useQRScanner.ts","../../src/lib/theme-params/useThemeParams.ts","../../src/lib/viewport/useViewport.ts","../../src/lib/web-app/useWebApp.ts","../../src/lib/cloud-storage.tsx","../../src/lib/back-button/withBackButton.tsx","../../src/lib/closing-behavior/withClosingBehaviour.tsx","../../src/lib/haptic-feedback/withHapticFeedback.tsx","../../src/lib/init-data/withInitData.tsx","../../src/lib/launch-params/withLaunchParams.tsx","../../src/lib/main-button/withMainButton.tsx","../../src/lib/popup/withPopup.tsx","../../src/lib/qr-scanner/withQRScanner.tsx","../../src/provider/hocs.tsx","../../src/lib/theme-params/withThemeParams.tsx","../../src/lib/viewport/withViewport.tsx","../../src/lib/web-app/withWebApp.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nimport type { SDKContext } from './types.js';\n\nexport const sdkContext = createContext<SDKContext>({\n components: null,\n didInit: false,\n error: null,\n});\n\nsdkContext.displayName = 'SDKContext';\n","import { useContext } from 'react';\n\nimport { sdkContext } from './context.js';\nimport type { SDKComponent, SDKComponentName } from './types.js';\n\n/**\n * Returns current SDK information.\n */\nexport const useSDK = () => useContext(sdkContext);\n\n/**\n * Returns value by its field name from SDK init result.\n * @param name - component name.\n * @throws {Error} SDK is not initialized.\n */\nexport function useUnit<N extends SDKComponentName>(name: N): SDKComponent<N> {\n const { components } = useSDK();\n\n if (components === null) {\n throw new Error(`Unable to get unit \"${name}\" as long as SDK is not initialized.`);\n }\n return components[name];\n}\n","import React, {\n memo,\n useEffect,\n useMemo,\n useState,\n type PropsWithChildren,\n} from 'react';\nimport { init, type InitOptions } from '@tma.js/sdk';\n\nimport { sdkContext } from './context.js';\nimport type { SDKComponents, SDKContext } from './types.js';\n\nexport type SDKInitOptions = InitOptions;\n\nexport type SDKProviderProps = PropsWithChildren<{ initOptions?: SDKInitOptions }>;\n\n/**\n * Component which provides access to SDK components.\n */\nexport const SDKProvider = memo<SDKProviderProps>((props) => {\n const { children, initOptions } = props;\n const [didInit, setDidInit] = useState(false);\n const [error, setError] = useState<null | unknown>(null);\n const [components, setComponents] = useState<SDKComponents | null>(null);\n\n // Initialize SDK on DOM attach.\n useEffect(() => {\n // Update init status.\n setDidInit(true);\n\n // Init SDK.\n init(initOptions)\n .then(setComponents)\n .catch(setError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const context = useMemo<SDKContext>(() => ({\n components,\n didInit,\n error,\n }), [didInit, components, error]);\n\n return <sdkContext.Provider value={context}>{children}</sdkContext.Provider>;\n});\n\nSDKProvider.displayName = 'SDKProvider';\n","import { useCallback, useState, useEffect } from 'react';\nimport type { PostEvent } from '@tma.js/sdk/types';\nimport { useUnit } from '../provider/index.js';\n\ninterface Trackable {\n on: (event: any, ...args: any[]) => void;\n off: (event: any, ...args: any[]) => void;\n}\n\ntype EventName<T extends Trackable> = T extends {\n on(event: infer E, ...args: any[]): any\n} ? E : never;\n\n/**\n * The hook which returns function used for force update.\n */\nexport function useForceUpdate(): (() => void) {\n const [, setHash] = useState(0);\n // TODO: Maybe just assign new symbol?\n return useCallback(() => setHash((hash) => (hash + 1) % 1_000_000), []);\n}\n\n/**\n * The hook which listens to the specified object events and calls force update\n * in case, some of them was emitted.\n * @param trackable - object which allows events listening.\n * @param events - events to listen. This array will be memoized during first\n * hook call.\n */\nexport function useEventsTracking<T extends Trackable>(\n trackable: T,\n events: EventName<T>[],\n) {\n const forceUpdate = useForceUpdate();\n\n useEffect(() => {\n // Start listening to each event.\n events.forEach((event) => trackable.on(event, forceUpdate));\n\n // On cleanup remove event listeners.\n return () => events.forEach((event) => trackable.off(event, forceUpdate));\n }, [trackable, forceUpdate, events]);\n}\n\n/**\n * Returns event posting function which was created during SDK\n * initialization.\n */\nexport function usePostEvent(): PostEvent {\n return useUnit('postEvent');\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { BackButton } from './types.js';\n\n/**\n * Returns BackButton component instance.\n */\nexport function useBackButton(): BackButton {\n const backButton = useUnit('backButton');\n useEventsTracking(backButton, ['isVisibleChanged']);\n\n return backButton;\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { ClosingBehaviour } from './types.js';\n\n/**\n * Returns ClosingBehaviour component instance.\n */\nexport function useClosingBehaviour(): ClosingBehaviour {\n const component = useUnit('closingBehavior');\n useEventsTracking(component, ['isConfirmationNeededChanged']);\n\n return component;\n}\n","import { useUnit } from '../../provider/index.js';\nimport type { HapticFeedback } from './types.js';\n\n/**\n * Returns HapticFeedback component instance.\n */\nexport function useHapticFeedback(): HapticFeedback {\n return useUnit('haptic');\n}\n","import { useUnit } from '../../provider/index.js';\nimport type { InitData } from './types.js';\n\n/**\n * Returns InitData component instance.\n */\nexport function useInitData(): InitData | null {\n return useUnit('initData') || null;\n}\n","import { useMemo } from 'react';\nimport { retrieveLaunchParams } from '@tma.js/sdk';\n\nimport type { LaunchParams } from './types.js';\n\n/**\n * The hook which returns launch parameters initially passed to Web App.\n */\nexport function useLaunchParams(): LaunchParams {\n return useMemo(retrieveLaunchParams, []);\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { MainButton } from './types.js';\n\n/**\n * Returns MainButton component instance.\n */\nexport function useMainButton(): MainButton {\n const mainButton = useUnit('mainButton');\n useEventsTracking(mainButton, [\n 'isEnabledChanged', 'backgroundColorChanged', 'isProgressVisibleChanged',\n 'textChanged', 'textColorChanged', 'isVisibleChanged',\n ]);\n\n return mainButton;\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { Popup } from './types.js';\n\n/**\n * Returns Popup component instance.\n */\nexport function usePopup(): Popup {\n const popup = useUnit('popup');\n useEventsTracking(popup, ['isOpenedChanged']);\n\n return popup;\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { QRScanner } from './types.js';\n\n/**\n * Returns QRScanner component instance.\n */\nexport function useQRScanner(): QRScanner {\n const qrScanner = useUnit('qrScanner');\n useEventsTracking(qrScanner, ['isOpenedChanged']);\n\n return qrScanner;\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { ThemeParams } from './types.js';\n\n/**\n * Returns ThemeParams component instance.\n */\nexport function useThemeParams(): ThemeParams {\n const theme = useUnit('themeParams');\n useEventsTracking(theme, ['changed']);\n\n return theme;\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { Viewport } from './types.js';\n\n/**\n * Returns Viewport component instance.\n */\nexport function useViewport(): Viewport {\n const viewport = useUnit('viewport');\n useEventsTracking(viewport, [\n 'stableHeightChanged', 'isExpandedChanged', 'heightChanged', 'widthChanged',\n ]);\n\n return viewport;\n}\n","import { useUnit } from '../../provider/index.js';\nimport type { WebApp } from './types.js';\nimport { useEventsTracking } from '../hooks.js';\n\n/**\n * Returns WebApp component instance.\n */\nexport function useWebApp(): WebApp {\n const webApp = useUnit('webApp');\n useEventsTracking(webApp, ['headerColorChanged', 'backgroundColorChanged']);\n\n return webApp;\n}\n","import React, { type ComponentType } from 'react';\n\nimport type { CloudStorage } from '@tma.js/sdk';\n\nimport { useUnit } from '../provider/index.js';\n\n/**\n * Returns CloudStorage component instance.\n */\nexport function useCloudStorage(): CloudStorage {\n return useUnit('cloudStorage');\n}\n\n/**\n * HOC which passes CloudStorage SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withCloudStorage<P extends { cloudStorage?: CloudStorage }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'cloudStorage'>> {\n return function WithCloudStorage(props: Omit<P, 'cloudStorage'>) {\n const p = { ...props, cloudStorage: useCloudStorage() } as P;\n\n return <Component {...p} />;\n };\n}\n\nexport type { CloudStorage };\n","import React, { type ComponentType } from 'react';\n\nimport { useBackButton } from './useBackButton.js';\nimport type { BackButton } from './types.js';\n\n/**\n * HOC which passes BackButton SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withBackButton<P extends { backButton?: BackButton }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'backButton'>> {\n return function WithBackButton(props: Omit<P, 'backButton'>) {\n const p = { ...props, backButton: useBackButton() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useClosingBehaviour } from './useClosingBehaviour.js';\nimport type { ClosingBehaviour } from './types.js';\n\n/**\n * HOC which passes ClosingBehaviour SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withClosingBehaviour<P extends { closingBehaviour?: ClosingBehaviour }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'closingBehaviour'>> {\n return function WithClosingConfirmation(props: Omit<P, 'closingBehaviour'>) {\n const p = { ...props, closingBehaviour: useClosingBehaviour() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useHapticFeedback } from './useHapticFeedback.js';\nimport type { HapticFeedback } from './types.js';\n\n/**\n * HOC which passes HapticFeedback SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withHapticFeedback<P extends { hapticFeedback?: HapticFeedback }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'hapticFeedback'>> {\n return function WithHapticFeedback(props: Omit<P, 'hapticFeedback'>) {\n const p = { ...props, hapticFeedback: useHapticFeedback() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useInitData } from './useInitData.js';\nimport type { InitData } from './types.js';\n\n/**\n * HOC which passes InitData SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withInitData<P extends { initData?: InitData }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'initData'>> {\n return function WithInitData(props: Omit<P, 'initData'>) {\n const p = { ...props, initData: useInitData() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport type { LaunchParams } from './types.js';\nimport { useLaunchParams } from './useLaunchParams.js';\n\n/**\n * HOC which passes launch parameters to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withLaunchParams<P extends { launchParams?: LaunchParams }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'launchParams'>> {\n return function WithLaunchParams(props: Omit<P, 'launchParams'>) {\n const p = { ...props, launchParams: useLaunchParams() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useMainButton } from './useMainButton.js';\nimport type { MainButton } from './types.js';\n\n/**\n * HOC which passes MainButton SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withMainButton<P extends { mainButton?: MainButton }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'mainButton'>> {\n return function WithMainButton(props: Omit<P, 'mainButton'>) {\n const p = { ...props, mainButton: useMainButton() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { usePopup } from './usePopup.js';\nimport type { Popup } from './types.js';\n\n/**\n * HOC which passes Popup SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withPopup<P extends { popup?: Popup }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'popup'>> {\n return function WithPopup(props: Omit<P, 'popup'>) {\n const p = { ...props, popup: usePopup() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useQRScanner } from './useQRScanner.js';\nimport type { QRScanner } from './types.js';\n\n/**\n * HOC which passes QRScanner SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withQRScanner<P extends { qrScanner?: QRScanner }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'qrScanner'>> {\n return function WithQRScanner(props: Omit<P, 'qrScanner'>) {\n const p = { ...props, qrScanner: useQRScanner() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport type { SDKContext } from './types.js';\nimport { useSDK } from './hooks.js';\n\n/**\n * HOC which passes SDK context to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withSDK<P extends { sdk?: SDKContext }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'sdk'>> {\n return function WithLaunchParams(props: Omit<P, 'sdk'>) {\n const p = { ...props, sdk: useSDK() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useThemeParams } from './useThemeParams.js';\nimport type { ThemeParams } from './types.js';\n\n/**\n * HOC which passes ThemeParams SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withThemeParams<P extends { themeParams?: ThemeParams }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'themeParams'>> {\n return function WithThemeParams(props: Omit<P, 'themeParams'>) {\n const p = { ...props, themeParams: useThemeParams() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useViewport } from './useViewport.js';\nimport type { Viewport } from './types.js';\n\n/**\n * HOC which passes Viewport SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withViewport<P extends { viewport?: Viewport }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'viewport'>> {\n return function WithViewport(props: Omit<P, 'viewport'>) {\n const p = { ...props, viewport: useViewport() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useWebApp } from './useWebApp.js';\nimport type { WebApp } from './types.js';\n\n/**\n * HOC which passes WebApp SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withWebApp<P extends { webApp?: WebApp }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'webApp'>> {\n return function WithWebApp(props: Omit<P, 'webApp'>) {\n const p = { ...props, webApp: useWebApp() } as P;\n\n return <Component {...p} />;\n };\n}\n"],"names":["sdkContext","createContext","components","didInit","error","displayName","useSDK","useContext","useUnit","name","Error","SDKProvider","memo","props","children","initOptions","setDidInit","useState","setError","setComponents","useEffect","init","then","catch","context","useMemo","React","createElement","Provider","value","useEventsTracking","trackable","events","forceUpdate","setHash","useCallback","hash","useForceUpdate","forEach","event","on","off","useBackButton","backButton","useClosingBehaviour","component","useHapticFeedback","useInitData","useLaunchParams","retrieveLaunchParams","useMainButton","mainButton","usePopup","popup","useQRScanner","qrScanner","useThemeParams","theme","useViewport","viewport","useWebApp","webApp","useCloudStorage","Component","p","closingBehaviour","cloudStorage","hapticFeedback","initData","launchParams","sdk","themeParams"],"mappings":"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"}
|
package/dist/lib/index.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import n,{createContext as t,useContext as e,memo as r,useState as o,useEffect as c,useMemo as u,useCallback as i}from"react";import{init as a,retrieveLaunchParams as s}from"@tma.js/sdk";const f=t({components:null,didInit:!1,error:null});f.displayName="SDKContext";const l=()=>e(f);function d(n){const{components:t}=l();if(null===t)throw new Error(`Unable to get unit "${n}" as long as SDK is not initialized.`);return t[n]}function h(t){return function(e){const r={...e,sdk:l()};return n.createElement(t,{...r})}}const m=r((t=>{const{children:e,initOptions:r}=t,[i,s]=o(!1),[l,d]=o(null),[h,m]=o(null);c((()=>{s(!0),a(r).then(m).catch(d)}),[]);const g=u((()=>({components:h,didInit:i,error:l})),[i,h,l]);return n.createElement(f.Provider,{value:g},e)}));function g(n,t){const e=function(){const[,n]=o(0);return i((()=>n((n=>(n+1)%1e6))),[])}();c((()=>(t.forEach((t=>n.on(t,e))),()=>t.forEach((t=>n.off(t,e))))),[n,e,t])}function p(){return d("postEvent")}function C(){const n=d("backButton");return g(n,["isVisibleChanged"]),n}function E(t){return function(e){const r={...e,backButton:C()};return n.createElement(t,{...r})}}function b(){const n=d("closingBehavior");return g(n,["isConfirmationNeededChanged"]),n}function v(t){return function(e){const r={...e,closingBehaviour:b()};return n.createElement(t,{...r})}}function k(){return d("haptic")}function w(t){return function(e){const r={...e,hapticFeedback:k()};return n.createElement(t,{...r})}}function S(){return d("initData")||null}function B(t){return function(e){const r={...e,initData:S()};return n.createElement(t,{...r})}}function P(){return u(s,[])}function x(t){return function(e){const r={...e,launchParams:P()};return n.createElement(t,{...r})}}function D(){const n=d("mainButton");return g(n,["isEnabledChanged","backgroundColorChanged","isProgressVisibleChanged","textChanged","textColorChanged","isVisibleChanged"]),n}function K(t){return function(e){const r={...e,mainButton:D()};return n.createElement(t,{...r})}}function N(){const n=d("popup");return g(n,["isOpenedChanged"]),n}function O(t){return function(e){const r={...e,popup:N()};return n.createElement(t,{...r})}}function V(){const n=d("qrScanner");return g(n,["isOpenedChanged"]),n}function q(t){return function(e){const r={...e,qrScanner:V()};return n.createElement(t,{...r})}}function y(){const n=d("themeParams");return g(n,["changed"]),n}function A(t){return function(e){const r={...e,themeParams:y()};return n.createElement(t,{...r})}}function I(){const n=d("viewport");return g(n,["stableHeightChanged","isExpandedChanged","heightChanged","widthChanged"]),n}function j(t){return function(e){const r={...e,viewport:I()};return n.createElement(t,{...r})}}function z(){const n=d("webApp");return g(n,["headerColorChanged","backgroundColorChanged"]),n}function F(t){return function(e){const r={...e,webApp:z()};return n.createElement(t,{...r})}}function H(){return d("cloudStorage")}function U(t){return function(e){const r={...e,cloudStorage:H()};return n.createElement(t,{...r})}}m.displayName="SDKProvider";export{m as SDKProvider,f as sdkContext,C as useBackButton,b as useClosingBehaviour,H as useCloudStorage,k as useHapticFeedback,S as useInitData,P as useLaunchParams,D as useMainButton,N as usePopup,p as usePostEvent,V as useQRScanner,l as useSDK,y as useThemeParams,d as useUnit,I as useViewport,z as useWebApp,E as withBackButton,v as withClosingBehaviour,U as withCloudStorage,w as withHapticFeedback,B as withInitData,x as withLaunchParams,K as withMainButton,O as withPopup,q as withQRScanner,h as withSDK,A as withThemeParams,j as withViewport,F as withWebApp};
|
|
2
|
-
//# sourceMappingURL=index.mjs.map
|
package/dist/lib/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../src/provider/context.ts","../../src/provider/hooks.ts","../../src/provider/hocs.tsx","../../src/provider/SDKProvider.tsx","../../src/lib/hooks.ts","../../src/lib/back-button/useBackButton.ts","../../src/lib/back-button/withBackButton.tsx","../../src/lib/closing-behavior/useClosingBehaviour.ts","../../src/lib/closing-behavior/withClosingBehaviour.tsx","../../src/lib/haptic-feedback/useHapticFeedback.ts","../../src/lib/haptic-feedback/withHapticFeedback.tsx","../../src/lib/init-data/useInitData.ts","../../src/lib/init-data/withInitData.tsx","../../src/lib/launch-params/useLaunchParams.ts","../../src/lib/launch-params/withLaunchParams.tsx","../../src/lib/main-button/useMainButton.ts","../../src/lib/main-button/withMainButton.tsx","../../src/lib/popup/usePopup.ts","../../src/lib/popup/withPopup.tsx","../../src/lib/qr-scanner/useQRScanner.ts","../../src/lib/qr-scanner/withQRScanner.tsx","../../src/lib/theme-params/useThemeParams.ts","../../src/lib/theme-params/withThemeParams.tsx","../../src/lib/viewport/useViewport.ts","../../src/lib/viewport/withViewport.tsx","../../src/lib/web-app/useWebApp.ts","../../src/lib/web-app/withWebApp.tsx","../../src/lib/cloud-storage.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nimport type { SDKContext } from './types.js';\n\nexport const sdkContext = createContext<SDKContext>({\n components: null,\n didInit: false,\n error: null,\n});\n\nsdkContext.displayName = 'SDKContext';\n","import { useContext } from 'react';\n\nimport { sdkContext } from './context.js';\nimport type { SDKComponent, SDKComponentName } from './types.js';\n\n/**\n * Returns current SDK information.\n */\nexport const useSDK = () => useContext(sdkContext);\n\n/**\n * Returns value by its field name from SDK init result.\n * @param name - component name.\n * @throws {Error} SDK is not initialized.\n */\nexport function useUnit<N extends SDKComponentName>(name: N): SDKComponent<N> {\n const { components } = useSDK();\n\n if (components === null) {\n throw new Error(`Unable to get unit \"${name}\" as long as SDK is not initialized.`);\n }\n return components[name];\n}\n","import React, { type ComponentType } from 'react';\n\nimport type { SDKContext } from './types.js';\nimport { useSDK } from './hooks.js';\n\n/**\n * HOC which passes SDK context to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withSDK<P extends { sdk?: SDKContext }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'sdk'>> {\n return function WithLaunchParams(props: Omit<P, 'sdk'>) {\n const p = { ...props, sdk: useSDK() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, {\n memo,\n useEffect,\n useMemo,\n useState,\n type PropsWithChildren,\n} from 'react';\nimport { init, type InitOptions } from '@tma.js/sdk';\n\nimport { sdkContext } from './context.js';\nimport type { SDKComponents, SDKContext } from './types.js';\n\nexport type SDKInitOptions = InitOptions;\n\nexport type SDKProviderProps = PropsWithChildren<{ initOptions?: SDKInitOptions }>;\n\n/**\n * Component which provides access to SDK components.\n */\nexport const SDKProvider = memo<SDKProviderProps>((props) => {\n const { children, initOptions } = props;\n const [didInit, setDidInit] = useState(false);\n const [error, setError] = useState<null | unknown>(null);\n const [components, setComponents] = useState<SDKComponents | null>(null);\n\n // Initialize SDK on DOM attach.\n useEffect(() => {\n // Update init status.\n setDidInit(true);\n\n // Init SDK.\n init(initOptions)\n .then(setComponents)\n .catch(setError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const context = useMemo<SDKContext>(() => ({\n components,\n didInit,\n error,\n }), [didInit, components, error]);\n\n return <sdkContext.Provider value={context}>{children}</sdkContext.Provider>;\n});\n\nSDKProvider.displayName = 'SDKProvider';\n","import { useCallback, useState, useEffect } from 'react';\nimport type { PostEvent } from '@tma.js/sdk/types';\nimport { useUnit } from '../provider/index.js';\n\ninterface Trackable {\n on: (event: any, ...args: any[]) => void;\n off: (event: any, ...args: any[]) => void;\n}\n\ntype EventName<T extends Trackable> = T extends {\n on(event: infer E, ...args: any[]): any\n} ? E : never;\n\n/**\n * The hook which returns function used for force update.\n */\nexport function useForceUpdate(): (() => void) {\n const [, setHash] = useState(0);\n // TODO: Maybe just assign new symbol?\n return useCallback(() => setHash((hash) => (hash + 1) % 1_000_000), []);\n}\n\n/**\n * The hook which listens to the specified object events and calls force update\n * in case, some of them was emitted.\n * @param trackable - object which allows events listening.\n * @param events - events to listen. This array will be memoized during first\n * hook call.\n */\nexport function useEventsTracking<T extends Trackable>(\n trackable: T,\n events: EventName<T>[],\n) {\n const forceUpdate = useForceUpdate();\n\n useEffect(() => {\n // Start listening to each event.\n events.forEach((event) => trackable.on(event, forceUpdate));\n\n // On cleanup remove event listeners.\n return () => events.forEach((event) => trackable.off(event, forceUpdate));\n }, [trackable, forceUpdate, events]);\n}\n\n/**\n * Returns event posting function which was created during SDK\n * initialization.\n */\nexport function usePostEvent(): PostEvent {\n return useUnit('postEvent');\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { BackButton } from './types.js';\n\n/**\n * Returns BackButton component instance.\n */\nexport function useBackButton(): BackButton {\n const backButton = useUnit('backButton');\n useEventsTracking(backButton, ['isVisibleChanged']);\n\n return backButton;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useBackButton } from './useBackButton.js';\nimport type { BackButton } from './types.js';\n\n/**\n * HOC which passes BackButton SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withBackButton<P extends { backButton?: BackButton }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'backButton'>> {\n return function WithBackButton(props: Omit<P, 'backButton'>) {\n const p = { ...props, backButton: useBackButton() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { ClosingBehaviour } from './types.js';\n\n/**\n * Returns ClosingBehaviour component instance.\n */\nexport function useClosingBehaviour(): ClosingBehaviour {\n const component = useUnit('closingBehavior');\n useEventsTracking(component, ['isConfirmationNeededChanged']);\n\n return component;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useClosingBehaviour } from './useClosingBehaviour.js';\nimport type { ClosingBehaviour } from './types.js';\n\n/**\n * HOC which passes ClosingBehaviour SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withClosingBehaviour<P extends { closingBehaviour?: ClosingBehaviour }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'closingBehaviour'>> {\n return function WithClosingConfirmation(props: Omit<P, 'closingBehaviour'>) {\n const p = { ...props, closingBehaviour: useClosingBehaviour() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport type { HapticFeedback } from './types.js';\n\n/**\n * Returns HapticFeedback component instance.\n */\nexport function useHapticFeedback(): HapticFeedback {\n return useUnit('haptic');\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useHapticFeedback } from './useHapticFeedback.js';\nimport type { HapticFeedback } from './types.js';\n\n/**\n * HOC which passes HapticFeedback SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withHapticFeedback<P extends { hapticFeedback?: HapticFeedback }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'hapticFeedback'>> {\n return function WithHapticFeedback(props: Omit<P, 'hapticFeedback'>) {\n const p = { ...props, hapticFeedback: useHapticFeedback() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport type { InitData } from './types.js';\n\n/**\n * Returns InitData component instance.\n */\nexport function useInitData(): InitData | null {\n return useUnit('initData') || null;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useInitData } from './useInitData.js';\nimport type { InitData } from './types.js';\n\n/**\n * HOC which passes InitData SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withInitData<P extends { initData?: InitData }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'initData'>> {\n return function WithInitData(props: Omit<P, 'initData'>) {\n const p = { ...props, initData: useInitData() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useMemo } from 'react';\nimport { retrieveLaunchParams } from '@tma.js/sdk';\n\nimport type { LaunchParams } from './types.js';\n\n/**\n * The hook which returns launch parameters initially passed to Web App.\n */\nexport function useLaunchParams(): LaunchParams {\n return useMemo(retrieveLaunchParams, []);\n}\n","import React, { type ComponentType } from 'react';\n\nimport type { LaunchParams } from './types.js';\nimport { useLaunchParams } from './useLaunchParams.js';\n\n/**\n * HOC which passes launch parameters to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withLaunchParams<P extends { launchParams?: LaunchParams }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'launchParams'>> {\n return function WithLaunchParams(props: Omit<P, 'launchParams'>) {\n const p = { ...props, launchParams: useLaunchParams() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { MainButton } from './types.js';\n\n/**\n * Returns MainButton component instance.\n */\nexport function useMainButton(): MainButton {\n const mainButton = useUnit('mainButton');\n useEventsTracking(mainButton, [\n 'isEnabledChanged', 'backgroundColorChanged', 'isProgressVisibleChanged',\n 'textChanged', 'textColorChanged', 'isVisibleChanged',\n ]);\n\n return mainButton;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useMainButton } from './useMainButton.js';\nimport type { MainButton } from './types.js';\n\n/**\n * HOC which passes MainButton SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withMainButton<P extends { mainButton?: MainButton }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'mainButton'>> {\n return function WithMainButton(props: Omit<P, 'mainButton'>) {\n const p = { ...props, mainButton: useMainButton() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { Popup } from './types.js';\n\n/**\n * Returns Popup component instance.\n */\nexport function usePopup(): Popup {\n const popup = useUnit('popup');\n useEventsTracking(popup, ['isOpenedChanged']);\n\n return popup;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { usePopup } from './usePopup.js';\nimport type { Popup } from './types.js';\n\n/**\n * HOC which passes Popup SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withPopup<P extends { popup?: Popup }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'popup'>> {\n return function WithPopup(props: Omit<P, 'popup'>) {\n const p = { ...props, popup: usePopup() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { QRScanner } from './types.js';\n\n/**\n * Returns QRScanner component instance.\n */\nexport function useQRScanner(): QRScanner {\n const qrScanner = useUnit('qrScanner');\n useEventsTracking(qrScanner, ['isOpenedChanged']);\n\n return qrScanner;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useQRScanner } from './useQRScanner.js';\nimport type { QRScanner } from './types.js';\n\n/**\n * HOC which passes QRScanner SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withQRScanner<P extends { qrScanner?: QRScanner }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'qrScanner'>> {\n return function WithQRScanner(props: Omit<P, 'qrScanner'>) {\n const p = { ...props, qrScanner: useQRScanner() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { ThemeParams } from './types.js';\n\n/**\n * Returns ThemeParams component instance.\n */\nexport function useThemeParams(): ThemeParams {\n const theme = useUnit('themeParams');\n useEventsTracking(theme, ['changed']);\n\n return theme;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useThemeParams } from './useThemeParams.js';\nimport type { ThemeParams } from './types.js';\n\n/**\n * HOC which passes ThemeParams SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withThemeParams<P extends { themeParams?: ThemeParams }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'themeParams'>> {\n return function WithThemeParams(props: Omit<P, 'themeParams'>) {\n const p = { ...props, themeParams: useThemeParams() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport { useEventsTracking } from '../hooks.js';\nimport type { Viewport } from './types.js';\n\n/**\n * Returns Viewport component instance.\n */\nexport function useViewport(): Viewport {\n const viewport = useUnit('viewport');\n useEventsTracking(viewport, [\n 'stableHeightChanged', 'isExpandedChanged', 'heightChanged', 'widthChanged',\n ]);\n\n return viewport;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useViewport } from './useViewport.js';\nimport type { Viewport } from './types.js';\n\n/**\n * HOC which passes Viewport SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withViewport<P extends { viewport?: Viewport }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'viewport'>> {\n return function WithViewport(props: Omit<P, 'viewport'>) {\n const p = { ...props, viewport: useViewport() } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useUnit } from '../../provider/index.js';\nimport type { WebApp } from './types.js';\nimport { useEventsTracking } from '../hooks.js';\n\n/**\n * Returns WebApp component instance.\n */\nexport function useWebApp(): WebApp {\n const webApp = useUnit('webApp');\n useEventsTracking(webApp, ['headerColorChanged', 'backgroundColorChanged']);\n\n return webApp;\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useWebApp } from './useWebApp.js';\nimport type { WebApp } from './types.js';\n\n/**\n * HOC which passes WebApp SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withWebApp<P extends { webApp?: WebApp }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'webApp'>> {\n return function WithWebApp(props: Omit<P, 'webApp'>) {\n const p = { ...props, webApp: useWebApp() } as P;\n\n return <Component {...p} />;\n };\n}\n","import React, { type ComponentType } from 'react';\n\nimport type { CloudStorage } from '@tma.js/sdk';\n\nimport { useUnit } from '../provider/index.js';\n\n/**\n * Returns CloudStorage component instance.\n */\nexport function useCloudStorage(): CloudStorage {\n return useUnit('cloudStorage');\n}\n\n/**\n * HOC which passes CloudStorage SDK component to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withCloudStorage<P extends { cloudStorage?: CloudStorage }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'cloudStorage'>> {\n return function WithCloudStorage(props: Omit<P, 'cloudStorage'>) {\n const p = { ...props, cloudStorage: useCloudStorage() } as P;\n\n return <Component {...p} />;\n };\n}\n\nexport type { CloudStorage };\n"],"names":["sdkContext","createContext","components","didInit","error","displayName","useSDK","useContext","useUnit","name","Error","withSDK","Component","props","p","sdk","React","createElement","SDKProvider","memo","children","initOptions","setDidInit","useState","setError","setComponents","useEffect","init","then","catch","context","useMemo","Provider","value","useEventsTracking","trackable","events","forceUpdate","setHash","useCallback","hash","useForceUpdate","forEach","event","on","off","usePostEvent","useBackButton","backButton","withBackButton","useClosingBehaviour","component","withClosingBehaviour","closingBehaviour","useHapticFeedback","withHapticFeedback","hapticFeedback","useInitData","withInitData","initData","useLaunchParams","retrieveLaunchParams","withLaunchParams","launchParams","useMainButton","mainButton","withMainButton","usePopup","popup","withPopup","useQRScanner","qrScanner","withQRScanner","useThemeParams","theme","withThemeParams","themeParams","useViewport","viewport","withViewport","useWebApp","webApp","withWebApp","useCloudStorage","withCloudStorage","cloudStorage"],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|