Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@goodhood/tracking

Package Overview
Dependencies
Maintainers
6
Versions
35
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@goodhood/tracking - npm Package Compare versions

Comparing version
2.1.1
to
2.1.2
+3
-0
lib/index.esm.js

@@ -26,2 +26,5 @@ import { createContext, useContext, useMemo, useCallback, useEffect, forwardRef } from 'react';

const map = useMemo(() => pageMapping.find(m => m.selector.test(location.pathname)), [location.pathname, pageMapping]);
if (baseEvent && !baseEvent?.debug_mode) {
baseEvent.debug_mode = undefined;
}
return useCallback((event, payload) => {

@@ -28,0 +31,0 @@ window.dataLayer = window.dataLayer || [];

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"index.esm.js","sources":["../src/context.ts","../src/hooks/use_track.ts","../src/hooks/use_track_page_view.ts","../src/page_view.tsx","../src/utils.ts","../src/provider.tsx"],"sourcesContent":["import { createContext } from 'react';\nimport { BaseEvent, PageMap } from './types';\n\nexport type TTrackingContext = {\n baseEvent?: BaseEvent,\n pageMapping: PageMap[],\n hasAnalyticsStorageConsent: boolean,\n hasGoogleTagManagerConsent: boolean,\n hasAdStorageConsent: boolean\n};\n\nexport const TrackingContext = createContext<TTrackingContext>({\n pageMapping: [],\n hasAnalyticsStorageConsent: false,\n hasGoogleTagManagerConsent: false,\n hasAdStorageConsent: false,\n});\n\nexport const TrackingProvider = TrackingContext.Provider;\n","import { useCallback, useMemo, useContext } from 'react';\n// eslint-disable-next-line import/no-cycle\nimport {\n ClickEvent,\n PageViewEvent,\n RemoveEvent,\n EditEvent,\n ErrorEvent,\n ReactEvent,\n SearchEvent,\n SwipeEvent,\n ViewEvent,\n} from '../types';\nimport { useLocation } from 'react-router';\n// eslint-disable-next-line import/no-cycle\nimport { TrackingContext } from '../context';\nimport { getLogger } from '@goodhood/helpers';\n\nconst log = getLogger('@goodhood/tracking', { collapsed: true });\nexport const useTrackingContext = () => useContext(TrackingContext);\n\ndeclare const window: Window & {\n dataLayer: Record<string, unknown>[];\n};\n\n\ntype TrackEventMap = {\n 'click': ClickEvent;\n 'page_view': PageViewEvent;\n 'remove': RemoveEvent;\n 'edit': EditEvent;\n 'error': ErrorEvent;\n 'react': ReactEvent;\n 'search': SearchEvent;\n 'swipe': SwipeEvent;\n 'view': ViewEvent;\n};\n\nexport type TrackFunction =\n <K extends keyof TrackEventMap>(event: K, payload: TrackEventMap[K]) => void;\n\n\nexport const useTrack = (): TrackFunction => {\n const {\n baseEvent,\n pageMapping,\n } = useTrackingContext();\n const location = useLocation();\n const map = useMemo(\n () => pageMapping.find((m) => m.selector.test(location.pathname)),\n [location.pathname, pageMapping]);\n\n return useCallback((event, payload) => {\n window.dataLayer = window.dataLayer || [];\n const trackingData = {\n ...baseEvent,\n section: map?.section,\n page_name: map?.page_name,\n ...payload,\n };\n log('tracking to dataLayer', event, trackingData);\n window.dataLayer.push({\n event,\n ...trackingData,\n });\n }, [baseEvent, map]);\n};\n","import { useLocation } from 'react-router';\nimport { useEffect } from 'react';\nimport { useTrack, useTrackingContext } from './use_track';\n\nexport const useTrackPageView = () => {\n const location = useLocation();\n const track = useTrack();\n const { pageMapping } = useTrackingContext();\n\n useEffect(() => {\n const match = pageMapping.find((m) => m.selector.test(location.pathname));\n if (match?.page_track) {\n track('page_view', {\n page_name: match.page_name,\n });\n }\n }, [location]);\n};\n","/* eslint-disable react/jsx-no-useless-fragment */\nimport { PropsWithChildren } from 'react';\nimport { useTrackPageView } from './hooks/use_track_page_view';\n\nexport const PageView = ({ children }:PropsWithChildren) => {\n useTrackPageView();\n return <>{children}</>;\n};\n","declare const window: Window & {\n dataLayer: Record<string, unknown>[];\n gtag: Gtag.Gtag;\n};\nexport const setupGTM = () => {\n if (!document || document.querySelector('.gtm-script')) return;\n const script = document.createElement('script');\n script.className = 'gtm-script';\n script.innerHTML = `\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n `;\n document.head.appendChild(script);\n};\nexport const getConsentState = (consentState: boolean) => (consentState ? 'granted' : 'denied');\n\nexport const setup = (defaultAdStorageConsent = false, defaultAnalyticsStorageConstent = false) => {\n setupGTM();\n if (window !== undefined && window.gtag !== undefined) {\n gtag('consent', 'default', {\n ad_storage: getConsentState(defaultAdStorageConsent),\n analytics_storage: getConsentState(defaultAnalyticsStorageConstent),\n });\n\n gtag('js', new Date());\n }\n};\n\nexport const getScriptSource = (id: string) => {\n const source = new URL('/gtm.js', 'https://www.googletagmanager.com');\n source.searchParams.set('id', id);\n return source.toString();\n};\n","import { forwardRef, PropsWithChildren, useEffect, useMemo } from 'react';\nimport Script from 'react-load-script';\nimport { TrackingProvider } from './context';\nimport { PageView } from './page_view';\nimport { BaseEvent, PageMap } from './types';\nimport { setup, getScriptSource, getConsentState } from './utils';\nimport { useTrack, TrackFunction } from '@/src/hooks/use_track';\n\ntype TrackingProviderProps = PropsWithChildren<{\n hasAnalyticsStorageConsent?: boolean;\n hasGoogleTagManagerConsent?: boolean;\n hasAdStorageConsent?: boolean;\n baseEvent: BaseEvent;\n pageMapping: PageMap[];\n gtmId: string;\n}>;\nexport const Provider:React.FC<TrackingProviderProps> = ({\n hasAnalyticsStorageConsent = false,\n hasGoogleTagManagerConsent = false,\n hasAdStorageConsent = false,\n baseEvent,\n pageMapping,\n gtmId,\n children,\n}) => {\n const context = useMemo(() => ({\n baseEvent,\n pageMapping,\n hasAnalyticsStorageConsent,\n hasGoogleTagManagerConsent,\n hasAdStorageConsent,\n }),\n [\n baseEvent,\n pageMapping,\n hasAnalyticsStorageConsent,\n hasGoogleTagManagerConsent,\n hasAdStorageConsent,\n ]);\n useEffect(() => {\n if (window !== undefined && window.gtag !== undefined) {\n gtag('consent', 'update',\n {\n ad_storage: getConsentState(hasAdStorageConsent),\n analytics_storage: getConsentState(hasAnalyticsStorageConsent),\n });\n }\n }, [hasAnalyticsStorageConsent, hasAdStorageConsent]);\n\n return (\n <TrackingProvider value={context}>\n <PageView>\n {hasGoogleTagManagerConsent\n && (\n <Script\n url={getScriptSource(gtmId)}\n onCreate={() => setup(hasAdStorageConsent, hasAnalyticsStorageConsent)}\n async\n />\n )}\n {children}\n </PageView>\n </TrackingProvider>\n\n );\n};\n\nexport const withTrack = <TProps extends Record<string, unknown>, TRef = unknown>(\n Component: React.ComponentType<TProps & { track: TrackFunction }>,\n) => forwardRef<TRef, TProps>((props, ref) => {\n const track = useTrack();\n return <Component {...props} ref={ref} track={track} />;\n });\n"],"names":["TrackingContext","createContext","pageMapping","hasAnalyticsStorageConsent","hasGoogleTagManagerConsent","hasAdStorageConsent","TrackingProvider","Provider","log","getLogger","collapsed","useTrackingContext","useContext","useTrack","baseEvent","location","useLocation","map","useMemo","find","m","selector","test","pathname","useCallback","event","payload","window","dataLayer","trackingData","section","page_name","push","useTrackPageView","track","useEffect","match","page_track","PageView","_ref","children","_jsx","_Fragment","setupGTM","document","querySelector","script","createElement","className","innerHTML","head","appendChild","getConsentState","consentState","setup","defaultAdStorageConsent","arguments","length","undefined","defaultAnalyticsStorageConstent","gtag","ad_storage","analytics_storage","Date","getScriptSource","id","source","URL","searchParams","set","toString","gtmId","context","value","_jsxs","Script","url","onCreate","async","withTrack","Component","forwardRef","props","ref"],"mappings":"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"}
{"version":3,"file":"index.esm.js","sources":["../src/context.ts","../src/hooks/use_track.ts","../src/hooks/use_track_page_view.ts","../src/page_view.tsx","../src/utils.ts","../src/provider.tsx"],"sourcesContent":["import { createContext } from 'react';\nimport { BaseEvent, PageMap } from './types';\n\nexport type TTrackingContext = {\n baseEvent?: BaseEvent,\n pageMapping: PageMap[],\n hasAnalyticsStorageConsent: boolean,\n hasGoogleTagManagerConsent: boolean,\n hasAdStorageConsent: boolean\n};\n\nexport const TrackingContext = createContext<TTrackingContext>({\n pageMapping: [],\n hasAnalyticsStorageConsent: false,\n hasGoogleTagManagerConsent: false,\n hasAdStorageConsent: false,\n});\n\nexport const TrackingProvider = TrackingContext.Provider;\n","import { useCallback, useMemo, useContext } from 'react';\n// eslint-disable-next-line import/no-cycle\nimport {\n ClickEvent,\n PageViewEvent,\n RemoveEvent,\n EditEvent,\n ErrorEvent,\n ReactEvent,\n SearchEvent,\n SwipeEvent,\n ViewEvent,\n} from '../types';\nimport { useLocation } from 'react-router';\n// eslint-disable-next-line import/no-cycle\nimport { TrackingContext } from '../context';\nimport { getLogger } from '@goodhood/helpers';\n\nconst log = getLogger('@goodhood/tracking', { collapsed: true });\nexport const useTrackingContext = () => useContext(TrackingContext);\n\ndeclare const window: Window & {\n dataLayer: Record<string, unknown>[];\n};\n\n\ntype TrackEventMap = {\n 'click': ClickEvent;\n 'page_view': PageViewEvent;\n 'remove': RemoveEvent;\n 'edit': EditEvent;\n 'error': ErrorEvent;\n 'react': ReactEvent;\n 'search': SearchEvent;\n 'swipe': SwipeEvent;\n 'view': ViewEvent;\n};\n\nexport type TrackFunction =\n <K extends keyof TrackEventMap>(event: K, payload: TrackEventMap[K]) => void;\n\n\nexport const useTrack = (): TrackFunction => {\n const {\n baseEvent,\n pageMapping,\n } = useTrackingContext();\n const location = useLocation();\n const map = useMemo(\n () => pageMapping.find((m) => m.selector.test(location.pathname)),\n [location.pathname, pageMapping]);\n\n if (baseEvent && !baseEvent?.debug_mode) {\n baseEvent.debug_mode = undefined;\n }\n return useCallback((event, payload) => {\n window.dataLayer = window.dataLayer || [];\n const trackingData = {\n ...baseEvent,\n section: map?.section,\n page_name: map?.page_name,\n ...payload,\n };\n log('tracking to dataLayer', event, trackingData);\n window.dataLayer.push({\n event,\n ...trackingData,\n });\n }, [baseEvent, map]);\n};\n","import { useLocation } from 'react-router';\nimport { useEffect } from 'react';\nimport { useTrack, useTrackingContext } from './use_track';\n\nexport const useTrackPageView = () => {\n const location = useLocation();\n const track = useTrack();\n const { pageMapping } = useTrackingContext();\n\n useEffect(() => {\n const match = pageMapping.find((m) => m.selector.test(location.pathname));\n if (match?.page_track) {\n track('page_view', {\n page_name: match.page_name,\n });\n }\n }, [location]);\n};\n","/* eslint-disable react/jsx-no-useless-fragment */\nimport { PropsWithChildren } from 'react';\nimport { useTrackPageView } from './hooks/use_track_page_view';\n\nexport const PageView = ({ children }:PropsWithChildren) => {\n useTrackPageView();\n return <>{children}</>;\n};\n","declare const window: Window & {\n dataLayer: Record<string, unknown>[];\n gtag: Gtag.Gtag;\n};\nexport const setupGTM = () => {\n if (!document || document.querySelector('.gtm-script')) return;\n const script = document.createElement('script');\n script.className = 'gtm-script';\n script.innerHTML = `\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n `;\n document.head.appendChild(script);\n};\nexport const getConsentState = (consentState: boolean) => (consentState ? 'granted' : 'denied');\n\nexport const setup = (defaultAdStorageConsent = false, defaultAnalyticsStorageConstent = false) => {\n setupGTM();\n if (window !== undefined && window.gtag !== undefined) {\n gtag('consent', 'default', {\n ad_storage: getConsentState(defaultAdStorageConsent),\n analytics_storage: getConsentState(defaultAnalyticsStorageConstent),\n });\n\n gtag('js', new Date());\n }\n};\n\nexport const getScriptSource = (id: string) => {\n const source = new URL('/gtm.js', 'https://www.googletagmanager.com');\n source.searchParams.set('id', id);\n return source.toString();\n};\n","import { forwardRef, PropsWithChildren, useEffect, useMemo } from 'react';\nimport Script from 'react-load-script';\nimport { TrackingProvider } from './context';\nimport { PageView } from './page_view';\nimport { BaseEvent, PageMap } from './types';\nimport { setup, getScriptSource, getConsentState } from './utils';\nimport { useTrack, TrackFunction } from '@/src/hooks/use_track';\n\ntype TrackingProviderProps = PropsWithChildren<{\n hasAnalyticsStorageConsent?: boolean;\n hasGoogleTagManagerConsent?: boolean;\n hasAdStorageConsent?: boolean;\n baseEvent: BaseEvent;\n pageMapping: PageMap[];\n gtmId: string;\n}>;\nexport const Provider:React.FC<TrackingProviderProps> = ({\n hasAnalyticsStorageConsent = false,\n hasGoogleTagManagerConsent = false,\n hasAdStorageConsent = false,\n baseEvent,\n pageMapping,\n gtmId,\n children,\n}) => {\n const context = useMemo(() => ({\n baseEvent,\n pageMapping,\n hasAnalyticsStorageConsent,\n hasGoogleTagManagerConsent,\n hasAdStorageConsent,\n }),\n [\n baseEvent,\n pageMapping,\n hasAnalyticsStorageConsent,\n hasGoogleTagManagerConsent,\n hasAdStorageConsent,\n ]);\n useEffect(() => {\n if (window !== undefined && window.gtag !== undefined) {\n gtag('consent', 'update',\n {\n ad_storage: getConsentState(hasAdStorageConsent),\n analytics_storage: getConsentState(hasAnalyticsStorageConsent),\n });\n }\n }, [hasAnalyticsStorageConsent, hasAdStorageConsent]);\n\n return (\n <TrackingProvider value={context}>\n <PageView>\n {hasGoogleTagManagerConsent\n && (\n <Script\n url={getScriptSource(gtmId)}\n onCreate={() => setup(hasAdStorageConsent, hasAnalyticsStorageConsent)}\n async\n />\n )}\n {children}\n </PageView>\n </TrackingProvider>\n\n );\n};\n\nexport const withTrack = <TProps extends Record<string, unknown>, TRef = unknown>(\n Component: React.ComponentType<TProps & { track: TrackFunction }>,\n) => forwardRef<TRef, TProps>((props, ref) => {\n const track = useTrack();\n return <Component {...props} ref={ref} track={track} />;\n });\n"],"names":["TrackingContext","createContext","pageMapping","hasAnalyticsStorageConsent","hasGoogleTagManagerConsent","hasAdStorageConsent","TrackingProvider","Provider","log","getLogger","collapsed","useTrackingContext","useContext","useTrack","baseEvent","location","useLocation","map","useMemo","find","m","selector","test","pathname","debug_mode","undefined","useCallback","event","payload","window","dataLayer","trackingData","section","page_name","push","useTrackPageView","track","useEffect","match","page_track","PageView","_ref","children","_jsx","_Fragment","setupGTM","document","querySelector","script","createElement","className","innerHTML","head","appendChild","getConsentState","consentState","setup","defaultAdStorageConsent","arguments","length","defaultAnalyticsStorageConstent","gtag","ad_storage","analytics_storage","Date","getScriptSource","id","source","URL","searchParams","set","toString","gtmId","context","value","_jsxs","Script","url","onCreate","async","withTrack","Component","forwardRef","props","ref"],"mappings":"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"}

@@ -34,2 +34,5 @@ 'use strict';

const map = react.useMemo(() => pageMapping.find(m => m.selector.test(location.pathname)), [location.pathname, pageMapping]);
if (baseEvent && !baseEvent?.debug_mode) {
baseEvent.debug_mode = undefined;
}
return react.useCallback((event, payload) => {

@@ -36,0 +39,0 @@ window.dataLayer = window.dataLayer || [];

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sources":["../src/context.ts","../src/hooks/use_track.ts","../src/hooks/use_track_page_view.ts","../src/page_view.tsx","../src/utils.ts","../src/provider.tsx"],"sourcesContent":["import { createContext } from 'react';\nimport { BaseEvent, PageMap } from './types';\n\nexport type TTrackingContext = {\n baseEvent?: BaseEvent,\n pageMapping: PageMap[],\n hasAnalyticsStorageConsent: boolean,\n hasGoogleTagManagerConsent: boolean,\n hasAdStorageConsent: boolean\n};\n\nexport const TrackingContext = createContext<TTrackingContext>({\n pageMapping: [],\n hasAnalyticsStorageConsent: false,\n hasGoogleTagManagerConsent: false,\n hasAdStorageConsent: false,\n});\n\nexport const TrackingProvider = TrackingContext.Provider;\n","import { useCallback, useMemo, useContext } from 'react';\n// eslint-disable-next-line import/no-cycle\nimport {\n ClickEvent,\n PageViewEvent,\n RemoveEvent,\n EditEvent,\n ErrorEvent,\n ReactEvent,\n SearchEvent,\n SwipeEvent,\n ViewEvent,\n} from '../types';\nimport { useLocation } from 'react-router';\n// eslint-disable-next-line import/no-cycle\nimport { TrackingContext } from '../context';\nimport { getLogger } from '@goodhood/helpers';\n\nconst log = getLogger('@goodhood/tracking', { collapsed: true });\nexport const useTrackingContext = () => useContext(TrackingContext);\n\ndeclare const window: Window & {\n dataLayer: Record<string, unknown>[];\n};\n\n\ntype TrackEventMap = {\n 'click': ClickEvent;\n 'page_view': PageViewEvent;\n 'remove': RemoveEvent;\n 'edit': EditEvent;\n 'error': ErrorEvent;\n 'react': ReactEvent;\n 'search': SearchEvent;\n 'swipe': SwipeEvent;\n 'view': ViewEvent;\n};\n\nexport type TrackFunction =\n <K extends keyof TrackEventMap>(event: K, payload: TrackEventMap[K]) => void;\n\n\nexport const useTrack = (): TrackFunction => {\n const {\n baseEvent,\n pageMapping,\n } = useTrackingContext();\n const location = useLocation();\n const map = useMemo(\n () => pageMapping.find((m) => m.selector.test(location.pathname)),\n [location.pathname, pageMapping]);\n\n return useCallback((event, payload) => {\n window.dataLayer = window.dataLayer || [];\n const trackingData = {\n ...baseEvent,\n section: map?.section,\n page_name: map?.page_name,\n ...payload,\n };\n log('tracking to dataLayer', event, trackingData);\n window.dataLayer.push({\n event,\n ...trackingData,\n });\n }, [baseEvent, map]);\n};\n","import { useLocation } from 'react-router';\nimport { useEffect } from 'react';\nimport { useTrack, useTrackingContext } from './use_track';\n\nexport const useTrackPageView = () => {\n const location = useLocation();\n const track = useTrack();\n const { pageMapping } = useTrackingContext();\n\n useEffect(() => {\n const match = pageMapping.find((m) => m.selector.test(location.pathname));\n if (match?.page_track) {\n track('page_view', {\n page_name: match.page_name,\n });\n }\n }, [location]);\n};\n","/* eslint-disable react/jsx-no-useless-fragment */\nimport { PropsWithChildren } from 'react';\nimport { useTrackPageView } from './hooks/use_track_page_view';\n\nexport const PageView = ({ children }:PropsWithChildren) => {\n useTrackPageView();\n return <>{children}</>;\n};\n","declare const window: Window & {\n dataLayer: Record<string, unknown>[];\n gtag: Gtag.Gtag;\n};\nexport const setupGTM = () => {\n if (!document || document.querySelector('.gtm-script')) return;\n const script = document.createElement('script');\n script.className = 'gtm-script';\n script.innerHTML = `\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n `;\n document.head.appendChild(script);\n};\nexport const getConsentState = (consentState: boolean) => (consentState ? 'granted' : 'denied');\n\nexport const setup = (defaultAdStorageConsent = false, defaultAnalyticsStorageConstent = false) => {\n setupGTM();\n if (window !== undefined && window.gtag !== undefined) {\n gtag('consent', 'default', {\n ad_storage: getConsentState(defaultAdStorageConsent),\n analytics_storage: getConsentState(defaultAnalyticsStorageConstent),\n });\n\n gtag('js', new Date());\n }\n};\n\nexport const getScriptSource = (id: string) => {\n const source = new URL('/gtm.js', 'https://www.googletagmanager.com');\n source.searchParams.set('id', id);\n return source.toString();\n};\n","import { forwardRef, PropsWithChildren, useEffect, useMemo } from 'react';\nimport Script from 'react-load-script';\nimport { TrackingProvider } from './context';\nimport { PageView } from './page_view';\nimport { BaseEvent, PageMap } from './types';\nimport { setup, getScriptSource, getConsentState } from './utils';\nimport { useTrack, TrackFunction } from '@/src/hooks/use_track';\n\ntype TrackingProviderProps = PropsWithChildren<{\n hasAnalyticsStorageConsent?: boolean;\n hasGoogleTagManagerConsent?: boolean;\n hasAdStorageConsent?: boolean;\n baseEvent: BaseEvent;\n pageMapping: PageMap[];\n gtmId: string;\n}>;\nexport const Provider:React.FC<TrackingProviderProps> = ({\n hasAnalyticsStorageConsent = false,\n hasGoogleTagManagerConsent = false,\n hasAdStorageConsent = false,\n baseEvent,\n pageMapping,\n gtmId,\n children,\n}) => {\n const context = useMemo(() => ({\n baseEvent,\n pageMapping,\n hasAnalyticsStorageConsent,\n hasGoogleTagManagerConsent,\n hasAdStorageConsent,\n }),\n [\n baseEvent,\n pageMapping,\n hasAnalyticsStorageConsent,\n hasGoogleTagManagerConsent,\n hasAdStorageConsent,\n ]);\n useEffect(() => {\n if (window !== undefined && window.gtag !== undefined) {\n gtag('consent', 'update',\n {\n ad_storage: getConsentState(hasAdStorageConsent),\n analytics_storage: getConsentState(hasAnalyticsStorageConsent),\n });\n }\n }, [hasAnalyticsStorageConsent, hasAdStorageConsent]);\n\n return (\n <TrackingProvider value={context}>\n <PageView>\n {hasGoogleTagManagerConsent\n && (\n <Script\n url={getScriptSource(gtmId)}\n onCreate={() => setup(hasAdStorageConsent, hasAnalyticsStorageConsent)}\n async\n />\n )}\n {children}\n </PageView>\n </TrackingProvider>\n\n );\n};\n\nexport const withTrack = <TProps extends Record<string, unknown>, TRef = unknown>(\n Component: React.ComponentType<TProps & { track: TrackFunction }>,\n) => forwardRef<TRef, TProps>((props, ref) => {\n const track = useTrack();\n return <Component {...props} ref={ref} track={track} />;\n });\n"],"names":["TrackingContext","createContext","pageMapping","hasAnalyticsStorageConsent","hasGoogleTagManagerConsent","hasAdStorageConsent","TrackingProvider","Provider","log","getLogger","collapsed","useTrackingContext","useContext","useTrack","baseEvent","location","useLocation","map","useMemo","find","m","selector","test","pathname","useCallback","event","payload","window","dataLayer","trackingData","section","page_name","push","useTrackPageView","track","useEffect","match","page_track","PageView","_ref","children","_jsx","_Fragment","setupGTM","document","querySelector","script","createElement","className","innerHTML","head","appendChild","getConsentState","consentState","setup","defaultAdStorageConsent","arguments","length","undefined","defaultAnalyticsStorageConstent","gtag","ad_storage","analytics_storage","Date","getScriptSource","id","source","URL","searchParams","set","toString","gtmId","context","value","_jsxs","Script","url","onCreate","async","withTrack","Component","forwardRef","props","ref"],"mappings":"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"}
{"version":3,"file":"index.js","sources":["../src/context.ts","../src/hooks/use_track.ts","../src/hooks/use_track_page_view.ts","../src/page_view.tsx","../src/utils.ts","../src/provider.tsx"],"sourcesContent":["import { createContext } from 'react';\nimport { BaseEvent, PageMap } from './types';\n\nexport type TTrackingContext = {\n baseEvent?: BaseEvent,\n pageMapping: PageMap[],\n hasAnalyticsStorageConsent: boolean,\n hasGoogleTagManagerConsent: boolean,\n hasAdStorageConsent: boolean\n};\n\nexport const TrackingContext = createContext<TTrackingContext>({\n pageMapping: [],\n hasAnalyticsStorageConsent: false,\n hasGoogleTagManagerConsent: false,\n hasAdStorageConsent: false,\n});\n\nexport const TrackingProvider = TrackingContext.Provider;\n","import { useCallback, useMemo, useContext } from 'react';\n// eslint-disable-next-line import/no-cycle\nimport {\n ClickEvent,\n PageViewEvent,\n RemoveEvent,\n EditEvent,\n ErrorEvent,\n ReactEvent,\n SearchEvent,\n SwipeEvent,\n ViewEvent,\n} from '../types';\nimport { useLocation } from 'react-router';\n// eslint-disable-next-line import/no-cycle\nimport { TrackingContext } from '../context';\nimport { getLogger } from '@goodhood/helpers';\n\nconst log = getLogger('@goodhood/tracking', { collapsed: true });\nexport const useTrackingContext = () => useContext(TrackingContext);\n\ndeclare const window: Window & {\n dataLayer: Record<string, unknown>[];\n};\n\n\ntype TrackEventMap = {\n 'click': ClickEvent;\n 'page_view': PageViewEvent;\n 'remove': RemoveEvent;\n 'edit': EditEvent;\n 'error': ErrorEvent;\n 'react': ReactEvent;\n 'search': SearchEvent;\n 'swipe': SwipeEvent;\n 'view': ViewEvent;\n};\n\nexport type TrackFunction =\n <K extends keyof TrackEventMap>(event: K, payload: TrackEventMap[K]) => void;\n\n\nexport const useTrack = (): TrackFunction => {\n const {\n baseEvent,\n pageMapping,\n } = useTrackingContext();\n const location = useLocation();\n const map = useMemo(\n () => pageMapping.find((m) => m.selector.test(location.pathname)),\n [location.pathname, pageMapping]);\n\n if (baseEvent && !baseEvent?.debug_mode) {\n baseEvent.debug_mode = undefined;\n }\n return useCallback((event, payload) => {\n window.dataLayer = window.dataLayer || [];\n const trackingData = {\n ...baseEvent,\n section: map?.section,\n page_name: map?.page_name,\n ...payload,\n };\n log('tracking to dataLayer', event, trackingData);\n window.dataLayer.push({\n event,\n ...trackingData,\n });\n }, [baseEvent, map]);\n};\n","import { useLocation } from 'react-router';\nimport { useEffect } from 'react';\nimport { useTrack, useTrackingContext } from './use_track';\n\nexport const useTrackPageView = () => {\n const location = useLocation();\n const track = useTrack();\n const { pageMapping } = useTrackingContext();\n\n useEffect(() => {\n const match = pageMapping.find((m) => m.selector.test(location.pathname));\n if (match?.page_track) {\n track('page_view', {\n page_name: match.page_name,\n });\n }\n }, [location]);\n};\n","/* eslint-disable react/jsx-no-useless-fragment */\nimport { PropsWithChildren } from 'react';\nimport { useTrackPageView } from './hooks/use_track_page_view';\n\nexport const PageView = ({ children }:PropsWithChildren) => {\n useTrackPageView();\n return <>{children}</>;\n};\n","declare const window: Window & {\n dataLayer: Record<string, unknown>[];\n gtag: Gtag.Gtag;\n};\nexport const setupGTM = () => {\n if (!document || document.querySelector('.gtm-script')) return;\n const script = document.createElement('script');\n script.className = 'gtm-script';\n script.innerHTML = `\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n `;\n document.head.appendChild(script);\n};\nexport const getConsentState = (consentState: boolean) => (consentState ? 'granted' : 'denied');\n\nexport const setup = (defaultAdStorageConsent = false, defaultAnalyticsStorageConstent = false) => {\n setupGTM();\n if (window !== undefined && window.gtag !== undefined) {\n gtag('consent', 'default', {\n ad_storage: getConsentState(defaultAdStorageConsent),\n analytics_storage: getConsentState(defaultAnalyticsStorageConstent),\n });\n\n gtag('js', new Date());\n }\n};\n\nexport const getScriptSource = (id: string) => {\n const source = new URL('/gtm.js', 'https://www.googletagmanager.com');\n source.searchParams.set('id', id);\n return source.toString();\n};\n","import { forwardRef, PropsWithChildren, useEffect, useMemo } from 'react';\nimport Script from 'react-load-script';\nimport { TrackingProvider } from './context';\nimport { PageView } from './page_view';\nimport { BaseEvent, PageMap } from './types';\nimport { setup, getScriptSource, getConsentState } from './utils';\nimport { useTrack, TrackFunction } from '@/src/hooks/use_track';\n\ntype TrackingProviderProps = PropsWithChildren<{\n hasAnalyticsStorageConsent?: boolean;\n hasGoogleTagManagerConsent?: boolean;\n hasAdStorageConsent?: boolean;\n baseEvent: BaseEvent;\n pageMapping: PageMap[];\n gtmId: string;\n}>;\nexport const Provider:React.FC<TrackingProviderProps> = ({\n hasAnalyticsStorageConsent = false,\n hasGoogleTagManagerConsent = false,\n hasAdStorageConsent = false,\n baseEvent,\n pageMapping,\n gtmId,\n children,\n}) => {\n const context = useMemo(() => ({\n baseEvent,\n pageMapping,\n hasAnalyticsStorageConsent,\n hasGoogleTagManagerConsent,\n hasAdStorageConsent,\n }),\n [\n baseEvent,\n pageMapping,\n hasAnalyticsStorageConsent,\n hasGoogleTagManagerConsent,\n hasAdStorageConsent,\n ]);\n useEffect(() => {\n if (window !== undefined && window.gtag !== undefined) {\n gtag('consent', 'update',\n {\n ad_storage: getConsentState(hasAdStorageConsent),\n analytics_storage: getConsentState(hasAnalyticsStorageConsent),\n });\n }\n }, [hasAnalyticsStorageConsent, hasAdStorageConsent]);\n\n return (\n <TrackingProvider value={context}>\n <PageView>\n {hasGoogleTagManagerConsent\n && (\n <Script\n url={getScriptSource(gtmId)}\n onCreate={() => setup(hasAdStorageConsent, hasAnalyticsStorageConsent)}\n async\n />\n )}\n {children}\n </PageView>\n </TrackingProvider>\n\n );\n};\n\nexport const withTrack = <TProps extends Record<string, unknown>, TRef = unknown>(\n Component: React.ComponentType<TProps & { track: TrackFunction }>,\n) => forwardRef<TRef, TProps>((props, ref) => {\n const track = useTrack();\n return <Component {...props} ref={ref} track={track} />;\n });\n"],"names":["TrackingContext","createContext","pageMapping","hasAnalyticsStorageConsent","hasGoogleTagManagerConsent","hasAdStorageConsent","TrackingProvider","Provider","log","getLogger","collapsed","useTrackingContext","useContext","useTrack","baseEvent","location","useLocation","map","useMemo","find","m","selector","test","pathname","debug_mode","undefined","useCallback","event","payload","window","dataLayer","trackingData","section","page_name","push","useTrackPageView","track","useEffect","match","page_track","PageView","_ref","children","_jsx","_Fragment","setupGTM","document","querySelector","script","createElement","className","innerHTML","head","appendChild","getConsentState","consentState","setup","defaultAdStorageConsent","arguments","length","defaultAnalyticsStorageConstent","gtag","ad_storage","analytics_storage","Date","getScriptSource","id","source","URL","searchParams","set","toString","gtmId","context","value","_jsxs","Script","url","onCreate","async","withTrack","Component","forwardRef","props","ref"],"mappings":"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"}

@@ -33,6 +33,7 @@ export type BaseEvent = {

export type ClickEvent = InteractionEvent & Partial<ContentEvent> & Partial<PlanInfoEvent> & {
search_term: string;
search_term?: string;
click_name: string;
click_link: string;
content_position: string;
click_link?: string;
content_position?: string;
filter_category: string;
};

@@ -39,0 +40,0 @@ export type PageViewEvent = {

@@ -9,3 +9,3 @@ {

"bugs": "https://github.com/goodhood-eu/goodhood/issues",
"version": "2.1.1",
"version": "2.1.2",
"module": "lib/index.esm.js",

@@ -12,0 +12,0 @@ "main": "lib/index.js",