import { useStore } from 'App/mstore'; import React from 'react'; import { observer } from 'mobx-react-lite'; import { CodeBlock } from 'UI'; import DocLink from 'Shared/DocLink/DocLink'; import ToggleContent from 'Shared/ToggleContent'; import { useTranslation } from 'react-i18next'; function ProfilerDoc() { const { t } = useTranslation(); const { integrationsStore, projectsStore } = useStore(); const sites = projectsStore.list; const { siteId } = integrationsStore.integrations; const projectKey = siteId ? sites.find((site) => site.id === siteId)?.projectKey : sites[0]?.projectKey; const usage = `import OpenReplay from '@openreplay/tracker'; import trackerProfiler from '@openreplay/tracker-profiler'; //... const tracker = new OpenReplay({ projectKey: '${projectKey}' }); tracker.start() //... export const profiler = tracker.use(trackerProfiler()); //... const fn = profiler('call_name')(() => { //... }, thisArg); // thisArg is optional`; const usageCjs = `import OpenReplay from '@openreplay/tracker/cjs'; import trackerProfiler from '@openreplay/tracker-profiler/cjs'; //... const tracker = new OpenReplay({ projectKey: '${projectKey}' }); //... function SomeFunctionalComponent() { useEffect(() => { // or componentDidMount in case of Class approach tracker.start() }, []) //... export const profiler = tracker.use(trackerProfiler()); //... const fn = profiler('call_name')(() => { //... }, thisArg); // thisArg is optional }`; return (

{t('Profiler')}

{t( 'The profiler plugin allows you to measure your JS functions performance and capture both arguments and result for each function call', )} .
{t('Installation')}
{t('Usage')}

{t( 'Initialize the tracker and load the plugin into it. Then decorate any function inside your code with the generated function.', )}

{t('Usage')}
} second={} />
); } ProfilerDoc.displayName = 'ProfilerDoc'; export default observer(ProfilerDoc);