{"version":3,"file":"app-e4dcab712fd502770bf3.js","mappings":"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","sources":["webpack://www/./node_modules/gatsby-page-utils/dist/apply-trailing-slash-option.js","webpack://www/./node_modules/gatsby-react-router-scroll/index.js","webpack://www/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://www/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://www/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://www/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://www/./node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js","webpack://www/./node_modules/gatsby/dist/internal-plugins/partytown/utils/get-forwards.js","webpack://www/./node_modules/gatsby/dist/internal-plugins/partytown/utils/inject-partytown-snippet.js","webpack://www/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://www/./.cache/api-runner-browser-plugins.js","webpack://www/./.cache/api-runner-browser.js","webpack://www/./.cache/create-content-digest-browser-shim.js","webpack://www/./node_modules/mitt/dist/mitt.mjs","webpack://www/./.cache/emitter.js","webpack://www/./.cache/normalize-page-path.js","webpack://www/./.cache/find-path.js","webpack://www/./.cache/slice/server-slice-renderer.js","webpack://www/./.cache/slice/server-slice.js","webpack://www/./.cache/slice/inline-slice.js","webpack://www/./.cache/slice.js","webpack://www/./.cache/gatsby-browser-entry.js","webpack://www/./.cache/prefetch.js","webpack://www/./.cache/loader.js","webpack://www/./.cache/head/components/fire-callback-in-effect.js","webpack://www/./.cache/head/constants.js","webpack://www/./.cache/head/utils.js","webpack://www/./.cache/head/head-export-handler-for-browser.js","webpack://www/./.cache/page-renderer.js","webpack://www/./.cache/route-announcer-props.js","webpack://www/./.cache/navigation.js","webpack://www/./node_modules/shallow-compare/es/index.js","webpack://www/./.cache/ensure-resources.js","webpack://www/./.cache/production-app.js","webpack://www/./.cache/public-page-renderer-prod.js","webpack://www/./.cache/public-page-renderer.js","webpack://www/./.cache/react-dom-utils.js","webpack://www/./.cache/redirect-utils.js","webpack://www/./.cache/register-service-worker.js","webpack://www/./.cache/slice/context.js","webpack://www/./.cache/static-query.js","webpack://www/./.cache/context-utils.js","webpack://www/./.cache/strip-prefix.js","webpack://www/./node_modules/gatsby-plugin-anchor-links/errors.js","webpack://www/./node_modules/gatsby-plugin-anchor-links/gatsby-browser.js","webpack://www/./node_modules/gatsby-plugin-anchor-links/utils.js","webpack://www/./node_modules/gatsby-plugin-facebook-pixel/gatsby-browser.js","webpack://www/./node_modules/gatsby-plugin-google-gtag/gatsby-browser.js","webpack://www/./node_modules/gatsby-plugin-google-tagmanager/gatsby-browser.js","webpack://www/./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack://www/./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack://www/./node_modules/gatsby-plugin-react-helmet-canonical-urls/gatsby-browser.js","webpack://www/./node_modules/gatsby-plugin-react-helmet-canonical-urls/wrap-page.js","webpack://www/./gatsby-browser.tsx","webpack://www/./src/hooks/ServerSideStorage.ts","webpack://www/./src/hooks/usePersistentState.ts","webpack://www/./src/hooks/usePrevious.ts","webpack://www/./src/contexts/qualificationContext.tsx","webpack://www/./node_modules/intersection-observer/intersection-observer.js","webpack://www/./node_modules/invariant/browser.js","webpack://www/./node_modules/performance-now/lib/performance-now.js","webpack://www/./node_modules/raf/index.js","webpack://www/./node_modules/react-helmet/es/Helmet.js","webpack://www/./node_modules/react-helmet/node_modules/react-fast-compare/index.js","webpack://www/./node_modules/react-server-dom-webpack/cjs/react-server-dom-webpack.production.min.js","webpack://www/./node_modules/react-server-dom-webpack/index.js","webpack://www/./node_modules/react-side-effect/lib/index.js","webpack://www/./node_modules/scroll-to-element/ease.js","webpack://www/./node_modules/scroll-to-element/emitter.js","webpack://www/./node_modules/scroll-to-element/index.js","webpack://www/./node_modules/scroll-to-element/scroll-to.js","webpack://www/./node_modules/scroll-to-element/tween.js","webpack://www/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://www/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://www/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://www/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://www/./node_modules/@builder.io/partytown/integration/index.cjs","webpack://www/./node_modules/@gatsbyjs/reach-router/dist/index.modern.mjs","webpack://www/./node_modules/gatsby-link/dist/index.modern.mjs","webpack://www/./node_modules/gatsby-script/dist/index.modern.mjs"],"sourcesContent":["\"use strict\";\n\nexports.__esModule = true;\nexports.applyTrailingSlashOption = void 0;\nconst endsWithSuffixes = (suffixes, input) => {\n for (const suffix of suffixes) {\n if (input.endsWith(suffix)) return true;\n }\n return false;\n};\nconst suffixes = [`.html`, `.json`, `.js`, `.map`, `.txt`, `.xml`, `.pdf`];\nconst applyTrailingSlashOption = (input, option = `always`) => {\n if (input === `/`) return input;\n const hasTrailingSlash = input.endsWith(`/`);\n if (endsWithSuffixes(suffixes, input)) {\n return input;\n }\n if (option === `always`) {\n return hasTrailingSlash ? input : `${input}/`;\n }\n if (option === `never`) {\n return hasTrailingSlash ? input.slice(0, -1) : input;\n }\n return input;\n};\nexports.applyTrailingSlashOption = applyTrailingSlashOption;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContext = void 0;\nvar _scrollHandler = require(\"./scroll-handler\");\nexports.ScrollContext = _scrollHandler.ScrollHandler;\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _sessionStorage = require(\"./session-storage\");\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n function ScrollHandler() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this._stateStorage = new _sessionStorage.SessionStorage();\n _this._isTicking = false;\n _this._latestKnownScrollY = 0;\n _this.scrollListener = function () {\n _this._latestKnownScrollY = window.scrollY;\n if (!_this._isTicking) {\n _this._isTicking = true;\n requestAnimationFrame(_this._saveScroll.bind((0, _assertThisInitialized2.default)(_this)));\n }\n };\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n if (!shouldUpdateScroll) {\n return true;\n }\n\n // Hack to allow accessing this._stateStorage.\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n return _this;\n }\n var _proto = ScrollHandler.prototype;\n _proto._saveScroll = function _saveScroll() {\n var key = this.props.location.key || null;\n if (key) {\n this._stateStorage.save(this.props.location, key, this._latestKnownScrollY);\n }\n this._isTicking = false;\n };\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n /** If a hash is present in the browser url as the component mounts (i.e. the user is navigating\n * from an external website) then scroll to the hash instead of any previously stored scroll\n * position. */\n if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n } else if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n }\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n if (hash) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n return ScrollHandler;\n}(React.Component);\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n var _proto = SessionStorage.prototype;\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n return 0;\n }\n };\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n return SessionStorage;\n}();\nexports.SessionStorage = SessionStorage;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\nvar _scrollHandler = require(\"./scroll-handler\");\nvar _react = require(\"react\");\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\nfunction useScrollRestoration(identifier) {\n var location = (0, _reachRouter.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)(null);\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, [location.key]);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","\"use strict\";\n\nmodule.exports = Object.assign;\n//# sourceMappingURL=object-assign.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.onInitialClientRender = void 0;\nvar _gatsbyScript = require(\"gatsby-script\");\nvar _injectPartytownSnippet = require(\"./utils/inject-partytown-snippet\");\n// Makes sure off-main-thread scripts are loaded in `gatsby develop`\nconst onInitialClientRender = () => {\n if (process.env.NODE_ENV !== `development`) {\n return;\n }\n (0, _injectPartytownSnippet.injectPartytownSnippet)(_gatsbyScript.collectedScriptsByPage.get(window.location.pathname));\n\n // Clear scripts after we've used them to avoid leaky behavior\n _gatsbyScript.collectedScriptsByPage.delete(window.location.pathname);\n};\n\n// Client-side navigation (CSR, e.g. Gatsby Link navigations) are broken upstream in Partytown.\n// We need an official API from Partytown for handling re-configuration and on-demand script loading.\n// Until then, `off-main-thread` scripts load only on server-side navigation (SSR).\n// See https://github.com/BuilderIO/partytown/issues/74 for more details.\nexports.onInitialClientRender = onInitialClientRender;\n//# sourceMappingURL=gatsby-browser.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.getForwards = getForwards;\nfunction getForwards(collectedScripts) {\n return collectedScripts === null || collectedScripts === void 0 ? void 0 : collectedScripts.flatMap(script => (script === null || script === void 0 ? void 0 : script.forward) || []);\n}\n//# sourceMappingURL=get-forwards.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.injectPartytownSnippet = injectPartytownSnippet;\nvar _integration = require(\"@builder.io/partytown/integration\");\nvar _getForwards = require(\"./get-forwards\");\n// Adapted from https://github.com/BuilderIO/partytown/blob/main/src/react/snippet.tsx to only include CSR logic\nfunction injectPartytownSnippet(collectedScripts) {\n if (!collectedScripts.length) {\n return;\n }\n const existingSnippet = document.querySelector(`script[data-partytown]`);\n const existingSandbox = document.querySelector(`iframe[src*=\"~partytown/partytown-sandbox-sw\"]`);\n if (existingSnippet) {\n existingSnippet.remove();\n }\n if (existingSandbox) {\n existingSandbox.remove();\n }\n const forwards = (0, _getForwards.getForwards)(collectedScripts);\n const snippet = document.createElement(`script`);\n snippet.dataset.partytown = ``;\n snippet.innerHTML = (0, _integration.partytownSnippet)({\n forward: forwards\n });\n document.head.appendChild(snippet);\n}\n//# sourceMappingURL=inject-partytown-snippet.js.map","exports.components = {\n \"component---src-pages-404-js\": () => import(\"./../../../src/pages/404.js\" /* webpackChunkName: \"component---src-pages-404-js\" */),\n \"component---src-pages-alife-app-js\": () => import(\"./../../../src/pages/alife-app.js\" /* webpackChunkName: \"component---src-pages-alife-app-js\" */),\n \"component---src-pages-asrm-index-tsx\": () => import(\"./../../../src/pages/asrm/index.tsx\" /* webpackChunkName: \"component---src-pages-asrm-index-tsx\" */),\n \"component---src-pages-asrm-thankyou-tsx\": () => import(\"./../../../src/pages/asrm/thankyou.tsx\" /* webpackChunkName: \"component---src-pages-asrm-thankyou-tsx\" */),\n \"component---src-pages-blog-js\": () => import(\"./../../../src/pages/blog.js\" /* webpackChunkName: \"component---src-pages-blog-js\" */),\n \"component---src-pages-careers-js\": () => import(\"./../../../src/pages/careers.js\" /* webpackChunkName: \"component---src-pages-careers-js\" */),\n \"component---src-pages-contact-js\": () => import(\"./../../../src/pages/contact.js\" /* webpackChunkName: \"component---src-pages-contact-js\" */),\n \"component---src-pages-cookies-js\": () => import(\"./../../../src/pages/cookies.js\" /* webpackChunkName: \"component---src-pages-cookies-js\" */),\n \"component---src-pages-embryo-assist-index-tsx\": () => import(\"./../../../src/pages/embryo-assist/index.tsx\" /* webpackChunkName: \"component---src-pages-embryo-assist-index-tsx\" */),\n \"component---src-pages-embryo-assist-live-demo-index-tsx\": () => import(\"./../../../src/pages/embryo-assist/live-demo/index.tsx\" /* webpackChunkName: \"component---src-pages-embryo-assist-live-demo-index-tsx\" */),\n \"component---src-pages-embryo-assist-live-demo-thankyou-tsx\": () => import(\"./../../../src/pages/embryo-assist/live-demo/thankyou.tsx\" /* webpackChunkName: \"component---src-pages-embryo-assist-live-demo-thankyou-tsx\" */),\n \"component---src-pages-embryo-assist-request-demo-index-tsx\": () => import(\"./../../../src/pages/embryo-assist/request-demo/index.tsx\" /* webpackChunkName: \"component---src-pages-embryo-assist-request-demo-index-tsx\" */),\n \"component---src-pages-embryo-assist-request-demo-thankyou-tsx\": () => import(\"./../../../src/pages/embryo-assist/request-demo/thankyou.tsx\" /* webpackChunkName: \"component---src-pages-embryo-assist-request-demo-thankyou-tsx\" */),\n \"component---src-pages-index-tsx\": () => import(\"./../../../src/pages/index.tsx\" /* webpackChunkName: \"component---src-pages-index-tsx\" */),\n \"component---src-pages-ivf-success-calculator-fertility-profile-js\": () => import(\"./../../../src/pages/ivf-success-calculator/fertility-profile.js\" /* webpackChunkName: \"component---src-pages-ivf-success-calculator-fertility-profile-js\" */),\n \"component---src-pages-ivf-success-calculator-index-js\": () => import(\"./../../../src/pages/ivf-success-calculator/index.js\" /* webpackChunkName: \"component---src-pages-ivf-success-calculator-index-js\" */),\n \"component---src-pages-ivf-success-calculator-personal-details-js\": () => import(\"./../../../src/pages/ivf-success-calculator/personal-details.js\" /* webpackChunkName: \"component---src-pages-ivf-success-calculator-personal-details-js\" */),\n \"component---src-pages-ivf-success-calculator-reasons-for-ivf-js\": () => import(\"./../../../src/pages/ivf-success-calculator/reasons-for-ivf.js\" /* webpackChunkName: \"component---src-pages-ivf-success-calculator-reasons-for-ivf-js\" */),\n \"component---src-pages-ivf-success-calculator-report-js\": () => import(\"./../../../src/pages/ivf-success-calculator/report.js\" /* webpackChunkName: \"component---src-pages-ivf-success-calculator-report-js\" */),\n \"component---src-pages-ivf-success-calculator-submit-your-prediction-js\": () => import(\"./../../../src/pages/ivf-success-calculator/submit-your-prediction.js\" /* webpackChunkName: \"component---src-pages-ivf-success-calculator-submit-your-prediction-js\" */),\n \"component---src-pages-patents-js\": () => import(\"./../../../src/pages/patents.js\" /* webpackChunkName: \"component---src-pages-patents-js\" */),\n \"component---src-pages-platform-js\": () => import(\"./../../../src/pages/platform.js\" /* webpackChunkName: \"component---src-pages-platform-js\" */),\n \"component---src-pages-press-js\": () => import(\"./../../../src/pages/press.js\" /* webpackChunkName: \"component---src-pages-press-js\" */),\n \"component---src-pages-privacy-alife-app-js\": () => import(\"./../../../src/pages/privacy-alife-app.js\" /* webpackChunkName: \"component---src-pages-privacy-alife-app-js\" */),\n \"component---src-pages-privacy-js\": () => import(\"./../../../src/pages/privacy.js\" /* webpackChunkName: \"component---src-pages-privacy-js\" */),\n \"component---src-pages-request-a-demo-index-tsx\": () => import(\"./../../../src/pages/request-a-demo/index.tsx\" /* webpackChunkName: \"component---src-pages-request-a-demo-index-tsx\" */),\n \"component---src-pages-request-a-demo-thankyou-tsx\": () => import(\"./../../../src/pages/request-a-demo/thankyou.tsx\" /* webpackChunkName: \"component---src-pages-request-a-demo-thankyou-tsx\" */),\n \"component---src-pages-research-js\": () => import(\"./../../../src/pages/research.js\" /* webpackChunkName: \"component---src-pages-research-js\" */),\n \"component---src-pages-resource-10-things-to-consider-before-adopting-ai-in-your-lab-tsx\": () => import(\"./../../../src/pages/resource/10-things-to-consider-before-adopting-ai-in-your-lab.tsx\" /* webpackChunkName: \"component---src-pages-resource-10-things-to-consider-before-adopting-ai-in-your-lab-tsx\" */),\n \"component---src-pages-resource-product-videos-about-embryo-assist-tsx\": () => import(\"./../../../src/pages/resource/product-videos/about-embryo-assist.tsx\" /* webpackChunkName: \"component---src-pages-resource-product-videos-about-embryo-assist-tsx\" */),\n \"component---src-pages-resource-product-videos-embryo-assist-how-it-works-tsx\": () => import(\"./../../../src/pages/resource/product-videos/embryo-assist-how-it-works.tsx\" /* webpackChunkName: \"component---src-pages-resource-product-videos-embryo-assist-how-it-works-tsx\" */),\n \"component---src-pages-resource-product-videos-stim-assist-how-it-works-tsx\": () => import(\"./../../../src/pages/resource/product-videos/stim-assist-how-it-works.tsx\" /* webpackChunkName: \"component---src-pages-resource-product-videos-stim-assist-how-it-works-tsx\" */),\n \"component---src-pages-resource-product-videos-success-predictor-how-it-works-tsx\": () => import(\"./../../../src/pages/resource/product-videos/success-predictor-how-it-works.tsx\" /* webpackChunkName: \"component---src-pages-resource-product-videos-success-predictor-how-it-works-tsx\" */),\n \"component---src-pages-schedule-predict-pilot-index-tsx\": () => import(\"./../../../src/pages/schedule-predict-pilot/index.tsx\" /* webpackChunkName: \"component---src-pages-schedule-predict-pilot-index-tsx\" */),\n \"component---src-pages-schedule-predict-pilot-thankyou-tsx\": () => import(\"./../../../src/pages/schedule-predict-pilot/thankyou.tsx\" /* webpackChunkName: \"component---src-pages-schedule-predict-pilot-thankyou-tsx\" */),\n \"component---src-pages-security-js\": () => import(\"./../../../src/pages/security.js\" /* webpackChunkName: \"component---src-pages-security-js\" */),\n \"component---src-pages-stim-assist-js\": () => import(\"./../../../src/pages/stim-assist.js\" /* webpackChunkName: \"component---src-pages-stim-assist-js\" */),\n \"component---src-pages-success-predictor-index-tsx\": () => import(\"./../../../src/pages/success-predictor/index.tsx\" /* webpackChunkName: \"component---src-pages-success-predictor-index-tsx\" */),\n \"component---src-pages-success-predictor-live-demo-index-tsx\": () => import(\"./../../../src/pages/success-predictor/live-demo/index.tsx\" /* webpackChunkName: \"component---src-pages-success-predictor-live-demo-index-tsx\" */),\n \"component---src-pages-success-predictor-live-demo-thankyou-tsx\": () => import(\"./../../../src/pages/success-predictor/live-demo/thankyou.tsx\" /* webpackChunkName: \"component---src-pages-success-predictor-live-demo-thankyou-tsx\" */),\n \"component---src-pages-success-predictor-request-demo-index-tsx\": () => import(\"./../../../src/pages/success-predictor/request-demo/index.tsx\" /* webpackChunkName: \"component---src-pages-success-predictor-request-demo-index-tsx\" */),\n \"component---src-pages-success-predictor-request-demo-thankyou-tsx\": () => import(\"./../../../src/pages/success-predictor/request-demo/thankyou.tsx\" /* webpackChunkName: \"component---src-pages-success-predictor-request-demo-thankyou-tsx\" */),\n \"component---src-pages-team-js\": () => import(\"./../../../src/pages/team.js\" /* webpackChunkName: \"component---src-pages-team-js\" */),\n \"component---src-pages-terms-of-use-js\": () => import(\"./../../../src/pages/terms-of-use.js\" /* webpackChunkName: \"component---src-pages-terms-of-use-js\" */),\n \"component---src-pages-webinar-ai-in-ivf-labs-now-and-the-future-index-tsx\": () => import(\"./../../../src/pages/webinar/ai-in-ivf-labs-now-and-the-future/index.tsx\" /* webpackChunkName: \"component---src-pages-webinar-ai-in-ivf-labs-now-and-the-future-index-tsx\" */),\n \"component---src-pages-webinar-ai-in-ivf-labs-now-and-the-future-thankyou-tsx\": () => import(\"./../../../src/pages/webinar/ai-in-ivf-labs-now-and-the-future/thankyou.tsx\" /* webpackChunkName: \"component---src-pages-webinar-ai-in-ivf-labs-now-and-the-future-thankyou-tsx\" */),\n \"component---src-pages-webinar-stim-assist-ama-index-tsx\": () => import(\"./../../../src/pages/webinar/stim-assist-ama/index.tsx\" /* webpackChunkName: \"component---src-pages-webinar-stim-assist-ama-index-tsx\" */),\n \"component---src-pages-webinar-stim-assist-ama-thankyou-tsx\": () => import(\"./../../../src/pages/webinar/stim-assist-ama/thankyou.tsx\" /* webpackChunkName: \"component---src-pages-webinar-stim-assist-ama-thankyou-tsx\" */),\n \"component---src-templates-announcement-js\": () => import(\"./../../../src/templates/Announcement.js\" /* webpackChunkName: \"component---src-templates-announcement-js\" */),\n \"component---src-templates-blog-template-js\": () => import(\"./../../../src/templates/BlogTemplate.js\" /* webpackChunkName: \"component---src-templates-blog-template-js\" */),\n \"component---src-templates-pdf-page-js\": () => import(\"./../../../src/templates/PdfPage.js\" /* webpackChunkName: \"component---src-templates-pdf-page-js\" */),\n \"component---src-templates-publication-js\": () => import(\"./../../../src/templates/Publication.js\" /* webpackChunkName: \"component---src-templates-publication-js\" */)\n}\n\n","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-anchor-links/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-react-helmet-canonical-urls/gatsby-browser.js'),\n options: {\"plugins\":[],\"siteUrl\":\"https://www.alifehealth.com\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"Alife Health\",\"short_name\":\"Alife Health\",\"start_url\":\"/\",\"icon\":\"src/images/favicon.png\",\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"081ba1053bcc85d46c576daac49181ba\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-google-tagmanager/gatsby-browser.js'),\n options: {\"plugins\":[],\"id\":\"GTM-T65NH3K\",\"includeInDevelopment\":true,\"defaultDataLayer\":{\"type\":\"object\",\"value\":{\"platform\":\"gatsby\"}},\"enableWebVitalsTracking\":true,\"routeChangeEventName\":\"gatsby-route-change\",\"selfHostedOrigin\":\"https://www.googletagmanager.com\",\"selfHostedPath\":\"gtm.js\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-google-gtag/gatsby-browser.js'),\n options: {\"plugins\":[],\"trackingIds\":[\"G-3QVH6452CG\"],\"pluginConfig\":{\"head\":true,\"respectDNT\":false,\"exclude\":[],\"origin\":\"https://www.googletagmanager.com\",\"delayOnRouteUpdate\":0},\"gtagConfig\":{}},\n },{\n plugin: require('../node_modules/gatsby-plugin-facebook-pixel/gatsby-browser.js'),\n options: {\"plugins\":[],\"pixelId\":\"258474649086204\"},\n },{\n plugin: require('../gatsby-browser.tsx'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js'),\n options: {\"plugins\":[]},\n }]\n","const plugins = require(`./api-runner-browser-plugins`)\nconst { getResourceURLsForPathname, loadPage, loadPageSync } =\n require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","exports.createContentDigest = () => ``\n","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i?i.push(e):n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&(e?i.splice(i.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var i=n.get(t);i&&i.slice().map(function(n){n(e)}),(i=n.get(\"*\"))&&i.slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.mjs.map\n","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","export default pathAndSearch => {\n if (pathAndSearch === undefined) {\n return pathAndSearch\n }\n let [path, search = ``] = pathAndSearch.split(`?`)\n if (search) {\n search = `?` + search\n }\n\n if (path === `/`) {\n return `/` + search\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1) + search\n }\n return path + search\n}\n","import { pick } from \"@gatsbyjs/reach-router\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n let newRawPathname = rawPathname\n const queryIndex = rawPathname.indexOf(`?`)\n\n if (queryIndex !== -1) {\n const [path, qs] = rawPathname.split(`?`)\n newRawPathname = `${path}?${encodeURIComponent(qs)}`\n }\n\n const pathname = decodeURIComponent(newRawPathname)\n\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(\n pathname,\n decodeURIComponent(__BASE_PATH__)\n )\n // Remove any hashfragment\n .split(`#`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n const redirect = maybeGetBrowserRedirect(rawPathname)\n if (redirect) {\n return findPath(redirect.toPath)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","import React from \"react\"\n\nexport const ServerSliceRenderer = ({ sliceId, children }) => {\n const contents = [\n React.createElement(`slice-start`, {\n id: `${sliceId}-1`,\n }),\n React.createElement(`slice-end`, {\n id: `${sliceId}-1`,\n }),\n ]\n\n if (children) {\n // if children exist, we split the slice into a before and after piece\n // see renderSlices in render-html\n contents.push(children)\n contents.push(\n React.createElement(`slice-start`, {\n id: `${sliceId}-2`,\n }),\n React.createElement(`slice-end`, {\n id: `${sliceId}-2`,\n })\n )\n }\n\n return contents\n}\n","import React, { useContext } from \"react\"\nimport { createContentDigest } from \"gatsby-core-utils/create-content-digest\"\nimport { SlicesMapContext, SlicesPropsContext } from \"./context\"\nimport { ServerSliceRenderer } from \"./server-slice-renderer\"\n\nconst getSliceId = (sliceName, sliceProps) => {\n if (!Object.keys(sliceProps).length) {\n return sliceName\n }\n\n const propsString = createContentDigest(sliceProps)\n return `${sliceName}-${propsString}`\n}\n\nexport const ServerSlice = ({\n sliceName,\n allowEmpty,\n children,\n ...sliceProps\n}) => {\n const slicesMap = useContext(SlicesMapContext)\n const slicesProps = useContext(SlicesPropsContext)\n const concreteSliceName = slicesMap[sliceName]\n\n if (!concreteSliceName) {\n if (allowEmpty) {\n return null\n } else {\n throw new Error(\n `Slice \"${concreteSliceName}\" for \"${sliceName}\" slot not found`\n )\n }\n }\n\n const sliceId = getSliceId(concreteSliceName, sliceProps)\n\n // set props on context object for static-entry to return\n let sliceUsage = slicesProps[sliceId]\n if (!sliceUsage) {\n slicesProps[sliceId] = sliceUsage = {\n props: sliceProps,\n sliceName: concreteSliceName,\n hasChildren: !!children,\n }\n } else {\n if (children) {\n sliceUsage.hasChildren = true\n }\n }\n\n return {children}\n}\n","import React, { useContext } from \"react\"\nimport { SlicesMapContext, SlicesResultsContext } from \"./context\"\n\nexport const InlineSlice = ({\n sliceName,\n allowEmpty,\n children,\n ...sliceProps\n}) => {\n const slicesMap = useContext(SlicesMapContext)\n const slicesResultsMap = useContext(SlicesResultsContext)\n const concreteSliceName = slicesMap[sliceName]\n const slice = slicesResultsMap.get(concreteSliceName)\n\n if (!slice) {\n if (allowEmpty) {\n return null\n } else {\n throw new Error(\n `Slice \"${concreteSliceName}\" for \"${sliceName}\" slot not found`\n )\n }\n }\n\n return (\n \n {children}\n \n )\n}\n","\"use client\"\n\nimport React, { useContext } from \"react\"\nimport { ServerSlice } from \"./slice/server-slice\"\nimport { InlineSlice } from \"./slice/inline-slice\"\nimport { SlicesContext } from \"./slice/context\"\n\nexport function Slice(props) {\n if (process.env.GATSBY_SLICES) {\n // we use sliceName internally, so remap alias to sliceName\n const internalProps = {\n ...props,\n sliceName: props.alias,\n }\n delete internalProps.alias\n delete internalProps.__renderedByLocation\n\n const slicesContext = useContext(SlicesContext)\n\n // validate props\n const propErrors = validateSliceProps(props)\n if (Object.keys(propErrors).length) {\n throw new SlicePropsError(\n slicesContext.renderEnvironment === `browser`,\n internalProps.sliceName,\n propErrors,\n props.__renderedByLocation\n )\n }\n\n if (slicesContext.renderEnvironment === `server`) {\n return \n } else if (slicesContext.renderEnvironment === `browser`) {\n // in the browser, we'll just render the component as is\n return \n } else if (\n slicesContext.renderEnvironment === `engines` ||\n slicesContext.renderEnvironment === `dev-ssr`\n ) {\n // if we're in SSR, we'll just render the component as is\n return \n } else if (slicesContext.renderEnvironment === `slices`) {\n // we are not yet supporting nested slices\n\n let additionalContextMessage = ``\n\n // just in case generating additional contextual information fails, we still want the base message to show\n // and not show another cryptic error message\n try {\n additionalContextMessage = `\\n\\nSlice component \"${slicesContext.sliceRoot.name}\" (${slicesContext.sliceRoot.componentPath}) tried to render `\n } catch {\n // don't need to handle it, we will just skip the additional context message if we fail to generate it\n }\n\n throw new Error(\n `Nested slices are not supported.${additionalContextMessage}\\n\\nSee https://gatsbyjs.com/docs/reference/built-in-components/gatsby-slice#nested-slices`\n )\n } else {\n throw new Error(\n `Slice context \"${slicesContext.renderEnvironment}\" is not supported.`\n )\n }\n } else {\n throw new Error(`Slices are disabled.`)\n }\n}\n\nclass SlicePropsError extends Error {\n constructor(inBrowser, sliceName, propErrors, renderedByLocation) {\n const errors = Object.entries(propErrors)\n .map(\n ([key, value]) =>\n `not serializable \"${value}\" type passed to \"${key}\" prop`\n )\n .join(`, `)\n\n const name = `SlicePropsError`\n let stack = ``\n let message = ``\n\n if (inBrowser) {\n // They're just (kinda) kidding, I promise... You can still work here <3\n // https://www.gatsbyjs.com/careers/\n const fullStack =\n React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactDebugCurrentFrame.getCurrentStack()\n\n // remove the first line of the stack trace\n const stackLines = fullStack.trim().split(`\\n`).slice(1)\n stackLines[0] = stackLines[0].trim()\n stack = `\\n` + stackLines.join(`\\n`)\n\n message = `Slice \"${sliceName}\" was passed props that are not serializable (${errors}).`\n } else {\n // we can't really grab any extra info outside of the browser, so just print what we can\n message = `${name}: Slice \"${sliceName}\" was passed props that are not serializable (${errors}).`\n const stackLines = new Error().stack.trim().split(`\\n`).slice(2)\n stack = `${message}\\n${stackLines.join(`\\n`)}`\n }\n\n super(message)\n this.name = name\n if (stack) {\n this.stack = stack\n } else {\n Error.captureStackTrace(this, SlicePropsError)\n }\n\n if (renderedByLocation) {\n this.forcedLocation = { ...renderedByLocation, functionName: `Slice` }\n }\n }\n}\n\nconst validateSliceProps = (\n props,\n errors = {},\n seenObjects = [],\n path = null\n) => {\n // recursively validate all props\n for (const [name, value] of Object.entries(props)) {\n if (\n value === undefined ||\n value === null ||\n (!path && name === `children`)\n ) {\n continue\n }\n\n const propPath = path ? `${path}.${name}` : name\n\n if (typeof value === `function`) {\n errors[propPath] = typeof value\n } else if (typeof value === `object` && seenObjects.indexOf(value) <= 0) {\n seenObjects.push(value)\n validateSliceProps(value, errors, seenObjects, propPath)\n }\n }\n\n return errors\n}\n","import loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport { default as PageRenderer } from \"./public-page-renderer\"\nexport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nexport {\n Link,\n withPrefix,\n withAssetPrefix,\n navigate,\n parsePath,\n} from \"gatsby-link\"\n\nexport { graphql, prefetchPathname }\nexport { StaticQuery, StaticQueryContext, useStaticQuery } from \"./static-query\"\nexport { Slice } from \"./slice\"\nexport * from \"gatsby-script\"\n","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import { createFromReadableStream } from \"react-server-dom-webpack\"\nimport prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst preferDefault = m => (m && m.default) || m\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = rawPath => {\n const [path, maybeSearch] = rawPath.split(`?`)\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json${\n maybeSearch ? `?${maybeSearch}` : ``\n }`\n}\n\n/**\n * Utility to check the path that goes into doFetch for e.g. potential malicious intentions.\n * It checks for \"//\" because with this you could do a fetch request to a different domain.\n */\nconst shouldAbortFetch = rawPath => rawPath.startsWith(`//`)\n\nfunction doFetch(url, method = `GET`) {\n return new Promise(resolve => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\n// Regex that matches common search crawlers\nconst BOT_REGEX = /bot|crawler|spider|crawling/i\n\nconst toPageResources = (pageData, component = null, head) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n getServerDataError: pageData.getServerDataError,\n slicesMap: pageData.slicesMap ?? {},\n }\n\n return {\n component,\n head,\n json: pageData.result,\n page,\n }\n}\n\nfunction waitForResponse(response) {\n return new Promise(resolve => {\n try {\n const result = response.readRoot()\n resolve(result)\n } catch (err) {\n if (\n Object.hasOwnProperty.call(err, `_response`) &&\n Object.hasOwnProperty.call(err, `_status`)\n ) {\n setTimeout(() => {\n waitForResponse(response).then(resolve)\n }, 200)\n } else {\n throw err\n }\n }\n })\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.partialHydrationDb = new Map()\n this.slicesDataDb = new Map()\n this.sliceInflightDb = new Map()\n this.slicesDb = new Map()\n this.isPrefetchQueueRunning = false\n this.prefetchQueued = []\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n const maybeSearch = pagePath.split(`?`)[1]\n if (maybeSearch && !jsonPayload.path.includes(maybeSearch)) {\n jsonPayload.path += `?${maybeSearch}`\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n fetchPartialHydrationJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath).replace(`.json`, `-rsc.json`)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: responseText,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.partialHydrationDb.has(pagePath)) {\n const pageData = this.partialHydrationDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPartialHydrationJson({ pagePath }).then(pageData => {\n this.partialHydrationDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n loadSliceDataJson(sliceName) {\n if (this.slicesDataDb.has(sliceName)) {\n const jsonPayload = this.slicesDataDb.get(sliceName)\n return Promise.resolve({ sliceName, jsonPayload })\n }\n\n const url = `${__PATH_PREFIX__}/slice-data/${sliceName}.json`\n return doFetch(url, `GET`).then(res => {\n const jsonPayload = JSON.parse(res.responseText)\n\n this.slicesDataDb.set(sliceName, jsonPayload)\n return { sliceName, jsonPayload }\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n if (page.error) {\n return Promise.resolve({\n error: page.error,\n status: page.status,\n })\n }\n\n return Promise.resolve(page.payload)\n }\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n const loadDataPromises = [\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]\n\n if (global.hasPartialHydration) {\n loadDataPromises.push(this.loadPartialHydrationJson(pagePath))\n }\n\n const inFlightPromise = Promise.all(loadDataPromises).then(allData => {\n const [appDataResponse, pageDataResponse, rscDataResponse] = allData\n\n if (\n pageDataResponse.status === PageResourceStatus.Error ||\n rscDataResponse?.status === PageResourceStatus.Error\n ) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = pageDataResponse.payload\n\n const {\n componentChunkName,\n staticQueryHashes: pageStaticQueryHashes = [],\n slicesMap = {},\n } = pageData\n\n const finalResult = {}\n\n const dedupedSliceNames = Array.from(new Set(Object.values(slicesMap)))\n\n const loadSlice = slice => {\n if (this.slicesDb.has(slice.name)) {\n return this.slicesDb.get(slice.name)\n } else if (this.sliceInflightDb.has(slice.name)) {\n return this.sliceInflightDb.get(slice.name)\n }\n\n const inFlight = this.loadComponent(slice.componentChunkName).then(\n component => {\n return {\n component: preferDefault(component),\n sliceContext: slice.result.sliceContext,\n data: slice.result.data,\n }\n }\n )\n\n this.sliceInflightDb.set(slice.name, inFlight)\n inFlight.then(results => {\n this.slicesDb.set(slice.name, results)\n this.sliceInflightDb.delete(slice.name)\n })\n\n return inFlight\n }\n\n return Promise.all(\n dedupedSliceNames.map(sliceName => this.loadSliceDataJson(sliceName))\n ).then(slicesData => {\n const slices = []\n const dedupedStaticQueryHashes = [...pageStaticQueryHashes]\n\n for (const { jsonPayload, sliceName } of Object.values(slicesData)) {\n slices.push({ name: sliceName, ...jsonPayload })\n for (const staticQueryHash of jsonPayload.staticQueryHashes) {\n if (!dedupedStaticQueryHashes.includes(staticQueryHash)) {\n dedupedStaticQueryHashes.push(staticQueryHash)\n }\n }\n }\n\n const loadChunkPromises = [\n Promise.all(slices.map(loadSlice)),\n this.loadComponent(componentChunkName, `head`),\n ]\n\n if (!global.hasPartialHydration) {\n loadChunkPromises.push(this.loadComponent(componentChunkName))\n }\n\n // In develop we have separate chunks for template and Head components\n // to enable HMR (fast refresh requires single exports).\n // In production we have shared chunk with both exports. Double loadComponent here\n // will be deduped by webpack runtime resulting in single request and single module\n // being loaded for both `component` and `head`.\n // get list of components to get\n const componentChunkPromises = Promise.all(loadChunkPromises).then(\n components => {\n const [sliceComponents, headComponent, pageComponent] = components\n\n finalResult.createdAt = new Date()\n\n for (const sliceComponent of sliceComponents) {\n if (!sliceComponent || sliceComponent instanceof Error) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = sliceComponent\n }\n }\n\n if (\n !global.hasPartialHydration &&\n (!pageComponent || pageComponent instanceof Error)\n ) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = pageComponent\n }\n\n let pageResources\n\n if (finalResult.status !== PageResourceStatus.Error) {\n finalResult.status = PageResourceStatus.Success\n if (\n pageDataResponse.notFound === true ||\n rscDataResponse?.notFound === true\n ) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: appDataResponse\n ? appDataResponse.webpackCompilationHash\n : ``,\n })\n\n if (typeof rscDataResponse?.payload === `string`) {\n pageResources = toPageResources(pageData, null, headComponent)\n\n pageResources.partialHydration = rscDataResponse.payload\n\n const readableStream = new ReadableStream({\n start(controller) {\n const te = new TextEncoder()\n controller.enqueue(te.encode(rscDataResponse.payload))\n },\n pull(controller) {\n // close on next read when queue is empty\n controller.close()\n },\n cancel() {},\n })\n\n return waitForResponse(\n createFromReadableStream(readableStream)\n ).then(result => {\n pageResources.partialHydration = result\n\n return pageResources\n })\n } else {\n pageResources = toPageResources(\n pageData,\n pageComponent,\n headComponent\n )\n }\n }\n\n // undefined if final result is an error\n return pageResources\n }\n )\n\n // get list of static queries to get\n const staticQueryBatchPromise = Promise.all(\n dedupedStaticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromises, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n })\n\n inFlightPromise\n .then(() => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if the page does not exists in cache\n loadPageSync(rawPath, options = {}) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath)\n\n if (pageData.payload) {\n return pageData.payload\n }\n\n if (options?.withErrorDetails) {\n return {\n error: pageData.error,\n status: pageData.status,\n }\n }\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Don't prefetch if this is a crawler bot\n if (navigator.userAgent && BOT_REGEX.test(navigator.userAgent)) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return {\n then: resolve => resolve(false),\n abort: () => {},\n }\n }\n if (this.prefetchTriggered.has(pagePath)) {\n return {\n then: resolve => resolve(true),\n abort: () => {},\n }\n }\n\n const defer = {\n resolve: null,\n reject: null,\n promise: null,\n }\n defer.promise = new Promise((resolve, reject) => {\n defer.resolve = resolve\n defer.reject = reject\n })\n this.prefetchQueued.push([pagePath, defer])\n const abortC = new AbortController()\n abortC.signal.addEventListener(`abort`, () => {\n const index = this.prefetchQueued.findIndex(([p]) => p === pagePath)\n // remove from the queue\n if (index !== -1) {\n this.prefetchQueued.splice(index, 1)\n }\n })\n\n if (!this.isPrefetchQueueRunning) {\n this.isPrefetchQueueRunning = true\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n }\n\n return {\n then: (resolve, reject) => defer.promise.then(resolve, reject),\n abort: abortC.abort.bind(abortC),\n }\n }\n\n _processNextPrefetchBatch() {\n const idleCallback = window.requestIdleCallback || (cb => setTimeout(cb, 0))\n\n idleCallback(() => {\n const toPrefetch = this.prefetchQueued.splice(0, 4)\n const prefetches = Promise.all(\n toPrefetch.map(([pagePath, dPromise]) => {\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return dPromise.resolve(false)\n }\n\n return this.doPrefetch(findPath(pagePath)).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n\n dPromise.resolve(true)\n })\n })\n )\n\n if (this.prefetchQueued.length) {\n prefetches.then(() => {\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n })\n } else {\n this.isPrefetchQueueRunning = false\n }\n })\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n\n if (global.hasPartialHydration) {\n return Promise.all([\n prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n ),\n prefetchHelper(pageDataUrl.replace(`.json`, `-rsc.json`), {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPartialHydrationJson(pagePath)\n ),\n ])\n } else {\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n }\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return !page || page.notFound\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths, pageData) {\n const loadComponent = (chunkName, exportType = `components`) => {\n if (!global.hasPartialHydration) {\n exportType = `components`\n }\n\n if (!asyncRequires[exportType][chunkName]) {\n throw new Error(\n `We couldn't find the correct component chunk with the name \"${chunkName}\"`\n )\n }\n\n return (\n asyncRequires[exportType][chunkName]()\n // loader will handle the case when component is error\n .catch(err => err)\n )\n }\n\n super(loadComponent, matchPaths)\n\n if (pageData) {\n this.pageDataDb.set(findPath(pageData.path), {\n pagePath: pageData.path,\n payload: pageData,\n status: `success`,\n })\n }\n }\n\n doPrefetch(pagePath) {\n return super.doPrefetch(pagePath).then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n if (shouldAbortFetch(rawPath)) {\n return data\n }\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n return super.loadPartialHydrationJson(rawPath).then(data => {\n if (data.notFound) {\n if (shouldAbortFetch(rawPath)) {\n return data\n }\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n // TODO add deprecation to v4 so people use withErrorDetails and then we can remove in v5 and change default behaviour\n loadPageSync: (rawPath, options = {}) =>\n instance.loadPageSync(rawPath, options),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\n}\n\nexport function getSliceResults() {\n if (instance) {\n return instance.slicesDb\n } else {\n return {}\n }\n}\n","import { useEffect } from \"react\"\n\n/*\n * Calls callback in an effect and renders children\n */\nexport function FireCallbackInEffect({ children, callback }) {\n useEffect(() => {\n callback()\n })\n\n return children\n}\n","export const VALID_NODE_NAMES = [\n `link`,\n `meta`,\n `style`,\n `title`,\n `base`,\n `noscript`,\n `script`,\n `html`,\n `body`,\n]\n","import { VALID_NODE_NAMES } from \"./constants\"\n\n/**\n * Filter the props coming from a page down to just the ones that are relevant for head.\n * This e.g. filters out properties that are undefined during SSR.\n */\nexport function filterHeadProps(input) {\n return {\n location: {\n pathname: input.location.pathname,\n },\n params: input.params,\n data: input.data || {},\n serverData: input.serverData,\n pageContext: input.pageContext,\n }\n}\n\n/**\n * Throw error if Head export is not a valid function\n */\nexport function headExportValidator(head) {\n if (typeof head !== `function`)\n throw new Error(\n `Expected \"Head\" export to be a function got \"${typeof head}\".`\n )\n}\n\n/**\n * Warn once for same messsage\n */\nlet warnOnce = _ => {}\nif (process.env.NODE_ENV !== `production`) {\n const warnings = new Set()\n warnOnce = msg => {\n if (!warnings.has(msg)) {\n console.warn(msg)\n }\n warnings.add(msg)\n }\n}\n\n/**\n * Warn for invalid tags in Head which may have been directly added or introduced by `wrapRootElement`\n * @param {string} tagName\n */\nexport function warnForInvalidTag(tagName) {\n if (process.env.NODE_ENV !== `production`) {\n const warning = createWarningForInvalidTag(tagName)\n warnOnce(warning)\n }\n}\n\nfunction createWarningForInvalidTag(tagName) {\n return `<${tagName}> is not a valid head element. Please use one of the following: ${VALID_NODE_NAMES.join(\n `, `\n )}.\\n\\nAlso make sure that wrapRootElement in gatsby-ssr/gatsby-browser doesn't contain UI elements: https://gatsby.dev/invalid-head-elements`\n}\n\n/**\n * When a `nonce` is present on an element, browsers such as Chrome and Firefox strip it out of the\n * actual HTML attributes for security reasons *when the element is added to the document*. Thus,\n * given two equivalent elements that have nonces, `Element,isEqualNode()` will return false if one\n * of those elements gets added to the document. Although the `element.nonce` property will be the\n * same for both elements, the one that was added to the document will return an empty string for\n * its nonce HTML attribute value.\n *\n * This custom `isEqualNode()` function therefore removes the nonce value from the `newTag` before\n * comparing it to `oldTag`, restoring it afterwards.\n *\n * For more information, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1211471#c12\n */\nexport function isEqualNode(oldTag, newTag) {\n if (oldTag instanceof HTMLElement && newTag instanceof HTMLElement) {\n const nonce = newTag.getAttribute(`nonce`)\n // Only strip the nonce if `oldTag` has had it stripped. An element's nonce attribute will not\n // be stripped if there is no content security policy response header that includes a nonce.\n if (nonce && !oldTag.getAttribute(`nonce`)) {\n const cloneTag = newTag.cloneNode(true)\n cloneTag.setAttribute(`nonce`, ``)\n cloneTag.nonce = nonce\n return nonce === oldTag.nonce && oldTag.isEqualNode(cloneTag)\n }\n }\n\n return oldTag.isEqualNode(newTag)\n}\n\nexport function diffNodes({ oldNodes, newNodes, onStale, onNew }) {\n for (const existingHeadElement of oldNodes) {\n const indexInNewNodes = newNodes.findIndex(e =>\n isEqualNode(e, existingHeadElement)\n )\n\n if (indexInNewNodes === -1) {\n onStale(existingHeadElement)\n } else {\n // this node is re-created as-is, so we keep old node, and remove it from list of new nodes (as we handled it already here)\n newNodes.splice(indexInNewNodes, 1)\n }\n }\n\n // remaing new nodes didn't have matching old node, so need to be added\n for (const newNode of newNodes) {\n onNew(newNode)\n }\n}\n\nexport function getValidHeadNodesAndAttributes(\n rootNode,\n htmlAndBodyAttributes = {\n html: {},\n body: {},\n }\n) {\n const seenIds = new Map()\n const validHeadNodes = []\n\n // Filter out non-element nodes before looping since we don't care about them\n for (const node of rootNode.childNodes) {\n const nodeName = node.nodeName.toLowerCase()\n const id = node.attributes?.id?.value\n\n if (!isElementType(node)) continue\n\n if (isValidNodeName(nodeName)) {\n // and tags are treated differently, in that we don't render them, we only extract the attributes and apply them separetely\n if (nodeName === `html` || nodeName === `body`) {\n for (const attribute of node.attributes) {\n const isStyleAttribute = attribute.name === `style`\n\n // Merge attributes for same nodeName from previous loop iteration\n htmlAndBodyAttributes[nodeName] = {\n ...htmlAndBodyAttributes[nodeName],\n }\n\n if (!isStyleAttribute) {\n htmlAndBodyAttributes[nodeName][attribute.name] = attribute.value\n }\n\n // If there is already a style attribute, we need to merge them as otherwise the last one will \"win\"\n if (isStyleAttribute) {\n htmlAndBodyAttributes[nodeName].style = `${\n htmlAndBodyAttributes[nodeName]?.style\n ? htmlAndBodyAttributes[nodeName].style\n : ``\n }${attribute.value} `\n }\n }\n } else {\n let clonedNode = node.cloneNode(true)\n clonedNode.setAttribute(`data-gatsby-head`, true)\n\n // // This is hack to make script tags work\n if (clonedNode.nodeName.toLowerCase() === `script`) {\n clonedNode = massageScript(clonedNode)\n }\n // Duplicate ids are not allowed in the head, so we need to dedupe them\n if (id) {\n if (!seenIds.has(id)) {\n validHeadNodes.push(clonedNode)\n seenIds.set(id, validHeadNodes.length - 1)\n } else {\n const indexOfPreviouslyInsertedNode = seenIds.get(id)\n validHeadNodes[\n indexOfPreviouslyInsertedNode\n ].parentNode?.removeChild(\n validHeadNodes[indexOfPreviouslyInsertedNode]\n )\n validHeadNodes[indexOfPreviouslyInsertedNode] = clonedNode\n }\n } else {\n validHeadNodes.push(clonedNode)\n }\n }\n } else {\n warnForInvalidTag(nodeName)\n }\n\n if (node.childNodes.length) {\n validHeadNodes.push(\n ...getValidHeadNodesAndAttributes(node, htmlAndBodyAttributes)\n .validHeadNodes\n )\n }\n }\n\n return { validHeadNodes, htmlAndBodyAttributes }\n}\n\nfunction massageScript(node) {\n const script = document.createElement(`script`)\n for (const attr of node.attributes) {\n script.setAttribute(attr.name, attr.value)\n }\n script.innerHTML = node.innerHTML\n\n return script\n}\n\nexport function isValidNodeName(nodeName) {\n return VALID_NODE_NAMES.includes(nodeName)\n}\n/*\n * For Head, we only care about element nodes(type = 1), so this util is used to skip over non-element nodes\n * For Node type, see https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n */\nexport function isElementType(node) {\n return node.nodeType === 1\n}\n\n/**\n * Removes all the head elements that were added by `Head`\n */\nexport function removePrevHeadElements() {\n const prevHeadNodes = document.querySelectorAll(`[data-gatsby-head]`)\n for (const node of prevHeadNodes) {\n node.parentNode.removeChild(node)\n }\n}\n\nexport function applyHtmlAndBodyAttributes(htmlAndBodyAttributes) {\n if (!htmlAndBodyAttributes) return\n\n const { html, body } = htmlAndBodyAttributes\n\n const htmlElement = document.querySelector(`html`)\n if (htmlElement) {\n Object.entries(html).forEach(([attributeName, attributeValue]) => {\n htmlElement.setAttribute(attributeName, attributeValue)\n })\n }\n\n const bodyElement = document.querySelector(`body`)\n if (bodyElement) {\n Object.entries(body).forEach(([attributeName, attributeValue]) => {\n bodyElement.setAttribute(attributeName, attributeValue)\n })\n }\n}\n\nexport function removeHtmlAndBodyAttributes(htmlAndBodyattributeList) {\n if (!htmlAndBodyattributeList) return\n\n const { html, body } = htmlAndBodyattributeList\n\n if (html) {\n const htmlElement = document.querySelector(`html`)\n html.forEach(attributeName => {\n if (htmlElement) {\n htmlElement.removeAttribute(attributeName)\n }\n })\n }\n\n if (body) {\n const bodyElement = document.querySelector(`body`)\n body.forEach(attributeName => {\n if (bodyElement) {\n bodyElement.removeAttribute(attributeName)\n }\n })\n }\n}\n","import React from \"react\"\nimport { useEffect } from \"react\"\nimport { StaticQueryContext } from \"gatsby\"\nimport { LocationProvider } from \"@gatsbyjs/reach-router\"\nimport { reactDOMUtils } from \"../react-dom-utils\"\nimport { FireCallbackInEffect } from \"./components/fire-callback-in-effect\"\nimport {\n headExportValidator,\n filterHeadProps,\n diffNodes,\n getValidHeadNodesAndAttributes,\n removePrevHeadElements,\n applyHtmlAndBodyAttributes,\n removeHtmlAndBodyAttributes,\n} from \"./utils\"\nimport { apiRunner } from \"../api-runner-browser\"\n\nconst hiddenRoot = document.createElement(`div`)\nconst keysOfHtmlAndBodyAttributes = {\n html: [],\n body: [],\n}\n\nconst onHeadRendered = () => {\n const { validHeadNodes, htmlAndBodyAttributes } =\n getValidHeadNodesAndAttributes(hiddenRoot)\n\n keysOfHtmlAndBodyAttributes.html = Object.keys(htmlAndBodyAttributes.html)\n keysOfHtmlAndBodyAttributes.body = Object.keys(htmlAndBodyAttributes.body)\n\n applyHtmlAndBodyAttributes(htmlAndBodyAttributes)\n\n /**\n * The rest of the code block below is a diffing mechanism to ensure that\n * the head elements aren't duplicted on every re-render.\n */\n const existingHeadElements = document.querySelectorAll(`[data-gatsby-head]`)\n\n if (existingHeadElements.length === 0) {\n document.head.append(...validHeadNodes)\n return\n }\n\n const newHeadNodes = []\n diffNodes({\n oldNodes: existingHeadElements,\n newNodes: validHeadNodes,\n onStale: node => node.parentNode.removeChild(node),\n onNew: node => newHeadNodes.push(node),\n })\n\n document.head.append(...newHeadNodes)\n}\n\nif (process.env.BUILD_STAGE === `develop`) {\n // sigh ... and elements are not valid descedents of
(our hidden element)\n // react-dom in dev mode will warn about this. There doesn't seem to be a way to render arbitrary\n // user Head without hitting this issue (our hidden element could be just \"new Document()\", but\n // this can only have 1 child, and we don't control what is being rendered so that's not an option)\n // instead we continue to render to
, and just silence warnings for and elements\n // https://github.com/facebook/react/blob/e2424f33b3ad727321fc12e75c5e94838e84c2b5/packages/react-dom-bindings/src/client/validateDOMNesting.js#L498-L520\n const originalConsoleError = console.error.bind(console)\n console.error = (...args) => {\n if (\n Array.isArray(args) &&\n args.length >= 2 &&\n args[0]?.includes?.(`validateDOMNesting(...): %s cannot appear as`) &&\n (args[1] === `` || args[1] === ``)\n ) {\n return undefined\n }\n return originalConsoleError(...args)\n }\n\n /* We set up observer to be able to regenerate after react-refresh\n updates our hidden element.\n */\n const observer = new MutationObserver(onHeadRendered)\n observer.observe(hiddenRoot, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n })\n}\n\nexport function headHandlerForBrowser({\n pageComponent,\n staticQueryResults,\n pageComponentProps,\n}) {\n useEffect(() => {\n if (pageComponent?.Head) {\n headExportValidator(pageComponent.Head)\n\n const { render } = reactDOMUtils()\n\n const HeadElement = (\n \n )\n\n const WrapHeadElement = apiRunner(\n `wrapRootElement`,\n { element: HeadElement },\n HeadElement,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n render(\n // just a hack to call the callback after react has done first render\n // Note: In dev, we call onHeadRendered twice( in FireCallbackInEffect and after mutualution observer dectects initail render into hiddenRoot) this is for hot reloading\n // In Prod we only call onHeadRendered in FireCallbackInEffect to render to head\n \n \n {WrapHeadElement}\n \n ,\n hiddenRoot\n )\n }\n\n return () => {\n removePrevHeadElements()\n removeHtmlAndBodyAttributes(keysOfHtmlAndBodyAttributes)\n }\n })\n}\n","import React, { Suspense, createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\nimport { headHandlerForBrowser } from \"./head/head-export-handler-for-browser\"\n\n// Renders page\nfunction PageRenderer(props) {\n const pageComponentProps = {\n ...props,\n params: {\n ...grabMatchParams(props.location.pathname),\n ...props.pageResources.json.pageContext.__params,\n },\n }\n\n const preferDefault = m => (m && m.default) || m\n\n let pageElement\n if (props.pageResources.partialHydration) {\n pageElement = props.pageResources.partialHydration\n } else {\n pageElement = createElement(preferDefault(props.pageResources.component), {\n ...pageComponentProps,\n key: props.path || props.pageResources.page.path,\n })\n }\n\n const pageComponent = props.pageResources.head\n\n headHandlerForBrowser({\n pageComponent,\n staticQueryResults: props.pageResources.staticQueryResults,\n pageComponentProps,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n {\n element: pageElement,\n props: pageComponentProps,\n },\n pageElement,\n ({ result }) => {\n return { element: result, props: pageComponentProps }\n }\n ).pop()\n\n return wrappedPage\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport {\n navigate as reachNavigate,\n globalHistory,\n} from \"@gatsbyjs/reach-router\"\nimport { parsePath } from \"gatsby-link\"\n\nfunction maybeRedirect(pathname) {\n const redirect = maybeGetBrowserRedirect(pathname)\n const { hash, search } = window.location\n\n if (redirect != null) {\n window.___replace(redirect.toPath + search + hash)\n return true\n } else {\n return false\n }\n}\n\n// Catch unhandled chunk loading errors and force a restart of the app.\nlet nextRoute = ``\n\nwindow.addEventListener(`unhandledrejection`, event => {\n if (/loading chunk \\d* failed./i.test(event.reason)) {\n if (nextRoute) {\n window.location.pathname = nextRoute\n }\n }\n})\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n nextRoute = location.pathname\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n if (\n process.env.GATSBY_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n const { pathname, search, hash } = parsePath(to)\n const redirect = maybeGetBrowserRedirect(pathname)\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath + search + hash\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname + search + hash\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname + search).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname + search + hash\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => [\n 0,\n // FIXME this is actually a big code smell, we should fix this\n // eslint-disable-next-line @babel/no-invalid-this\n this._stateStorage.read(args, args.key),\n ],\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return
\n }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(nextProps) {\n if (compareLocationProps(this.props.location, nextProps.location)) {\n onPreRouteUpdate(nextProps.location, this.props.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n \n {this.props.children}\n \n \n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates, maybeGetBrowserRedirect }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources:\n pageResources ||\n loader.loadPageSync(location.pathname + location.search, {\n withErrorDetails: true,\n }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(\n location.pathname + location.search,\n {\n withErrorDetails: true,\n }\n )\n\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (\n process.env.NODE_ENV !== `production` &&\n (!this.state.pageResources ||\n this.state.pageResources.status === PageResourceStatus.Error)\n ) {\n const message = `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n if (this.state.pageResources?.error) {\n console.error(message)\n throw this.state.pageResources.error\n }\n\n throw new Error(message)\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport { StaticQueryContext } from \"./static-query\"\nimport {\n SlicesMapContext,\n SlicesContext,\n SlicesResultsContext,\n} from \"./slice/context\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n getSliceResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\nimport { reactDOMUtils } from \"./react-dom-utils\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths, window.pageData)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nconst { render, hydrate } = reactDOMUtils()\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\nconst reloadStorageKey = `gatsby-reload-compilation-hash-match`\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).filter(Boolean).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n \n \n \n )\n\n const DataContext = React.createContext({})\n\n const slicesContext = {\n renderEnvironment: `browser`,\n }\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n \n {({ location }) => (\n \n {({ pageResources, location }) => {\n const staticQueryResults = getStaticQueryResults()\n const sliceResults = getSliceResults()\n\n return (\n \n \n \n \n \n {children}\n \n \n \n \n \n )\n }}\n \n )}\n \n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n \n {({ pageResources, location }) => (\n \n \n \n \n \n \n \n )}\n \n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). SSR\n // page paths might include search params, while SSG and DSG won't.\n // If page path include search params we also compare query params.\n // But only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !==\n browserLoc.pathname + (pagePath.includes(`?`) ? browserLoc.search : ``) &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath.match(/^\\/(404|500)(\\/?|.html)$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(\n __BASE_PATH__ +\n pagePath +\n (!pagePath.includes(`?`) ? browserLoc.search : ``) +\n browserLoc.hash,\n {\n replace: true,\n }\n )\n }\n\n // It's possible that sessionStorage can throw an exception if access is not granted, see https://github.com/gatsbyjs/gatsby/issues/34512\n const getSessionStorage = () => {\n try {\n return sessionStorage\n } catch {\n return null\n }\n }\n\n publicLoader.loadPage(browserLoc.pathname + browserLoc.search).then(page => {\n const sessionStorage = getSessionStorage()\n\n if (\n page?.page?.webpackCompilationHash &&\n page.page.webpackCompilationHash !== window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n // We have not matching html + js (inlined `window.___webpackCompilationHash`)\n // with our data (coming from `app-data.json` file). This can cause issues such as\n // errors trying to load static queries (as list of static queries is inside `page-data`\n // which might not match to currently loaded `.js` scripts).\n // We are making attempt to reload if hashes don't match, but we also have to handle case\n // when reload doesn't fix it (possibly broken deploy) so we don't end up in infinite reload loop\n if (sessionStorage) {\n const isReloaded = sessionStorage.getItem(reloadStorageKey) === `1`\n\n if (!isReloaded) {\n sessionStorage.setItem(reloadStorageKey, `1`)\n window.location.reload(true)\n return\n }\n }\n }\n\n if (sessionStorage) {\n sessionStorage.removeItem(reloadStorageKey)\n }\n\n if (!page || page.status === PageResourceStatus.Error) {\n const message = `page resources for ${browserLoc.pathname} not found. Not rendering React`\n\n // if the chunk throws an error we want to capture the real error\n // This should help with https://github.com/gatsbyjs/gatsby/issues/19618\n if (page && page.error) {\n console.error(message)\n throw page.error\n }\n\n throw new Error(message)\n }\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: },\n ,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = function App() {\n const onClientEntryRanRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!onClientEntryRanRef.current) {\n onClientEntryRanRef.current = true\n if (performance.mark) {\n performance.mark(`onInitialClientRender`)\n }\n\n apiRunner(`onInitialClientRender`)\n }\n }, [])\n\n return {SiteRoot}\n }\n\n const focusEl = document.getElementById(`gatsby-focus-wrapper`)\n\n // Client only pages have any empty body so we just do a normal\n // render to avoid React complaining about hydration mis-matches.\n let defaultRenderer = render\n if (focusEl && focusEl.children.length) {\n defaultRenderer = hydrate\n }\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n defaultRenderer\n )[0]\n\n function runRender() {\n const rootElement =\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : null\n\n renderer(, rootElement)\n }\n\n // https://github.com/madrobby/zepto/blob/b5ed8d607f67724788ec9ff492be297f64d47dfc/src/zepto.js#L439-L450\n // TODO remove IE 10 support\n const doc = document\n if (\n doc.readyState === `complete` ||\n (doc.readyState !== `loading` && !doc.documentElement.doScroll)\n ) {\n setTimeout(function () {\n runRender()\n }, 0)\n } else {\n const handler = function () {\n doc.removeEventListener(`DOMContentLoaded`, handler, false)\n window.removeEventListener(`load`, handler, false)\n\n runRender()\n }\n\n doc.addEventListener(`DOMContentLoaded`, handler, false)\n window.addEventListener(`load`, handler, false)\n }\n\n return\n })\n})\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","const map = new WeakMap()\n\nexport function reactDOMUtils() {\n const reactDomClient = require(`react-dom/client`)\n\n const render = (Component, el) => {\n let root = map.get(el)\n if (!root) {\n map.set(el, (root = reactDomClient.createRoot(el)))\n }\n root.render(Component)\n }\n\n const hydrate = (Component, el) => reactDomClient.hydrateRoot(el, Component)\n\n return { render, hydrate }\n}\n","import redirects from \"./redirects.json\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nexport function maybeGetBrowserRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n return redirect\n}\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","import React from \"react\"\n\nconst SlicesResultsContext = React.createContext({})\nconst SlicesContext = React.createContext({})\nconst SlicesMapContext = React.createContext({})\nconst SlicesPropsContext = React.createContext({})\n\nexport {\n SlicesResultsContext,\n SlicesContext,\n SlicesMapContext,\n SlicesPropsContext,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { createServerOrClientContext } from \"./context-utils\"\n\nconst StaticQueryContext = createServerOrClientContext(`StaticQuery`, {})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n \n {finalData && render(finalData)}\n {!finalData &&
Loading (StaticQuery)
}\n
\n )\n}\n\nlet warnedAboutStaticQuery = false\n\n// TODO(v6): Remove completely\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n if (process.env.NODE_ENV === `development` && !warnedAboutStaticQuery) {\n console.warn(\n `The component is deprecated and will be removed in Gatsby v6. Use useStaticQuery instead. Refer to the migration guide for more information: https://gatsby.dev/migrating-4-to-5/#staticquery--is-deprecated`\n )\n warnedAboutStaticQuery = true\n }\n\n return (\n \n {staticQueryData => (\n \n )}\n \n )\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n // TODO(v5): Remove since we require React >= 18\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n\n const context = React.useContext(StaticQueryContext)\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nexport { StaticQuery, StaticQueryContext, useStaticQuery }\n","import React from \"react\"\n\n// Ensure serverContext is not created more than once as React will throw when creating it more than once\n// https://github.com/facebook/react/blob/dd2d6522754f52c70d02c51db25eb7cbd5d1c8eb/packages/react/src/ReactServerContext.js#L101\nconst createServerContext = (name, defaultValue = null) => {\n /* eslint-disable no-undef */\n if (!globalThis.__SERVER_CONTEXT) {\n globalThis.__SERVER_CONTEXT = {}\n }\n\n if (!globalThis.__SERVER_CONTEXT[name]) {\n globalThis.__SERVER_CONTEXT[name] = React.createServerContext(\n name,\n defaultValue\n )\n }\n\n return globalThis.__SERVER_CONTEXT[name]\n}\n\nfunction createServerOrClientContext(name, defaultValue) {\n if (React.createServerContext) {\n return createServerContext(name, defaultValue)\n }\n\n return React.createContext(defaultValue)\n}\n\nexport { createServerOrClientContext }\n","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.INVALID_HASH = exports.IMPROPPER_FORMATTING = void 0;\nvar IMPROPPER_FORMATTING = 'Anchor path should contain an absolute root path `/` and selector `#` Ex: `/about#team`';\nexports.IMPROPPER_FORMATTING = IMPROPPER_FORMATTING;\nvar INVALID_HASH = 'Anchor Links plugin attempted to scroll to an invalid hash on route change.';\nexports.INVALID_HASH = INVALID_HASH;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.onRouteUpdate = void 0;\n\nvar _utils = require(\"./utils\");\n\nvar onRouteUpdate = function onRouteUpdate(_ref, _ref2) {\n var location = _ref.location;\n var _ref2$offset = _ref2.offset,\n offset = _ref2$offset === void 0 ? 0 : _ref2$offset,\n _ref2$duration = _ref2.duration,\n duration = _ref2$duration === void 0 ? 1000 : _ref2$duration;\n var windowHash;\n\n if (_utils.isBrowser) {\n window.gatsby_scroll_offset = offset;\n window.gatsby_scroll_duration = duration;\n windowHash = window.gatsby_scroll_hash;\n }\n\n windowHash ? (0, _utils.scroller)(windowHash, offset) : (0, _utils.checkHash)(location, offset);\n\n if (_utils.isBrowser && windowHash) {\n window.gatsby_scroll_hash = undefined;\n }\n};\n\nexports.onRouteUpdate = onRouteUpdate;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.logWarning = logWarning;\nexports.scroller = scroller;\nexports.handleLinkClick = handleLinkClick;\nexports.handleStrippedLinkClick = handleStrippedLinkClick;\nexports.stripHashedLocation = stripHashedLocation;\nexports.checkHash = checkHash;\nexports.isDevelopment = exports.isBrowser = void 0;\n\nvar _scrollToElement = _interopRequireDefault(require(\"scroll-to-element\"));\n\nvar _gatsby = require(\"gatsby\");\n\nvar errorTypes = _interopRequireWildcard(require(\"./errors\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar isBrowser = typeof window !== 'undefined';\nexports.isBrowser = isBrowser;\nvar isDevelopment = process.env.NODE_ENV !== 'production';\nexports.isDevelopment = isDevelopment;\n\nfunction logWarning(message) {\n if (isDevelopment) console.warn(message);\n}\n\nfunction scroller(target) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;\n (0, _scrollToElement[\"default\"])(target, {\n duration: duration,\n offset: offset\n });\n}\n\nfunction handleLinkClick(to, e, onAnchorLinkClick) {\n /**\n * Log warnings on click\n */\n var improperFormatting = !to.includes('/') || !to.includes('#');\n if (improperFormatting) logWarning(errorTypes.IMPROPPER_FORMATTING);\n\n if (isBrowser && to.includes('#')) {\n var _to$split = to.split('#'),\n _to$split2 = _slicedToArray(_to$split, 2),\n anchorPath = _to$split2[0],\n anchor = _to$split2[1];\n\n if (window.location.pathname === (0, _gatsby.withPrefix)(anchorPath)) {\n e.preventDefault();\n scroller(\"#\".concat(anchor), window.gatsby_scroll_offset, window.gatsby_scroll_duration);\n }\n }\n\n if (onAnchorLinkClick) onAnchorLinkClick();\n}\n\nfunction handleStrippedLinkClick(to, e, onAnchorLinkClick) {\n /**\n * Log warnings on click\n */\n var improperFormatting = !to.includes('/') || !to.includes('#');\n if (improperFormatting) logWarning(errorTypes.IMPROPPER_FORMATTING);\n\n var _to$split3 = to.split('#'),\n _to$split4 = _slicedToArray(_to$split3, 2),\n anchorPath = _to$split4[0],\n anchor = _to$split4[1];\n /**\n * Determine location, run scroller or set window variable\n */\n\n\n var isSamePage = isBrowser && window.location.pathname === anchorPath;\n var isDifferentPage = isBrowser && window.location.pathname !== anchorPath;\n\n if (isSamePage) {\n e.preventDefault();\n scroller(\"#\".concat(anchor), window.gatsby_scroll_offset, window.gatsby_scroll_duration);\n }\n\n if (isDifferentPage) {\n window.gatsby_scroll_hash = \"#\".concat(anchor);\n }\n\n if (onAnchorLinkClick) onAnchorLinkClick();\n}\n\nfunction stripHashedLocation(to) {\n return to.split('#')[0];\n}\n\nfunction checkHash(location, offset) {\n var hash = location.hash,\n selector = hash ? hash.substr(1) : null,\n validElement = selector ? document.getElementById(selector) : null;\n if (hash && Boolean(validElement)) scroller(hash, offset);else if (hash && selector && !validElement) logWarning(errorTypes.INVALID_HASH);\n}","\"use strict\";\n\nexports.onRouteUpdate = function () {\n // Don't track while developing.\n if (process.env.NODE_ENV === \"production\" && typeof fbq === \"function\") {\n fbq(\"track\", \"ViewContent\");\n }\n};","\"use strict\";\n\nexports.onRouteUpdate = function (_ref, pluginOptions) {\n var location = _ref.location;\n if (pluginOptions === void 0) {\n pluginOptions = {};\n }\n if (process.env.NODE_ENV !== \"production\" || typeof gtag !== \"function\") {\n return null;\n }\n var pluginConfig = pluginOptions.pluginConfig || {};\n var pathIsExcluded = location && typeof window.excludeGtagPaths !== \"undefined\" && window.excludeGtagPaths.some(function (rx) {\n return rx.test(location.pathname);\n });\n if (pathIsExcluded) return null;\n\n // wrap inside a timeout to make sure react-helmet is done with its changes (https://github.com/gatsbyjs/gatsby/issues/11592)\n var sendPageView = function sendPageView() {\n var pagePath = location ? location.pathname + location.search + location.hash : undefined;\n window.gtag(\"event\", \"page_view\", {\n page_path: pagePath\n });\n };\n var _pluginConfig$delayOn = pluginConfig.delayOnRouteUpdate,\n delayOnRouteUpdate = _pluginConfig$delayOn === void 0 ? 0 : _pluginConfig$delayOn;\n if (\"requestAnimationFrame\" in window) {\n requestAnimationFrame(function () {\n requestAnimationFrame(function () {\n return setTimeout(sendPageView, delayOnRouteUpdate);\n });\n });\n } else {\n // Delay by 32ms to simulate 2 requestOnAnimationFrame calls\n setTimeout(sendPageView, 32 + delayOnRouteUpdate);\n }\n return null;\n};","const listOfMetricsSend = new Set();\nfunction debounce(fn, timeout) {\n let timer = null;\n return function (...args) {\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(fn, timeout, ...args);\n };\n}\nfunction sendWebVitals(dataLayerName = `dataLayer`) {\n const win = window;\n function sendData(data) {\n if (listOfMetricsSend.has(data.name)) {\n return;\n }\n listOfMetricsSend.add(data.name);\n sendToGTM(data, win[dataLayerName]);\n }\n return import(`web-vitals/base`).then(({\n getLCP,\n getFID,\n getCLS\n }) => {\n const debouncedCLS = debounce(sendData, 3000);\n // we don't need to debounce FID - we send it when it happens\n const debouncedFID = sendData;\n // LCP can occur multiple times so we debounce it\n const debouncedLCP = debounce(sendData, 3000);\n\n // With the true flag, we measure all previous occurences too, in case we start listening to late.\n getCLS(debouncedCLS, true);\n getFID(debouncedFID, true);\n getLCP(debouncedLCP, true);\n });\n}\nfunction sendToGTM({\n name,\n value,\n id\n}, dataLayer) {\n dataLayer.push({\n event: `core-web-vitals`,\n webVitalsMeasurement: {\n name: name,\n // The `id` value will be unique to the current page load. When sending\n // multiple values from the same page (e.g. for CLS), Google Analytics can\n // compute a total by grouping on this ID (note: requires `eventLabel` to\n // be a dimension in your report).\n id,\n // Google Analytics metrics must be integers, so the value is rounded.\n // For CLS the value is first multiplied by 1000 for greater precision\n // (note: increase the multiplier for greater precision if needed).\n value: Math.round(name === `CLS` ? value * 1000 : value)\n }\n });\n}\nexport function onRouteUpdate(_, pluginOptions) {\n if (process.env.NODE_ENV === `production` || pluginOptions.includeInDevelopment) {\n // wrap inside a timeout to ensure the title has properly been changed\n setTimeout(() => {\n const data = pluginOptions.dataLayerName ? window[pluginOptions.dataLayerName] : window.dataLayer;\n const eventName = pluginOptions.routeChangeEventName ? pluginOptions.routeChangeEventName : `gatsby-route-change`;\n data.push({\n event: eventName\n });\n }, 50);\n }\n}\nexport function onInitialClientRender(_, pluginOptions) {\n // we only load the polyfill in production so we can't enable it in development\n if (process.env.NODE_ENV === `production` && pluginOptions.enableWebVitalsTracking) {\n sendWebVitals(pluginOptions.dataLayerName);\n }\n}","/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\nimport { withPrefix } from \"gatsby\";\nimport getManifestForPathname from \"./get-manifest-pathname\";\n\n// when we don't have localisation in our manifest, we tree shake everything away\nexport const onRouteUpdate = function onRouteUpdate({\n location\n}, pluginOptions) {\n if (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n const {\n localize\n } = pluginOptions;\n const manifestFilename = getManifestForPathname(location.pathname, localize, true);\n const manifestEl = document.head.querySelector(`link[rel=\"manifest\"]`);\n if (manifestEl) {\n manifestEl.setAttribute(`href`, withPrefix(manifestFilename));\n }\n }\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _gatsby = require(\"gatsby\");\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @param {boolean} shouldPrependPathPrefix\n * @return string\n */\nvar _default = (pathname, localizedManifests, shouldPrependPathPrefix = false) => {\n const defaultFilename = `manifest.webmanifest`;\n if (!Array.isArray(localizedManifests)) {\n return defaultFilename;\n }\n const localizedManifest = localizedManifests.find(app => {\n let startUrl = app.start_url;\n if (shouldPrependPathPrefix) {\n startUrl = (0, _gatsby.withPrefix)(startUrl);\n }\n return pathname.startsWith(startUrl);\n });\n if (!localizedManifest) {\n return defaultFilename;\n }\n return `manifest_${localizedManifest.lang}.webmanifest`;\n};\nexports.default = _default;","\"use strict\";\n\nexports.wrapPageElement = require('./wrap-page');","\"use strict\";\n\nvar React = require('react');\n\nvar _require = require('react-helmet'),\n Helmet = _require.Helmet;\n\nvar defaultPluginOptions = {\n noTrailingSlash: false,\n nopQueryString: false,\n nopHash: false\n};\n\nvar isExcluded = function isExcluded(excludes, element) {\n if (!Array.isArray(excludes)) return false;\n element = element.replace(/\\/+$/, '');\n return excludes.some(function (exclude) {\n if (exclude instanceof RegExp) return element.match(exclude);\n return exclude.includes(element);\n });\n};\n\nmodule.exports = function (_ref, pluginOptions) {\n var element = _ref.element,\n location = _ref.props.location;\n\n if (pluginOptions === void 0) {\n pluginOptions = {};\n }\n\n var options = Object.assign({}, defaultPluginOptions, pluginOptions);\n\n if (options.siteUrl && !isExcluded(options.exclude, location.pathname)) {\n var pathname = location.pathname || '/';\n if (options.noTrailingSlash && pathname.endsWith('/')) pathname = pathname.substring(0, pathname.length - 1);\n var myUrl = \"\" + options.siteUrl + pathname;\n if (!options.noQueryString) myUrl += location.search;\n if (!options.noHash) myUrl += location.hash;\n return React.createElement(React.Fragment, null, React.createElement(Helmet, {\n link: [{\n rel: 'canonical',\n key: myUrl,\n href: myUrl\n }]\n }), element);\n }\n\n return element;\n};","import React from 'react';\n\nimport { QualificationProvider } from './src/contexts/qualificationContext';\n\nexport const onClientEntry = async () => {\n if (typeof IntersectionObserver === 'undefined') {\n await require('intersection-observer');\n }\n};\n\nexport function wrapPageElement({ element, props }) {\n const Layout = element.type.Layout ?? React.Fragment;\n return (\n \n {element}\n \n );\n}\n","class ServerSideStorage implements Storage {\n private store: Record = {};\n\n get length(): number {\n return Object.keys(this.store).length;\n }\n\n clear(): void {\n this.store = {};\n }\n\n getItem(key: string): string | null {\n // eslint-disable-next-line no-prototype-builtins\n return this.store.hasOwnProperty(key) ? this.store[key] : null;\n }\n\n key(index: number): string | null {\n const keys = Object.keys(this.store);\n return keys[index] || null;\n }\n\n removeItem(key: string): void {\n delete this.store[key];\n }\n\n setItem(key: string, value: string): void {\n this.store[key] = value;\n }\n}\n\nexport { ServerSideStorage };\n","import { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { ServerSideStorage } from './ServerSideStorage';\nimport { usePrevious } from './usePrevious';\n\ninterface IPersistenceProps {\n serializationKey: string;\n defaultValue: T;\n forceEmitSameTab?: boolean;\n storageSpace?: Storage;\n}\n\ntype ValueContainer =\n | { isDefined: undefined | null | false }\n | { isDefined: true; value: T };\n\nconst serialize = (data: T): string => {\n return JSON.stringify({ value: data, isDefined: true });\n};\n\nconst deserialize = (data: string | null): ValueContainer => {\n if (data === null) return { isDefined: false };\n const c: unknown = JSON.parse(data);\n if (typeof c === 'object') {\n return c as ValueContainer;\n }\n return { isDefined: false };\n};\n\nconst usePersistentState = (props: IPersistenceProps) => {\n const safeLocalStorage = useMemo(\n () =>\n typeof window !== 'undefined'\n ? window.localStorage\n : new ServerSideStorage(),\n [],\n );\n const storageSpace = props.storageSpace ?? safeLocalStorage;\n\n const get = useCallback((): ValueContainer => {\n return deserialize(storageSpace.getItem(props.serializationKey));\n }, [props.serializationKey, storageSpace]);\n\n const load = useCallback(() => {\n const lsValue = get();\n if (lsValue.isDefined) {\n return lsValue.value;\n } else {\n return props.defaultValue;\n }\n }, [get, props.defaultValue]);\n\n const [state, setState] = useState(load());\n\n const oldSerKey = usePrevious(props.serializationKey);\n\n useEffect(() => {\n if (props.serializationKey !== oldSerKey) {\n setState(load());\n }\n }, [props.serializationKey, oldSerKey, load]);\n\n useEffect(() => {\n const cb = (ev: StorageEvent) => {\n if (\n ev.storageArea === storageSpace &&\n ev.key === props.serializationKey\n ) {\n const newState = load();\n setState((prev) => {\n if (serialize(prev) !== ev.newValue) {\n return newState;\n }\n return prev;\n });\n }\n };\n window.addEventListener('storage', cb);\n return () => window.removeEventListener('storage', cb);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const set = useCallback(\n (old: T, val: T) => {\n storageSpace.setItem(props.serializationKey, serialize(val));\n if (props.forceEmitSameTab) {\n window.dispatchEvent(\n new StorageEvent('storage', {\n key: props.serializationKey,\n storageArea: storageSpace,\n oldValue: serialize(old),\n newValue: serialize(val),\n }),\n );\n }\n },\n [props.forceEmitSameTab, props.serializationKey, storageSpace],\n );\n\n const setStateInner = useCallback(\n (val: T | ((oldVal: T) => T)) => {\n if (val instanceof Function) {\n setState((old) => {\n const newVal = val(old);\n set(old, newVal);\n return newVal;\n });\n } else {\n setState((old) => {\n set(old, val);\n return val;\n });\n }\n },\n [setState, set],\n );\n\n return [state, setStateInner] as const;\n};\n\nexport { usePersistentState };\n","// Copyright (c) 2022 Alife Health - All Rights Reserved\nimport { RefObject, useEffect, useRef } from 'react';\n\nexport function usePrevious(val: T): RefObject['current'] {\n const ref = useRef();\n\n useEffect(() => {\n ref.current = val;\n }, [val]);\n\n return ref.current;\n}\n","import React, { PropsWithChildren, createContext, useContext } from 'react';\n\nimport { usePersistentState } from '../hooks/usePersistentState';\n\nexport type Qualification =\n | 'DISQUALIFIED'\n | 'QUALIFIED_CALENDLY'\n | 'QUALIFIED_EMAILED'\n | undefined;\n\ntype QualificationContext = {\n embryoAssistQualification: Qualification;\n setEmbryoAssistQualification: React.Dispatch<\n React.SetStateAction\n >;\n};\nconst QualificationContext = createContext({\n embryoAssistQualification: undefined,\n setEmbryoAssistQualification: () => {},\n});\n\nexport const QualificationProvider = (props: PropsWithChildren) => {\n const [embryoAssistQualification, setEmbryoAssistQualification] =\n usePersistentState({\n serializationKey: 'embryoAssistQualification',\n defaultValue: undefined,\n });\n\n return (\n \n {props.children}\n \n );\n};\n\nexport const useQualification = () => useContext(QualificationContext);\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n(function() {\n'use strict';\n\n// Exit early if we're not running in a browser.\nif (typeof window !== 'object') {\n return;\n}\n\n// Exit early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\n/**\n * Returns the embedding frame element, if any.\n * @param {!Document} doc\n * @return {!Element}\n */\nfunction getFrameElement(doc) {\n try {\n return doc.defaultView && doc.defaultView.frameElement || null;\n } catch (e) {\n // Ignore the error.\n return null;\n }\n}\n\n/**\n * A local reference to the root document.\n */\nvar document = (function(startDoc) {\n var doc = startDoc;\n var frame = getFrameElement(doc);\n while (frame) {\n doc = frame.ownerDocument;\n frame = getFrameElement(doc);\n }\n return doc;\n})(window.document);\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n/**\n * The signal updater for cross-origin intersection. When not null, it means\n * that the polyfill is configured to work in a cross-origin mode.\n * @type {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nvar crossOriginUpdater = null;\n\n/**\n * The current cross-origin intersection. Only used in the cross-origin mode.\n * @type {DOMRect|ClientRect}\n */\nvar crossOriginRect = null;\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = ensureDOMRect(entry.rootBounds);\n this.boundingClientRect = ensureDOMRect(entry.boundingClientRect);\n this.intersectionRect = ensureDOMRect(entry.intersectionRect || getEmptyRect());\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (\n options.root &&\n options.root.nodeType != 1 &&\n options.root.nodeType != 9\n ) {\n throw new Error('root must be a Document or Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n\n /** @private @const {!Array} */\n this._monitoringDocuments = [];\n /** @private @const {!Array} */\n this._monitoringUnsubscribes = [];\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\n/**\n * Sets up the polyfill in the cross-origin mode. The result is the\n * updater function that accepts two arguments: `boundingClientRect` and\n * `intersectionRect` - just as these fields would be available to the\n * parent via `IntersectionObserverEntry`. This function should be called\n * each time the iframe receives intersection information from the parent\n * window, e.g. via messaging.\n * @return {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nIntersectionObserver._setupCrossOriginUpdater = function() {\n if (!crossOriginUpdater) {\n /**\n * @param {DOMRect|ClientRect} boundingClientRect\n * @param {DOMRect|ClientRect} intersectionRect\n */\n crossOriginUpdater = function(boundingClientRect, intersectionRect) {\n if (!boundingClientRect || !intersectionRect) {\n crossOriginRect = getEmptyRect();\n } else {\n crossOriginRect = convertFromParentRect(boundingClientRect, intersectionRect);\n }\n registry.forEach(function(observer) {\n observer._checkForIntersections();\n });\n };\n }\n return crossOriginUpdater;\n};\n\n\n/**\n * Resets the cross-origin mode.\n */\nIntersectionObserver._resetCrossOriginUpdater = function() {\n crossOriginUpdater = null;\n crossOriginRect = null;\n};\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections(target.ownerDocument);\n this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n return item.element != target;\n });\n this._unmonitorIntersections(target.ownerDocument);\n if (this._observationTargets.length == 0) {\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorAllIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function(doc) {\n var win = doc.defaultView;\n if (!win) {\n // Already destroyed.\n return;\n }\n if (this._monitoringDocuments.indexOf(doc) != -1) {\n // Already monitoring.\n return;\n }\n\n // Private state for monitoring.\n var callback = this._checkForIntersections;\n var monitoringInterval = null;\n var domObserver = null;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n monitoringInterval = win.setInterval(callback, this.POLL_INTERVAL);\n } else {\n addEvent(win, 'resize', callback, true);\n addEvent(doc, 'scroll', callback, true);\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in win) {\n domObserver = new win.MutationObserver(callback);\n domObserver.observe(doc, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n\n this._monitoringDocuments.push(doc);\n this._monitoringUnsubscribes.push(function() {\n // Get the window object again. When a friendly iframe is destroyed, it\n // will be null.\n var win = doc.defaultView;\n\n if (win) {\n if (monitoringInterval) {\n win.clearInterval(monitoringInterval);\n }\n removeEvent(win, 'resize', callback, true);\n }\n\n removeEvent(doc, 'scroll', callback, true);\n if (domObserver) {\n domObserver.disconnect();\n }\n });\n\n // Also monitor the parent.\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._monitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function(doc) {\n var index = this._monitoringDocuments.indexOf(doc);\n if (index == -1) {\n return;\n }\n\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n\n // Check if any dependent targets are still remaining.\n var hasDependentTargets =\n this._observationTargets.some(function(item) {\n var itemDoc = item.element.ownerDocument;\n // Target is in this context.\n if (itemDoc == doc) {\n return true;\n }\n // Target is nested in this context.\n while (itemDoc && itemDoc != rootDoc) {\n var frame = getFrameElement(itemDoc);\n itemDoc = frame && frame.ownerDocument;\n if (itemDoc == doc) {\n return true;\n }\n }\n return false;\n });\n if (hasDependentTargets) {\n return;\n }\n\n // Unsubscribe.\n var unsubscribe = this._monitoringUnsubscribes[index];\n this._monitoringDocuments.splice(index, 1);\n this._monitoringUnsubscribes.splice(index, 1);\n unsubscribe();\n\n // Also unmonitor the parent.\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._unmonitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorAllIntersections = function() {\n var unsubscribes = this._monitoringUnsubscribes.slice(0);\n this._monitoringDocuments.length = 0;\n this._monitoringUnsubscribes.length = 0;\n for (var i = 0; i < unsubscribes.length; i++) {\n unsubscribes[i]();\n }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n if (!this.root && crossOriginUpdater && !crossOriginRect) {\n // Cross origin monitoring, but no initial data available yet.\n return;\n }\n\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function(item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, targetRect, rootRect);\n\n var rootBounds = null;\n if (!this._rootContainsTarget(target)) {\n rootBounds = getEmptyRect();\n } else if (!crossOriginUpdater || this.root) {\n rootBounds = rootRect;\n }\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootBounds,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} targetRect The bounding rect of the target.\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, targetRect, rootRect) {\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot && parent) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return null;\n\n if (parent == this.root || parent.nodeType == /* DOCUMENT */ 9) {\n atRoot = true;\n if (parent == this.root || parent == document) {\n if (crossOriginUpdater && !this.root) {\n if (!crossOriginRect ||\n crossOriginRect.width == 0 && crossOriginRect.height == 0) {\n // A 0-size cross-origin intersection means no-intersection.\n parent = null;\n parentRect = null;\n intersectionRect = null;\n } else {\n parentRect = crossOriginRect;\n }\n } else {\n parentRect = rootRect;\n }\n } else {\n // Check if there's a frame that can be navigated to.\n var frame = getParentNode(parent);\n var frameRect = frame && getBoundingClientRect(frame);\n var frameIntersect =\n frame &&\n this._computeTargetAndRootIntersection(frame, frameRect, rootRect);\n if (frameRect && frameIntersect) {\n parent = frame;\n parentRect = convertFromParentRect(frameRect, frameIntersect);\n } else {\n parent = null;\n intersectionRect = null;\n }\n }\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n var doc = parent.ownerDocument;\n if (parent != doc.body &&\n parent != doc.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n }\n if (!intersectionRect) break;\n parent = parent && getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {ClientRect} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root && !isDoc(this.root)) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var doc = isDoc(this.root) ? this.root : document;\n var html = doc.documentElement;\n var body = doc.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {DOMRect|ClientRect} rect The rect object to expand.\n * @return {ClientRect} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n return (\n containsDeep(rootDoc, target) &&\n (!this.root || rootDoc == target.ownerDocument)\n );\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function() {\n fn();\n timer = null;\n }, timeout);\n }\n };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detachEvent == 'function') {\n node.detachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object|?ClientRect} The intersection rect or undefined if no\n * intersection is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n } || null;\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {DOMRect|ClientRect} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {ClientRect} The empty rect.\n */\nfunction getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n}\n\n\n/**\n * Ensure that the result has all of the necessary fields of the DOMRect.\n * Specifically this ensures that `x` and `y` fields are set.\n *\n * @param {?DOMRect|?ClientRect} rect\n * @return {?DOMRect}\n */\nfunction ensureDOMRect(rect) {\n // A `DOMRect` object has `x` and `y` fields.\n if (!rect || 'x' in rect) {\n return rect;\n }\n // A IE's `ClientRect` type does not have `x` and `y`. The same is the case\n // for internally calculated Rect objects. For the purposes of\n // `IntersectionObserver`, it's sufficient to simply mirror `left` and `top`\n // for these fields.\n return {\n top: rect.top,\n y: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n right: rect.right,\n width: rect.width,\n height: rect.height\n };\n}\n\n\n/**\n * Inverts the intersection and bounding rect from the parent (frame) BCR to\n * the local BCR space.\n * @param {DOMRect|ClientRect} parentBoundingRect The parent's bound client rect.\n * @param {DOMRect|ClientRect} parentIntersectionRect The parent's own intersection rect.\n * @return {ClientRect} The local root bounding rect for the parent's children.\n */\nfunction convertFromParentRect(parentBoundingRect, parentIntersectionRect) {\n var top = parentIntersectionRect.top - parentBoundingRect.top;\n var left = parentIntersectionRect.left - parentBoundingRect.left;\n return {\n top: top,\n left: left,\n height: parentIntersectionRect.height,\n width: parentIntersectionRect.width,\n bottom: top + parentIntersectionRect.height,\n right: left + parentIntersectionRect.width\n };\n}\n\n\n/**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n var parent = node.parentNode;\n\n if (node.nodeType == /* DOCUMENT */ 9 && node != document) {\n // If this node is a document node, look for the embedding frame.\n return getFrameElement(node);\n }\n\n // If the parent has element that is assigned through shadow root slot\n if (parent && parent.assignedSlot) {\n parent = parent.assignedSlot.parentNode\n }\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n\n return parent;\n}\n\n/**\n * Returns true if `node` is a Document.\n * @param {!Node} node\n * @returns {boolean}\n */\nfunction isDoc(node) {\n return node && node.nodeType === 9;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}());\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\n\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\n\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n cb && cb();\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexport default HelmetExport;\nexport { HelmetExport as Helmet };\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/**\n * @license React\n * react-server-dom-webpack.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var k=require(\"react\"),l={stream:!0},n=new Map,p=Symbol.for(\"react.element\"),q=Symbol.for(\"react.lazy\"),r=Symbol.for(\"react.default_value\"),t=k.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ContextRegistry;function u(a){t[a]||(t[a]=k.createServerContext(a,r));return t[a]}function v(a,b,c){this._status=a;this._value=b;this._response=c}v.prototype.then=function(a){0===this._status?(null===this._value&&(this._value=[]),this._value.push(a)):a()};\nfunction w(a){switch(a._status){case 3:return a._value;case 1:var b=JSON.parse(a._value,a._response._fromJSON);a._status=3;return a._value=b;case 2:b=a._value;for(var c=b.chunks,d=0;d= duration;\n\n if (done) {\n this._from = this._to;\n this._update(this._to);\n this._done = true;\n this.emit('end');\n return this;\n }\n\n var from = this._from;\n var to = this._to;\n var curr = this._curr;\n var fn = this._ease;\n var p = (now - this._start) / duration;\n var n = fn(p);\n\n if (this.isArray) {\n for (var i = 0; i < from.length; ++i) {\n curr[i] = from[i] + (to[i] - from[i]) * n;\n }\n\n this._update(curr);\n return this;\n }\n\n for (var k in from) {\n curr[k] = from[k] + (to[k] - from[k]) * n;\n }\n\n this._update(curr);\n return this;\n};\n\nTween.prototype.update = function(fn){\n if (0 == arguments.length) return this.step();\n this._update = fn;\n return this;\n};\n\nmodule.exports = Tween;\n","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst PartytownSnippet = \"/* Partytown 0.7.6 - MIT builder.io */\\n!function(t,e,n,i,r,o,a,d,s,c,p,l){function u(){l||(l=1,\\\"/\\\"==(a=(o.lib||\\\"/~partytown/\\\")+(o.debug?\\\"debug/\\\":\\\"\\\"))[0]&&(s=e.querySelectorAll('script[type=\\\"text/partytown\\\"]'),i!=t?i.dispatchEvent(new CustomEvent(\\\"pt1\\\",{detail:t})):(d=setTimeout(f,1e4),e.addEventListener(\\\"pt0\\\",w),r?h(1):n.serviceWorker?n.serviceWorker.register(a+(o.swPath||\\\"partytown-sw.js\\\"),{scope:a}).then((function(t){t.active?h():t.installing&&t.installing.addEventListener(\\\"statechange\\\",(function(t){\\\"activated\\\"==t.target.state&&h()}))}),console.error):f())))}function h(t){c=e.createElement(t?\\\"script\\\":\\\"iframe\\\"),t||(c.setAttribute(\\\"style\\\",\\\"display:block;width:0;height:0;border:0;visibility:hidden\\\"),c.setAttribute(\\\"aria-hidden\\\",!0)),c.src=a+\\\"partytown-\\\"+(t?\\\"atomics.js?v=0.7.6\\\":\\\"sandbox-sw.html?\\\"+Date.now()),e.body.appendChild(c)}function f(n,r){for(w(),i==t&&(o.forward||[]).map((function(e){delete t[e.split(\\\".\\\")[0]]})),n=0;n {\n const { forward = [], ...filteredConfig } = config || {};\n const configStr = JSON.stringify(filteredConfig, (k, v) => {\n if (typeof v === 'function') {\n v = String(v);\n if (v.startsWith(k + '(')) {\n v = 'function ' + v;\n }\n }\n return v;\n });\n return [\n `!(function(w,p,f,c){`,\n Object.keys(filteredConfig).length > 0\n ? `c=w[p]=Object.assign(w[p]||{},${configStr});`\n : `c=w[p]=w[p]||{};`,\n `c[f]=(c[f]||[])`,\n forward.length > 0 ? `.concat(${JSON.stringify(forward)})` : ``,\n `})(window,'partytown','forward');`,\n snippetCode,\n ].join('');\n};\n\n/**\n * The `type` attribute for Partytown scripts, which does two things:\n *\n * 1. Prevents the `