@tma.js/sdk-react 0.5.4 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/dist/dts/createHoc.d.ts +12 -0
  2. package/dist/dts/createHook.d.ts +13 -0
  3. package/dist/dts/index.d.ts +3 -2
  4. package/dist/dts/provider/SDKContext.d.ts +3 -0
  5. package/dist/dts/provider/SDKProvider.d.ts +4 -8
  6. package/dist/dts/provider/index.d.ts +5 -3
  7. package/dist/dts/provider/types.d.ts +15 -21
  8. package/dist/dts/provider/useInitResultDynamicValue.d.ts +2 -0
  9. package/dist/dts/provider/useInitResultValue.d.ts +7 -0
  10. package/dist/dts/provider/useSDKContext.d.ts +5 -0
  11. package/dist/dts/provider/{hocs.d.ts → withSDKContext.d.ts} +3 -3
  12. package/dist/dts/tools/back-button.d.ts +8 -0
  13. package/dist/dts/tools/closing-behavior.d.ts +8 -0
  14. package/dist/dts/tools/cloud-storage.d.ts +8 -0
  15. package/dist/dts/tools/haptic-feedback.d.ts +8 -0
  16. package/dist/dts/tools/index.d.ts +16 -0
  17. package/dist/dts/tools/init-data-raw.d.ts +8 -0
  18. package/dist/dts/tools/init-data.d.ts +8 -0
  19. package/dist/dts/tools/invoice.d.ts +8 -0
  20. package/dist/dts/tools/launch-params.d.ts +13 -0
  21. package/dist/dts/tools/main-button.d.ts +8 -0
  22. package/dist/dts/tools/mini-app.d.ts +8 -0
  23. package/dist/dts/tools/popup.d.ts +8 -0
  24. package/dist/dts/tools/post-event.d.ts +8 -0
  25. package/dist/dts/tools/qr-scanner.d.ts +8 -0
  26. package/dist/dts/tools/theme-params.d.ts +8 -0
  27. package/dist/dts/tools/utils.d.ts +8 -0
  28. package/dist/dts/tools/viewport.d.ts +8 -0
  29. package/dist/dts/types.d.ts +23 -0
  30. package/dist/index.cjs +1 -1
  31. package/dist/index.cjs.map +1 -1
  32. package/dist/index.mjs +116 -203
  33. package/dist/index.mjs.map +1 -1
  34. package/package.json +7 -9
  35. package/src/createHoc.tsx +32 -0
  36. package/src/createHook.ts +31 -0
  37. package/src/index.ts +45 -2
  38. package/src/provider/SDKContext.ts +9 -0
  39. package/src/provider/SDKProvider.tsx +54 -37
  40. package/src/provider/index.ts +5 -3
  41. package/src/provider/types.ts +15 -22
  42. package/src/provider/useInitResultDynamicValue.ts +34 -0
  43. package/src/provider/useInitResultValue.ts +16 -0
  44. package/src/provider/useSDKContext.ts +11 -0
  45. package/src/provider/withSDKContext.tsx +21 -0
  46. package/src/tools/back-button.ts +12 -0
  47. package/src/tools/closing-behavior.ts +12 -0
  48. package/src/tools/cloud-storage.ts +12 -0
  49. package/src/tools/haptic-feedback.ts +12 -0
  50. package/src/tools/index.ts +16 -0
  51. package/src/tools/init-data-raw.ts +12 -0
  52. package/src/tools/init-data.ts +12 -0
  53. package/src/tools/invoice.ts +12 -0
  54. package/src/tools/launch-params.tsx +21 -0
  55. package/src/tools/main-button.ts +12 -0
  56. package/src/tools/mini-app.ts +12 -0
  57. package/src/tools/popup.ts +12 -0
  58. package/src/tools/post-event.ts +12 -0
  59. package/src/tools/qr-scanner.ts +12 -0
  60. package/src/tools/theme-params.ts +12 -0
  61. package/src/tools/utils.ts +12 -0
  62. package/src/tools/viewport.ts +12 -0
  63. package/src/types.ts +29 -0
  64. package/dist/dts/lib/back-button/index.d.ts +0 -3
  65. package/dist/dts/lib/back-button/types.d.ts +0 -1
  66. package/dist/dts/lib/back-button/useBackButton.d.ts +0 -5
  67. package/dist/dts/lib/back-button/withBackButton.d.ts +0 -9
  68. package/dist/dts/lib/closing-behavior/index.d.ts +0 -3
  69. package/dist/dts/lib/closing-behavior/types.d.ts +0 -1
  70. package/dist/dts/lib/closing-behavior/useClosingBehaviour.d.ts +0 -5
  71. package/dist/dts/lib/closing-behavior/withClosingBehaviour.d.ts +0 -9
  72. package/dist/dts/lib/cloud-storage.d.ts +0 -14
  73. package/dist/dts/lib/haptic-feedback/index.d.ts +0 -3
  74. package/dist/dts/lib/haptic-feedback/types.d.ts +0 -1
  75. package/dist/dts/lib/haptic-feedback/useHapticFeedback.d.ts +0 -5
  76. package/dist/dts/lib/haptic-feedback/withHapticFeedback.d.ts +0 -9
  77. package/dist/dts/lib/hooks.d.ts +0 -26
  78. package/dist/dts/lib/index.d.ts +0 -13
  79. package/dist/dts/lib/init-data.d.ts +0 -20
  80. package/dist/dts/lib/launch-params/index.d.ts +0 -3
  81. package/dist/dts/lib/launch-params/types.d.ts +0 -1
  82. package/dist/dts/lib/launch-params/useLaunchParams.d.ts +0 -5
  83. package/dist/dts/lib/launch-params/withLaunchParams.d.ts +0 -9
  84. package/dist/dts/lib/main-button/index.d.ts +0 -3
  85. package/dist/dts/lib/main-button/types.d.ts +0 -1
  86. package/dist/dts/lib/main-button/useMainButton.d.ts +0 -5
  87. package/dist/dts/lib/main-button/withMainButton.d.ts +0 -9
  88. package/dist/dts/lib/popup/index.d.ts +0 -3
  89. package/dist/dts/lib/popup/types.d.ts +0 -1
  90. package/dist/dts/lib/popup/usePopup.d.ts +0 -5
  91. package/dist/dts/lib/popup/withPopup.d.ts +0 -9
  92. package/dist/dts/lib/qr-scanner/index.d.ts +0 -3
  93. package/dist/dts/lib/qr-scanner/types.d.ts +0 -1
  94. package/dist/dts/lib/qr-scanner/useQRScanner.d.ts +0 -5
  95. package/dist/dts/lib/qr-scanner/withQRScanner.d.ts +0 -9
  96. package/dist/dts/lib/theme-params.d.ts +0 -13
  97. package/dist/dts/lib/viewport/index.d.ts +0 -3
  98. package/dist/dts/lib/viewport/types.d.ts +0 -1
  99. package/dist/dts/lib/viewport/useViewport.d.ts +0 -5
  100. package/dist/dts/lib/viewport/withViewport.d.ts +0 -9
  101. package/dist/dts/lib/web-app/index.d.ts +0 -3
  102. package/dist/dts/lib/web-app/types.d.ts +0 -1
  103. package/dist/dts/lib/web-app/useWebApp.d.ts +0 -5
  104. package/dist/dts/lib/web-app/withWebApp.d.ts +0 -9
  105. package/dist/dts/provider/context.d.ts +0 -3
  106. package/dist/dts/provider/hooks.d.ts +0 -11
  107. package/src/lib/back-button/index.ts +0 -3
  108. package/src/lib/back-button/types.ts +0 -1
  109. package/src/lib/back-button/useBackButton.ts +0 -13
  110. package/src/lib/back-button/withBackButton.tsx +0 -18
  111. package/src/lib/closing-behavior/index.ts +0 -3
  112. package/src/lib/closing-behavior/types.ts +0 -1
  113. package/src/lib/closing-behavior/useClosingBehaviour.ts +0 -13
  114. package/src/lib/closing-behavior/withClosingBehaviour.tsx +0 -18
  115. package/src/lib/cloud-storage.tsx +0 -28
  116. package/src/lib/haptic-feedback/index.ts +0 -3
  117. package/src/lib/haptic-feedback/types.ts +0 -1
  118. package/src/lib/haptic-feedback/useHapticFeedback.ts +0 -9
  119. package/src/lib/haptic-feedback/withHapticFeedback.tsx +0 -18
  120. package/src/lib/hooks.ts +0 -52
  121. package/src/lib/index.ts +0 -13
  122. package/src/lib/init-data.tsx +0 -43
  123. package/src/lib/launch-params/index.ts +0 -3
  124. package/src/lib/launch-params/types.ts +0 -1
  125. package/src/lib/launch-params/useLaunchParams.ts +0 -11
  126. package/src/lib/launch-params/withLaunchParams.tsx +0 -18
  127. package/src/lib/main-button/index.ts +0 -3
  128. package/src/lib/main-button/types.ts +0 -1
  129. package/src/lib/main-button/useMainButton.ts +0 -16
  130. package/src/lib/main-button/withMainButton.tsx +0 -18
  131. package/src/lib/popup/index.ts +0 -3
  132. package/src/lib/popup/types.ts +0 -1
  133. package/src/lib/popup/usePopup.ts +0 -13
  134. package/src/lib/popup/withPopup.tsx +0 -18
  135. package/src/lib/qr-scanner/index.ts +0 -3
  136. package/src/lib/qr-scanner/types.ts +0 -1
  137. package/src/lib/qr-scanner/useQRScanner.ts +0 -13
  138. package/src/lib/qr-scanner/withQRScanner.tsx +0 -18
  139. package/src/lib/theme-params.tsx +0 -29
  140. package/src/lib/viewport/index.ts +0 -3
  141. package/src/lib/viewport/types.ts +0 -1
  142. package/src/lib/viewport/useViewport.ts +0 -15
  143. package/src/lib/viewport/withViewport.tsx +0 -18
  144. package/src/lib/web-app/index.ts +0 -3
  145. package/src/lib/web-app/types.ts +0 -1
  146. package/src/lib/web-app/useWebApp.ts +0 -13
  147. package/src/lib/web-app/withWebApp.tsx +0 -18
  148. package/src/provider/context.ts +0 -11
  149. package/src/provider/hocs.tsx +0 -18
  150. package/src/provider/hooks.ts +0 -23
