{"ast":null,"code":"\"use strict\";\n\nvar _slicedToArray = require(\"@babel/runtime/helpers/slicedToArray\");\n\nvar _s = $RefreshSig$();\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _router = require(\"../next-server/lib/router/router\");\n\nvar _router2 = require(\"./router\");\n\nvar cachedObserver;\nvar listeners = new Map();\nvar IntersectionObserver = true ? window.IntersectionObserver : null;\nvar prefetched = {};\n\nfunction getObserver() {\n  // Return shared instance of IntersectionObserver if already created\n  if (cachedObserver) {\n    return cachedObserver;\n  } // Only create shared IntersectionObserver if supported in browser\n\n\n  if (!IntersectionObserver) {\n    return undefined;\n  }\n\n  return cachedObserver = new IntersectionObserver(function (entries) {\n    entries.forEach(function (entry) {\n      if (!listeners.has(entry.target)) {\n        return;\n      }\n\n      var cb = listeners.get(entry.target);\n\n      if (entry.isIntersecting || entry.intersectionRatio > 0) {\n        cachedObserver.unobserve(entry.target);\n        listeners[\"delete\"](entry.target);\n        cb();\n      }\n    });\n  }, {\n    rootMargin: '200px'\n  });\n}\n\nvar listenToIntersections = function listenToIntersections(el, cb) {\n  var observer = getObserver();\n\n  if (!observer) {\n    return function () {};\n  }\n\n  observer.observe(el);\n  listeners.set(el, cb);\n  return function () {\n    try {\n      observer.unobserve(el);\n    } catch (err) {\n      console.error(err);\n    }\n\n    listeners[\"delete\"](el);\n  };\n};\n\nfunction prefetch(router, href, as, options) {\n  if (false) return;\n  if (!(0, _router.isLocalURL)(href)) return; // Prefetch the JSON page if asked (only in the client)\n  // We need to handle a prefetch error here since we may be\n  // loading with priority which can reject but we don't\n  // want to force navigation since this is only a prefetch\n\n  router.prefetch(href, as, options)[\"catch\"](function (err) {\n    if (true) {\n      // rethrow to show invalid URL errors\n      throw err;\n    }\n  }); // Join on an invalid URI character\n\n  prefetched[href + '%' + as] = true;\n}\n\nfunction isModifiedEvent(event) {\n  var target = event.currentTarget.target;\n  return target && target !== '_self' || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || // triggers resource download\n  event.nativeEvent && event.nativeEvent.which === 2;\n}\n\nfunction linkClicked(e, router, href, as, replace, shallow, scroll, locale) {\n  var nodeName = e.currentTarget.nodeName;\n\n  if (nodeName === 'A' && (isModifiedEvent(e) || !(0, _router.isLocalURL)(href))) {\n    // ignore click for browser’s default behavior\n    return;\n  }\n\n  e.preventDefault(); //  avoid scroll for urls with anchor refs\n\n  if (scroll == null) {\n    scroll = as.indexOf('#') < 0;\n  } // replace state instead of push if prop is present\n\n\n  router[replace ? 'replace' : 'push'](href, as, {\n    shallow: shallow,\n    locale: locale\n  }).then(function (success) {\n    if (!success) return;\n\n    if (scroll) {\n      window.scrollTo(0, 0);\n      document.body.focus();\n    }\n  });\n}\n\nfunction Link(props) {\n  _s();\n\n  if (true) {\n    var createPropError = function createPropError(args) {\n      return new Error(\"Failed prop type: The prop `\".concat(args.key, \"` expects a \").concat(args.expected, \" in `<Link>`, but got `\").concat(args.actual, \"` instead.\") + (true ? \"\\nOpen your browser's console to view the Component stack trace.\" : ''));\n    }; // TypeScript trick for type-guarding:\n\n\n    var requiredPropsGuard = {\n      href: true\n    };\n    var requiredProps = Object.keys(requiredPropsGuard);\n    requiredProps.forEach(function (key) {\n      if (key === 'href') {\n        if (props[key] == null || typeof props[key] !== 'string' && typeof props[key] !== 'object') {\n          throw createPropError({\n            key: key,\n            expected: '`string` or `object`',\n            actual: props[key] === null ? 'null' : typeof props[key]\n          });\n        }\n      } else {\n        // TypeScript trick for type-guarding:\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        var _ = key;\n      }\n    }); // TypeScript trick for type-guarding:\n\n    var optionalPropsGuard = {\n      as: true,\n      replace: true,\n      scroll: true,\n      shallow: true,\n      passHref: true,\n      prefetch: true,\n      locale: true\n    };\n    var optionalProps = Object.keys(optionalPropsGuard);\n    optionalProps.forEach(function (key) {\n      var valType = typeof props[key];\n\n      if (key === 'as') {\n        if (props[key] && valType !== 'string' && valType !== 'object') {\n          throw createPropError({\n            key: key,\n            expected: '`string` or `object`',\n            actual: valType\n          });\n        }\n      } else if (key === 'locale') {\n        if (props[key] && valType !== 'string') {\n          throw createPropError({\n            key: key,\n            expected: '`string`',\n            actual: valType\n          });\n        }\n      } else if (key === 'replace' || key === 'scroll' || key === 'shallow' || key === 'passHref' || key === 'prefetch') {\n        if (props[key] != null && valType !== 'boolean') {\n          throw createPropError({\n            key: key,\n            expected: '`boolean`',\n            actual: valType\n          });\n        }\n      } else {\n        // TypeScript trick for type-guarding:\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        var _ = key;\n      }\n    }); // This hook is in a conditional but that is ok because `process.env.NODE_ENV` never changes\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n\n    var hasWarned = _react[\"default\"].useRef(false);\n\n    if (props.prefetch && !hasWarned.current) {\n      hasWarned.current = true;\n      console.warn('Next.js auto-prefetches automatically based on viewport. The prefetch attribute is no longer needed. More: https://err.sh/vercel/next.js/prefetch-true-deprecated');\n    }\n  }\n\n  var p = props.prefetch !== false;\n  var router = (0, _router2.useRouter)();\n  var pathname = router && router.pathname || '/';\n\n  var _react$default$useMem = _react[\"default\"].useMemo(function () {\n    var _ref = (0, _router.resolveHref)(pathname, props.href, true),\n        _ref2 = _slicedToArray(_ref, 2),\n        resolvedHref = _ref2[0],\n        resolvedAs = _ref2[1];\n\n    return {\n      href: resolvedHref,\n      as: props.as ? (0, _router.resolveHref)(pathname, props.as) : resolvedAs || resolvedHref\n    };\n  }, [pathname, props.href, props.as]),\n      href = _react$default$useMem.href,\n      as = _react$default$useMem.as;\n\n  var children = props.children,\n      replace = props.replace,\n      shallow = props.shallow,\n      scroll = props.scroll,\n      locale = props.locale; // Deprecated. Warning shown by propType check. If the children provided is a string (<Link>example</Link>) we wrap it in an <a> tag\n\n  if (typeof children === 'string') {\n    children = /*#__PURE__*/_react[\"default\"].createElement(\"a\", null, children);\n  } // This will return the first child, if multiple are provided it will throw an error\n\n\n  var child = _react.Children.only(children);\n\n  var childRef = child && typeof child === 'object' && child.ref;\n\n  var cleanup = _react[\"default\"].useRef();\n\n  var setRef = _react[\"default\"].useCallback(function (el) {\n    // cleanup previous event handlers\n    if (cleanup.current) {\n      cleanup.current();\n      cleanup.current = undefined;\n    }\n\n    if (p && IntersectionObserver && el && el.tagName && (0, _router.isLocalURL)(href)) {\n      // Join on an invalid URI character\n      var isPrefetched = prefetched[href + '%' + as];\n\n      if (!isPrefetched) {\n        cleanup.current = listenToIntersections(el, function () {\n          prefetch(router, href, as, {\n            locale: typeof locale !== 'undefined' ? locale : router && router.locale\n          });\n        });\n      }\n    }\n\n    if (childRef) {\n      if (typeof childRef === 'function') childRef(el);else if (typeof childRef === 'object') {\n        childRef.current = el;\n      }\n    }\n  }, [p, childRef, href, as, router, locale]);\n\n  var childProps = {\n    ref: setRef,\n    onClick: function onClick(e) {\n      if (child.props && typeof child.props.onClick === 'function') {\n        child.props.onClick(e);\n      }\n\n      if (!e.defaultPrevented) {\n        linkClicked(e, router, href, as, replace, shallow, scroll, locale);\n      }\n    }\n  };\n\n  if (p) {\n    childProps.onMouseEnter = function (e) {\n      if (!(0, _router.isLocalURL)(href)) return;\n\n      if (child.props && typeof child.props.onMouseEnter === 'function') {\n        child.props.onMouseEnter(e);\n      }\n\n      prefetch(router, href, as, {\n        priority: true\n      });\n    };\n  } // If child is an <a> tag and doesn't have a href attribute, or if the 'passHref' property is\n  // defined, we specify the current 'href', so that repetition is not needed by the user\n\n\n  if (props.passHref || child.type === 'a' && !('href' in child.props)) {\n    childProps.href = (0, _router.addBasePath)((0, _router.addLocale)(as, typeof locale !== 'undefined' ? locale : router && router.locale, router && router.defaultLocale));\n  }\n\n  return /*#__PURE__*/_react[\"default\"].cloneElement(child, childProps);\n}\n\n_s(Link, \"KTrcstNG+xXPZMSCSWIouwhlVnY=\");\n\n_c = Link;\nvar _default = Link;\nexports[\"default\"] = _default;\n\nvar _c;\n\n$RefreshReg$(_c, \"Link\");","map":{"version":3,"sources":["../../client/link.tsx"],"names":["listeners","IntersectionObserver","window","prefetched","cachedObserver","entries","entry","cb","rootMargin","listenToIntersections","observer","getObserver","console","router","err","href","event","target","e","nodeName","isModifiedEvent","scroll","as","replace","shallow","locale","success","document","args","key","expected","requiredPropsGuard","requiredProps","Object","props","createPropError","actual","_","optionalPropsGuard","passHref","prefetch","optionalProps","valType","hasWarned","React","p","pathname","resolvedAs","children","child","Children","childRef","cleanup","setRef","el","isPrefetched","childProps","ref","onClick","linkClicked","priority","Link"],"mappings":"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","sourcesContent":["import React, { Children } from 'react'\nimport { UrlObject } from 'url'\nimport {\n  addBasePath,\n  addLocale,\n  isLocalURL,\n  NextRouter,\n  PrefetchOptions,\n  resolveHref,\n} from '../next-server/lib/router/router'\nimport { useRouter } from './router'\n\ntype Url = string | UrlObject\ntype RequiredKeys<T> = {\n  [K in keyof T]-?: {} extends Pick<T, K> ? never : K\n}[keyof T]\ntype OptionalKeys<T> = {\n  [K in keyof T]-?: {} extends Pick<T, K> ? K : never\n}[keyof T]\n\nexport type LinkProps = {\n  href: Url\n  as?: Url\n  replace?: boolean\n  scroll?: boolean\n  shallow?: boolean\n  passHref?: boolean\n  prefetch?: boolean\n  locale?: string | false\n}\ntype LinkPropsRequired = RequiredKeys<LinkProps>\ntype LinkPropsOptional = OptionalKeys<LinkProps>\n\nlet cachedObserver: IntersectionObserver\nconst listeners = new Map<Element, () => void>()\nconst IntersectionObserver =\n  typeof window !== 'undefined' ? window.IntersectionObserver : null\nconst prefetched: { [cacheKey: string]: boolean } = {}\n\nfunction getObserver(): IntersectionObserver | undefined {\n  // Return shared instance of IntersectionObserver if already created\n  if (cachedObserver) {\n    return cachedObserver\n  }\n\n  // Only create shared IntersectionObserver if supported in browser\n  if (!IntersectionObserver) {\n    return undefined\n  }\n\n  return (cachedObserver = new IntersectionObserver(\n    (entries) => {\n      entries.forEach((entry) => {\n        if (!listeners.has(entry.target)) {\n          return\n        }\n\n        const cb = listeners.get(entry.target)!\n        if (entry.isIntersecting || entry.intersectionRatio > 0) {\n          cachedObserver.unobserve(entry.target)\n          listeners.delete(entry.target)\n          cb()\n        }\n      })\n    },\n    { rootMargin: '200px' }\n  ))\n}\n\nconst listenToIntersections = (el: Element, cb: () => void) => {\n  const observer = getObserver()\n  if (!observer) {\n    return () => {}\n  }\n\n  observer.observe(el)\n  listeners.set(el, cb)\n  return () => {\n    try {\n      observer.unobserve(el)\n    } catch (err) {\n      console.error(err)\n    }\n    listeners.delete(el)\n  }\n}\n\nfunction prefetch(\n  router: NextRouter,\n  href: string,\n  as: string,\n  options?: PrefetchOptions\n): void {\n  if (typeof window === 'undefined') return\n  if (!isLocalURL(href)) return\n  // Prefetch the JSON page if asked (only in the client)\n  // We need to handle a prefetch error here since we may be\n  // loading with priority which can reject but we don't\n  // want to force navigation since this is only a prefetch\n  router.prefetch(href, as, options).catch((err) => {\n    if (process.env.NODE_ENV !== 'production') {\n      // rethrow to show invalid URL errors\n      throw err\n    }\n  })\n  // Join on an invalid URI character\n  prefetched[href + '%' + as] = true\n}\n\nfunction isModifiedEvent(event: React.MouseEvent) {\n  const { target } = event.currentTarget as HTMLAnchorElement\n  return (\n    (target && target !== '_self') ||\n    event.metaKey ||\n    event.ctrlKey ||\n    event.shiftKey ||\n    event.altKey || // triggers resource download\n    (event.nativeEvent && event.nativeEvent.which === 2)\n  )\n}\n\nfunction linkClicked(\n  e: React.MouseEvent,\n  router: NextRouter,\n  href: string,\n  as: string,\n  replace?: boolean,\n  shallow?: boolean,\n  scroll?: boolean,\n  locale?: string | false\n): void {\n  const { nodeName } = e.currentTarget\n\n  if (nodeName === 'A' && (isModifiedEvent(e) || !isLocalURL(href))) {\n    // ignore click for browser’s default behavior\n    return\n  }\n\n  e.preventDefault()\n\n  //  avoid scroll for urls with anchor refs\n  if (scroll == null) {\n    scroll = as.indexOf('#') < 0\n  }\n\n  // replace state instead of push if prop is present\n  router[replace ? 'replace' : 'push'](href, as, { shallow, locale }).then(\n    (success: boolean) => {\n      if (!success) return\n      if (scroll) {\n        window.scrollTo(0, 0)\n        document.body.focus()\n      }\n    }\n  )\n}\n\nfunction Link(props: React.PropsWithChildren<LinkProps>) {\n  if (process.env.NODE_ENV !== 'production') {\n    function createPropError(args: {\n      key: string\n      expected: string\n      actual: string\n    }) {\n      return new Error(\n        `Failed prop type: The prop \\`${args.key}\\` expects a ${args.expected} in \\`<Link>\\`, but got \\`${args.actual}\\` instead.` +\n          (typeof window !== 'undefined'\n            ? \"\\nOpen your browser's console to view the Component stack trace.\"\n            : '')\n      )\n    }\n\n    // TypeScript trick for type-guarding:\n    const requiredPropsGuard: Record<LinkPropsRequired, true> = {\n      href: true,\n    } as const\n    const requiredProps: LinkPropsRequired[] = Object.keys(\n      requiredPropsGuard\n    ) as LinkPropsRequired[]\n    requiredProps.forEach((key: LinkPropsRequired) => {\n      if (key === 'href') {\n        if (\n          props[key] == null ||\n          (typeof props[key] !== 'string' && typeof props[key] !== 'object')\n        ) {\n          throw createPropError({\n            key,\n            expected: '`string` or `object`',\n            actual: props[key] === null ? 'null' : typeof props[key],\n          })\n        }\n      } else {\n        // TypeScript trick for type-guarding:\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const _: never = key\n      }\n    })\n\n    // TypeScript trick for type-guarding:\n    const optionalPropsGuard: Record<LinkPropsOptional, true> = {\n      as: true,\n      replace: true,\n      scroll: true,\n      shallow: true,\n      passHref: true,\n      prefetch: true,\n      locale: true,\n    } as const\n    const optionalProps: LinkPropsOptional[] = Object.keys(\n      optionalPropsGuard\n    ) as LinkPropsOptional[]\n    optionalProps.forEach((key: LinkPropsOptional) => {\n      const valType = typeof props[key]\n\n      if (key === 'as') {\n        if (props[key] && valType !== 'string' && valType !== 'object') {\n          throw createPropError({\n            key,\n            expected: '`string` or `object`',\n            actual: valType,\n          })\n        }\n      } else if (key === 'locale') {\n        if (props[key] && valType !== 'string') {\n          throw createPropError({\n            key,\n            expected: '`string`',\n            actual: valType,\n          })\n        }\n      } else if (\n        key === 'replace' ||\n        key === 'scroll' ||\n        key === 'shallow' ||\n        key === 'passHref' ||\n        key === 'prefetch'\n      ) {\n        if (props[key] != null && valType !== 'boolean') {\n          throw createPropError({\n            key,\n            expected: '`boolean`',\n            actual: valType,\n          })\n        }\n      } else {\n        // TypeScript trick for type-guarding:\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const _: never = key\n      }\n    })\n\n    // This hook is in a conditional but that is ok because `process.env.NODE_ENV` never changes\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const hasWarned = React.useRef(false)\n    if (props.prefetch && !hasWarned.current) {\n      hasWarned.current = true\n      console.warn(\n        'Next.js auto-prefetches automatically based on viewport. The prefetch attribute is no longer needed. More: https://err.sh/vercel/next.js/prefetch-true-deprecated'\n      )\n    }\n  }\n  const p = props.prefetch !== false\n\n  const router = useRouter()\n  const pathname = (router && router.pathname) || '/'\n\n  const { href, as } = React.useMemo(() => {\n    const [resolvedHref, resolvedAs] = resolveHref(pathname, props.href, true)\n    return {\n      href: resolvedHref,\n      as: props.as\n        ? resolveHref(pathname, props.as)\n        : resolvedAs || resolvedHref,\n    }\n  }, [pathname, props.href, props.as])\n\n  let { children, replace, shallow, scroll, locale } = props\n\n  // Deprecated. Warning shown by propType check. If the children provided is a string (<Link>example</Link>) we wrap it in an <a> tag\n  if (typeof children === 'string') {\n    children = <a>{children}</a>\n  }\n\n  // This will return the first child, if multiple are provided it will throw an error\n  const child: any = Children.only(children)\n  const childRef: any = child && typeof child === 'object' && child.ref\n\n  const cleanup = React.useRef<() => void>()\n  const setRef = React.useCallback(\n    (el: Element) => {\n      // cleanup previous event handlers\n      if (cleanup.current) {\n        cleanup.current()\n        cleanup.current = undefined\n      }\n\n      if (p && IntersectionObserver && el && el.tagName && isLocalURL(href)) {\n        // Join on an invalid URI character\n        const isPrefetched = prefetched[href + '%' + as]\n        if (!isPrefetched) {\n          cleanup.current = listenToIntersections(el, () => {\n            prefetch(router, href, as, {\n              locale:\n                typeof locale !== 'undefined'\n                  ? locale\n                  : router && router.locale,\n            })\n          })\n        }\n      }\n\n      if (childRef) {\n        if (typeof childRef === 'function') childRef(el)\n        else if (typeof childRef === 'object') {\n          childRef.current = el\n        }\n      }\n    },\n    [p, childRef, href, as, router, locale]\n  )\n\n  const childProps: {\n    onMouseEnter?: React.MouseEventHandler\n    onClick: React.MouseEventHandler\n    href?: string\n    ref?: any\n  } = {\n    ref: setRef,\n    onClick: (e: React.MouseEvent) => {\n      if (child.props && typeof child.props.onClick === 'function') {\n        child.props.onClick(e)\n      }\n      if (!e.defaultPrevented) {\n        linkClicked(e, router, href, as, replace, shallow, scroll, locale)\n      }\n    },\n  }\n\n  if (p) {\n    childProps.onMouseEnter = (e: React.MouseEvent) => {\n      if (!isLocalURL(href)) return\n      if (child.props && typeof child.props.onMouseEnter === 'function') {\n        child.props.onMouseEnter(e)\n      }\n      prefetch(router, href, as, { priority: true })\n    }\n  }\n\n  // If child is an <a> tag and doesn't have a href attribute, or if the 'passHref' property is\n  // defined, we specify the current 'href', so that repetition is not needed by the user\n  if (props.passHref || (child.type === 'a' && !('href' in child.props))) {\n    childProps.href = addBasePath(\n      addLocale(\n        as,\n        typeof locale !== 'undefined' ? locale : router && router.locale,\n        router && router.defaultLocale\n      )\n    )\n  }\n\n  return React.cloneElement(child, childProps)\n}\n\nexport default Link\n"]},"metadata":{},"sourceType":"script"}