{"version":3,"sources":["../src/components/YandexMetrika.tsx","../src/hooks/usePageViews.tsx"],"names":["jsx","Script","jsxs","Fragment","usePathname","useSearchParams","useEffect"],"mappings":"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","file":"index.cjs","sourcesContent":["import Script from 'next/script'\n\nfunction YandexMetrikaTag({\n  yid,\n  clickmap = true,\n  trackLinks = true,\n  accurateTrackBounce = true,\n  webvisor = false,\n  strategy = 'afterInteractive',\n}: {\n  yid: number,\n  clickmap?: boolean,\n  trackLinks?: boolean,\n  accurateTrackBounce?: boolean,\n  webvisor?: boolean,\n  strategy?: 'lazyOnload' | 'afterInteractive' | 'beforeInteractive'\n}) {\n  return (\n    <Script id=\"yandex-metrika-tag\" strategy={strategy}>\n      {`\n        (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};\n        m[i].l=1*new Date();\n        for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}\n        k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})\n        (window, document, \"script\", \"https://mc.webvisor.org/metrika/tag_ww.js\", \"ym\");\n\n        ym(${yid}, \"init\", {\n            clickmap:${clickmap},\n            trackLinks:${trackLinks},\n            accurateTrackBounce:${accurateTrackBounce},\n            webvisor:${webvisor}\n        });\n      `}\n    </Script>\n  );\n}\n\nfunction YandexMetrikaPixel({ yid }: { yid: number }) {\n  const src = `https://mc.yandex.ru/watch/${yid}`;\n\n  return (\n    <noscript id=\"yandex-metrika-pixel\">\n      <div>\n        <img\n          src={src}\n          style={{ position: \"absolute\", left: \"-9999px\" }}\n          alt=\"\"\n        />\n      </div>\n    </noscript>\n  );\n}\n\nexport function YandexMetrika({\n  yid,\n  clickmap = true,\n  trackLinks = true,\n  accurateTrackBounce = true,\n  webvisor = false,\n  strategy = 'afterInteractive'\n}: {\n  yid?: number,\n  clickmap?: boolean,\n  trackLinks?: boolean,\n  accurateTrackBounce?: boolean,\n  webvisor?: boolean,\n  strategy?: 'lazyOnload' | 'afterInteractive' | 'beforeInteractive'\n}) {\n  yid = yid ?? Number(process.env.NEXT_PUBLIC_YANDEX_ID)\n\n  if (!yid) {\n    if (process.env.NODE_ENV !== 'production') {\n      // eslint-disable-next-line no-console\n      console.warn('Yandex Metrika ID is not set')\n    }\n    return null\n  }\n\n  return (\n    <>\n      <YandexMetrikaTag\n        yid={yid}\n        clickmap={clickmap}\n        trackLinks={trackLinks}\n        accurateTrackBounce={accurateTrackBounce}\n        webvisor={webvisor}\n        strategy={strategy}\n      />\n      <YandexMetrikaPixel yid={yid} />\n    </>\n  );\n}\n","'use client'\n\nimport { useEffect } from 'react'\nimport { usePathname, useSearchParams } from 'next/navigation'\n\ntype HitOptions = {\n  callback?: () => void\n  ctx?: object\n  params?: {\n    order_price?: number\n    currency?: string\n  }\n  referer?: string\n  title?: string\n}\n\ninterface UsePageViewsOptions {\n  ignoreHashChange?: boolean\n  disabled?: boolean\n}\n\ndeclare global {\n  interface Window {\n    ym?: (yid: number, method: string, url: string, options?: HitOptions) => void\n  }\n}\n\nconst trackPageView = (url: string, options?: HitOptions) => {\n  if (typeof window !== 'undefined' && window.ym) {\n    const yid = Number(process.env.NEXT_PUBLIC_YANDEX_ID)\n\n    if (!window.ym || !yid) {\n      return\n    }\n\n    // https://yandex.ru/support/metrica/code/counter-spa-setup.html\n    window.ym(yid, 'hit', url, {\n      ...options,\n      title: options?.title || document.title\n    })\n  }\n}\n\nexport function usePageViews({\n  ignoreHashChange = false,\n  disabled = false\n}: UsePageViewsOptions = {}) {\n  const pathname = usePathname()\n  const searchParams = useSearchParams()\n\n  useEffect(() => {\n    if (disabled) {\n      return\n    }\n\n    // Для App Router используем pathname и searchParams\n    const url = searchParams.toString()\n      ? `${pathname}?${searchParams.toString()}`\n      : pathname\n\n    trackPageView(url)\n  }, [pathname, searchParams, disabled])\n\n  useEffect(() => {\n    if (disabled || ignoreHashChange) {\n      return\n    }\n\n    const handleHashChange = () => {\n      if (typeof window !== 'undefined') {\n        trackPageView(window.location.pathname + window.location.search + window.location.hash)\n      }\n    }\n\n    if (typeof window !== 'undefined') {\n      window.addEventListener('hashchange', handleHashChange)\n      return () => window.removeEventListener('hashchange', handleHashChange)\n    }\n  }, [disabled, ignoreHashChange])\n}\n"]}