react-event-tracking 1.0.9 → 1.0.10

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 CHANGED
@@ -60,20 +60,20 @@ const Dashboard = () => (
60
60
 
61
61
  3. Send events conveniently. On button click, parameters will be merged.
62
62
  ```tsx
63
- import { useTracker } from 'react-event-tracking';
63
+ import { useReactEventTracking } from 'react-event-tracking';
64
64
 
65
65
  const MyButton = () => {
66
- const { sendEvent } = useTracker();
66
+ const { track } = useReactEventTracking();
67
67
 
68
68
  return (
69
69
  <>
70
70
  // event sent with parameters: { screen: 'dashboard', button_id: '123' }
71
- <button onClick={() => sendEvent('click', { button_id: '123' })}>
71
+ <button onClick={() => track('click', { button_id: '123' })}>
72
72
  Click me
73
73
  </button>
74
74
 
75
75
  {/* Option B: Object call */}
76
- <button onClick={() => sendEvent({ eventName: 'click', params: { button_id: '456' } })}>
76
+ <button onClick={() => track({ eventName: 'click', params: { button_id: '456' } })}>
77
77
  Click me too
78
78
  </button>
79
79
  </>
@@ -170,13 +170,12 @@ const AmpltitudeUS = TrackRoot.factory(
170
170
  `TrackProvider` supports generics for strict typing of the passed parameters.
171
171
 
172
172
  ```tsx
173
- interface PageParams {
174
- screenId: string;
175
- isAuthorized: boolean;
173
+ interface ScreenParams {
174
+ screen: "dashboard" | "authScreen"
176
175
  }
177
176
 
178
177
  const MyPage = () => (
179
- <TrackProvider<PageParams> params={{ screenId: 'main', isAuthorized: true }}>
178
+ <TrackProvider<ScreenParams> params={{ screen: 'dashboard' }}>
180
179
  <Content />
181
180
  </TrackProvider>
182
181
  );
@@ -204,12 +203,12 @@ A common pattern is to layer data from global to specific. Here is how parameter
204
203
  </TrackRoot>
205
204
 
206
205
  // Inside AddToCartButton:
207
- const { sendEvent } = useTracker();
206
+ const { track } = useReactEventTracking();
208
207
 
209
208
  // 4. EVENT: Action-specific data
210
209
  // When clicked, we only pass what changed right now.
211
210
  const handleClick = () => {
212
- sendEvent('add_to_cart', { quantity: 1 });
211
+ track('add_to_cart', { quantity: 1 });
213
212
  };
214
213
  ```
215
214
 
package/dist/index.cjs CHANGED
@@ -20,10 +20,10 @@ function parseEventArgs(eventNameOrObject, eventParams) {
20
20
  }
21
21
 
22
22
  const TrackContext = React__default.createContext(null);
23
- const useTracker = () => {
23
+ const useReactEventTracking = () => {
24
24
  const ctx = React.useContext(TrackContext);
25
25
  if (!ctx) {
26
- throw new Error("useTracker must be used within TrackRoot");
26
+ throw new Error("useReactEventTracking must be used within TrackRoot");
27
27
  }
28
28
  return ctx;
29
29
  };
@@ -33,7 +33,7 @@ const TrackRootComponent = ({ onEvent, children, filter, transform }) => {
33
33
  const onEventRef = useFreshRef(onEvent);
34
34
  const filterRef = useFreshRef(filter);
35
35
  const transformRef = useFreshRef(transform);
36
- function sendEvent(eventNameOrObject, eventParams) {
36
+ function track(eventNameOrObject, eventParams) {
37
37
  const { eventName, params: incomingParams } = parseEventArgs(
38
38
  eventNameOrObject,
39
39
  eventParams
@@ -68,20 +68,19 @@ const TrackRootComponent = ({ onEvent, children, filter, transform }) => {
68
68
  }
69
69
  }
70
70
  if (parentCtx) {
71
- parentCtx.sendEvent(eventName, incomingParams);
71
+ parentCtx.track(eventName, incomingParams);
72
72
  }
73
73
  }
74
- const sendEventCached = React.useCallback(sendEvent, [parentCtx]);
75
- const value = React.useMemo(() => ({ sendEvent: sendEventCached }), [sendEventCached]);
74
+ const value = React.useMemo(() => ({ track }), [parentCtx]);
76
75
  return /* @__PURE__ */ React__default.createElement(TrackContext.Provider, { value }, children);
77
76
  };
78
- const factory = (onEvent, filter, transform) => {
77
+ const factory = (args) => {
79
78
  return (props) => /* @__PURE__ */ React__default.createElement(
80
79
  TrackRootComponent,
81
80
  {
82
- onEvent,
83
- filter,
84
- transform,
81
+ onEvent: args.onEvent,
82
+ filter: args.filter,
83
+ transform: args.transform,
85
84
  ...props
86
85
  }
87
86
  );
@@ -91,21 +90,20 @@ const TrackProvider = ({
91
90
  params,
92
91
  children
93
92
  }) => {
94
- const ctx = useTracker();
93
+ const ctx = useReactEventTracking();
95
94
  const paramsRef = useFreshRef(params);
96
- function sendEvent(eventNameOrObject, eventParams) {
95
+ function track(eventNameOrObject, eventParams) {
97
96
  const { eventName, params: incomingParams } = parseEventArgs(
98
97
  eventNameOrObject,
99
98
  eventParams
100
99
  );
101
100
  const currentParams = paramsRef.current;
102
- ctx.sendEvent(eventName, {
101
+ ctx.track(eventName, {
103
102
  ...currentParams,
104
103
  ...incomingParams
105
104
  });
106
105
  }
107
- const sendEventCached = React.useCallback(sendEvent, [ctx]);
108
- const value = React.useMemo(() => ({ sendEvent: sendEventCached }), [sendEventCached]);
106
+ const value = React.useMemo(() => ({ track }), [ctx]);
109
107
  return /* @__PURE__ */ React__default.createElement(TrackContext.Provider, { value }, children);
110
108
  };
111
109
  function useFreshRef(data) {
@@ -115,7 +113,7 @@ function useFreshRef(data) {
115
113
  }
116
114
 
117
115
  function useMountEvent(eventNameOrObject, eventParams) {
118
- const { sendEvent } = useTracker();
116
+ const { track } = useReactEventTracking();
119
117
  const counterRef = React.useRef(0);
120
118
  const { eventName, params } = parseEventArgs(eventNameOrObject, eventParams);
121
119
  React.useEffect(() => {
@@ -123,11 +121,11 @@ function useMountEvent(eventNameOrObject, eventParams) {
123
121
  return;
124
122
  }
125
123
  counterRef.current++;
126
- sendEvent(eventName, params);
124
+ track(eventName, params);
127
125
  }, []);
128
126
  }
129
127
 
130
128
  exports.TrackProvider = TrackProvider;
131
129
  exports.TrackRoot = TrackRoot;
132
130
  exports.useMountEvent = useMountEvent;
133
- exports.useTracker = useTracker;
131
+ exports.useReactEventTracking = useReactEventTracking;
package/dist/index.d.cts CHANGED
@@ -3,8 +3,8 @@ import { PropsWithChildren } from 'react';
3
3
 
4
4
  type EventParams<T extends Record<string, any> = Record<string, any>> = T;
5
5
  interface TrackContextValue {
6
- sendEvent(eventName: string, params?: EventParams): void;
7
- sendEvent(event: EventObject): void;
6
+ track(eventName: string, params?: EventParams): void;
7
+ track(event: EventObject): void;
8
8
  }
9
9
  type EventObject = {
10
10
  eventName: string;
@@ -17,14 +17,18 @@ type TransformedEvent = {
17
17
  };
18
18
  type EventTransformer = (eventName: string, params: EventParams) => TransformedEvent;
19
19
 
20
- declare const useTracker: () => TrackContextValue;
20
+ declare const useReactEventTracking: () => TrackContextValue;
21
21
  type TrackRootProps = PropsWithChildren<{
22
22
  onEvent: (eventName: string, params: EventParams) => void;
23
23
  filter?: EventFilter;
24
24
  transform?: EventTransformer;
25
25
  }>;
26
26
  declare const TrackRoot: (({ onEvent, children, filter, transform }: TrackRootProps) => react_jsx_runtime.JSX.Element) & {
27
- factory: (onEvent: (eventName: string, params?: EventParams) => void, filter?: EventFilter, transform?: EventTransformer) => (props: Omit<TrackRootProps, "onEvent" | "filter" | "transform">) => react_jsx_runtime.JSX.Element;
27
+ factory: (args: {
28
+ onEvent: (eventName: string, params?: EventParams) => void;
29
+ filter?: EventFilter;
30
+ transform?: EventTransformer;
31
+ }) => (props: Omit<TrackRootProps, "onEvent" | "filter" | "transform">) => react_jsx_runtime.JSX.Element;
28
32
  };
29
33
  declare const TrackProvider: <T extends Record<string, any>>({ params, children }: PropsWithChildren<{
30
34
  params: EventParams<T>;
@@ -33,4 +37,4 @@ declare const TrackProvider: <T extends Record<string, any>>({ params, children
33
37
  declare function useMountEvent(eventName: string, params?: EventParams): void;
34
38
  declare function useMountEvent(event: EventObject): void;
35
39
 
36
- export { TrackProvider, TrackRoot, useMountEvent, useTracker };
40
+ export { TrackProvider, TrackRoot, useMountEvent, useReactEventTracking };
package/dist/index.d.mts CHANGED
@@ -3,8 +3,8 @@ import { PropsWithChildren } from 'react';
3
3
 
4
4
  type EventParams<T extends Record<string, any> = Record<string, any>> = T;
5
5
  interface TrackContextValue {
6
- sendEvent(eventName: string, params?: EventParams): void;
7
- sendEvent(event: EventObject): void;
6
+ track(eventName: string, params?: EventParams): void;
7
+ track(event: EventObject): void;
8
8
  }
9
9
  type EventObject = {
10
10
  eventName: string;
@@ -17,14 +17,18 @@ type TransformedEvent = {
17
17
  };
18
18
  type EventTransformer = (eventName: string, params: EventParams) => TransformedEvent;
19
19
 
20
- declare const useTracker: () => TrackContextValue;
20
+ declare const useReactEventTracking: () => TrackContextValue;
21
21
  type TrackRootProps = PropsWithChildren<{
22
22
  onEvent: (eventName: string, params: EventParams) => void;
23
23
  filter?: EventFilter;
24
24
  transform?: EventTransformer;
25
25
  }>;
26
26
  declare const TrackRoot: (({ onEvent, children, filter, transform }: TrackRootProps) => react_jsx_runtime.JSX.Element) & {
27
- factory: (onEvent: (eventName: string, params?: EventParams) => void, filter?: EventFilter, transform?: EventTransformer) => (props: Omit<TrackRootProps, "onEvent" | "filter" | "transform">) => react_jsx_runtime.JSX.Element;
27
+ factory: (args: {
28
+ onEvent: (eventName: string, params?: EventParams) => void;
29
+ filter?: EventFilter;
30
+ transform?: EventTransformer;
31
+ }) => (props: Omit<TrackRootProps, "onEvent" | "filter" | "transform">) => react_jsx_runtime.JSX.Element;
28
32
  };
29
33
  declare const TrackProvider: <T extends Record<string, any>>({ params, children }: PropsWithChildren<{
30
34
  params: EventParams<T>;
@@ -33,4 +37,4 @@ declare const TrackProvider: <T extends Record<string, any>>({ params, children
33
37
  declare function useMountEvent(eventName: string, params?: EventParams): void;
34
38
  declare function useMountEvent(event: EventObject): void;
35
39
 
36
- export { TrackProvider, TrackRoot, useMountEvent, useTracker };
40
+ export { TrackProvider, TrackRoot, useMountEvent, useReactEventTracking };
package/dist/index.d.ts CHANGED
@@ -3,8 +3,8 @@ import { PropsWithChildren } from 'react';
3
3
 
4
4
  type EventParams<T extends Record<string, any> = Record<string, any>> = T;
5
5
  interface TrackContextValue {
6
- sendEvent(eventName: string, params?: EventParams): void;
7
- sendEvent(event: EventObject): void;
6
+ track(eventName: string, params?: EventParams): void;
7
+ track(event: EventObject): void;
8
8
  }
9
9
  type EventObject = {
10
10
  eventName: string;
@@ -17,14 +17,18 @@ type TransformedEvent = {
17
17
  };
18
18
  type EventTransformer = (eventName: string, params: EventParams) => TransformedEvent;
19
19
 
20
- declare const useTracker: () => TrackContextValue;
20
+ declare const useReactEventTracking: () => TrackContextValue;
21
21
  type TrackRootProps = PropsWithChildren<{
22
22
  onEvent: (eventName: string, params: EventParams) => void;
23
23
  filter?: EventFilter;
24
24
  transform?: EventTransformer;
25
25
  }>;
26
26
  declare const TrackRoot: (({ onEvent, children, filter, transform }: TrackRootProps) => react_jsx_runtime.JSX.Element) & {
27
- factory: (onEvent: (eventName: string, params?: EventParams) => void, filter?: EventFilter, transform?: EventTransformer) => (props: Omit<TrackRootProps, "onEvent" | "filter" | "transform">) => react_jsx_runtime.JSX.Element;
27
+ factory: (args: {
28
+ onEvent: (eventName: string, params?: EventParams) => void;
29
+ filter?: EventFilter;
30
+ transform?: EventTransformer;
31
+ }) => (props: Omit<TrackRootProps, "onEvent" | "filter" | "transform">) => react_jsx_runtime.JSX.Element;
28
32
  };
29
33
  declare const TrackProvider: <T extends Record<string, any>>({ params, children }: PropsWithChildren<{
30
34
  params: EventParams<T>;
@@ -33,4 +37,4 @@ declare const TrackProvider: <T extends Record<string, any>>({ params, children
33
37
  declare function useMountEvent(eventName: string, params?: EventParams): void;
34
38
  declare function useMountEvent(event: EventObject): void;
35
39
 
36
- export { TrackProvider, TrackRoot, useMountEvent, useTracker };
40
+ export { TrackProvider, TrackRoot, useMountEvent, useReactEventTracking };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import React, { useContext, useCallback, useMemo, useRef, useEffect } from 'react';
1
+ import React, { useContext, useMemo, useRef, useEffect } from 'react';
2
2
 
3
3
  function parseEventArgs(eventNameOrObject, eventParams) {
4
4
  if (typeof eventNameOrObject === "object") {
@@ -14,10 +14,10 @@ function parseEventArgs(eventNameOrObject, eventParams) {
14
14
  }
15
15
 
16
16
  const TrackContext = React.createContext(null);
17
- const useTracker = () => {
17
+ const useReactEventTracking = () => {
18
18
  const ctx = useContext(TrackContext);
19
19
  if (!ctx) {
20
- throw new Error("useTracker must be used within TrackRoot");
20
+ throw new Error("useReactEventTracking must be used within TrackRoot");
21
21
  }
22
22
  return ctx;
23
23
  };
@@ -27,7 +27,7 @@ const TrackRootComponent = ({ onEvent, children, filter, transform }) => {
27
27
  const onEventRef = useFreshRef(onEvent);
28
28
  const filterRef = useFreshRef(filter);
29
29
  const transformRef = useFreshRef(transform);
30
- function sendEvent(eventNameOrObject, eventParams) {
30
+ function track(eventNameOrObject, eventParams) {
31
31
  const { eventName, params: incomingParams } = parseEventArgs(
32
32
  eventNameOrObject,
33
33
  eventParams
@@ -62,20 +62,19 @@ const TrackRootComponent = ({ onEvent, children, filter, transform }) => {
62
62
  }
63
63
  }
64
64
  if (parentCtx) {
65
- parentCtx.sendEvent(eventName, incomingParams);
65
+ parentCtx.track(eventName, incomingParams);
66
66
  }
67
67
  }
68
- const sendEventCached = useCallback(sendEvent, [parentCtx]);
69
- const value = useMemo(() => ({ sendEvent: sendEventCached }), [sendEventCached]);
68
+ const value = useMemo(() => ({ track }), [parentCtx]);
70
69
  return /* @__PURE__ */ React.createElement(TrackContext.Provider, { value }, children);
71
70
  };
72
- const factory = (onEvent, filter, transform) => {
71
+ const factory = (args) => {
73
72
  return (props) => /* @__PURE__ */ React.createElement(
74
73
  TrackRootComponent,
75
74
  {
76
- onEvent,
77
- filter,
78
- transform,
75
+ onEvent: args.onEvent,
76
+ filter: args.filter,
77
+ transform: args.transform,
79
78
  ...props
80
79
  }
81
80
  );
@@ -85,21 +84,20 @@ const TrackProvider = ({
85
84
  params,
86
85
  children
87
86
  }) => {
88
- const ctx = useTracker();
87
+ const ctx = useReactEventTracking();
89
88
  const paramsRef = useFreshRef(params);
90
- function sendEvent(eventNameOrObject, eventParams) {
89
+ function track(eventNameOrObject, eventParams) {
91
90
  const { eventName, params: incomingParams } = parseEventArgs(
92
91
  eventNameOrObject,
93
92
  eventParams
94
93
  );
95
94
  const currentParams = paramsRef.current;
96
- ctx.sendEvent(eventName, {
95
+ ctx.track(eventName, {
97
96
  ...currentParams,
98
97
  ...incomingParams
99
98
  });
100
99
  }
101
- const sendEventCached = useCallback(sendEvent, [ctx]);
102
- const value = useMemo(() => ({ sendEvent: sendEventCached }), [sendEventCached]);
100
+ const value = useMemo(() => ({ track }), [ctx]);
103
101
  return /* @__PURE__ */ React.createElement(TrackContext.Provider, { value }, children);
104
102
  };
105
103
  function useFreshRef(data) {
@@ -109,7 +107,7 @@ function useFreshRef(data) {
109
107
  }
110
108
 
111
109
  function useMountEvent(eventNameOrObject, eventParams) {
112
- const { sendEvent } = useTracker();
110
+ const { track } = useReactEventTracking();
113
111
  const counterRef = useRef(0);
114
112
  const { eventName, params } = parseEventArgs(eventNameOrObject, eventParams);
115
113
  useEffect(() => {
@@ -117,8 +115,8 @@ function useMountEvent(eventNameOrObject, eventParams) {
117
115
  return;
118
116
  }
119
117
  counterRef.current++;
120
- sendEvent(eventName, params);
118
+ track(eventName, params);
121
119
  }, []);
122
120
  }
123
121
 
124
- export { TrackProvider, TrackRoot, useMountEvent, useTracker };
122
+ export { TrackProvider, TrackRoot, useMountEvent, useReactEventTracking };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-event-tracking",
3
- "version": "1.0.9",
3
+ "version": "1.0.10",
4
4
  "files": [
5
5
  "dist"
6
6
  ],