@@ -0,0 +1,12 @@
1
+ import { type ComponentType } from 'react';
2
+ import type { Hook } from './createHook.js';
3
+ import type { InitResultKey, InitResultValue } from './types.js';
4
+ export type Hoc<K extends InitResultKey> = <P extends {
5
+ [Key in K]?: InitResultValue<K>;
6
+ }>(Component: ComponentType<P>) => ComponentType<P>;
7
+ /**
8
+ * Creates HOC for static init result value.
9
+ * @param initResultKey - init result key.
10
+ * @param hook - hook which returns init result value.
11
+ */
12
+ export declare function createHoc<K extends InitResultKey>(initResultKey: K, hook: Hook<K>): Hoc<K>;
@@ -0,0 +1,13 @@
1
+ import type { DynamicInitResultKey, InitResultKey, InitResultValue, StaticInitResultKey } from './types.js';
2
+ export type Hook<K extends InitResultKey> = () => InitResultValue<K>;
3
+ /**
4
+ * Creates hook to retrieve static init result value.
5
+ * @param initResultKey - init result key.
6
+ */
7
+ export declare function createHook<K extends StaticInitResultKey>(initResultKey: K): Hook<K>;
8
+ /**
9
+ * Creates hook to retrieve dynamic init result value.
10
+ * @param initResultKey - init result key.
11
+ * @param dynamic - flag to let function know this init result value is dynamic.
12
+ */
13
+ export declare function createHook<K extends DynamicInitResultKey>(initResultKey: K, dynamic: true): Hook<K>;
@@ -1,2 +1,3 @@
1
- export * from './lib/index.js';
2
- export * from './provider/index.js';
1
+ export { useThemeParams, useInitData, useBackButton, useClosingBehavior, useInitDataRaw, useCloudStorage, useLaunchParams, useMainButton, useHapticFeedback, useInvoice, useMiniApp, usePopup, usePostEvent, useQRScanner, useUtils, useViewport, withBackButton, withClosingBehavior, withCloudStorage, withInitData, withHapticFeedback, withInitDataRaw, withInvoice, withLaunchParams, withMainButton, withMiniApp, withPostEvent, withPopup, withThemeParams, withQRScanner, withUtils, withViewport, } from './tools/index.js';
2
+ export { useSDKContext, withSDKContext, SDKProvider, type SDKProviderProps, type SDKContextType, } from './provider/index.js';
3
+ export type { InitOptions, InitResult, } from './types.js';
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import type { SDKContextType } from './types.js';
3
+ export declare const SDKContext: import("react").Context<SDKContextType>;
@@ -1,10 +1,6 @@
1
- import React, { type PropsWithChildren } from 'react';
2
- import { type InitOptions } from '@tma.js/sdk';
3
- export type SDKInitOptions = InitOptions;
4
- export type SDKProviderProps = PropsWithChildren<{
5
- initOptions?: SDKInitOptions;
6
- }>;
1
+ import React from 'react';
2
+ import type { SDKProviderProps } from './types.js';
7
3
  /**
8
- * Component which provides access to SDK components.
4
+ * Component which provides access to SDK initialization state.
9
5
  */
