{"ast":null,"code":"\"use strict\";\n\nvar _classCallCheck = require(\"@babel/runtime/helpers/classCallCheck\");\n\nvar _createClass = require(\"@babel/runtime/helpers/createClass\");\n\nvar _inherits = require(\"@babel/runtime/helpers/inherits\");\n\nvar _possibleConstructorReturn = require(\"@babel/runtime/helpers/possibleConstructorReturn\");\n\nvar _getPrototypeOf = require(\"@babel/runtime/helpers/getPrototypeOf\");\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _url = require(\"url\");\n\nvar _utils = require(\"../next-server/lib/utils\");\n\nvar _router = _interopRequireDefault(require(\"./router\"));\n\nvar _router2 = require(\"../next-server/lib/router/router\");\n\nfunction isLocal(href) {\n  var url = (0, _url.parse)(href, false, true);\n  var origin = (0, _url.parse)((0, _utils.getLocationOrigin)(), false, true);\n  return !url.host || url.protocol === origin.protocol && url.host === origin.host;\n}\n\nfunction memoizedFormatUrl(formatFunc) {\n  var lastHref = null;\n  var lastAs = null;\n  var lastResult = null;\n  return function (href, as) {\n    if (lastResult && href === lastHref && as === lastAs) {\n      return lastResult;\n    }\n\n    var result = formatFunc(href, as);\n    lastHref = href;\n    lastAs = as;\n    lastResult = result;\n    return result;\n  };\n}\n\nfunction formatUrl(url) {\n  return url && typeof url === 'object' ? (0, _utils.formatWithValidation)(url) : url;\n}\n\nvar observer;\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 (observer) {\n    return observer;\n  } // Only create shared IntersectionObserver if supported in browser\n\n\n  if (!IntersectionObserver) {\n    return undefined;\n  }\n\n  return observer = 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        observer.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\nvar Link = /*#__PURE__*/function (_react$Component) {\n  _inherits(Link, _react$Component);\n\n  var _super = _createSuper(Link);\n\n  function Link(props) {\n    var _this;\n\n    _classCallCheck(this, Link);\n\n    _this = _super.call(this, props);\n    _this.p = void 0;\n\n    _this.cleanUpListeners = function () {};\n\n    _this.formatUrls = memoizedFormatUrl(function (href, asHref) {\n      return {\n        href: (0, _router2.addBasePath)(formatUrl(href)),\n        as: asHref ? (0, _router2.addBasePath)(formatUrl(asHref)) : asHref\n      };\n    });\n\n    _this.linkClicked = function (e) {\n      var _e$currentTarget = e.currentTarget,\n          nodeName = _e$currentTarget.nodeName,\n          target = _e$currentTarget.target;\n\n      if (nodeName === 'A' && (target && target !== '_self' || e.metaKey || e.ctrlKey || e.shiftKey || e.nativeEvent && e.nativeEvent.which === 2)) {\n        // ignore click for new tab / new window behavior\n        return;\n      }\n\n      var _this$formatUrls = _this.formatUrls(_this.props.href, _this.props.as),\n          href = _this$formatUrls.href,\n          as = _this$formatUrls.as;\n\n      if (!isLocal(href)) {\n        // ignore click if it's outside our scope (e.g. https://google.com)\n        return;\n      }\n\n      var pathname = window.location.pathname;\n      href = (0, _url.resolve)(pathname, href);\n      as = as ? (0, _url.resolve)(pathname, as) : href;\n      e.preventDefault(); //  avoid scroll for urls with anchor refs\n\n      var scroll = _this.props.scroll;\n\n      if (scroll == null) {\n        scroll = as.indexOf('#') < 0;\n      } // replace state instead of push if prop is present\n\n\n      _router[\"default\"][_this.props.replace ? 'replace' : 'push'](href, as, {\n        shallow: _this.props.shallow\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\n    if (true) {\n      if (props.prefetch) {\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    _this.p = props.prefetch !== false;\n    return _this;\n  }\n\n  _createClass(Link, [{\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.cleanUpListeners();\n    }\n  }, {\n    key: \"getPaths\",\n    value: function getPaths() {\n      var pathname = window.location.pathname;\n\n      var _this$formatUrls2 = this.formatUrls(this.props.href, this.props.as),\n          parsedHref = _this$formatUrls2.href,\n          parsedAs = _this$formatUrls2.as;\n\n      var resolvedHref = (0, _url.resolve)(pathname, parsedHref);\n      return [resolvedHref, parsedAs ? (0, _url.resolve)(pathname, parsedAs) : resolvedHref];\n    }\n  }, {\n    key: \"handleRef\",\n    value: function handleRef(ref) {\n      var _this2 = this;\n\n      if (this.p && IntersectionObserver && ref && ref.tagName) {\n        this.cleanUpListeners();\n        var isPrefetched = prefetched[this.getPaths().join( // Join on an invalid URI character\n        '%')];\n\n        if (!isPrefetched) {\n          this.cleanUpListeners = listenToIntersections(ref, function () {\n            _this2.prefetch();\n          });\n        }\n      }\n    } // The function is memoized so that no extra lifecycles are needed\n    // as per https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html\n\n  }, {\n    key: \"prefetch\",\n    value: function prefetch(options) {\n      if (!this.p || false) return; // Prefetch the JSON page if asked (only in the client)\n\n      var paths = this.getPaths(); // 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[\"default\"].prefetch(paths[\n      /* href */\n      0], paths[\n      /* asPath */\n      1], options)[\"catch\"](function (err) {\n        if (true) {\n          // rethrow to show invalid URL errors\n          throw err;\n        }\n      });\n\n      prefetched[paths.join( // Join on an invalid URI character\n      '%')] = true;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this3 = this;\n\n      var children = this.props.children;\n\n      var _this$formatUrls3 = this.formatUrls(this.props.href, this.props.as),\n          href = _this$formatUrls3.href,\n          as = _this$formatUrls3.as; // 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\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 props = {\n        ref: function ref(el) {\n          _this3.handleRef(el);\n\n          if (child && typeof child === 'object' && child.ref) {\n            if (typeof child.ref === 'function') child.ref(el);else if (typeof child.ref === 'object') {\n              child.ref.current = el;\n            }\n          }\n        },\n        onMouseEnter: function onMouseEnter(e) {\n          if (child.props && typeof child.props.onMouseEnter === 'function') {\n            child.props.onMouseEnter(e);\n          }\n\n          _this3.prefetch({\n            priority: true\n          });\n        },\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            _this3.linkClicked(e);\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      if (this.props.passHref || child.type === 'a' && !('href' in child.props)) {\n        props.href = as || href;\n      } // Add the ending slash to the paths. So, we can serve the\n      // \"<page>/index.html\" directly.\n\n\n      if (process.env.__NEXT_EXPORT_TRAILING_SLASH) {\n        var rewriteUrlForNextExport = require('../next-server/lib/router/rewrite-url-for-export').rewriteUrlForNextExport;\n\n        if (props.href && typeof __NEXT_DATA__ !== 'undefined' && __NEXT_DATA__.nextExport) {\n          props.href = rewriteUrlForNextExport(props.href);\n        }\n      }\n\n      return _react[\"default\"].cloneElement(child, props);\n    }\n  }]);\n\n  return Link;\n}(_react.Component);\n\nif (true) {\n  var warn = (0, _utils.execOnce)(console.error); // This module gets removed by webpack.IgnorePlugin\n\n  var PropTypes = require('prop-types');\n\n  var exact = require('prop-types-exact'); // @ts-ignore the property is supported, when declaring it on the class it outputs an extra bit of code which is not needed.\n\n\n  Link.propTypes = exact({\n    href: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n    as: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n    prefetch: PropTypes.bool,\n    replace: PropTypes.bool,\n    shallow: PropTypes.bool,\n    passHref: PropTypes.bool,\n    scroll: PropTypes.bool,\n    children: PropTypes.oneOfType([PropTypes.element, function (props, propName) {\n      var value = props[propName];\n\n      if (typeof value === 'string') {\n        warn(\"Warning: You're using a string directly inside <Link>. This usage has been deprecated. Please add an <a> tag as child of <Link>\");\n      }\n\n      return null;\n    }]).isRequired\n  });\n}\n\nvar _default = Link;\nexports[\"default\"] = _default;","map":{"version":3,"sources":["../../client/link.tsx"],"names":["url","origin","lastHref","lastAs","lastResult","href","as","result","formatFunc","listeners","IntersectionObserver","window","prefetched","observer","entries","entry","cb","rootMargin","listenToIntersections","getObserver","console","Component","p","constructor","props","componentWillUnmount","getPaths","resolvedHref","parsedAs","handleRef","ref","isPrefetched","memoizedFormatUrl","formatUrl","asHref","e","nodeName","target","isLocal","scroll","Router","shallow","success","document","paths","err","render","children","child","Children","el","onMouseEnter","priority","onClick","process","rewriteUrlForNextExport","require","__NEXT_DATA__","React","warn","PropTypes","exact","Link","prefetch","replace","passHref","value"],"mappings":"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","sourcesContent":["declare const __NEXT_DATA__: any\n\nimport React, { Children, Component } from 'react'\nimport { parse, resolve, UrlObject } from 'url'\nimport { PrefetchOptions } from '../next-server/lib/router/router'\nimport {\n  execOnce,\n  formatWithValidation,\n  getLocationOrigin,\n} from '../next-server/lib/utils'\nimport Router from './router'\nimport { addBasePath } from '../next-server/lib/router/router'\n\nfunction isLocal(href: string): boolean {\n  const url = parse(href, false, true)\n  const origin = parse(getLocationOrigin(), false, true)\n\n  return (\n    !url.host || (url.protocol === origin.protocol && url.host === origin.host)\n  )\n}\n\ntype Url = string | UrlObject\ntype FormatResult = { href: string; as?: string }\n\nfunction memoizedFormatUrl(formatFunc: (href: Url, as?: Url) => FormatResult) {\n  let lastHref: null | Url = null\n  let lastAs: undefined | null | Url = null\n  let lastResult: null | FormatResult = null\n  return (href: Url, as?: Url) => {\n    if (lastResult && href === lastHref && as === lastAs) {\n      return lastResult\n    }\n\n    const result = formatFunc(href, as)\n    lastHref = href\n    lastAs = as\n    lastResult = result\n    return result\n  }\n}\n\nfunction formatUrl(url: Url): string {\n  return url && typeof url === 'object' ? formatWithValidation(url) : url\n}\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}\n\nlet observer: 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 (observer) {\n    return observer\n  }\n\n  // Only create shared IntersectionObserver if supported in browser\n  if (!IntersectionObserver) {\n    return undefined\n  }\n\n  return (observer = 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          observer.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\nclass Link extends Component<LinkProps> {\n  p: boolean\n\n  constructor(props: LinkProps) {\n    super(props)\n    if (process.env.NODE_ENV !== 'production') {\n      if (props.prefetch) {\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    this.p = props.prefetch !== false\n  }\n\n  cleanUpListeners = () => {}\n\n  componentWillUnmount(): void {\n    this.cleanUpListeners()\n  }\n\n  getPaths(): string[] {\n    const { pathname } = window.location\n    const { href: parsedHref, as: parsedAs } = this.formatUrls(\n      this.props.href,\n      this.props.as\n    )\n    const resolvedHref = resolve(pathname, parsedHref)\n    return [resolvedHref, parsedAs ? resolve(pathname, parsedAs) : resolvedHref]\n  }\n\n  handleRef(ref: Element): void {\n    if (this.p && IntersectionObserver && ref && ref.tagName) {\n      this.cleanUpListeners()\n\n      const isPrefetched =\n        prefetched[\n          this.getPaths().join(\n            // Join on an invalid URI character\n            '%'\n          )\n        ]\n      if (!isPrefetched) {\n        this.cleanUpListeners = listenToIntersections(ref, () => {\n          this.prefetch()\n        })\n      }\n    }\n  }\n\n  // The function is memoized so that no extra lifecycles are needed\n  // as per https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html\n  formatUrls = memoizedFormatUrl((href, asHref) => {\n    return {\n      href: addBasePath(formatUrl(href)),\n      as: asHref ? addBasePath(formatUrl(asHref)) : asHref,\n    }\n  })\n\n  linkClicked = (e: React.MouseEvent): void => {\n    const { nodeName, target } = e.currentTarget as HTMLAnchorElement\n    if (\n      nodeName === 'A' &&\n      ((target && target !== '_self') ||\n        e.metaKey ||\n        e.ctrlKey ||\n        e.shiftKey ||\n        (e.nativeEvent && e.nativeEvent.which === 2))\n    ) {\n      // ignore click for new tab / new window behavior\n      return\n    }\n\n    let { href, as } = this.formatUrls(this.props.href, this.props.as)\n\n    if (!isLocal(href)) {\n      // ignore click if it's outside our scope (e.g. https://google.com)\n      return\n    }\n\n    const { pathname } = window.location\n    href = resolve(pathname, href)\n    as = as ? resolve(pathname, as) : href\n\n    e.preventDefault()\n\n    //  avoid scroll for urls with anchor refs\n    let { scroll } = this.props\n    if (scroll == null) {\n      scroll = as.indexOf('#') < 0\n    }\n\n    // replace state instead of push if prop is present\n    Router[this.props.replace ? 'replace' : 'push'](href, as, {\n      shallow: this.props.shallow,\n    }).then((success: boolean) => {\n      if (!success) return\n      if (scroll) {\n        window.scrollTo(0, 0)\n        document.body.focus()\n      }\n    })\n  }\n\n  prefetch(options?: PrefetchOptions): void {\n    if (!this.p || typeof window === 'undefined') return\n    // Prefetch the JSON page if asked (only in the client)\n    const paths = this.getPaths()\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(paths[/* href */ 0], paths[/* asPath */ 1], options).catch(\n      (err) => {\n        if (process.env.NODE_ENV !== 'production') {\n          // rethrow to show invalid URL errors\n          throw err\n        }\n      }\n    )\n    prefetched[\n      paths.join(\n        // Join on an invalid URI character\n        '%'\n      )\n    ] = true\n  }\n\n  render() {\n    let { children } = this.props\n    const { href, as } = this.formatUrls(this.props.href, this.props.as)\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 props: {\n      onMouseEnter: React.MouseEventHandler\n      onClick: React.MouseEventHandler\n      href?: string\n      ref?: any\n    } = {\n      ref: (el: any) => {\n        this.handleRef(el)\n\n        if (child && typeof child === 'object' && child.ref) {\n          if (typeof child.ref === 'function') child.ref(el)\n          else if (typeof child.ref === 'object') {\n            child.ref.current = el\n          }\n        }\n      },\n      onMouseEnter: (e: React.MouseEvent) => {\n        if (child.props && typeof child.props.onMouseEnter === 'function') {\n          child.props.onMouseEnter(e)\n        }\n        this.prefetch({ priority: true })\n      },\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          this.linkClicked(e)\n        }\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 (\n      this.props.passHref ||\n      (child.type === 'a' && !('href' in child.props))\n    ) {\n      props.href = as || href\n    }\n\n    // Add the ending slash to the paths. So, we can serve the\n    // \"<page>/index.html\" directly.\n    if (process.env.__NEXT_EXPORT_TRAILING_SLASH) {\n      const rewriteUrlForNextExport = require('../next-server/lib/router/rewrite-url-for-export')\n        .rewriteUrlForNextExport\n      if (\n        props.href &&\n        typeof __NEXT_DATA__ !== 'undefined' &&\n        __NEXT_DATA__.nextExport\n      ) {\n        props.href = rewriteUrlForNextExport(props.href)\n      }\n    }\n\n    return React.cloneElement(child, props)\n  }\n}\n\nif (process.env.NODE_ENV === 'development') {\n  const warn = execOnce(console.error)\n\n  // This module gets removed by webpack.IgnorePlugin\n  const PropTypes = require('prop-types')\n  const exact = require('prop-types-exact')\n  // @ts-ignore the property is supported, when declaring it on the class it outputs an extra bit of code which is not needed.\n  Link.propTypes = exact({\n    href: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n    as: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n    prefetch: PropTypes.bool,\n    replace: PropTypes.bool,\n    shallow: PropTypes.bool,\n    passHref: PropTypes.bool,\n    scroll: PropTypes.bool,\n    children: PropTypes.oneOfType([\n      PropTypes.element,\n      (props: any, propName: string) => {\n        const value = props[propName]\n\n        if (typeof value === 'string') {\n          warn(\n            `Warning: You're using a string directly inside <Link>. This usage has been deprecated. Please add an <a> tag as child of <Link>`\n          )\n        }\n\n        return null\n      },\n    ]).isRequired,\n  })\n}\n\nexport default Link\n"]},"metadata":{},"sourceType":"script"}