{"version":3,"file":"index.cjs","sources":["../src/initAmplitude.ts","../src/useTrackOnChange.ts","../src/useTrackOnMount.ts","../src/useTrackOnUpdate.ts"],"sourcesContent":["import { init } from '@amplitude/analytics-browser';\nimport { BrowserOptions } from '@amplitude/analytics-types';\n\n/**\n * Wrapper for initialization Amplitude\n *\n * @param {string} apiKey\n * @param {string} userId\n * @param {BrowserOptions} options\n *\n */\n\nexport const initAmplitude = (apiKey: string, userId?: string, options?: BrowserOptions) => {\n\tinit(apiKey, userId, options);\n};\n","import { DependencyList, useEffect, useState } from 'react';\nimport { track } from '@amplitude/analytics-browser';\nimport { EventOptions, Result } from '@amplitude/analytics-types';\nimport isEqual from 'lodash.isequal';\n\n/**\n * The hook is called after mounting a component or changing any of the values in the array. (deep comparison is used)\n *\n * @param {string} eventInput\n * @param {DependencyList} dependencies\n * @param {Record<string, unknown>} eventProperties\n * @param {EventOptions} eventOptions\n *\n * @returns `{ event: Event, code: number, message: string }`\n *\n */\n\nexport const useTrackOnChange = (\n\teventInput: string,\n\tdependencies: DependencyList,\n\teventProperties?: Record<string, unknown> | undefined,\n\teventOptions?: EventOptions | undefined,\n) => {\n\tconst [currentDependencies, setCurrentDependencies] = useState<DependencyList>([]);\n\tconst [result, setResult] = useState<Partial<Result>>({ event: undefined, code: undefined, message: undefined });\n\n\tif (!isEqual(currentDependencies, dependencies)) {\n\t\tsetCurrentDependencies(dependencies);\n\t}\n\n\tuseEffect(() => {\n\t\ttrack(eventInput, eventProperties, eventOptions).promise.then((data) => {\n\t\t\tsetResult(data);\n\t\t});\n\t}, [currentDependencies]);\n\n\treturn result;\n};\n","import { useState, useEffect } from 'react';\nimport { track } from '@amplitude/analytics-browser';\nimport { EventOptions, Result } from '@amplitude/analytics-types';\n\n/**\n * Hook is called after the component is mounted\n * Analogue of componentDidMount\n *\n * @param {string} eventInput\n * @param {Record<string, unknown>} eventProperties\n * @param {EventOptions} eventOptions\n *\n * @returns `{ event: Event, code: number, message: string }`\n *\n */\n\nexport const useTrackOnMount = (\n\teventInput: string,\n\teventProperties?: Record<string, unknown> | undefined,\n\teventOptions?: EventOptions | undefined,\n) => {\n\tconst [result, setResult] = useState<Partial<Result>>({ event: undefined, code: undefined, message: undefined });\n\n\tuseEffect(() => {\n\t\ttrack(eventInput, eventProperties, eventOptions).promise.then((trackResult) => {\n\t\t\tsetResult(trackResult);\n\t\t});\n\t}, []);\n\n\treturn result;\n};\n","import { DependencyList, useCallback, useEffect, useState, useRef } from 'react';\nimport { track } from '@amplitude/analytics-browser';\nimport { EventOptions, Result } from '@amplitude/analytics-types';\nimport isEqual from 'lodash.isequal';\n\nconst useComponentDidUpdate = (effect: (...args: unknown[]) => unknown, dependencies: DependencyList) => {\n\tconst hasMounted = useRef<boolean>(false);\n\n\tconst memoized = useCallback(effect, dependencies);\n\n\tuseEffect(() => {\n\t\tif (!hasMounted.current) {\n\t\t\thasMounted.current = true;\n\t\t\treturn;\n\t\t}\n\t\tmemoized();\n\t}, [memoized]);\n};\n\n/**\n * The hook is called after changing any of the values in the array. (deep comparison is used)\n * Analogue of componentDidUpdate\n *\n * @param {string} eventInput\n * @param {DependencyList} dependencies\n * @param {Record<string, unknown>} eventProperties\n * @param {EventOptions} eventOptions\n *\n * @returns `{ event: Event, code: number, message: string }`\n *\n */\n\nexport const useTrackOnUpdate = (\n\teventInput: string,\n\tdependencies: DependencyList,\n\teventProperties?: Record<string, unknown> | undefined,\n\teventOptions?: EventOptions | undefined,\n) => {\n\tconst [currentDependencies, setCurrentValue] = useState<DependencyList>([]);\n\tconst [result, setResult] = useState<Partial<Result>>({ event: undefined, code: undefined, message: undefined });\n\n\tif (!isEqual(currentDependencies, dependencies)) {\n\t\tsetCurrentValue(dependencies);\n\t}\n\n\tuseComponentDidUpdate(() => {\n\t\ttrack(eventInput, eventProperties, eventOptions).promise.then((data) => {\n\t\t\tsetResult(data);\n\t\t});\n\t}, [currentDependencies]);\n\n\treturn result;\n};\n"],"names":["apiKey","userId","options","init","eventInput","dependencies","eventProperties","eventOptions","useState","currentDependencies","_useState","setCurrentDependencies","event","undefined","code","message","result","_useState2","setResult","isEqual","useEffect","track","promise","then","data","trackResult","setCurrentValue","effect","hasMounted","useRef","useCallback","current","memoized","useComponentDidUpdate"],"mappings":"+MAY6B,SAACA,EAAgBC,EAAiBC,GAC9DC,OAAKH,EAAQC,EAAQC,EACtB,2BCGgC,SAC/BE,EACAC,EACAC,EACAC,GAEA,IAAsDC,EAAAA,EAAQA,SAAiB,IAAxEC,EAAmBC,EAAA,GAAEC,EAAsBD,EAAA,KACtBF,EAAAA,SAA0B,CAAEI,WAAOC,EAAWC,UAAMD,EAAWE,aAASF,IAA7FG,EAAMC,EAAA,GAAEC,EAASD,EAAA,GAYxB,OAVKE,EAAAA,QAAQV,EAAqBJ,IACjCM,EAAuBN,GAGxBe,EAASA,UAAC,WACTC,EAAKA,MAACjB,EAAYE,EAAiBC,GAAce,QAAQC,KAAK,SAACC,GAC9DN,EAAUM,EACX,EACD,EAAG,CAACf,IAEGO,CACR,0BCrB+B,SAC9BZ,EACAE,EACAC,GAEA,IAAAG,EAA4BF,WAA0B,CAAEI,WAAOC,EAAWC,UAAMD,EAAWE,aAASF,IAA7FG,EAAMN,EAAA,GAAEQ,EAASR,EAAA,GAQxB,OANAU,YAAU,WACTC,EAAAA,MAAMjB,EAAYE,EAAiBC,GAAce,QAAQC,KAAK,SAACE,GAC9DP,EAAUO,EACX,EACD,EAAG,KAGJ,2BCEgC,SAC/BrB,EACAC,EACAC,EACAC,GAEA,IAA+CC,EAAAA,EAAQA,SAAiB,IAAjEC,OAAqBiB,EAAehB,EAAA,KACfF,WAA0B,CAAEI,WAAOC,EAAWC,UAAMD,EAAWE,aAASF,IAA7FG,EAAMC,EAAA,GAAEC,EAEfD,EAAA,GAUA,OAVKE,EAAAA,QAAQV,EAAqBJ,IACjCqB,EAAgBrB,GArCY,SAACsB,EAAyCtB,GACvE,IAAgBuB,EAAGC,EAAAA,QAAgB,KAElBC,EAAAA,YAqCK,WACrBT,EAAAA,MAAMjB,EAAYE,EAAiBC,GAAce,QAAQC,KAAK,SAACC,GAC9DN,EAAUM,EACX,EACD,EAzCqCnB,GAErCe,YAAU,WACJQ,EAAWG,QAIhBC,IAHCJ,EAAWG,SAAU,CAIvB,EAAG,CAACC,GACL,CA4BCC,CAAsB,EAInB,CAACxB,KAGL"}