10
- export declare const SDKProvider: React.NamedExoticComponent<SDKProviderProps>;
6
+ export declare function SDKProvider(props: SDKProviderProps): React.JSX.Element;
@@ -1,5 +1,7 @@
1
- export * from './context.js';
2
- export * from './hocs.js';
3
- export * from './hooks.js';
1
+ export * from './SDKContext.js';
4
2
  export * from './SDKProvider.js';
5
3
  export * from './types.js';
4
+ export * from './useInitResultDynamicValue.js';
5
+ export * from './useInitResultValue.js';
6
+ export * from './useSDKContext.js';
7
+ export * from './withSDKContext.js';
@@ -1,28 +1,22 @@
1
- import type { InitResult } from '@tma.js/sdk';
2
- /**
3
- * List of provided SDK components.
4
- */
5
- export type SDKComponents = InitResult;
6
- /**
7
- * Known SDK component name.
8
- */
9
- export type SDKComponentName = keyof SDKComponents;
10
- /**
11
- * Returns SDK component type by its name.
12
- */
13
- export type SDKComponent<N extends SDKComponentName> = SDKComponents[N];
14
- export interface SDKContext {
1
+ import type { PropsWithChildren } from 'react';
2
+ import type { InitOptions, InitResult } from '../types.js';
3
+ export type SDKProviderProps = PropsWithChildren<{
15
4
  /**
16
- * Components ready to use. This value will be null until initialization
17
- * is done.
5
+ * Init function options.
18
6
  */
19
- components: SDKComponents | null;
7
+ options?: InitOptions;
8
+ }>;
9
+ export interface SDKContextType {
20
10
  /**
21
- * States, that SDK called `init()` method.
11
+ * Error occurred during initialization.
22
12
  */
23
- didInit: boolean;
13
+ error?: unknown;
24
14
  /**
25
- * Error occurred during initialization.
15
+ * Initialization result.
16
+ */
17
+ initResult?: InitResult;
18
+ /**
19
+ * True if SDK is loading.
26
20
  */
27
- error: unknown | null;
21
+ loading: boolean;
28
22
  }
@@ -0,0 +1,2 @@
1
+ import type { DynamicInitResultKey, InitResultValue } from '../types.js';
2
+ export declare function useInitResultDynamicValue<K extends DynamicInitResultKey>(initResultKey: K): InitResultValue<K>;
@@ -0,0 +1,7 @@
1
+ import type { InitResultKey, InitResultValue } from '../types.js';
2
+ /**
3
+ * Returns value by its field name from SDK init result.
4
+ * @param key - init result key.
5
+ * @throws {Error} SDK is not initialized.
6
+ */
7
+ export declare function useInitResultValue<K extends InitResultKey>(key: K): InitResultValue<K>;
@@ -0,0 +1,5 @@
1
+ import type { SDKContextType } from './types.js';
2
+ /**
3
+ * Returns current SDK information.
4
+ */
5
+ export declare function useSDKContext(): SDKContextType;
@@ -1,9 +1,9 @@
1
1
  import { type ComponentType } from 'react';
2
- import type { SDKContext } from './types.js';
2
+ import type { SDKContextType } from './types.js';
3
3
  /**
4
4
  * HOC which passes SDK context to wrapped React component.
5
5
  * @param Component - component to wrap.
6
6
  */
7
- export declare function withSDK<P extends {
8
- sdk?: SDKContext;
7
+ export declare function withSDKContext<P extends {
8
+ sdk?: SDKContextType;
9
9
  }>(Component: ComponentType<P>): ComponentType<Omit<P, 'sdk'>>;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hook to retrieve BackButton component.
3
+ */
4
+ export declare const useBackButton: import("../createHook.js").Hook<"backButton">;
5
+ /**
6
+ * HOC to wrap specified component to pass BackButton instance.
7
+ */
8
+ export declare const withBackButton: import("../createHoc.js").Hoc<"backButton">;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hook to retrieve ClosingBehavior component.
3
+ */
4
+ export declare const useClosingBehavior: import("../createHook.js").Hook<"closingBehavior">;
5
+ /**
6
+ * HOC to wrap specified component to pass ClosingBehavior instance.
7
+ */
8
+ export declare const withClosingBehavior: import("../createHoc.js").Hoc<"closingBehavior">;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hook to retrieve CloudStorage component.
3
+ */
4
+ export declare const useCloudStorage: import("../createHook.js").Hook<"cloudStorage">;
5
+ /**
6
+ * HOC to wrap specified component to pass CloudStorage instance.
7
+ */
8
+ export declare const withCloudStorage: import("../createHoc.js").Hoc<"cloudStorage">;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hook to retrieve HapticFeedback component.
3
+ */
4
+ export declare const useHapticFeedback: import("../createHook.js").Hook<"hapticFeedback">;
5
+ /**
6
+ * HOC to wrap specified component to pass HapticFeedback instance.
7
+ */
8
+ export declare const withHapticFeedback: import("../createHoc.js").Hoc<"hapticFeedback">;
@@ -0,0 +1,16 @@
1
+ export * from './back-button.js';
2
+ export * from './closing-behavior.js';
3
+ export * from './cloud-storage.js';
4
+ export * from './haptic-feedback.js';
5
+ export * from './init-data.js';
6
+ export * from './init-data-raw.js';
7
+ export * from './invoice.js';
8
+ export * from './launch-params.js';
9
+ export * from './main-button.js';
10
+ export * from './mini-app.js';
11
+ export * from './popup.js';
12
+ export * from './post-event.js';
13
+ export * from './qr-scanner.js';
14
+ export * from './theme-params.js';
15
+ export * from './utils.js';
16
+ export * from './viewport.js';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hook to retrieve init data raw representation.
3
+ */
4
+ export declare const useInitDataRaw: import("../createHook.js").Hook<"initDataRaw">;
5
+ /**
6
+ * HOC to wrap specified component to pass init data raw representation.
7
+ */
8
+ export declare const withInitDataRaw: import("../createHoc.js").Hoc<"initDataRaw">;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hook to retrieve InitData component.
3
+ */
4
+ export declare const useInitData: import("../createHook.js").Hook<"initData">;
5
+ /**
6
+ * HOC to wrap specified component to pass InitData instance.
7
+ */
8
+ export declare const withInitData: import("../createHoc.js").Hoc<"initData">;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hook to retrieve Invoice component.
3
+ */
4
+ export declare const useInvoice: import("../createHook.js").Hook<"invoice">;
5
+ /**
6
+ * HOC to wrap specified component to pass Invoice instance.
7
+ */
8
+ export declare const withInvoice: import("../createHoc.js").Hoc<"invoice">;
@@ -0,0 +1,13 @@
1
+ import { type LaunchParams } from '@tma.js/sdk';
2
+ import React, { type ComponentType } from 'react';
3
+ /**
4
+ * Hooks to retrieve launch parameters.
5
+ */
6
+ export declare function useLaunchParams(): LaunchParams;
7
+ /**
8
+ * HOC to wrap specified component to pass launch parameters.
9
+ * @param Component - wrapped component.
10
+ */
11
+ export declare function withLaunchParams<P extends {
12
+ launchParams?: LaunchParams;
13
+ }>(Component: ComponentType<P>): (props: P) => React.JSX.Element;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hook to retrieve MainButton component.
3
+ */
4
+ export declare const useMainButton: import("../createHook.js").Hook<"mainButton">;
5
+ /**
6
+ * HOC to wrap specified component to pass MainButton instance.
7
+ */
8
+ export declare const withMainButton: import("../createHoc.js").Hoc<"mainButton">;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hook to retrieve MiniApp component.
3
+ */
4
+ export declare const useMiniApp: import("../createHook.js").Hook<"miniApp">;
5
+ /**
6
+ * HOC to wrap specified component to pass MiniApp instance.
7
+ */
8
+ export declare const withMiniApp: import("../createHoc.js").Hoc<"miniApp">;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hook to retrieve Popup component.
3
+ */
4
+ export declare const usePopup: import("../createHook.js").Hook<"popup">;
5
+ /**
6
+ * HOC to wrap specified component to pass Popup instance.
7
+ */
8
+ export declare const withPopup: import("../createHoc.js").Hoc<"popup">;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hook to retrieve postEvent function.
3
+ */
4
+ export declare const usePostEvent: import("../createHook.js").Hook<"postEvent">;
5
+ /**
6
+ * HOC to wrap specified component to pass postEvent function.
7
+ */
8
+ export declare const withPostEvent: import("../createHoc.js").Hoc<"postEvent">;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hook to retrieve QRScanner component.
3
+ */
4
+ export declare const useQRScanner: import("../createHook.js").Hook<"qrScanner">;
5
+ /**
6
+ * HOC to wrap specified component to pass QRScanner instance.
7
+ */
8
+ export declare const withQRScanner: import("../createHoc.js").Hoc<"qrScanner">;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hook to retrieve ThemeParams component.
3
+ */
4
+ export declare const useThemeParams: import("../createHook.js").Hook<"themeParams">;
5
+ /**
6
+ * HOC to wrap specified component to pass ThemeParams instance.
7
+ */
8
+ export declare const withThemeParams: import("../createHoc.js").Hoc<"themeParams">;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hook to retrieve Utils component.
3
+ */
4
+ export declare const useUtils: import("../createHook.js").Hook<"utils">;
5
+ /**
6
+ * HOC to wrap specified component to pass Utils instance.
7
+ */
8
+ export declare const withUtils: import("../createHoc.js").Hoc<"utils">;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hook to retrieve Viewport component.
3
+ */
4
+ export declare const useViewport: import("../createHook.js").Hook<"viewport">;
5
+ /**
6
+ * HOC to wrap specified component to pass Viewport instance.
7
+ */
8
+ export declare const withViewport: import("../createHoc.js").Hoc<"viewport">;
@@ -0,0 +1,23 @@
1
+ import type { InitOptions, InitResult } from '@tma.js/sdk';
2
+ export { InitOptions, InitResult };
3
+ export interface Trackable {
4
+ on(event: 'change', listener: () => void): () => void;
5
+ }
6
+ /**
7
+ * SDK init result keys, which describe values with trackable changes.
8
+ */
9
+ export type DynamicInitResultKey = {
10
+ [K in InitResultKey]-?: InitResultValue<K> extends Trackable ? K : never;
11
+ }[InitResultKey];
12
+ /**
13
+ * SDK init result keys, which describe static values.
14
+ */
15
+ export type StaticInitResultKey = Exclude<InitResultKey, DynamicInitResultKey>;
16
+ /**
17
+ * SDK initialization result key.
18
+ */
19
+ export type InitResultKey = keyof InitResult;
20
+ /**
21
+ * Returns SDK init result value type by its key.
22
+ */
23
+ export type InitResultValue<K extends InitResultKey> = InitResult[K];
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),R=require("@tma.js/launch-params"),x=require("@tma.js/sdk"),a=o.createContext({components:null,didInit:!1,error:null});a.displayName="SDKContext";const c=()=>o.useContext(a);function u(t){const{components:r}=c();if(r===null)throw new Error(`Unable to get unit "${t}" as long as SDK is not initialized.`);return r[t]}function K(t){return function(e){const n={...e,sdk:c()};return o.createElement(t,{...n})}}const p=o.memo(t=>{const{children:r,initOptions:e}=t,[n,k]=o.useState(!1),[s,W]=o.useState(null),[h,v]=o.useState(null);o.useEffect(()=>{k(!0),x.init(e).then(v).catch(W)},[]);const I=o.useMemo(()=>({components:h,didInit:n,error:s}),[n,h,s]);return o.createElement(a.Provider,{value:I},r)});p.displayName="SDKProvider";function A(){const[,t]=o.useState(0);return o.useCallback(()=>t(r=>(r+1)%1e6),[])}function i(t,r){const e=A();o.useEffect(()=>(r.forEach(n=>t.on(n,e)),()=>r.forEach(n=>t.off(n,e))),[t,e,r])}function M(){return u("postEvent")}function l(){const t=u("backButton");return i(t,["isVisibleChanged"]),t}function V(t){return function(e){const n={...e,backButton:l()};return o.createElement(t,{...n})}}function d(){const t=u("closingBehavior");return i(t,["isConfirmationNeededChanged"]),t}function F(t){return function(e){const n={...e,closingBehaviour:d()};return o.createElement(t,{...n})}}function f(){return u("haptic")}function H(t){return function(e){const n={...e,hapticFeedback:f()};return o.createElement(t,{...n})}}function m(){return o.useMemo(()=>R.computeLaunchData().launchParams,[])}function L(t){return function(e){const n={...e,launchParams:m()};return o.createElement(t,{...n})}}function w(){const t=u("mainButton");return i(t,["isEnabledChanged","backgroundColorChanged","isProgressVisibleChanged","textChanged","textColorChanged","isVisibleChanged"]),t}function T(t){return function(e){const n={...e,mainButton:w()};return o.createElement(t,{...n})}}function g(){const t=u("popup");return i(t,["isOpenedChanged"]),t}function q(t){return function(e){const n={...e,popup:g()};return o.createElement(t,{...n})}}function C(){const t=u("qrScanner");return i(t,["isOpenedChanged"]),t}function Q(t){return function(e){const n={...e,qrScanner:C()};return o.createElement(t,{...n})}}function P(){const t=u("viewport");return i(t,["stableHeightChanged","isExpandedChanged","heightChanged","widthChanged"]),t}function U(t){return function(e){const n={...e,viewport:P()};return o.createElement(t,{...n})}}function S(){const t=u("webApp");return i(t,["headerColorChanged","backgroundColorChanged"]),t}function y(t){return function(e){const n={...e,webApp:S()};return o.createElement(t,{...n})}}function B(){return u("cloudStorage")}function O(t){return function(e){const n={...e,cloudStorage:B()};return o.createElement(t,{...n})}}function b(){return u("initData")||null}function E(){return u("initDataRaw")||null}function N(t){return function(e){const n={...e,initData:b(),initDataRaw:E()};return o.createElement(t,{...n})}}function D(){const t=u("themeParams");return i(t,["changed"]),t}function j(t){return function(e){const n={...e,themeParams:D()};return o.createElement(t,{...n})}}exports.SDKProvider=p;exports.sdkContext=a;exports.useBackButton=l;exports.useClosingBehaviour=d;exports.useCloudStorage=B;exports.useHapticFeedback=f;exports.useInitData=b;exports.useInitDataRaw=E;exports.useLaunchParams=m;exports.useMainButton=w;exports.usePopup=g;exports.usePostEvent=M;exports.useQRScanner=C;exports.useSDK=c;exports.useThemeParams=D;exports.useUnit=u;exports.useViewport=P;exports.useWebApp=S;exports.withBackButton=V;exports.withClosingBehaviour=F;exports.withCloudStorage=O;exports.withHapticFeedback=H;exports.withInitData=N;exports.withLaunchParams=L;exports.withMainButton=T;exports.withPopup=q;exports.withQRScanner=Q;exports.withSDK=K;exports.withThemeParams=j;exports.withViewport=U;exports.withWebApp=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),p=require("@tma.js/sdk");function o(t,e){return s=>{function a(r){const c={...r,[t]:e()};return n.createElement(s,{...c})}return Object.defineProperty(a,"name",{value:`With${t[0].toUpperCase()}${t.slice(1)}`}),a}}const u=n.createContext({loading:!1});u.displayName="SDKContext";function O({options:t,children:e}){const[s,a]=n.useState(!1),[r,c]=n.useState(),[h,A]=n.useState();n.useEffect(()=>{a(!0),p.init({...t,async:!0}).then(A).catch(c).finally(()=>a(!1))},[]);const K=n.useMemo(()=>{const l={loading:s};return r&&(l.error=r),h&&(l.initResult=h),l},[s,h,r]);return n.createElement(u.Provider,{value:K},e)}function F({options:t={},children:e}){const s=n.useMemo(()=>{const a={loading:!1};try{a.initResult=p.init({...t,async:!1})}catch(r){a.error=r}return a},[]);return n.createElement(u.Provider,{value:s},e)}function H(t){var e;return(e=t.options)!=null&&e.async?n.createElement(O,{...t}):n.createElement(F,{...t})}function w(){return n.useContext(u)}function f(t){const{initResult:e}=w();if(!e)throw new Error(`Unable to get init result key "${t}" as long as SDK is not initialized`);return e[t]}function m(t){return Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t))}function L(t){const e=f(t),[s,a]=n.useState(m(e));return n.useEffect(()=>e.on("change",()=>{a(m(e))}),[e]),s}function U(t){return function(s){const a={...s,sdk:w()};return n.createElement(t,{...a})}}function i(t,e){return e?()=>L(t):()=>f(t)}const v=i("backButton",!0),V=o("backButton",v),P=i("closingBehavior",!0),j=o("closingBehavior",P),d=i("cloudStorage"),T=o("cloudStorage",d),S=i("hapticFeedback"),q=o("hapticFeedback",S),D=i("initData"),Q=o("initData",D),g=i("initDataRaw"),W=o("initDataRaw",g),B=i("invoice",!0),$=o("invoice",B);function C(){return n.useMemo(()=>p.retrieveLaunchData().launchParams,[])}function z(t){return function(s){return n.createElement(t,{...s,launchParams:C()})}}const E=i("mainButton",!0),N=o("mainButton",E),I=i("miniApp",!0),G=o("miniApp",I),b=i("popup",!0),J=o("popup",b),k=i("postEvent"),X=o("postEvent",k),R=i("qrScanner",!0),Y=o("qrScanner",R),y=i("themeParams",!0),Z=o("themeParams",y),M=i("utils"),_=o("utils",M),x=i("viewport",!0),tt=o("viewport",x);exports.SDKProvider=H;exports.useBackButton=v;exports.useClosingBehavior=P;exports.useCloudStorage=d;exports.useHapticFeedback=S;exports.useInitData=D;exports.useInitDataRaw=g;exports.useInvoice=B;exports.useLaunchParams=C;exports.useMainButton=E;exports.useMiniApp=I;exports.usePopup=b;exports.usePostEvent=k;exports.useQRScanner=R;exports.useSDKContext=w;exports.useThemeParams=y;exports.useUtils=M;exports.useViewport=x;exports.withBackButton=V;exports.withClosingBehavior=j;exports.withCloudStorage=T;exports.withHapticFeedback=q;exports.withInitData=Q;exports.withInitDataRaw=W;exports.withInvoice=$;exports.withLaunchParams=z;exports.withMainButton=N;exports.withMiniApp=G;exports.withPopup=J;exports.withPostEvent=X;exports.withQRScanner=Y;exports.withSDKContext=U;exports.withThemeParams=Z;exports.withUtils=_;exports.withViewport=tt;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.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/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/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","../src/lib/init-data.tsx","../src/lib/theme-params.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';\n\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 { useMemo } from 'react';\nimport { computeLaunchData } from '@tma.js/launch-params';\n\nimport type { LaunchParams } from './types.js';\n\n/**\n * The hook which returns launch parameters initially passed to Mini App.\n */\nexport function useLaunchParams(): LaunchParams {\n return useMemo(() => computeLaunchData().launchParams, []);\n}\n","import React, { type ComponentType } from 'react';\n\nimport { useLaunchParams } from './useLaunchParams.js';\nimport type { LaunchParams } from './types.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 { 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","import React, { type ComponentType } from 'react';\nimport type { InitData } from '@tma.js/sdk';\n\nimport { useUnit } from '../provider/index.js';\n\ninterface EnhancedProps {\n initData: InitData | null;\n initDataRaw: string | null;\n}\n\n/**\n * Returns InitData component instance.\n */\nexport function useInitData(): InitData | null {\n return useUnit('initData') || null;\n}\n\n/**\n * Returns init data raw representation.\n */\nexport function useInitDataRaw(): string | null {\n return useUnit('initDataRaw') || null;\n}\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 Partial<EnhancedProps>>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, keyof EnhancedProps>> {\n return function WithInitData(props) {\n const enhancedProps = {\n ...props,\n initData: useInitData(),\n initDataRaw: useInitDataRaw(),\n } as P;\n\n return <Component {...enhancedProps} />;\n };\n}\n\nexport { InitData };\n","import React, { type ComponentType } from 'react';\nimport type { ThemeParams } from '@tma.js/sdk';\n\nimport { useUnit } from '../provider/index.js';\nimport { useEventsTracking } from './hooks.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\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"],"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","useLaunchParams","computeLaunchData","withLaunchParams","useMainButton","mainButton","withMainButton","usePopup","popup","withPopup","useQRScanner","qrScanner","withQRScanner","useViewport","viewport","withViewport","useWebApp","webApp","withWebApp","useCloudStorage","withCloudStorage","useInitData","useInitDataRaw","withInitData","enhancedProps","useThemeParams","theme","withThemeParams"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/createHoc.tsx","../src/provider/SDKContext.ts","../src/provider/SDKProvider.tsx","../src/provider/useSDKContext.ts","../src/provider/useInitResultValue.ts","../src/provider/useInitResultDynamicValue.ts","../src/provider/withSDKContext.tsx","../src/createHook.ts","../src/tools/back-button.ts","../src/tools/closing-behavior.ts","../src/tools/cloud-storage.ts","../src/tools/haptic-feedback.ts","../src/tools/init-data.ts","../src/tools/init-data-raw.ts","../src/tools/invoice.ts","../src/tools/launch-params.tsx","../src/tools/main-button.ts","../src/tools/mini-app.ts","../src/tools/popup.ts","../src/tools/post-event.ts","../src/tools/qr-scanner.ts","../src/tools/theme-params.ts","../src/tools/utils.ts","../src/tools/viewport.ts"],"sourcesContent":["import React, { type ComponentType } from 'react';\n\nimport type { Hook } from './createHook.js';\nimport type { InitResultKey, InitResultValue } from './types.js';\n\nexport type Hoc<K extends InitResultKey> = <P extends { [Key in K]?: InitResultValue<K> }>(\n Component: ComponentType<P>,\n) => ComponentType<P>;\n\n/**\n * Creates HOC for static init result value.\n * @param initResultKey - init result key.\n * @param hook - hook which returns init result value.\n */\nexport function createHoc<K extends InitResultKey>(initResultKey: K, hook: Hook<K>): Hoc<K> {\n return (Component: ComponentType<any>) => {\n function Wrapper(props: Record<string, unknown>) {\n const wrappedProps = {\n ...props,\n [initResultKey]: hook(),\n };\n\n return <Component {...wrappedProps} />;\n }\n\n Object.defineProperty(Wrapper, 'name', {\n value: `With${initResultKey[0].toUpperCase()}${initResultKey.slice(1)}`,\n });\n\n return Wrapper;\n };\n}\n","import { createContext } from 'react';\n\nimport type { SDKContextType } from './types.js';\n\nexport const SDKContext = createContext<SDKContextType>({\n loading: false,\n});\n\nSDKContext.displayName = 'SDKContext';\n","import { init } from '@tma.js/sdk';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { SDKContext } from './SDKContext.js';\nimport type { SDKContextType, SDKProviderProps } from './types.js';\nimport type { InitResult } from '../types.js';\n\nfunction AsyncProvider({ options, children }: SDKProviderProps) {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<unknown | undefined>();\n const [initResult, setInitResult] = useState<InitResult | undefined>();\n\n useEffect(() => {\n setLoading(true);\n\n init({ ...options, async: true })\n .then(setInitResult)\n .catch(setError)\n .finally(() => setLoading(false));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const context = useMemo<SDKContextType>(() => {\n const result: SDKContextType = { loading };\n if (error) {\n result.error = error;\n }\n\n if (initResult) {\n result.initResult = initResult;\n }\n\n return result;\n }, [loading, initResult, error]);\n\n return <SDKContext.Provider value={context}>{children}</SDKContext.Provider>;\n}\n\nfunction SyncProvider({ options = {}, children }: SDKProviderProps) {\n const context = useMemo<SDKContextType>(() => {\n const result: SDKContextType = { loading: false };\n\n try {\n result.initResult = init({ ...options, async: false });\n } catch (e) {\n result.error = e;\n }\n\n return result;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return <SDKContext.Provider value={context}>{children}</SDKContext.Provider>;\n}\n\n/**\n * Component which provides access to SDK initialization state.\n */\nexport function SDKProvider(props: SDKProviderProps) {\n // eslint-disable-next-line react/destructuring-assignment\n return props.options?.async\n ? <AsyncProvider {...props} />\n : <SyncProvider {...props} />;\n}\n","import { useContext } from 'react';\n\nimport { SDKContext } from './SDKContext.js';\nimport type { SDKContextType } from './types.js';\n\n/**\n * Returns current SDK information.\n */\nexport function useSDKContext(): SDKContextType {\n return useContext(SDKContext);\n}\n","import { useSDKContext } from './useSDKContext.js';\nimport type { InitResultKey, InitResultValue } from '../types.js';\n\n/**\n * Returns value by its field name from SDK init result.\n * @param key - init result key.\n * @throws {Error} SDK is not initialized.\n */\nexport function useInitResultValue<K extends InitResultKey>(key: K): InitResultValue<K> {\n const { initResult } = useSDKContext();\n\n if (!initResult) {\n throw new Error(`Unable to get init result key \"${key}\" as long as SDK is not initialized`);\n }\n return initResult[key];\n}\n","import { useEffect, useState } from 'react';\n\nimport { useInitResultValue } from './useInitResultValue.js';\nimport type {\n DynamicInitResultKey,\n InitResultValue,\n Trackable,\n} from '../types.js';\n\nfunction shallowCopy<T>(value: T): T {\n return Object.create(\n Object.getPrototypeOf(value),\n Object.getOwnPropertyDescriptors(value),\n );\n}\n\nexport function useInitResultDynamicValue<K extends DynamicInitResultKey>(\n initResultKey: K,\n): InitResultValue<K> {\n // Extract init result value.\n const initial = useInitResultValue(initResultKey);\n\n // Create value which will be returned to the external environment.\n const [copy, setCopy] = useState(shallowCopy(initial));\n\n // Effect which listens to change event and calls update.\n useEffect(() => {\n return (initial as Trackable).on('change', () => {\n setCopy(shallowCopy(initial));\n });\n }, [initial]);\n\n return copy;\n}\n","import React, { type ComponentType } from 'react';\n\nimport type { SDKContextType } from './types.js';\nimport { useSDKContext } from './useSDKContext.js';\n\n/**\n * HOC which passes SDK context to wrapped React component.\n * @param Component - component to wrap.\n */\nexport function withSDKContext<P extends { sdk?: SDKContextType }>(\n Component: ComponentType<P>,\n): ComponentType<Omit<P, 'sdk'>> {\n return function WithSDKContext(props: Omit<P, 'sdk'>) {\n const p = {\n ...props,\n sdk: useSDKContext(),\n } as P;\n\n return <Component {...p} />;\n };\n}\n","import { useInitResultDynamicValue, useInitResultValue } from './provider/index.js';\nimport type {\n DynamicInitResultKey,\n InitResultKey,\n InitResultValue,\n StaticInitResultKey,\n} from './types.js';\n\nexport type Hook<K extends InitResultKey> = () => InitResultValue<K>;\n\n/**\n * Creates hook to retrieve static init result value.\n * @param initResultKey - init result key.\n */\nexport function createHook<K extends StaticInitResultKey>(initResultKey: K): Hook<K>;\n\n/**\n * Creates hook to retrieve dynamic init result value.\n * @param initResultKey - init result key.\n * @param dynamic - flag to let function know this init result value is dynamic.\n */\nexport function createHook<K extends DynamicInitResultKey>(\n initResultKey: K,\n dynamic: true,\n): Hook<K>;\n\nexport function createHook(initResultKey: InitResultKey, dynamic?: true): Hook<any> {\n return dynamic\n ? () => useInitResultDynamicValue(initResultKey as DynamicInitResultKey)\n : () => useInitResultValue(initResultKey);\n}\n","import { createHoc } from '../createHoc.js';\nimport { createHook } from '../createHook.js';\n\n/**\n * Hook to retrieve BackButton component.\n */\nexport const useBackButton = createHook('backButton', true);\n\n/**\n * HOC to wrap specified component to pass BackButton instance.\n */\nexport const withBackButton = createHoc('backButton', useBackButton);\n","import { createHoc } from '../createHoc.js';\nimport { createHook } from '../createHook.js';\n\n/**\n * Hook to retrieve ClosingBehavior component.\n */\nexport const useClosingBehavior = createHook('closingBehavior', true);\n\n/**\n * HOC to wrap specified component to pass ClosingBehavior instance.\n */\nexport const withClosingBehavior = createHoc('closingBehavior', useClosingBehavior);\n","import { createHoc } from '../createHoc.js';\nimport { createHook } from '../createHook.js';\n\n/**\n * Hook to retrieve CloudStorage component.\n */\nexport const useCloudStorage = createHook('cloudStorage');\n\n/**\n * HOC to wrap specified component to pass CloudStorage instance.\n */\nexport const withCloudStorage = createHoc('cloudStorage', useCloudStorage);\n","import { createHoc } from '../createHoc.js';\nimport { createHook } from '../createHook.js';\n\n/**\n * Hook to retrieve HapticFeedback component.\n */\nexport const useHapticFeedback = createHook('hapticFeedback');\n\n/**\n * HOC to wrap specified component to pass HapticFeedback instance.\n */\nexport const withHapticFeedback = createHoc('hapticFeedback', useHapticFeedback);\n","import { createHoc } from '../createHoc.js';\nimport { createHook } from '../createHook.js';\n\n/**\n * Hook to retrieve InitData component.\n */\nexport const useInitData = createHook('initData');\n\n/**\n * HOC to wrap specified component to pass InitData instance.\n */\nexport const withInitData = createHoc('initData', useInitData);\n","import { createHoc } from '../createHoc.js';\nimport { createHook } from '../createHook.js';\n\n/**\n * Hook to retrieve init data raw representation.\n */\nexport const useInitDataRaw = createHook('initDataRaw');\n\n/**\n * HOC to wrap specified component to pass init data raw representation.\n */\nexport const withInitDataRaw = createHoc('initDataRaw', useInitDataRaw);\n","import { createHoc } from '../createHoc.js';\nimport { createHook } from '../createHook.js';\n\n/**\n * Hook to retrieve Invoice component.\n */\nexport const useInvoice = createHook('invoice', true);\n\n/**\n * HOC to wrap specified component to pass Invoice instance.\n */\nexport const withInvoice = createHoc('invoice', useInvoice);\n","import { type LaunchParams, retrieveLaunchData } from '@tma.js/sdk';\nimport React, { type ComponentType, useMemo } from 'react';\n\n/**\n * Hooks to retrieve launch parameters.\n */\nexport function useLaunchParams(): LaunchParams {\n return useMemo(() => retrieveLaunchData().launchParams, []);\n}\n\n/**\n * HOC to wrap specified component to pass launch parameters.\n * @param Component - wrapped component.\n */\nexport function withLaunchParams<P extends { launchParams?: LaunchParams }>(\n Component: ComponentType<P>,\n) {\n return function WithInvoice(props: P) {\n return <Component {...props} launchParams={useLaunchParams()} />;\n };\n}\n","import { createHoc } from '../createHoc.js';\nimport { createHook } from '../createHook.js';\n\n/**\n * Hook to retrieve MainButton component.\n */\nexport const useMainButton = createHook('mainButton', true);\n\n/**\n * HOC to wrap specified component to pass MainButton instance.\n */\nexport const withMainButton = createHoc('mainButton', useMainButton);\n","import { createHoc } from '../createHoc.js';\nimport { createHook } from '../createHook.js';\n\n/**\n * Hook to retrieve MiniApp component.\n */\nexport const useMiniApp = createHook('miniApp', true);\n\n/**\n * HOC to wrap specified component to pass MiniApp instance.\n */\nexport const withMiniApp = createHoc('miniApp', useMiniApp);\n","import { createHoc } from '../createHoc.js';\nimport { createHook } from '../createHook.js';\n\n/**\n * Hook to retrieve Popup component.\n */\nexport const usePopup = createHook('popup', true);\n\n/**\n * HOC to wrap specified component to pass Popup instance.\n */\nexport const withPopup = createHoc('popup', usePopup);\n","import { createHoc } from '../createHoc.js';\nimport { createHook } from '../createHook.js';\n\n/**\n * Hook to retrieve postEvent function.\n */\nexport const usePostEvent = createHook('postEvent');\n\n/**\n * HOC to wrap specified component to pass postEvent function.\n */\nexport const withPostEvent = createHoc('postEvent', usePostEvent);\n","import { createHoc } from '../createHoc.js';\nimport { createHook } from '../createHook.js';\n\n/**\n * Hook to retrieve QRScanner component.\n */\nexport const useQRScanner = createHook('qrScanner', true);\n\n/**\n * HOC to wrap specified component to pass QRScanner instance.\n */\nexport const withQRScanner = createHoc('qrScanner', useQRScanner);\n","import { createHoc } from '../createHoc.js';\nimport { createHook } from '../createHook.js';\n\n/**\n * Hook to retrieve ThemeParams component.\n */\nexport const useThemeParams = createHook('themeParams', true);\n\n/**\n * HOC to wrap specified component to pass ThemeParams instance.\n */\nexport const withThemeParams = createHoc('themeParams', useThemeParams);\n","import { createHoc } from '../createHoc.js';\nimport { createHook } from '../createHook.js';\n\n/**\n * Hook to retrieve Utils component.\n */\nexport const useUtils = createHook('utils');\n\n/**\n * HOC to wrap specified component to pass Utils instance.\n */\nexport const withUtils = createHoc('utils', useUtils);\n","import { createHoc } from '../createHoc.js';\nimport { createHook } from '../createHook.js';\n\n/**\n * Hook to retrieve Viewport component.\n */\nexport const useViewport = createHook('viewport', true);\n\n/**\n * HOC to wrap specified component to pass Viewport instance.\n */\nexport const withViewport = createHoc('viewport', useViewport);\n"],"names":["createHoc","initResultKey","hook","Component","Wrapper","props","wrappedProps","React","SDKContext","createContext","AsyncProvider","options","children","loading","setLoading","useState","error","setError","initResult","setInitResult","useEffect","init","context","useMemo","result","SyncProvider","e","SDKProvider","_a","useSDKContext","useContext","useInitResultValue","key","shallowCopy","value","useInitResultDynamicValue","initial","copy","setCopy","withSDKContext","p","createHook","dynamic","useBackButton","withBackButton","useClosingBehavior","withClosingBehavior","useCloudStorage","withCloudStorage","useHapticFeedback","withHapticFeedback","useInitData","withInitData","useInitDataRaw","withInitDataRaw","useInvoice","withInvoice","useLaunchParams","retrieveLaunchData","withLaunchParams","useMainButton","withMainButton","useMiniApp","withMiniApp","usePopup","withPopup","usePostEvent","withPostEvent","useQRScanner","withQRScanner","useThemeParams","withThemeParams","useUtils","withUtils","useViewport","withViewport"],"mappings":"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"}