@usermaven/react 1.2.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/README.md ADDED
@@ -0,0 +1,93 @@
1
+ # Official Usermaven SDK for React
2
+
3
+
4
+ ## General
5
+
6
+ This package is a wrapper around `@usermaven/sdk-js`, with added functionality related to React.
7
+
8
+ ## Installation
9
+
10
+ To use Usermaven SDK, install npm package
11
+
12
+ ```bash
13
+ npm install @usermaven/react
14
+ ```
15
+
16
+ Import and configure Usermaven SDK Provider
17
+
18
+ ```typescript jsx
19
+ //...
20
+ import { createClient, UsermavenProvider } from "@usermaven/react";
21
+
22
+ // initialize Usermaven client
23
+ const usermavenClient = createClient({
24
+ tracking_host: "__USERMAVEN_HOST__",
25
+ key: "__API_KET__",
26
+ // See Usermaven SDK parameters section for more options
27
+ });
28
+
29
+ // wrap our app with Usermaven provider
30
+ ReactDOM.render(
31
+ <React.StrictMode>
32
+ <UsermavenProvider client={usermavenClient}>
33
+ <App />
34
+ </UsermavenProvider>
35
+ </React.StrictMode>,
36
+ document.getElementById('root')
37
+ );
38
+ ```
39
+ See [parameters list](https://usermaven.com/docs/sending-data/js-sdk/parameters-reference) for `createClient()` call.
40
+
41
+ ## Usage
42
+
43
+ ```typescript jsx
44
+ import { useUsermaven } from "@usermaven/react";
45
+
46
+ const App = () => {
47
+ const {id, track, trackPageView} = useUsermaven(); // import methods from useUsermaven hook
48
+
49
+ useEffect(() => {
50
+ id({id: '__USER_ID__', email: '__USER_EMAIL__'}); // identify current user for all track events
51
+ trackPageView() // send page_view event
52
+ }, [])
53
+
54
+ const onClick = (btnName: string) => {
55
+ track('btn_click', {btn: btnName}); // send btn_click event with button name payload on click
56
+ }
57
+
58
+ return (
59
+ <button onClick="() => onClick('test_btn')">Test button</button>
60
+ )
61
+ }
62
+ ```
63
+ \
64
+ To enable automatic pageview tracking, add `usePageView()` hook. This hook will send pageview each time
65
+ user loads a new page (including internal SPA pages). This hook relies on [React Router](https://reactrouter.com/) and
66
+ requires `react-router` (>=5.x) package to be present
67
+ ```typescript jsx
68
+ const App = () => {
69
+ usePageView() //this hook will send pageview track event on router change
70
+
71
+ return (
72
+ <Routes>
73
+ <Route path="/" element={<Main />} />
74
+ <Route path="page" element={<Page />} />
75
+ </Routes>
76
+ );
77
+ }
78
+ ```
79
+ \
80
+ If you need to pre-configure usermaven event - for example, identify a user, it's possible to do via `before` callback:
81
+ ```typescript
82
+ usePageView({before: (usermaven) => usermaven.id({id: '__USER_ID__', email: '__USER_EMAIL__'})})
83
+ ```
84
+
85
+ ## Hooks
86
+
87
+ ### useUsermaven
88
+
89
+ Returns object with `id`, `track`, `trackPageView`, `rawTrack`, `set`, `unset` and `interceptAnalytics` [methods of Usermaven SDK](https://usermaven.com/docs/sending-data/js-sdk/methods-reference).
90
+
91
+ ### usePageView
92
+
93
+ Can be used only with react-router. Sends `pageview` event on every route change.
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { UsermavenClient } from "@usermaven/sdk-js";
3
+ declare const UsermavenContext: import("react").Context<UsermavenClient>;
4
+ export default UsermavenContext;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const react_1 = require("react");
4
+ const UsermavenContext = (0, react_1.createContext)(null);
5
+ exports.default = UsermavenContext;
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import { UsermavenClient } from "@usermaven/sdk-js";
3
+ import { PropsWithChildren } from "react";
4
+ export interface UsermavenProviderProps {
5
+ client: UsermavenClient;
6
+ }
7
+ declare const UsermavenProvider: React.FC<PropsWithChildren<UsermavenProviderProps>>;
8
+ export default UsermavenProvider;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const React = require("react");
4
+ const UsermavenContext_1 = require("./UsermavenContext");
5
+ const UsermavenProvider = function ({ children, client }) {
6
+ const Context = UsermavenContext_1.default;
7
+ return React.createElement(Context.Provider, { value: client }, children);
8
+ };
9
+ exports.default = UsermavenProvider;
@@ -0,0 +1,3 @@
1
+ import { UsermavenClient, UsermavenOptions } from "@usermaven/sdk-js";
2
+ declare function createClient(params: UsermavenOptions): UsermavenClient;
3
+ export default createClient;
package/lib/client.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const sdk_js_1 = require("@usermaven/sdk-js");
4
+ function createClient(params) {
5
+ return (0, sdk_js_1.usermavenClient)(params);
6
+ }
7
+ exports.default = createClient;
package/lib/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export { default as UsermavenContext } from './UsermavenContext';
2
+ export { default as UsermavenProvider } from './UsermavenProvider';
3
+ export { default as createClient } from './client';
4
+ export { default as useUsermaven } from './useUsermaven';
5
+ export { default as usePageView } from './usePageView';