{"version":3,"file":"index.modern.mjs","sources":["../src/initAmplitude.ts","../src/useTrackOnMount.ts","../src/useTrackOnChange.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 { 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, 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 { 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":["initAmplitude","apiKey","userId","options","init","eventInput","eventProperties","eventOptions","result","setResult","useState","event","undefined","code","message","useEffect","track","promise","then","trackResult","useTrackOnChange","dependencies","currentDependencies","setCurrentDependencies","isEqual","data","useTrackOnUpdate","setCurrentValue","effect","hasMounted","useRef","memoized","useCallback","current","useComponentDidUpdate"],"mappings":"0KAYaA,MAAaA,EAAG,CAACC,EAAgBC,EAAiBC,KAC9DC,EAAKH,EAAQC,EAAQC,EACtB,ICE+B,CAC9BE,EACAC,EACAC,KAEA,MAAOC,EAAQC,GAAaC,EAA0B,CAAEC,WAAOC,EAAWC,UAAMD,EAAWE,aAASF,IAQpG,OANAG,EAAU,KACTC,EAAMX,EAAYC,EAAiBC,GAAcU,QAAQC,KAAMC,IAC9DV,EAAUU,EACX,EACD,EAAG,OCVyBC,EAAG,CAC/Bf,EACAgB,EACAf,EACAC,KAEA,MAAOe,EAAqBC,GAA0Bb,EAAyB,KACxEF,EAAQC,GAAaC,EAA0B,CAAEC,WAAOC,EAAWC,UAAMD,EAAWE,aAASF,IAYpG,OAVKY,EAAQF,EAAqBD,IACjCE,EAAuBF,GAGxBN,EAAU,KACTC,EAAMX,EAAYC,EAAiBC,GAAcU,QAAQC,KAAMO,IAC9DhB,EAAUgB,IACV,EACC,CAACH,IAEGd,GCJKkB,EAAmB,CAC/BrB,EACAgB,EACAf,EACAC,KAEA,MAAOe,EAAqBK,GAAmBjB,EAAyB,KACjEF,EAAQC,GAAaC,EAA0B,CAAEC,WAAOC,EAAWC,UAAMD,EAAWE,aAASF,IAYpG,OAVKY,EAAQF,EAAqBD,IACjCM,EAAgBN,GArCY,EAACO,EAAyCP,KACvE,MAAMQ,EAAaC,GAAgB,GAErBC,EAAGC,EAqCK,KACrBhB,EAAMX,EAAYC,EAAiBC,GAAcU,QAAQC,KAAMO,IAC9DhB,EAAUgB,IACV,EAxCmCJ,GAErCN,EAAU,KACJc,EAAWI,QAIhBF,IAHCF,EAAWI,SAAU,CAIvB,EAAG,CAACF,GAAS,EA6BbG,CAAsB,EAInB,CAACZ"}