{"version":3,"file":"app-703997a18dc048b3307c.js","mappings":"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","sources":["webpack://gatsby-starter-default/./node_modules/bezier-easing/src/index.js","webpack://gatsby-starter-default/./node_modules/escape-string-regexp/index.js","webpack://gatsby-starter-default/./node_modules/gatsby-page-utils/dist/apply-trailing-slash-option.js","webpack://gatsby-starter-default/./node_modules/gatsby-react-router-scroll/index.js","webpack://gatsby-starter-default/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://gatsby-starter-default/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://gatsby-starter-default/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://gatsby-starter-default/./node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/gatsby/dist/internal-plugins/partytown/utils/get-forwards.js","webpack://gatsby-starter-default/./node_modules/gatsby/dist/internal-plugins/partytown/utils/inject-partytown-snippet.js","webpack://gatsby-starter-default/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://gatsby-starter-default/./.cache/api-runner-browser-plugins.js","webpack://gatsby-starter-default/./.cache/api-runner-browser.js","webpack://gatsby-starter-default/./.cache/create-content-digest-browser-shim.js","webpack://gatsby-starter-default/./.cache/emitter.js","webpack://gatsby-starter-default/./node_modules/mitt/dist/mitt.es.js","webpack://gatsby-starter-default/./.cache/normalize-page-path.js","webpack://gatsby-starter-default/./.cache/find-path.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/construct.js","webpack://gatsby-starter-default/./.cache/slice/server-slice-renderer.js","webpack://gatsby-starter-default/./.cache/slice/server-slice.js","webpack://gatsby-starter-default/./.cache/slice/inline-slice.js","webpack://gatsby-starter-default/./.cache/slice.js","webpack://gatsby-starter-default/./.cache/gatsby-browser-entry.js","webpack://gatsby-starter-default/./.cache/prefetch.js","webpack://gatsby-starter-default/./.cache/loader.js","webpack://gatsby-starter-default/./.cache/head/components/fire-callback-in-effect.js","webpack://gatsby-starter-default/./.cache/head/constants.js","webpack://gatsby-starter-default/./.cache/head/utils.js","webpack://gatsby-starter-default/./.cache/head/head-export-handler-for-browser.js","webpack://gatsby-starter-default/./.cache/page-renderer.js","webpack://gatsby-starter-default/./.cache/route-announcer-props.js","webpack://gatsby-starter-default/./.cache/navigation.js","webpack://gatsby-starter-default/./node_modules/shallow-compare/es/index.js","webpack://gatsby-starter-default/./.cache/ensure-resources.js","webpack://gatsby-starter-default/./.cache/production-app.js","webpack://gatsby-starter-default/./.cache/public-page-renderer-prod.js","webpack://gatsby-starter-default/./.cache/public-page-renderer.js","webpack://gatsby-starter-default/./.cache/react-dom-utils.js","webpack://gatsby-starter-default/./.cache/redirect-utils.js","webpack://gatsby-starter-default/./.cache/register-service-worker.js","webpack://gatsby-starter-default/./.cache/slice/context.js","webpack://gatsby-starter-default/./.cache/static-query.js","webpack://gatsby-starter-default/./.cache/context-utils.js","webpack://gatsby-starter-default/./.cache/strip-prefix.js","webpack://gatsby-starter-default/./node_modules/@tmttn/gatsby-plugin-hubspot-tracking/default-options.js","webpack://gatsby-starter-default/./node_modules/@tmttn/gatsby-plugin-hubspot-tracking/gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-catch-links/catch-links.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-catch-links/gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-google-tagmanager/gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-layout/gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-layout/wrap-page.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack://gatsby-starter-default/./src/utils/cart.ts","webpack://gatsby-starter-default/./src/context/Cart/CartReducer.tsx","webpack://gatsby-starter-default/./src/context/Cart/CartState.tsx","webpack://gatsby-starter-default/./gatsby-browser.tsx","webpack://gatsby-starter-default/./src/context/Article/ArticleContext.tsx","webpack://gatsby-starter-default/./src/context/Cart/CartContext.tsx","webpack://gatsby-starter-default/./src/context/CaseStudy/CaseStudyContext.tsx","webpack://gatsby-starter-default/./src/context/Property/PropertyContext.tsx","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/utils/ChildMapping.js","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/TransitionGroup.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://gatsby-starter-default/./src/components/Layout/Transition.tsx","webpack://gatsby-starter-default/./src/components/ParallaxRouteUpdate.tsx","webpack://gatsby-starter-default/./src/components/SvgSprite.tsx","webpack://gatsby-starter-default/./src/components/SvgSpriteButtons.tsx","webpack://gatsby-starter-default/./src/layouts/index.tsx","webpack://gatsby-starter-default/./src/utils/arrays.ts","webpack://gatsby-starter-default/./src/utils/links.ts","webpack://gatsby-starter-default/./src/utils/index.ts","webpack://gatsby-starter-default/./src/utils/property.ts","webpack://gatsby-starter-default/./node_modules/invariant/browser.js","webpack://gatsby-starter-default/./node_modules/lodash.throttle/index.js","webpack://gatsby-starter-default/./node_modules/parallax-controller/dist/parallax-controller.esm.js","webpack://gatsby-starter-default/./node_modules/react-scroll-parallax/dist/react-scroll-parallax.esm.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/components/Button.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/components/Element.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/components/Link.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/index.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/Helpers.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/animate-scroll.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/cancel-events.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/passive-event-listeners.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/scroll-element.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/scroll-events.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/scroll-hash.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/scroll-link.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/scroll-spy.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/scroller.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/smooth.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/utils.js","webpack://gatsby-starter-default/./node_modules/react-server-dom-webpack/cjs/react-server-dom-webpack.production.min.js","webpack://gatsby-starter-default/./node_modules/react-server-dom-webpack/index.js","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/config.js","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/Transition.js","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/utils/reflow.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://gatsby-starter-default/./node_modules/@builder.io/partytown/integration/index.cjs","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://gatsby-starter-default/./node_modules/@gatsbyjs/reach-router/dist/index.modern.mjs","webpack://gatsby-starter-default/./node_modules/gatsby-link/dist/index.modern.mjs","webpack://gatsby-starter-default/./node_modules/gatsby-script/dist/index.modern.mjs"],"sourcesContent":["/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\n\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nvar float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\nfunction B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\nfunction C (aA1) { return 3.0 * aA1; }\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\nfunction binarySubdivide (aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n}\n\nfunction newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nfunction LinearEasing (x) {\n return x;\n}\n\nmodule.exports = function bezier (mX1, mY1, mX2, mY2) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n }\n\n if (mX1 === mY1 && mX2 === mY2) {\n return LinearEasing;\n }\n\n // Precompute samples table\n var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n\n function getTForX (aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function BezierEasing (x) {\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) {\n return 0;\n }\n if (x === 1) {\n return 1;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n};\n","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n","\"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\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-tsx\": () => import(\"./../../../src/pages/404.tsx\" /* webpackChunkName: \"component---src-pages-404-tsx\" */),\n \"component---src-templates-article-article-tsx\": () => import(\"./../../../src/templates/Article/Article.tsx\" /* webpackChunkName: \"component---src-templates-article-article-tsx\" */),\n \"component---src-templates-case-study-case-study-tsx\": () => import(\"./../../../src/templates/CaseStudy/CaseStudy.tsx\" /* webpackChunkName: \"component---src-templates-case-study-case-study-tsx\" */),\n \"component---src-templates-content-content-tsx\": () => import(\"./../../../src/templates/Content/Content.tsx\" /* webpackChunkName: \"component---src-templates-content-content-tsx\" */),\n \"component---src-templates-pdf-property-list-pdf-property-list-pdf-tsx\": () => import(\"./../../../src/templates/pdf/PropertyListPdf/PropertyListPdf.tsx\" /* webpackChunkName: \"component---src-templates-pdf-property-list-pdf-property-list-pdf-tsx\" */),\n \"component---src-templates-pdf-property-pdf-property-pdf-tsx\": () => import(\"./../../../src/templates/pdf/PropertyPdf/PropertyPdf.tsx\" /* webpackChunkName: \"component---src-templates-pdf-property-pdf-property-pdf-tsx\" */),\n \"component---src-templates-property-property-tsx\": () => import(\"./../../../src/templates/Property/Property.tsx\" /* webpackChunkName: \"component---src-templates-property-property-tsx\" */),\n \"slice---src-components-layout-footer-footer-tsx\": () => import(\"./../../../src/components/Layout/Footer/Footer.tsx\" /* webpackChunkName: \"slice---src-components-layout-footer-footer-tsx\" */),\n \"slice---src-components-layout-header-header-tsx\": () => import(\"./../../../src/components/Layout/Header/Header.tsx\" /* webpackChunkName: \"slice---src-components-layout-header-header-tsx\" */)\n}\n\n","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-google-tagmanager/gatsby-browser.js'),\n options: {\"plugins\":[],\"id\":\"GTM-TWPKDVXN\",\"includeInDevelopment\":false,\"defaultDataLayer\":null,\"routeChangeEventName\":\"gatsby-route-change\",\"enableWebVitalsTracking\":false,\"selfHostedOrigin\":\"https://www.googletagmanager.com\",\"selfHostedPath\":\"gtm.js\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"gatsby-starter-default\",\"short_name\":\"starter\",\"start_url\":\"/\",\"background_color\":\"#663399\",\"display\":\"minimal-ui\",\"icon\":\"src/images/favicon.png\",\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"9b0a66ba2fda0d107d7c1c33351995d7\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-layout/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-gatsby-cloud/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-catch-links/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/@tmttn/gatsby-plugin-hubspot-tracking/gatsby-browser.js'),\n options: {\"plugins\":[],\"trackingCode\":\"20789496\",\"respectDNT\":false,\"productionOnly\":true},\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","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\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","function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nexport { _isNativeReflectConstruct as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nfunction _wrapNativeSuper(t) {\n var r = \"function\" == typeof Map ? new Map() : void 0;\n return _wrapNativeSuper = function _wrapNativeSuper(t) {\n if (null === t || !isNativeFunction(t)) return t;\n if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\");\n if (void 0 !== r) {\n if (r.has(t)) return r.get(t);\n r.set(t, Wrapper);\n }\n function Wrapper() {\n return construct(t, arguments, getPrototypeOf(this).constructor);\n }\n return Wrapper.prototype = Object.create(t.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), setPrototypeOf(Wrapper, t);\n }, _wrapNativeSuper(t);\n}\nexport { _wrapNativeSuper as default };","function _isNativeFunction(t) {\n try {\n return -1 !== Function.toString.call(t).indexOf(\"[native code]\");\n } catch (n) {\n return \"function\" == typeof t;\n }\n}\nexport { _isNativeFunction as default };","import isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _construct(t, e, r) {\n if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n var o = [null];\n o.push.apply(o, e);\n var p = new (t.bind.apply(t, o))();\n return r && setPrototypeOf(p, r.prototype), p;\n}\nexport { _construct as default };","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\nexports.__esModule = true;\nexports.default = void 0;\nvar _default = {\n respectDNT: false,\n productionOnly: true\n};\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nexports.__esModule = true;\nexports.onRouteUpdate = onRouteUpdate;\nvar _defaultOptions = _interopRequireDefault(require(\"./default-options\"));\nfunction onRouteUpdate(_ref, pluginOptions) {\n var location = _ref.location;\n var _Object$assign = Object.assign({}, _defaultOptions.default, pluginOptions),\n productionOnly = _Object$assign.productionOnly;\n if (productionOnly && process.env.NODE_ENV !== 'production' || !Array.isArray(window._hsq)) {\n return;\n }\n\n // wrap inside a timeout to make sure react-helmet is done with it's changes (https://github.com/gatsbyjs/gatsby/issues/9139)\n // react-helmet is using requestAnimationFrame (https://github.com/nfl/react-helmet/blob/5.2.0/src/HelmetUtils.js#L296-L299)\n var trackPageView = function trackPageView() {\n var path = location ? location.pathname + location.search + location.hash : undefined;\n window._hsq.push(['setPath', path]);\n window._hsq.push(['trackPageView']);\n };\n if (typeof window.requestAnimationFrame === 'function') {\n window.requestAnimationFrame(function () {\n window.requestAnimationFrame(trackPageView);\n });\n } else {\n // simulate 2 requestAnimationFrame calls\n setTimeout(trackPageView, 32);\n }\n}","import escapeStringRegexp from \"escape-string-regexp\";\nimport { withPrefix } from \"gatsby\";\nexport const userIsForcingNavigation = event => event.button !== 0 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n\n// IE does not include leading slash in anchor.pathname\nexport const slashedPathname = pathname => pathname[0] === `/` ? pathname : `/${pathname}`;\nexport const navigationWasHandledElsewhere = event => event.defaultPrevented;\nexport const findClosestAnchor = node => {\n for (; node.parentNode; node = node.parentNode) {\n if (node.nodeName.toLowerCase() === `a`) {\n return node;\n }\n }\n return null;\n};\nexport const anchorsTargetIsEquivalentToSelf = anchor => /* If target attribute is not present it's treated as _self */\nanchor.hasAttribute(`target`) === false ||\n/**\n * The browser defaults to _self, but, not all browsers set\n * a.target to the string value `_self` by default\n */\n\n/**\n * Assumption: some browsers use null/undefined for default\n * attribute values\n */\nanchor.target == null ||\n/**\n * Some browsers use the empty string to mean _self, check\n * for actual `_self`\n */\n[`_self`, ``].includes(anchor.target) ||\n/**\n * As per https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-target\n */\nanchor.target === `_parent` && (!anchor.ownerDocument.defaultView.parent ||\n// Assumption: This can be falsey\nanchor.ownerDocument.defaultView.parent === anchor.ownerDocument.defaultView) || anchor.target === `_top` && (!anchor.ownerDocument.defaultView.top ||\n// Assumption: This can be falsey\nanchor.ownerDocument.defaultView.top === anchor.ownerDocument.defaultView);\nexport const authorIsForcingNavigation = anchor =>\n/**\n * HTML5 attribute that informs the browser to handle the\n * href as a downloadable file; let the browser handle it\n */\nanchor.hasAttribute(`download`) === true ||\n/**\n * Let the browser handle anything that doesn't look like a\n * target=\"_self\" anchor\n */\nanchorsTargetIsEquivalentToSelf(anchor) === false;\n\n// https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy\nexport const urlsAreOnSameOrigin = (origin, destination) => origin.protocol === destination.protocol && /* a.host includes both hostname and port in the expected format host:port */\norigin.host === destination.host;\nexport const pathIsNotHandledByApp = (destination, pathStartRegEx) => {\n const pathFileExtensionRegEx = /^.*\\.((?!htm)[a-z0-9]{1,5})$/i;\n return (\n /**\n * For when pathPrefix is used in an app and there happens to be a link\n * pointing to the same domain but outside of the app's pathPrefix. For\n * example, a Gatsby app lives at https://example.com/myapp/, with the\n * pathPrefix set to `/myapp`. When adding an absolute link to the same\n * domain but outside of the /myapp path, for example, `` the plugin won't catch it and\n * will navigate to an external link instead of doing a pushState resulting\n * in `https://example.com/myapp/https://example.com/not-my-app`\n */\n pathStartRegEx.test(slashedPathname(destination.pathname)) === false ||\n /**\n * Don't catch links pointed at what look like file extensions (other than\n * .htm/html extensions).\n */\n destination.pathname.search(pathFileExtensionRegEx) !== -1\n );\n};\nexport const hashShouldBeFollowed = (origin, destination) => destination.hash !== `` && (\n/**\n * Dynamically created anchor links (href=\"#my-anchor\") do not always\n * have pathname on IE\n */\ndestination.pathname === `` || /* Don't catch links pointed to the same page but with a hash. */\ndestination.pathname === origin.pathname);\nexport const routeThroughBrowserOrApp = (hrefHandler, pluginOptions) => event => {\n if (window.___failedResources) return true;\n if (userIsForcingNavigation(event)) return true;\n if (navigationWasHandledElsewhere(event)) return true;\n const clickedAnchor = findClosestAnchor(event.target);\n if (clickedAnchor == null) return true;\n if (authorIsForcingNavigation(clickedAnchor)) return true;\n\n // IE clears the host value if the anchor href changed after creation, e.g.\n // in React. Creating a new anchor element to ensure host value is present\n const destination = document.createElement(`a`);\n\n // https://html.spec.whatwg.org/multipage/links.html#concept-hyperlink-url-set\n // If clickedAnchor has no href attribute like `example`, the href getter returns empty string.\n if (clickedAnchor.href !== ``) {\n destination.href = clickedAnchor.href;\n }\n if (`SVGAnimatedString` in window && clickedAnchor.href instanceof SVGAnimatedString) {\n destination.href = clickedAnchor.href.animVal;\n }\n\n // In IE, the default port is included in the anchor host but excluded from\n // the location host. This affects the ability to directly compare\n // location host to anchor host. For example: http://example.com would\n // have a location.host of 'example.com' and an destination.host of\n // 'example.com:80' Creating anchor from the location.href to normalize the\n // host value.\n const origin = document.createElement(`a`);\n origin.href = window.location.href;\n if (urlsAreOnSameOrigin(origin, destination) === false) return true;\n\n // Regex to test pathname against pathPrefix\n const pathStartRegEx = new RegExp(`^${escapeStringRegexp(withPrefix(`/`))}`);\n if (pathIsNotHandledByApp(destination, pathStartRegEx)) return true;\n if (hashShouldBeFollowed(origin, destination)) return true;\n if (pluginOptions.excludePattern) {\n const excludeRegex = new RegExp(pluginOptions.excludePattern);\n if (excludeRegex.test(destination.pathname)) {\n return true;\n }\n }\n event.preventDefault();\n\n // See issue #8907: destination.pathname already includes pathPrefix added\n // by gatsby-transformer-remark but gatsby-link.navigate needs href without\n const destinationPathname = slashedPathname(destination.pathname).replace(pathStartRegEx, `/`);\n hrefHandler(`${destinationPathname}${destination.search}${destination.hash}`);\n return false;\n};\nexport default function (root, pluginOptions, cb) {\n const clickHandler = routeThroughBrowserOrApp(cb, pluginOptions);\n root.addEventListener(`click`, clickHandler);\n return () => root.removeEventListener(`click`, clickHandler);\n}","import { navigate } from \"gatsby\";\nimport catchLinks from \"./catch-links\";\nexport const onClientEntry = (_, pluginOptions = {}) => {\n catchLinks(window, pluginOptions, href => {\n navigate(href);\n });\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}","\"use strict\";\n\nexports.wrapPageElement = require(\"./wrap-page\");","\"use strict\";\n\nvar React = require(\"react\");\nvar preferDefault = function preferDefault(m) {\n return m && m.default || m;\n};\nvar Layout;\ntry {\n Layout = preferDefault(require(GATSBY_LAYOUT_COMPONENT_PATH));\n} catch (e) {\n if (e.toString().indexOf(\"Error: Cannot find module\") !== -1) {\n throw new Error(\"Couldn't find layout component at \\\"\" + GATSBY_LAYOUT_COMPONENT_PATH + \".\\n\\n\" + \"Please create layout component in that location or specify path to layout component in gatsby-config.js\");\n } else {\n // Logging the error for debugging older browsers as there is no way\n // to wrap the thrown error in a try/catch.\n console.error(e);\n throw e;\n }\n}\n\n// eslint-disable-next-line react/prop-types,react/display-name\nmodule.exports = function (_ref) {\n var element = _ref.element,\n props = _ref.props;\n return /*#__PURE__*/React.createElement(Layout, props, element);\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;","/****************************************************\n\n\tUtilities - Shopping Cart\n\n****************************************************/\nimport { CartItemModel } from \"../models/cart\"\n\n/****************************************************\n\tSession cart\n****************************************************/\nconst cartName = \"shortlist\"\nconst VALIDATION = \"85jyeN+kl9PyRXadftB4xg==\"\n\n/****************************************************\n\tCart actions - Fetch\n****************************************************/\nexport const fetchLocalStorageCart = (): CartItemModel[] => {\n const storageData = localStorage.getItem(cartName)\n\n // If the item is expired, delete from storage return an empty cart\n // const now = new Date()\n // if (!cart.expiry || now.getTime() > cart.expiry) {\n // return []\n // }\n\n if (!storageData) return []\n\n // test for valid cart JSON\n try {\n JSON.parse(storageData)\n } catch (e) {\n return []\n }\n\n // check the validation string and clear if it doesn't match\n // - allows clearing of all shortlists\n return JSON.parse(storageData).validation !== VALIDATION\n ? []\n : JSON.parse(storageData).cartItems\n}\n\nexport const fetchCart = async () => {\n const storageCart = fetchLocalStorageCart()\n\n // // don't call the API for an empty cart\n // if (!storageCart.length) return Promise.resolve([])\n\n // // axios would crash if the Contentful API failed so using fetch instead\n // return fetch(\"/api/getPropertyData\", {\n // method: \"POST\",\n // headers: { \"Content-Type\": \"application/json\" },\n // body: JSON.stringify({\n // items: storageCart.join(\",\"),\n // preview: process.env.GATSBY_CONTENTFUL_HOST === \"preview.contentful.com\",\n // }),\n // })\n\n return Promise.resolve(storageCart)\n}\n\n/****************************************************\n\tCart actions - Save\n****************************************************/\nexport const saveLocalStorageCart = (cartItems: string[]) => {\n if (cartItems) {\n // create new cart expiry\n // const now = new Date()\n const storageData = {\n cartItems: cartItems.length > 0 ? cartItems : [],\n // expiry: now.getTime() + 1000 * 60 * 60 * 24 * 2, // 2 days\n validation: VALIDATION,\n }\n\n // update localStorage\n localStorage.setItem(cartName, JSON.stringify(storageData))\n }\n}\n","// import the Action types\nimport { ActionInterface, CartStateModel } from \"../../models/cart\"\nimport { PropertyModel } from \"../../models/page\"\nimport { saveLocalStorageCart } from \"../../utils/cart\"\n\n// calculate the total price of the cart and the total quantity of the cart while saving cart to localStorage\nexport const sumItems = (cartItems: string[] | undefined) => {\n saveLocalStorageCart(cartItems || [])\n let itemCount = cartItems?.length || 0\n return { itemCount }\n}\n\nconst CartReducer = (state: CartStateModel, action: ActionInterface) => {\n let payload: any\n\n switch (action.type) {\n case \"LOAD_CART\":\n payload = action.payload ? (action.payload as string[]) : undefined\n return {\n ...state,\n cartItems: payload,\n ...sumItems(payload),\n loaded: true,\n }\n\n case \"ADD_TO_CART\":\n payload = action.payload as PropertyModel\n const propertyId = payload.propertyId\n\n let cartItems = [...(state.cartItems || [])]\n if (cartItems?.indexOf(propertyId) === -1) cartItems?.push(propertyId)\n else cartItems = cartItems.filter(x => x !== propertyId)\n\n return {\n ...state,\n cartItems: cartItems || undefined,\n ...sumItems(cartItems),\n }\n\n case \"REMOVE_ITEM\":\n payload = action.payload as number\n if (state.cartItems && state.cartItems?.length > payload)\n state.cartItems?.splice(payload, 1)\n return {\n ...state,\n cartItems: state.cartItems ? [...state.cartItems] : undefined,\n ...sumItems(state.cartItems),\n }\n\n case \"CLEAR\":\n return {\n ...state,\n cartItems: [],\n ...sumItems([]),\n }\n\n // return the state if the action type is not found\n default:\n return state\n }\n}\n\nexport default CartReducer\n","import React, { useEffect, useReducer } from \"react\"\nimport { PropertyModel } from \"../../models/page\"\nimport { fetchCart } from \"../../utils/cart\"\nimport { CartContext, initialCartState } from \"./CartContext\"\nimport CartReducer from \"./CartReducer\"\n\ninterface Props {\n children?: React.ReactElement\n}\n\nconst CartState = ({ children }: Props) => {\n const [state, dispatch] = useReducer(CartReducer, initialCartState)\n\n useEffect(() => {\n fetchCart()\n .then(response => {\n if (Array.isArray(response)) return response\n return (response as Response)?.json()\n })\n .then(data => {\n if (data.message) {\n loadCart(undefined)\n throw data\n } else {\n loadCart(data as any as string[])\n }\n })\n .catch(error => {\n loadCart(undefined)\n console.log(\"Error: \", error)\n })\n }, [])\n\n const loadCart = (payload: string[] | undefined) => {\n dispatch({ type: \"LOAD_CART\", payload })\n }\n\n const addToCart = (payload: PropertyModel) => {\n dispatch({ type: \"ADD_TO_CART\", payload })\n }\n\n const removeFromCart = (payload: number) => {\n dispatch({ type: \"REMOVE_ITEM\", payload })\n }\n\n const clearCart = () => {\n dispatch({ type: \"CLEAR\", payload: undefined })\n }\n\n return (\n // Add the functions that have been defined above into the Context provider, and pass on to the children\n \n {children}\n \n )\n}\n\nexport default CartState\n","import type { GatsbyBrowser } from \"gatsby\"\nimport React from \"react\"\nimport { ParallaxProvider } from \"react-scroll-parallax\"\n\n/****************************************************\n Site styles\n****************************************************/\nimport \"./src/scss/app.scss\"\n\n/****************************************************\n Context\n****************************************************/\nimport ArticleProvider from \"./src/context/Article/ArticleContext\"\nimport CartState from \"./src/context/Cart/CartState\"\nimport CaseStudyProvider from \"./src/context/CaseStudy/CaseStudyContext\"\nimport PropertyProvider from \"./src/context/Property/PropertyContext\"\n\n/****************************************************\n wrap app for global state context\n****************************************************/\nexport const wrapRootElement: GatsbyBrowser[\"wrapRootElement\"] = ({\n element,\n}) => (\n \n \n \n \n {element}\n \n \n \n \n)\n\n/****************************************************\n Page transition \n - fix scroll jump on page transition\n****************************************************/\nexport const shouldUpdateScroll: GatsbyBrowser[\"shouldUpdateScroll\"] = ({\n routerProps: { location },\n prevRouterProps,\n getSavedScrollPosition,\n}) => {\n const locationPath = location.pathname\n const prevLocationPath = prevRouterProps?.location?.pathname\n const savedPosition = getSavedScrollPosition(location) || [0, 0]\n\n // only scroll top if the page path has changed - not on query string update\n if (locationPath !== prevLocationPath) {\n setTimeout(() => {\n window.scrollTo({\n top: savedPosition[1],\n left: savedPosition[0],\n // behavior: \"smooth\",\n })\n }, 400)\n }\n return false\n}\n\n/****************************************************\n Page change \n****************************************************/\nexport const onRouteUpdate: GatsbyBrowser[\"onRouteUpdate\"] = ({\n location,\n prevLocation,\n}) => {}\n","import React, {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\"\nimport { ArticleModel } from \"../../models/page\"\nimport { cleanApiURL } from \"../../utils/links\"\n\ntype ContextModel = {\n articleItems: ArticleModel[]\n loaded?: boolean\n}\n\nconst defaultContext: ContextModel = {\n articleItems: [],\n loaded: false,\n}\n\nconst initialState = {\n articleData: defaultContext,\n setArticleData: (data: ContextModel) => console.log(data),\n}\nconst Context = createContext(initialState)\nexport const useArticles = () => useContext(Context)\n\nconst API_URL = cleanApiURL(process.env.GATSBY_API_DATA + \"/api/getArticles\")\n\nexport const ArticleProvider = ({\n children,\n}: {\n children: React.ReactNode\n}) => {\n const [articleData, setArticleData] = useState(initialState.articleData)\n const ContextValue = useMemo(\n () => ({ articleData, setArticleData }),\n [articleData]\n )\n\n useEffect(() => {\n if (API_URL)\n fetch(API_URL, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n preview:\n process.env.GATSBY_CONTENTFUL_HOST === \"preview.contentful.com\",\n }),\n })\n .then(response => response.json())\n .then(data => {\n setArticleData({\n articleItems: data,\n loaded: true,\n })\n })\n .catch(error => {\n setArticleData({\n articleItems: [],\n loaded: true,\n })\n console.log(\"Error: \", error)\n })\n }, [])\n\n return {children}\n}\n\nexport default ArticleProvider\n","import { createContext, useContext } from \"react\"\nimport { CartStateModel } from \"../../models/cart\"\n\n// initial state of the cart\nexport const initialCartState: CartStateModel = {\n cartItems: undefined,\n itemCount: undefined,\n loaded: false,\n // expiry: storage.expiry,\n}\n\nexport const CartContext = createContext(initialCartState)\nexport const useCart = () => useContext(CartContext)\n","import React, {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\"\nimport { CaseStudyModel } from \"../../models/page\"\nimport { cleanApiURL } from \"../../utils/links\"\n\ntype ContextModel = {\n caseStudyItems: CaseStudyModel[]\n loaded?: boolean\n}\n\nconst defaultContext: ContextModel = {\n caseStudyItems: [],\n loaded: false,\n}\n\nconst initialState = {\n caseStudyData: defaultContext,\n setCaseStudyData: (data: ContextModel) => console.log(data),\n}\nconst Context = createContext(initialState)\nexport const useCaseStudies = () => useContext(Context)\n\nconst API_URL = cleanApiURL(process.env.GATSBY_API_DATA + \"/api/getCaseStudies\")\n\nexport const CaseStudyProvider = ({\n children,\n}: {\n children: React.ReactNode\n}) => {\n const [caseStudyData, setCaseStudyData] = useState(initialState.caseStudyData)\n const ContextValue = useMemo(\n () => ({ caseStudyData, setCaseStudyData }),\n [caseStudyData]\n )\n\n useEffect(() => {\n if (API_URL)\n fetch(API_URL, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n preview:\n process.env.GATSBY_CONTENTFUL_HOST === \"preview.contentful.com\",\n }),\n })\n .then(response => response.json())\n .then(data => {\n setCaseStudyData({\n caseStudyItems: data,\n loaded: true,\n })\n })\n .catch(error => {\n setCaseStudyData({\n caseStudyItems: [],\n loaded: true,\n })\n console.log(\"Error: \", error)\n })\n }, [])\n\n return {children}\n}\n\nexport default CaseStudyProvider\n","import React, {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\"\nimport { UnitModel } from \"../../models/component\"\nimport { PropertyModel } from \"../../models/page\"\nimport { cleanApiURL } from \"../../utils/links\"\nimport { getUnitDetails } from \"../../utils/property\"\n\ntype ContextModel = {\n propertyItems: PropertyModel[]\n loaded?: boolean\n}\n\nconst defaultContext: ContextModel = {\n propertyItems: [],\n loaded: false,\n}\n\nconst initialState = {\n propertyData: defaultContext,\n setPropertyData: (data: ContextModel) => console.log(data),\n}\nconst Context = createContext(initialState)\nexport const useProperty = () => useContext(Context)\n\nconst PROPERTY_API_URL = cleanApiURL(\n process.env.GATSBY_API_DATA + \"/api/getProperties\"\n)\n\nconst UNIT_API_URL = cleanApiURL(process.env.GATSBY_API_DATA + \"/api/getUnits\")\n\nexport const PropertyProvider = ({\n children,\n}: {\n children: React.ReactNode\n}) => {\n const [propertyData, setPropertyData] = useState(initialState.propertyData)\n const ContextValue = useMemo(\n () => ({ propertyData, setPropertyData }),\n [propertyData]\n )\n\n const [properties, setProperties] = useState()\n const [units, setUnits] = useState()\n\n const isPreview =\n process.env.GATSBY_CONTENTFUL_HOST === \"preview.contentful.com\"\n\n useEffect(() => {\n // get properties\n fetch(PROPERTY_API_URL, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n preview: isPreview,\n }),\n })\n .then(response => response.json())\n .then(data => setProperties(data))\n .catch(error => {\n setProperties([])\n console.log(\"Error: \", error)\n })\n\n // get units\n fetch(UNIT_API_URL, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n preview: isPreview,\n }),\n })\n .then(response => response.json())\n .then(data => setUnits(data.map((x: any) => getUnitDetails(x))))\n .catch(error => {\n setUnits([])\n console.log(\"Error: \", error)\n })\n }, [])\n\n // merge data\n useEffect(() => {\n if (properties && units) {\n const result = properties.map(property => {\n return {\n ...property,\n units: units.filter(unit => unit.propertyId === property.propertyId),\n }\n })\n\n setPropertyData({\n propertyItems: result,\n loaded: true,\n })\n }\n }, [properties, units])\n\n return {children}\n}\n\nexport default PropertyProvider\n","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","import React from \"react\"\n\nimport {\n Transition as ReactTransition,\n TransitionGroup,\n} from \"react-transition-group\"\n\n// This variable will be responsible for our animation duration\nconst timeout = 400\n\n// This object contains basic styles for animation, but you can extend them to whatever you like. Be creative!\nconst getTransitionStyles: any = {\n entering: {\n position: \"absolute\",\n opacity: 0,\n },\n entered: {\n transition: `opacity ${timeout}ms ease-in-out`,\n opacity: 1,\n },\n exiting: {\n transition: `opacity ${timeout}ms ease-in-out`,\n opacity: 0,\n },\n}\n\ninterface Props {\n children: React.ReactNode\n location: Location\n}\n\nexport const Transition: React.FC = ({ children, location }) => {\n return (\n // Using TransitionGroup and ReactTransition which are both\n // coming from 'react-transition-group' and are required for transitions to work\n \n \n {\n // Application of the styles depending on the status of page(entering, exiting, entered) in the DOM\n status => (\n <>\n \n {children}\n
\n \n )\n }\n \n \n )\n}\n\nexport default Transition\n","import React, { useEffect } from \"react\"\nimport { useParallaxController } from \"react-scroll-parallax\"\n\ninterface Props {\n location: Location\n}\n\nconst ParallaxRouteUpdate: React.FC = props => {\n const parallaxController = useParallaxController()\n\n useEffect(() => {\n parallaxController?.update()\n }, [props.location.pathname])\n\n return null\n}\n\nexport default ParallaxRouteUpdate\n","import React from \"react\"\n\ninterface Props {}\n\nexport const SvgSprite: React.FC = () => (\n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n {/* \n \n */}\n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n {/* \n \n */}\n\n \n \n \n \n\n \n \n \n \n)\n\nexport default SvgSprite\n","import React from \"react\"\n\ninterface Props {}\n\nexport const SvgSpriteButtons: React.FC = () => (\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n\n \n \n \n\n \n \n \n \n)\n\nexport default SvgSpriteButtons\n","import { Slice } from \"gatsby\"\nimport React from \"react\"\nimport Transition from \"../components/Layout/Transition\"\nimport ParallaxRouteUpdate from \"../components/ParallaxRouteUpdate\"\nimport SvgSprite from \"../components/SvgSprite\"\nimport SvgSpriteButtons from \"../components/SvgSpriteButtons\"\n\ninterface Props {\n children: React.ReactNode\n location: Location\n pageContext?: any\n}\n\nconst Layout = ({ children, location, pageContext }: Props) => {\n // PDF generation pages - no header or footer\n if (pageContext.isPDF)\n return (\n <>\n {children}\n \n \n \n )\n\n return (\n <>\n \n {children}\n \n \n \n \n \n )\n}\n\nexport default Layout\n","/****************************************************\n\n Utilities - Arrays\n\n****************************************************/\n\n/******************************************************\n Shuffle and array\n******************************************************/\nexport const shuffleArray = (array: any[]) => {\n var currentIndex = array.length,\n randomIndex\n\n // While there remain elements to shuffle...\n while (0 !== currentIndex) {\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex)\n currentIndex--\n\n // And swap it with the current element.\n ;[array[currentIndex], array[randomIndex]] = [\n array[randomIndex],\n array[currentIndex],\n ]\n }\n\n return array\n}\n\n/******************************************************\n Intersection of 2 arrays\n******************************************************/\nexport const intersectArrays = (arrA: any[], arrB: any[]) => {\n return arrA.filter(x => arrB.includes(x))\n}\n\n/******************************************************\n Difference of 2 arrays\n******************************************************/\nexport const diffArrays = (arrA: any[], arrB: any[]) => {\n return arrA.filter(x => !arrB.includes(x))\n}\n\n/******************************************************\n Symmetrical Difference of 2 arrays\n******************************************************/\nexport const symDiffArrays = (arrA: any[], arrB: any[]) => {\n return arrA\n .filter(x => !arrB.includes(x))\n .concat(arrB.filter(x => !arrA.includes(x)))\n}\n\n/******************************************************\n Union of 2 arrays - no duplicates\n******************************************************/\nexport const unionArrays = (arrA: any[], arrB: any[]) => {\n return [...new Set([...arrA, ...arrB])]\n}\n\n/******************************************************\n Remove duplicates from array of strings\n******************************************************/\nexport const removeDuplicates = (arr: string[]) => {\n return [...new Set(arr)]\n}\n\n/******************************************************\n\tFilter boolean (but for typescript)\n usage: [].filter(filterBoolean)\n******************************************************/\ntype Truthy = T extends false | \"\" | 0 | null | undefined ? never : T\nexport function filterBoolean(value: T): value is Truthy {\n return !!value\n}\n\n/******************************************************\n Get the first item of an array\n******************************************************/\nexport const getFirstArrayItem = (item: any, empty: any = undefined) => {\n if (Array.isArray(item)) {\n if (item.length) return item[0]\n else return empty\n }\n return item\n}\n\n/******************************************************\n Check for an empty array\n******************************************************/\nexport const isEmptyArray = (arr: any) => {\n if (Array.isArray(arr)) {\n return arr.length === 0\n }\n return true\n}\n\n/******************************************************\n\tFilter an array by CMS Content Types\n******************************************************/\nexport const getConfigRefs = (items: any[], contentTypes: string[] = []) => {\n if (!items) return []\n return items.filter((x: any) => contentTypes.indexOf(x.internal?.type) !== -1)\n}\n\n/******************************************************\n\tGet first item in Config Ref array\n******************************************************/\nexport const getFirstConfigRef = (\n items: any[],\n contentTypes: string[] = [],\n empty: any = undefined\n) => {\n if (!items) return undefined\n return getFirstArrayItem(getConfigRefs(items, contentTypes), empty)\n}\n","/******************************************************\n\n Utilities - Links\n\n******************************************************/\nimport { BreadCrumbModel, CmsAsset } from \"../models/common\"\nimport { PageModels } from \"../models/page\"\n\n/******************************************************\n\tbuild page breadcrumbs from parent pages\n******************************************************/\nexport const buildBreadcrumbs = (\n page: PageModels | undefined\n): BreadCrumbModel[] => {\n if (!page) return []\n if (page?.parentPage)\n return [\n ...buildBreadcrumbs(page.parentPage),\n {\n id: page.id,\n url: page.slug,\n label: page.listingTitle || page.heading,\n rootUrl: page.rootUrl,\n },\n ]\n return [\n {\n id: page.id,\n url: page.slug,\n label: page.listingTitle || page.heading,\n rootUrl: page.rootUrl,\n },\n ]\n}\n\n/******************************************************\n\tbuild page path from parent pages\n******************************************************/\nconst buildPagePath = (page: PageModels): string | undefined => {\n if (page?.parentPage) return buildPagePath(page.parentPage) + \"/\" + page.slug\n return page.slug\n}\n\n/******************************************************\n\tget content type link prefix\n******************************************************/\nconst getPageSlugWithPrefix = (page: PageModels) => {\n if (!page || !page.slug) return undefined\n\n let url\n switch (page?.internal?.type) {\n case \"ContentfulPageContent\":\n url = `/${buildPagePath(page)}`\n break\n case \"ContentfulPageArticle\":\n url = `/news/${page.slug}`\n break\n case \"ContentfulPageCaseStudy\":\n url = `/case-studies/${page.slug}`\n break\n case \"ContentfulPageProperty\":\n url = `/properties/${page.slug}`\n break\n default:\n url = `/${page.slug}`\n }\n\n return url\n}\n\n/******************************************************\n\tmake the URL pretty\n\t- add trailing slash (to URL or before query string)\n\t- remove double slashes (but not protocol eg http://)\n\t- replace spaces with hyphens\n\t- remove double hyphens\n\t- make lowercase\n\t- add query string\n******************************************************/\nexport const getPrettyURL = (\n data: string | PageModels | undefined\n): string | undefined => {\n if (!data) return undefined\n\n if (typeof data === \"string\") {\n // break out any query strings parameters\n let urlParts = data.split(\"?\")\n const baseURL = urlParts.shift()?.trim()\n\n const prettyUrl = (baseURL + \"/\")\n .replace(/(https?:\\/\\/)|(\\/){2,}/g, \"$1$2\")\n .replace(/\\ /g, \"-\")\n .replace(/\\-+/g, \"-\")\n .toLowerCase()\n\n if (urlParts.length) return [prettyUrl, urlParts].join(\"?\")\n return prettyUrl\n }\n\n return getPrettyURL(getPageSlugWithPrefix(data))\n}\n\n/******************************************************\n\tget link data (URL / Entry / Asset)\n******************************************************/\ninterface linkData {\n url?: string | undefined\n page?: PageModels | undefined\n asset?: CmsAsset | undefined\n newWindow?: boolean\n noIndex?: boolean\n noFollow?: boolean\n queryString?: string\n}\n\nexport const getLinkData = ({\n url,\n page,\n asset,\n newWindow,\n noIndex,\n noFollow,\n queryString,\n}: linkData) => {\n // asset\n if (asset) return { url: asset.file?.url, newWindow: true }\n\n // CMS page\n if (page) {\n const query =\n queryString?.charAt(0) === \"?\" ? queryString.substring(1) : queryString\n\n return {\n url: `${getPrettyURL(page)}${queryString ? `?${query}` : \"\"}`,\n newWindow: newWindow,\n noIndex: noIndex || false,\n noFollow: noFollow || false,\n }\n }\n\n // URL\n if (url) {\n const isExternal = !/^\\/(?!\\/)/.test(url)\n return {\n url: url,\n newWindow: newWindow || isExternal,\n noIndex: noIndex || isExternal,\n noFollow: noFollow || isExternal,\n }\n }\n\n return undefined\n}\n\n/******************************************************\n\tget YouTube video ID\n******************************************************/\n// export const getYtVideoId = (url?: string): string | undefined => {\n// if (!url) return undefined\n// else {\n// const urlParams = new URLSearchParams(url.split(\"?\").pop())\n// const videoId = urlParams.get(\"v\") || url.split(\"/\").pop()\n// return videoId\n// }\n// }\n\n/******************************************************\n\tmake a clean API URL\n\t- remove double slashes (but not protocol eg http://)\n******************************************************/\nexport const cleanApiURL = (data: string): string => {\n if (!data) return \"\"\n return data.replace(/(https?:\\/\\/)|(\\/){2,}/g, \"$1$2\")\n}\n","/****************************************************\n\n Utilities\n\n****************************************************/\nimport { animateScroll as scroll } from \"react-scroll\"\n\n/******************************************************\n Animate page scroll\n******************************************************/\nexport const scrollToRef = (\n ref: React.RefObject,\n offset: number = 0,\n callback: () => void = () => {}\n) => {\n if (ref?.current) {\n const top = ref.current.getBoundingClientRect().top - offset\n scroll.scrollMore(top, {\n duration: 0,\n smooth: \"linear\",\n delay: 0,\n })\n\n setTimeout(() => callback(), 300)\n }\n}\n\nexport const convertObjectToCamelCase = (o: any) => {\n var newO: any, origKey, newKey, value\n if (o instanceof Array) {\n return o.map(function (value) {\n if (typeof value === \"object\") {\n value = convertObjectToCamelCase(value)\n }\n return value\n })\n } else {\n newO = {}\n for (origKey in o) {\n if (o.hasOwnProperty(origKey)) {\n newKey = (origKey.charAt(0).toLowerCase() + origKey.slice(1) || origKey)\n .toString()\n .replace(/_/g, \" \")\n .replace(/ +/g, \" \")\n .replace(/ /g, \"\")\n value = o[origKey]\n if (\n value instanceof Array ||\n (value !== null && value?.constructor === Object)\n ) {\n value = convertObjectToCamelCase(value)\n }\n newO[newKey] = value\n }\n }\n }\n return newO\n}\n","/****************************************************\n\n Utilities - Properties\n\n****************************************************/\nimport { convertObjectToCamelCase } from \".\"\nimport { LatLng } from \"../components/PropertyLocation/PropertyLocation\"\nimport { UnitModel } from \"../models/component\"\nimport { PropertyModel } from \"../models/page\"\nimport { filterBoolean } from \"./arrays\"\n\nconst now = new Date(),\n month = (\"0\" + (now.getMonth() + 1)).slice(-2),\n day = (\"0\" + now.getDate()).slice(-2),\n year = now.getFullYear(),\n nowDateString = [year, month, day].join(\"/\")\n\n/****************************************************\n Get property details - Yardi data with overrides\n****************************************************/\nexport const getPropertyDetails = (property?: PropertyModel) => {\n if (!property) return undefined\n const data = convertObjectToCamelCase(property.yardiData)\n // console.log(\"data: \", data)\n\n const propertyName = property.propertyName || data.propertyName\n const streetAddress1 = property.streetAddress1 || data.streetAddress1\n const streetAddress2 = property.streetAddress2 || data.streetAddress2\n const city = property.city || data.city\n const state = property.state || data.state\n const postcode = property.postcode || data.postcode\n const propertyType = property.propertyType || data.propertyType\n\n return {\n propertyName,\n streetAddress1,\n streetAddress2,\n city,\n state,\n postcode,\n propertyType,\n }\n}\n\n/****************************************************\n Get unit details - Yardi data with overrides\n****************************************************/\nexport const getUnitDetails = (unit?: UnitModel): UnitModel | undefined => {\n if (!unit) return undefined\n const data: UnitModel = convertObjectToCamelCase(unit.yardiData)\n // console.log(\"data: \", data)\n\n return {\n ...unit,\n id: unit.unitId || data.unitCode || \"\",\n unitId: unit.unitId || data.unitCode,\n unitName: unit.unitName || convertName(unit.unitId || data.unitCode),\n unitType: unit.unitType || convertUnitType(data.unitType),\n building: unit.building || data.building,\n floor:\n unit.floor || convertFloor(data.floor) || convertFloor(data.unitCode),\n rentalType: unit.rentalType || data.rentalType,\n area: unit.area || data.area,\n marketRent: Number(unit.marketRent || data.marketRent).toFixed(2),\n dateLeased:\n convertCmsDate(unit.dateLeased) || convertYardiDate(data.dateLeased),\n availabilityDate:\n convertCmsDate(unit.availabilityDate) ||\n convertYardiDate(data.availabilityDate) ||\n nowDateString,\n }\n}\n\nconst convertName = (code?: string) => {\n if (!code) return undefined\n\n if (code === \"Lower_GR\") return \"Lower Ground\"\n if (code === \"Upper_GR\") return \"Upper Ground Floor\"\n if (code === \"Roof\") return \"Rooftop\"\n if (code === \"WHOLE\") return \"Warehouse\"\n\n let output = code.trim()\n if (/^\\d+$/.test(output)) return `Warehouse ${output}`\n\n return output\n .replace(\"BLDNG_\", \"Building \")\n .replace(\"HS_\", \"Hardstand \")\n .replace(\"OFF_\", \"Unit \")\n .replace(\"OF_\", \"Unit \")\n .replace(\"O_\", \"Unit \")\n .replace(\"RET_\", \"Shop \")\n .replace(\"WH_\", \"Warehouse \")\n .replace(/_/, \" \")\n .replace(/ /, \" \")\n}\n\nconst convertFloor = (floor?: string) => {\n return convertName(floor)\n}\n\nconst convertUnitType = (unitType?: string) => {\n if (unitType === \"BASE\") return \"Basement\"\n if (unitType === \"CAFE\") return \"Cafe\"\n if (unitType === \"COLD\") return \"Cold Store\"\n if (unitType === \"COMM\") return \"Commercial\"\n if (unitType === \"CP\") return \"Parking\"\n if (unitType === \"HS\") return \"Hardstand\"\n if (unitType === \"IND\") return \"Industrial\"\n if (unitType === \"LOBBY\") return \"Lobby\"\n if (unitType === \"MANUF\") return \"Manufacturing\"\n if (unitType === \"OFF\") return \"Office\"\n if (unitType === \"RET\") return \"Retail\"\n if (unitType === \"SIGN\") return \"Signage\"\n if (unitType === \"STOR\") return \"Storage\"\n if (unitType === \"SUNDRY\") return \"Sundry\"\n if (unitType === \"TELCO\") return \"Telecom\"\n if (unitType === \"WARE\") return \"Warehouse\"\n return undefined\n}\n\nconst convertYardiDate = (date?: string) => {\n if (!date) return undefined\n if (date.indexOf(\"/\") === 4) return convertDoubleDigitDate(date)\n const dateParts = date.split(\"/\")\n return convertDoubleDigitDate(\n `${dateParts[2]}/${dateParts[1]}/${dateParts[0]}`,\n )\n}\n\nconst convertCmsDate = (date?: string) => {\n if (!date) return undefined\n if (date.indexOf(\"/\") === 4) return convertDoubleDigitDate(date)\n date = date.split(\"T\")[0] // remove time value if part of date\n return convertDoubleDigitDate(date.replace(/-/g, \"/\"))\n}\n\nconst convertDoubleDigitDate = (date: string) => {\n if (date.indexOf(\"/\") === 4) return date\n return date\n .split(\"/\")\n .map(x => (x.length < 2 ? \"0\" + x : x))\n .join(\"/\")\n}\n\n/******************************************************\n Get units to display in availability table\n******************************************************/\nexport const getDisplayUnits = (units?: UnitModel[]) => {\n if (!units) return undefined\n\n // make sure units have been processed\n const data = units.map(x => getUnitDetails(x)).filter(filterBoolean)\n\n // get displayable units\n const displayUnits = data\n ?.map(item => {\n if (!item.showUnit) return null\n if (!item.area) return null\n if (!item.availabilityDate) return null\n return item\n })\n .filter(filterBoolean)\n\n // sort units by availability date\n const sorted = displayUnits.sort((a, b) => {\n if (!a.availabilityDate) return -1\n if (!b.availabilityDate) return 1\n return a.availabilityDate < b.availabilityDate ? -1 : 1\n })\n\n return sorted\n}\n\n/******************************************************\n Get property name\n******************************************************/\nexport const getPropertyName = (property?: PropertyModel) => {\n if (!property) return undefined\n const details = getPropertyDetails(property)\n\n return (\n details?.propertyName ||\n details?.streetAddress2 ||\n details?.streetAddress1 ||\n \"\"\n )\n}\n\n/******************************************************\n Get property address\n******************************************************/\nexport const getPropertyAddress = (property?: PropertyModel) => {\n if (!property) return undefined\n const details = getPropertyDetails(property)\n // console.log(\"details: \", details)\n const state = [details?.state, details?.postcode]\n .filter(filterBoolean)\n .join(\" \")\n const address = [\n details?.streetAddress2 || details?.streetAddress1,\n details?.city,\n state,\n ]\n .map(x => x?.trim())\n .filter(filterBoolean)\n return address.length ? address.join(\", \") : undefined\n}\n\n/******************************************************\n Get property certification\n******************************************************/\nexport const getPropertyCertifications = (property?: PropertyModel) => {\n if (!property) return undefined\n\n const parts = property.certifications || []\n if (!parts.length) return undefined\n\n const last = parts.length > 1 ? parts.pop() : undefined\n return `${parts.join(\", \")} ${last ? ` and ${last}` : \"\"} certified`.replace(\n / +/,\n \" \",\n )\n}\n\n/******************************************************\n Get property type\n******************************************************/\nexport const getPropertyType = (property?: PropertyModel) => {\n if (!property) return undefined\n const details = getPropertyDetails(property)\n\n if (details?.propertyType) return details.propertyType\n if (!!property?.units?.length) {\n return property?.units\n .map((x: UnitModel) => getUnitDetails(x))\n .map(x => x?.rentalType)\n .filter(filterBoolean)\n .pop()\n }\n return undefined\n}\n\n/******************************************************\n Get property size - using units\n******************************************************/\nexport const getPropertySize = (units: UnitModel[] = []) => {\n if (!units?.length) return undefined\n const { min, sum } = getUnitSizeRange(units)\n\n if (!min || !sum) return undefined\n if (min === sum) return `${min.toLocaleString()} sqm`\n return `${min.toLocaleString()} - ${sum.toLocaleString()} sqm`\n}\n\nexport const getUnitSizeRange = (units: UnitModel[] = []) => {\n if (!units?.length)\n return {\n min: undefined,\n sum: undefined,\n }\n\n const sizes = units\n .filter(x => x.showUnit)\n .map(x => Math.trunc(getUnitDetails(x)?.area || 0))\n .filter(filterBoolean)\n .sort((a, b) => a - b)\n return {\n min: sizes.length ? sizes[0] : undefined,\n sum: sizes.reduce((partialSum, a) => partialSum + a, 0),\n }\n}\n\n/******************************************************\n Get property area - using property min/max fields\n******************************************************/\nexport const getPropertyArea = (\n min: number | undefined,\n max: number | undefined,\n) => {\n if (!min && !max) return undefined\n if (!min) return `${max?.toLocaleString()} sqm`\n if (!max) return `${min.toLocaleString()} sqm`\n if (min === max) return `${min.toLocaleString()} sqm`\n return `${min.toLocaleString()} - ${max.toLocaleString()} sqm`\n}\n\n/******************************************************\n Maps\n******************************************************/\nexport const isValidLat = (lat?: number) => lat && lat >= -90 && lat <= 90\nexport const isValidLng = (lng?: number) => lng && lng >= -180 && lng <= 180\n\n// haversine formula - easier than including the google.maps.geometry library\nexport const getDistanceInKm = (origin: LatLng, destination: LatLng) => {\n var R = 6371 // Radius of the earth in km\n var dLat = deg2rad(destination.lat - origin.lat) // deg2rad below\n var dLon = deg2rad(destination.lng - origin.lng)\n var a =\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.cos(deg2rad(origin.lat)) *\n Math.cos(deg2rad(destination.lat)) *\n Math.sin(dLon / 2) *\n Math.sin(dLon / 2)\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))\n var d = R * c // Distance in km\n return d\n}\n\nconst deg2rad = (deg: number) => {\n return deg * (Math.PI / 180)\n}\n\n/******************************************************\n\n\n DATES\n\n \n******************************************************/\n/******************************************************\n Check if Fully Leased\n******************************************************/\nexport const checkFullyLeased = (property?: PropertyModel) => {\n return !!property?.fullyLeased\n}\n\n/******************************************************\n Get property availability\n******************************************************/\nexport const getAllAvailabilityDates = (property: PropertyModel) => {\n if (!property || checkFullyLeased(property)) return []\n\n // fully leased\n if (checkFullyLeased(property)) return []\n\n // development with label\n if (property.development && property.availabilityLabel)\n return [property.availabilityDate].filter(filterBoolean)\n\n // non-yardi\n if (property.development || property.nonYardi)\n return [property.availabilityDate || nowDateString]\n\n // properties\n if (!property.units?.length) return []\n return property.units\n .filter(x => x.showUnit)\n .map(x => getUnitDetails(x))\n .map(unit => unit?.availabilityDate)\n .filter(filterBoolean)\n .sort()\n}\n\nexport const currentAvailabilityDate = (property: PropertyModel) => {\n if (!property) return undefined\n\n // fully leased\n if (checkFullyLeased(property)) return undefined\n\n // development with label\n if (property.development && property.availabilityLabel)\n return property.availabilityDate || undefined\n\n // non-yardi\n if (property.development || property.nonYardi)\n return property.availabilityDate || nowDateString\n\n // properties\n if (!property.units?.length) return undefined\n return getUnitDetails(earliestAvailability(property.units))?.availabilityDate\n}\n\nexport const currentAvailability = (property: PropertyModel) => {\n if (!property) return undefined\n\n // fully leased\n if (checkFullyLeased(property))\n return property.availabilityLabel || \"Fully leased\"\n\n // development with label\n if (property.development && property.availabilityLabel)\n return property.availabilityLabel\n\n return formatAvailability(currentAvailabilityDate(property))\n}\n\nexport const getUnitAvailability = (unit: UnitModel | undefined) => {\n if (!unit) return undefined\n\n const details = getUnitDetails(unit)\n if (!details?.availabilityDate) return undefined\n\n return formatAvailability(details?.availabilityDate)\n}\n\nexport const earliestAvailability = (units: UnitModel[] = []) => {\n if (!units?.length) return undefined\n const sorted =\n units\n .filter(x => x.showUnit)\n .map(x => getUnitDetails(x))\n .sort((a, b) =>\n new Date(a?.availabilityDate || \"\") <\n new Date(b?.availabilityDate || \"\")\n ? -1\n : 1,\n ) || []\n return sorted[0]\n}\n\n/******************************************************\n Is the unit available now\n******************************************************/\n// export const isUnitAvailableNow = (unit: UnitModel) => {\n// if (!unit || !unit.showUnit) return undefined\n// const details = getUnitDetails(unit)\n// if (!details?.availabilityDate) return false\n// return new Date(details?.availabilityDate) < new Date()\n// }\n\n/******************************************************\n Get the word version of the unit availability\n******************************************************/\n// export const getUnitAvailabilityTerm = (unit?: UnitModel) => {\n// if (!unit) return undefined\n\n// const details = getUnitDetails(unit)\n// if (!details?.availabilityDate) return \"\"\n\n// const now = new Date()\n// const date = new Date(details?.availabilityDate)\n// const sixMonths = addMonths(now, 6)\n// const twelveMonths = addMonths(now, 12)\n\n// if (date < now) return \"Available now\"\n// if (date < sixMonths) return \"Within 6 months\"\n// if (date < twelveMonths) return \"Within 6-12 months\"\n// return \"12 months +\"\n// }\n\nconst getDaysInMonth = (year: number, month: number) =>\n new Date(year, month, 0).getDate()\n\nexport const addMonths = (input: Date, months: number) => {\n const date = new Date(input)\n date.setDate(1)\n date.setMonth(date.getMonth() + months)\n date.setDate(\n Math.min(\n input.getDate(),\n getDaysInMonth(date.getFullYear(), date.getMonth() + 1),\n ),\n )\n return date\n}\n\nexport const formatAvailability = (dateString?: string | undefined) => {\n if (!dateString) return undefined\n\n const now = new Date()\n const date = new Date(dateString + \" 0:00:00\")\n\n if (isNaN(date.getTime())) return undefined\n if (date <= now) return \"Available now\"\n\n const month = date.getMonth()\n const quarter = Math.floor(month / 3) + 1\n return `Q${quarter} ${date.getFullYear()}`\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","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","import bezier from 'bezier-easing';\n\nvar Limits = function Limits(properties) {\n this.startX = properties.startX;\n this.startY = properties.startY;\n this.endX = properties.endX;\n this.endY = properties.endY; // Used to calculate the progress of the element\n\n this.totalX = this.endX - this.startX;\n this.totalY = this.endY - this.startY; // Used to scale translate effects\n\n this.startMultiplierX = properties.startMultiplierX || 1;\n this.endMultiplierX = properties.endMultiplierX || 1;\n this.startMultiplierY = properties.startMultiplierY || 1;\n this.endMultiplierY = properties.endMultiplierY || 1;\n};\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar ValidCSSEffects;\n\n(function (ValidCSSEffects) {\n ValidCSSEffects[\"speed\"] = \"speed\";\n ValidCSSEffects[\"translateX\"] = \"translateX\";\n ValidCSSEffects[\"translateY\"] = \"translateY\";\n ValidCSSEffects[\"rotate\"] = \"rotate\";\n ValidCSSEffects[\"rotateX\"] = \"rotateX\";\n ValidCSSEffects[\"rotateY\"] = \"rotateY\";\n ValidCSSEffects[\"rotateZ\"] = \"rotateZ\";\n ValidCSSEffects[\"scale\"] = \"scale\";\n ValidCSSEffects[\"scaleX\"] = \"scaleX\";\n ValidCSSEffects[\"scaleY\"] = \"scaleY\";\n ValidCSSEffects[\"scaleZ\"] = \"scaleZ\";\n ValidCSSEffects[\"opacity\"] = \"opacity\";\n})(ValidCSSEffects || (ValidCSSEffects = {}));\n\nvar Units;\n\n(function (Units) {\n Units[\"px\"] = \"px\";\n Units[\"%\"] = \"%\";\n Units[\"vh\"] = \"vh\";\n Units[\"vw\"] = \"vw\";\n})(Units || (Units = {}));\n\nvar RotationUnits;\n\n(function (RotationUnits) {\n RotationUnits[\"deg\"] = \"deg\";\n RotationUnits[\"turn\"] = \"turn\";\n RotationUnits[\"rad\"] = \"rad\";\n})(RotationUnits || (RotationUnits = {}));\n\nvar ScaleUnits;\n\n(function (ScaleUnits) {\n ScaleUnits[\"\"] = \"\";\n})(ScaleUnits || (ScaleUnits = {}));\n\nvar ScrollAxis;\n\n(function (ScrollAxis) {\n ScrollAxis[\"vertical\"] = \"vertical\";\n ScrollAxis[\"horizontal\"] = \"horizontal\";\n})(ScrollAxis || (ScrollAxis = {}));\n\nvar EasingPreset;\n\n(function (EasingPreset) {\n EasingPreset[\"ease\"] = \"ease\";\n EasingPreset[\"easeIn\"] = \"easeIn\";\n EasingPreset[\"easeOut\"] = \"easeOut\";\n EasingPreset[\"easeInOut\"] = \"easeInOut\";\n EasingPreset[\"easeInQuad\"] = \"easeInQuad\";\n EasingPreset[\"easeInCubic\"] = \"easeInCubic\";\n EasingPreset[\"easeInQuart\"] = \"easeInQuart\";\n EasingPreset[\"easeInQuint\"] = \"easeInQuint\";\n EasingPreset[\"easeInSine\"] = \"easeInSine\";\n EasingPreset[\"easeInExpo\"] = \"easeInExpo\";\n EasingPreset[\"easeInCirc\"] = \"easeInCirc\";\n EasingPreset[\"easeOutQuad\"] = \"easeOutQuad\";\n EasingPreset[\"easeOutCubic\"] = \"easeOutCubic\";\n EasingPreset[\"easeOutQuart\"] = \"easeOutQuart\";\n EasingPreset[\"easeOutQuint\"] = \"easeOutQuint\";\n EasingPreset[\"easeOutSine\"] = \"easeOutSine\";\n EasingPreset[\"easeOutExpo\"] = \"easeOutExpo\";\n EasingPreset[\"easeOutCirc\"] = \"easeOutCirc\";\n EasingPreset[\"easeInOutQuad\"] = \"easeInOutQuad\";\n EasingPreset[\"easeInOutCubic\"] = \"easeInOutCubic\";\n EasingPreset[\"easeInOutQuart\"] = \"easeInOutQuart\";\n EasingPreset[\"easeInOutQuint\"] = \"easeInOutQuint\";\n EasingPreset[\"easeInOutSine\"] = \"easeInOutSine\";\n EasingPreset[\"easeInOutExpo\"] = \"easeInOutExpo\";\n EasingPreset[\"easeInOutCirc\"] = \"easeInOutCirc\";\n EasingPreset[\"easeInBack\"] = \"easeInBack\";\n EasingPreset[\"easeOutBack\"] = \"easeOutBack\";\n EasingPreset[\"easeInOutBack\"] = \"easeInOutBack\";\n})(EasingPreset || (EasingPreset = {}));\n\n/**\r\n * Creates a unique id to distinguish parallax elements.\r\n */\nvar id = 0;\nfunction createId() {\n ++id;\n return id;\n}\n\nvar Rect = /*#__PURE__*/function () {\n function Rect(options) {\n var rect = options.el.getBoundingClientRect(); // rect is based on viewport -- must adjust for relative scroll container\n\n if (options.view.scrollContainer) {\n var scrollRect = options.view.scrollContainer.getBoundingClientRect();\n rect = _extends({}, rect, {\n top: rect.top - scrollRect.top,\n right: rect.right - scrollRect.left,\n bottom: rect.bottom - scrollRect.top,\n left: rect.left - scrollRect.left\n });\n }\n\n this.height = options.el.offsetHeight;\n this.width = options.el.offsetWidth;\n this.left = rect.left;\n this.right = rect.right;\n this.top = rect.top;\n this.bottom = rect.bottom;\n\n if (options.rootMargin) {\n this._setRectWithRootMargin(options.rootMargin);\n }\n }\n /**\r\n * Apply root margin to all properties\r\n */\n\n\n var _proto = Rect.prototype;\n\n _proto._setRectWithRootMargin = function _setRectWithRootMargin(rootMargin) {\n var totalRootY = rootMargin.top + rootMargin.bottom;\n var totalRootX = rootMargin.left + rootMargin.right;\n this.top -= rootMargin.top;\n this.right += rootMargin.right;\n this.bottom += rootMargin.bottom;\n this.left -= rootMargin.left;\n this.height += totalRootY;\n this.width += totalRootX;\n };\n\n return Rect;\n}();\n\nvar VALID_UNITS = [ScaleUnits[''], Units.px, Units['%'], Units['vh'], Units['vw'], RotationUnits.deg, RotationUnits.turn, RotationUnits.rad];\n/**\r\n * Determines the unit of a string and parses the value\r\n */\n\nfunction parseValueAndUnit(str, defaultUnit) {\n if (defaultUnit === void 0) {\n defaultUnit = Units['%'];\n }\n\n var out = {\n value: 0,\n unit: defaultUnit\n };\n if (typeof str === 'undefined') return out;\n var isValid = typeof str === 'number' || typeof str === 'string';\n\n if (!isValid) {\n throw new Error('Invalid value provided. Must provide a value as a string or number');\n }\n\n str = String(str);\n out.value = parseFloat(str); // @ts-ignore\n\n out.unit = str.match(/[\\d.\\-+]*\\s*(.*)/)[1] || defaultUnit; // @ts-expect-error\n\n var isValidUnit = VALID_UNITS.includes(out.unit);\n\n if (!isValidUnit) {\n throw new Error('Invalid unit provided.');\n }\n\n return out;\n}\n\nvar easingPresets = {\n ease: [0.25, 0.1, 0.25, 1.0],\n easeIn: [0.42, 0.0, 1.0, 1.0],\n easeOut: [0.0, 0.0, 0.58, 1.0],\n easeInOut: [0.42, 0.0, 0.58, 1.0],\n\n /* Ease IN curves */\n easeInQuad: [0.55, 0.085, 0.68, 0.53],\n easeInCubic: [0.55, 0.055, 0.675, 0.19],\n easeInQuart: [0.895, 0.03, 0.685, 0.22],\n easeInQuint: [0.755, 0.05, 0.855, 0.06],\n easeInSine: [0.47, 0.0, 0.745, 0.715],\n easeInExpo: [0.95, 0.05, 0.795, 0.035],\n easeInCirc: [0.6, 0.04, 0.98, 0.335],\n\n /* Ease Out Curves */\n easeOutQuad: [0.25, 0.46, 0.45, 0.94],\n easeOutCubic: [0.215, 0.61, 0.355, 1.0],\n easeOutQuart: [0.165, 0.84, 0.44, 1.0],\n easeOutQuint: [0.23, 1.0, 0.32, 1.0],\n easeOutSine: [0.39, 0.575, 0.565, 1.0],\n easeOutExpo: [0.19, 1.0, 0.22, 1.0],\n easeOutCirc: [0.075, 0.82, 0.165, 1.0],\n\n /* Ease IN Out Curves */\n easeInOutQuad: [0.455, 0.03, 0.515, 0.955],\n easeInOutCubic: [0.645, 0.045, 0.355, 1.0],\n easeInOutQuart: [0.77, 0.0, 0.175, 1.0],\n easeInOutQuint: [0.86, 0.0, 0.07, 1.0],\n easeInOutSine: [0.445, 0.05, 0.55, 0.95],\n easeInOutExpo: [1.0, 0.0, 0.0, 1.0],\n easeInOutCirc: [0.785, 0.135, 0.15, 0.86],\n\n /* Ease Bounce Curves */\n easeInBack: [0.6, -0.28, 0.735, 0.045],\n easeOutBack: [0.175, 0.885, 0.32, 1.275],\n easeInOutBack: [0.68, -0.55, 0.265, 1.55]\n};\n\nfunction createEasingFunction(easing) {\n if (Array.isArray(easing)) {\n return bezier(easing[0], easing[1], easing[2], easing[3]);\n }\n\n if (typeof easing === 'string' && typeof easingPresets[easing] !== 'undefined') {\n var params = easingPresets[easing];\n return bezier(params[0], params[1], params[2], params[3]);\n }\n\n return;\n}\n\nvar PARALLAX_EFFECTS = /*#__PURE__*/Object.values(ValidCSSEffects);\nvar MAP_EFFECT_TO_DEFAULT_UNIT = {\n speed: 'px',\n translateX: '%',\n translateY: '%',\n rotate: 'deg',\n rotateX: 'deg',\n rotateY: 'deg',\n rotateZ: 'deg',\n scale: '',\n scaleX: '',\n scaleY: '',\n scaleZ: '',\n opacity: ''\n};\n/**\r\n * Takes a parallax element effects and parses the properties to get the start and end values and units.\r\n */\n\nfunction parseElementTransitionEffects(props, scrollAxis) {\n var parsedEffects = {};\n PARALLAX_EFFECTS.forEach(function (key) {\n var defaultValue = MAP_EFFECT_TO_DEFAULT_UNIT[key]; // If the provided type is a number, this must be the speed prop\n // in which case we need to construct the proper translate config\n\n if (typeof (props == null ? void 0 : props[key]) === 'number') {\n var value = props == null ? void 0 : props[key];\n var startSpeed = (value || 0) * 10 + \"px\";\n var endSpeed = (value || 0) * -10 + \"px\";\n var startParsed = parseValueAndUnit(startSpeed);\n var endParsed = parseValueAndUnit(endSpeed);\n var speedConfig = {\n start: startParsed.value,\n end: endParsed.value,\n unit: startParsed.unit\n }; // Manually set translate y value\n\n if (scrollAxis === ScrollAxis.vertical) {\n parsedEffects.translateY = speedConfig;\n } // Manually set translate y value\n\n\n if (scrollAxis === ScrollAxis.horizontal) {\n parsedEffects.translateX = speedConfig;\n }\n } // The rest are standard effect being parsed\n\n\n if (Array.isArray(props == null ? void 0 : props[key])) {\n var _value = props == null ? void 0 : props[key];\n\n if (typeof _value[0] !== 'undefined' && typeof _value[1] !== 'undefined') {\n var _startParsed = parseValueAndUnit(_value == null ? void 0 : _value[0], defaultValue);\n\n var _endParsed = parseValueAndUnit(_value == null ? void 0 : _value[1], defaultValue);\n\n var easing = createEasingFunction(_value == null ? void 0 : _value[2]);\n parsedEffects[key] = {\n start: _startParsed.value,\n end: _endParsed.value,\n unit: _startParsed.unit,\n easing: easing\n };\n\n if (_startParsed.unit !== _endParsed.unit) {\n throw new Error('Must provide matching units for the min and max offset values of each axis.');\n }\n }\n }\n });\n return parsedEffects;\n}\n\n/**\r\n * Returns the percent (0 - 100) moved based on position in the viewport\r\n */\nfunction getProgressAmount(\n/*\r\n * The start value from cache\r\n */\nstart,\n/*\r\n * total dist the element has to move to be 100% complete (view width/height + element width/height)\r\n */\ntotalDist,\n/*\r\n * Current scroll value\r\n */\ncurrentScroll,\n/*\r\n * an optional easing function to apply\r\n */\neasing) {\n // adjust cached value\n var startAdjustedScroll = currentScroll - start; // Amount the element has moved based on current and total distance to move\n\n var amount = startAdjustedScroll / totalDist; // Apply bezier easing if provided\n\n if (easing) {\n amount = easing(amount);\n }\n\n return amount;\n}\n\n/**\r\n * Takes two values (start, end) and returns whether the current scroll is within range\r\n * @param {number} start - start of scroll (x/y)\r\n * @param {number} end - end of scroll (x/y)\r\n * @param {number} scroll - current scroll (x/y)\r\n * @return {boolean} isInView\r\n */\nfunction isElementInView(start, end, scroll) {\n var isInView = scroll >= start && scroll <= end;\n return isInView;\n}\n\n// Scale between AKA normalize\nfunction scaleBetween(value, newMin, newMax, oldMin, oldMax) {\n return (newMax - newMin) * (value - oldMin) / (oldMax - oldMin) + newMin;\n}\n\n/**\r\n * Scales a start and end value of an effect based on percent moved and easing function\r\n */\n\nfunction scaleEffectByProgress(effect, progress) {\n var value = scaleBetween(typeof effect.easing === 'function' ? effect.easing(progress) : progress, (effect == null ? void 0 : effect.start) || 0, (effect == null ? void 0 : effect.end) || 0, 0, 1);\n return {\n value: value,\n unit: effect == null ? void 0 : effect.unit\n };\n}\n\nvar TRANSFORM_EFFECTS = /*#__PURE__*/Object.values(ValidCSSEffects).filter(function (v) {\n return v !== 'opacity';\n});\nfunction setWillChangeStyles(el, effects) {\n var keys = Object.keys(effects);\n var hasOpacity = keys.includes('opacity');\n var willChange = \"transform\" + (hasOpacity ? ',opacity' : '');\n el.style.willChange = willChange;\n}\nfunction setElementStyles(effects, progress, el) {\n if (!el) return;\n var transform = getTransformStyles(effects, progress);\n var opacity = getOpacityStyles(effects, progress);\n el.style.transform = transform;\n el.style.opacity = opacity;\n}\nfunction getOpacityStyles(effects, progress) {\n var scaledOpacity = effects['opacity'] && scaleEffectByProgress(effects['opacity'], progress);\n\n if (typeof scaledOpacity === 'undefined' || typeof scaledOpacity.value === 'undefined' || typeof scaledOpacity.unit === 'undefined') {\n return '';\n }\n\n var styleStr = \"\" + scaledOpacity.value;\n return styleStr;\n}\nfunction getTransformStyles(effects, progress) {\n var transform = TRANSFORM_EFFECTS.reduce(function (acc, key) {\n var scaledEffect = // @ts-expect-error\n effects[key] && scaleEffectByProgress(effects[key], progress);\n\n if (typeof scaledEffect === 'undefined' || typeof scaledEffect.value === 'undefined' || typeof scaledEffect.unit === 'undefined') {\n return acc;\n }\n\n var styleStr = key + \"(\" + scaledEffect.value + scaledEffect.unit + \")\";\n return acc + styleStr;\n }, '');\n return transform;\n}\n/**\r\n * Takes a parallax element and removes parallax offset styles.\r\n * @param {object} element\r\n */\n\nfunction resetStyles(element) {\n var el = element.el;\n if (!el) return;\n el.style.transform = '';\n el.style.opacity = '';\n}\n\nfunction createLimitsForRelativeElements(rect, view, scroll, shouldAlwaysCompleteAnimation) {\n var startY = rect.top - view.height;\n var startX = rect.left - view.width;\n var endY = rect.bottom;\n var endX = rect.right; // add scroll\n\n startX += scroll.x;\n endX += scroll.x;\n startY += scroll.y;\n endY += scroll.y;\n\n if (shouldAlwaysCompleteAnimation) {\n if (scroll.y + rect.top < view.height) {\n startY = 0;\n }\n\n if (scroll.x + rect.left < view.width) {\n startX = 0;\n }\n\n if (endY > view.scrollHeight - view.height) {\n endY = view.scrollHeight - view.height;\n }\n\n if (endX > view.scrollWidth - view.width) {\n endX = view.scrollWidth - view.width;\n }\n }\n\n var limits = new Limits({\n startX: startX,\n startY: startY,\n endX: endX,\n endY: endY\n });\n return limits;\n}\n\nfunction getTranslateScalar(startTranslatePx, endTranslatePx, totalDist) {\n var slow = endTranslatePx > startTranslatePx; // calculating necessary scale to increase translations\n\n var totalAbsOff = (Math.abs(startTranslatePx) + Math.abs(endTranslatePx)) * (slow ? -1 : 1);\n var totalDistTrue = totalDist + totalAbsOff; // Determine multiple to scale by, only values greater than 1\n\n var scale = Math.max(totalDist / totalDistTrue, 1);\n return scale;\n}\n\n/**\r\n * Return the start and end pixel values for an elements translations\r\n */\nfunction getStartEndValueInPx(translate, elementSize) {\n var start = translate.start,\n end = translate.end,\n unit = translate.unit;\n\n if (unit === '%') {\n var scale = elementSize / 100;\n start = start * scale;\n end = end * scale;\n }\n\n if (unit === 'vw') {\n var startScale = start / 100;\n var endScale = end / 100;\n start = window.innerWidth * startScale;\n end = window.innerWidth * endScale;\n }\n\n if (unit === 'vh') {\n var _startScale = start / 100;\n\n var _endScale = end / 100;\n\n start = window.innerHeight * _startScale;\n end = window.innerHeight * _endScale;\n }\n\n return {\n start: start,\n end: end\n };\n}\n\nvar DEFAULT_VALUE = {\n start: 0,\n end: 0,\n unit: ''\n};\nfunction createLimitsWithTranslationsForRelativeElements(rect, view, effects, scroll, scrollAxis, shouldAlwaysCompleteAnimation) {\n // get start and end accounting for percent effects\n var translateX = effects.translateX || DEFAULT_VALUE;\n var translateY = effects.translateY || DEFAULT_VALUE;\n\n var _getStartEndValueInPx = getStartEndValueInPx(translateX, rect.width),\n startTranslateXPx = _getStartEndValueInPx.start,\n endTranslateXPx = _getStartEndValueInPx.end;\n\n var _getStartEndValueInPx2 = getStartEndValueInPx(translateY, rect.height),\n startTranslateYPx = _getStartEndValueInPx2.start,\n endTranslateYPx = _getStartEndValueInPx2.end; // default starting values\n\n\n var startY = rect.top - view.height;\n var startX = rect.left - view.width;\n var endY = rect.bottom;\n var endX = rect.right;\n var startMultiplierY = 1;\n var endMultiplierY = 1;\n\n if (scrollAxis === ScrollAxis.vertical) {\n startMultiplierY = getTranslateScalar(startTranslateYPx, endTranslateYPx, view.height + rect.height);\n endMultiplierY = startMultiplierY;\n }\n\n var startMultiplierX = 1;\n var endMultiplierX = 1;\n\n if (scrollAxis === ScrollAxis.horizontal) {\n startMultiplierX = getTranslateScalar(startTranslateXPx, endTranslateXPx, view.width + rect.width);\n endMultiplierX = startMultiplierX;\n } // Apply the scale to initial values\n\n\n if (startTranslateYPx < 0) {\n startY = startY + startTranslateYPx * startMultiplierY;\n }\n\n if (endTranslateYPx > 0) {\n endY = endY + endTranslateYPx * endMultiplierY;\n }\n\n if (startTranslateXPx < 0) {\n startX = startX + startTranslateXPx * startMultiplierX;\n }\n\n if (endTranslateXPx > 0) {\n endX = endX + endTranslateXPx * endMultiplierX;\n } // add scroll\n\n\n startX += scroll.x;\n endX += scroll.x;\n startY += scroll.y;\n endY += scroll.y; // NOTE: please refactor and isolate this :(\n\n if (shouldAlwaysCompleteAnimation) {\n var topBeginsInView = scroll.y + rect.top < view.height;\n var leftBeginsInView = scroll.x + rect.left < view.width;\n var bottomEndsInView = scroll.y + rect.bottom > view.scrollHeight - view.height;\n var rightEndsInView = scroll.x + rect.right > view.scrollWidth - view.height;\n\n if (topBeginsInView && bottomEndsInView) {\n startMultiplierY = 1;\n endMultiplierY = 1;\n startY = 0;\n endY = view.scrollHeight - view.height;\n }\n\n if (leftBeginsInView && rightEndsInView) {\n startMultiplierX = 1;\n endMultiplierX = 1;\n startX = 0;\n endX = view.scrollWidth - view.width;\n }\n\n if (!topBeginsInView && bottomEndsInView) {\n startY = rect.top - view.height + scroll.y;\n endY = view.scrollHeight - view.height;\n var totalDist = endY - startY;\n startMultiplierY = getTranslateScalar(startTranslateYPx, endTranslateYPx, totalDist);\n endMultiplierY = 1;\n\n if (startTranslateYPx < 0) {\n startY = startY + startTranslateYPx * startMultiplierY;\n }\n }\n\n if (!leftBeginsInView && rightEndsInView) {\n startX = rect.left - view.width + scroll.x;\n endX = view.scrollWidth - view.width;\n\n var _totalDist = endX - startX;\n\n startMultiplierX = getTranslateScalar(startTranslateXPx, endTranslateXPx, _totalDist);\n endMultiplierX = 1;\n\n if (startTranslateXPx < 0) {\n startX = startX + startTranslateXPx * startMultiplierX;\n }\n }\n\n if (topBeginsInView && !bottomEndsInView) {\n startY = 0;\n endY = rect.bottom + scroll.y;\n\n var _totalDist2 = endY - startY;\n\n startMultiplierY = 1;\n endMultiplierY = getTranslateScalar(startTranslateYPx, endTranslateYPx, _totalDist2);\n\n if (endTranslateYPx > 0) {\n endY = endY + endTranslateYPx * endMultiplierY;\n }\n }\n\n if (leftBeginsInView && !rightEndsInView) {\n startX = 0;\n endX = rect.right + scroll.x;\n\n var _totalDist3 = endX - startX;\n\n startMultiplierX = 1;\n endMultiplierX = getTranslateScalar(startTranslateXPx, endTranslateXPx, _totalDist3);\n\n if (endTranslateXPx > 0) {\n endX = endX + endTranslateXPx * endMultiplierX;\n }\n }\n }\n\n var limits = new Limits({\n startX: startX,\n startY: startY,\n endX: endX,\n endY: endY,\n startMultiplierX: startMultiplierX,\n endMultiplierX: endMultiplierX,\n startMultiplierY: startMultiplierY,\n endMultiplierY: endMultiplierY\n });\n return limits;\n}\n\nfunction scaleTranslateEffectsForSlowerScroll(effects, limits) {\n var effectsCopy = _extends({}, effects);\n\n if (effectsCopy.translateX) {\n effectsCopy.translateX = _extends({}, effects.translateX, {\n start: effectsCopy.translateX.start * limits.startMultiplierX,\n end: effectsCopy.translateX.end * limits.endMultiplierX\n });\n }\n\n if (effectsCopy.translateY) {\n effectsCopy.translateY = _extends({}, effects.translateY, {\n start: effectsCopy.translateY.start * limits.startMultiplierY,\n end: effectsCopy.translateY.end * limits.endMultiplierY\n });\n }\n\n return effectsCopy;\n}\n\nfunction getShouldScaleTranslateEffects(props, effects, scrollAxis) {\n if (props.rootMargin || props.targetElement || props.shouldDisableScalingTranslations) {\n return false;\n }\n\n if (!!effects.translateX && scrollAxis === ScrollAxis.horizontal || !!effects.translateY && scrollAxis === ScrollAxis.vertical) {\n return true;\n }\n\n return false;\n}\n\nvar clamp = function clamp(num, min, max) {\n return Math.min(Math.max(num, min), max);\n};\n\nvar Element = /*#__PURE__*/function () {\n function Element(options) {\n this.el = options.el;\n this.props = options.props;\n this.scrollAxis = options.scrollAxis;\n this.disabledParallaxController = options.disabledParallaxController || false;\n this.id = createId();\n this.effects = parseElementTransitionEffects(this.props, this.scrollAxis);\n this.isInView = null;\n this.progress = 0;\n\n this._setElementEasing(options.props.easing);\n\n setWillChangeStyles(options.el, this.effects);\n }\n\n var _proto = Element.prototype;\n\n _proto.updateProps = function updateProps(nextProps) {\n this.props = _extends({}, this.props, nextProps);\n this.effects = parseElementTransitionEffects(nextProps, this.scrollAxis);\n\n this._setElementEasing(nextProps.easing);\n\n return this;\n };\n\n _proto.setCachedAttributes = function setCachedAttributes(view, scroll) {\n // NOTE: Must reset styles before getting the rect, as it might impact the natural position\n resetStyles(this);\n this.rect = new Rect({\n el: this.props.targetElement || this.el,\n rootMargin: this.props.rootMargin,\n view: view\n });\n var shouldScaleTranslateEffects = getShouldScaleTranslateEffects(this.props, this.effects, this.scrollAxis);\n\n if (typeof this.props.startScroll === 'number' && typeof this.props.endScroll === 'number') {\n this.limits = new Limits({\n startX: this.props.startScroll,\n startY: this.props.startScroll,\n endX: this.props.endScroll,\n endY: this.props.endScroll\n }); // Undo the reset -- place it back at current position with styles\n\n this._setElementStyles();\n\n return this;\n }\n\n if (shouldScaleTranslateEffects) {\n this.limits = createLimitsWithTranslationsForRelativeElements(this.rect, view, this.effects, scroll, this.scrollAxis, this.props.shouldAlwaysCompleteAnimation);\n this.scaledEffects = scaleTranslateEffectsForSlowerScroll(this.effects, this.limits);\n } else {\n this.limits = createLimitsForRelativeElements(this.rect, view, scroll, this.props.shouldAlwaysCompleteAnimation);\n } // Undo the reset -- place it back at current position with styles\n\n\n this._setElementStyles();\n\n return this;\n };\n\n _proto._updateElementIsInView = function _updateElementIsInView(nextIsInView) {\n // NOTE: Check if this is the first change to make sure onExit isn't called\n var isFirstChange = this.isInView === null;\n\n if (nextIsInView !== this.isInView) {\n if (nextIsInView) {\n this.props.onEnter && this.props.onEnter(this);\n } else if (!isFirstChange) {\n this._setFinalProgress();\n\n this._setElementStyles();\n\n this.props.onExit && this.props.onExit(this);\n }\n }\n\n this.isInView = nextIsInView;\n };\n\n _proto._setFinalProgress = function _setFinalProgress() {\n var finalProgress = clamp(Math.round(this.progress), 0, 1);\n\n this._updateElementProgress(finalProgress);\n };\n\n _proto._setElementStyles = function _setElementStyles() {\n if (this.props.disabled || this.disabledParallaxController) return;\n var effects = this.scaledEffects || this.effects;\n setElementStyles(effects, this.progress, this.el);\n };\n\n _proto._updateElementProgress = function _updateElementProgress(nextProgress) {\n this.progress = nextProgress;\n this.props.onProgressChange && this.props.onProgressChange(this.progress);\n this.props.onChange && this.props.onChange(this);\n };\n\n _proto._setElementEasing = function _setElementEasing(easing) {\n this.easing = createEasingFunction(easing);\n };\n\n _proto.updateElementOptions = function updateElementOptions(options) {\n this.scrollAxis = options.scrollAxis;\n this.disabledParallaxController = options.disabledParallaxController || false;\n };\n\n _proto.updatePosition = function updatePosition(scroll) {\n if (!this.limits) return this;\n var isVertical = this.scrollAxis === ScrollAxis.vertical;\n var isFirstChange = this.isInView === null; // based on scroll axis\n\n var start = isVertical ? this.limits.startY : this.limits.startX;\n var end = isVertical ? this.limits.endY : this.limits.endX;\n var total = isVertical ? this.limits.totalY : this.limits.totalX;\n var s = isVertical ? scroll.y : scroll.x; // check if in view\n\n var nextIsInView = isElementInView(start, end, s);\n\n this._updateElementIsInView(nextIsInView); // set the progress if in view or this is the first change\n\n\n if (nextIsInView) {\n var nextProgress = getProgressAmount(start, total, s, this.easing);\n\n this._updateElementProgress(nextProgress);\n\n this._setElementStyles();\n } else if (isFirstChange) {\n // NOTE: this._updateElementProgress -- dont use this because it will trigger onChange\n this.progress = clamp(Math.round(getProgressAmount(start, total, s, this.easing)), 0, 1);\n\n this._setElementStyles();\n }\n\n return this;\n };\n\n return Element;\n}();\n\nvar View = /*#__PURE__*/function () {\n function View(config) {\n this.scrollContainer = config.scrollContainer;\n this.width = config.width;\n this.height = config.height;\n this.scrollHeight = config.scrollHeight;\n this.scrollWidth = config.scrollWidth;\n }\n\n var _proto = View.prototype;\n\n _proto.hasChanged = function hasChanged(params) {\n if (params.width !== this.width || params.height !== this.height || params.scrollWidth !== this.scrollWidth || params.scrollHeight !== this.scrollHeight) {\n return true;\n }\n\n return false;\n };\n\n _proto.setSize = function setSize(params) {\n this.width = params.width;\n this.height = params.height;\n this.scrollHeight = params.scrollHeight;\n this.scrollWidth = params.scrollWidth;\n return this;\n };\n\n return View;\n}();\n\nvar Scroll = /*#__PURE__*/function () {\n function Scroll(x, y) {\n this.x = x;\n this.y = y;\n this.dx = 0;\n this.dy = 0;\n }\n\n var _proto = Scroll.prototype;\n\n _proto.setScroll = function setScroll(x, y) {\n this.dx = x - this.x;\n this.dy = y - this.y;\n this.x = x;\n this.y = y;\n return this;\n };\n\n return Scroll;\n}();\n\nfunction testForPassiveScroll() {\n var supportsPassiveOption = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassiveOption = true;\n return true;\n }\n }); // @ts-expect-error\n\n window.addEventListener('test', null, opts); // @ts-expect-error\n\n window.removeEventListener('test', null, opts);\n } catch (e) {}\n\n return supportsPassiveOption;\n}\n\n/**\r\n * -------------------------------------------------------\r\n * Parallax Controller\r\n * -------------------------------------------------------\r\n *\r\n * The global controller for setting up and managing a scroll view of elements.\r\n *\r\n */\n\nvar ParallaxController = /*#__PURE__*/function () {\n function ParallaxController(_ref) {\n var _ref$scrollAxis = _ref.scrollAxis,\n scrollAxis = _ref$scrollAxis === void 0 ? ScrollAxis.vertical : _ref$scrollAxis,\n scrollContainer = _ref.scrollContainer,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled;\n this.disabled = disabled;\n this.scrollAxis = scrollAxis; // All parallax elements to be updated\n\n this.elements = [];\n this._hasScrollContainer = !!scrollContainer;\n this.viewEl = scrollContainer != null ? scrollContainer : window; // Scroll and View\n\n var _this$_getScrollPosit = this._getScrollPosition(),\n x = _this$_getScrollPosit[0],\n y = _this$_getScrollPosit[1];\n\n this.scroll = new Scroll(x, y);\n this.view = new View({\n width: 0,\n height: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n scrollContainer: this._hasScrollContainer ? scrollContainer : undefined\n }); // Ticking\n\n this._ticking = false; // Passive support\n\n this._supportsPassive = testForPassiveScroll(); // Bind methods to class\n\n this._bindAllMethods(); // If this is initialized disabled, don't do anything below.\n\n\n if (this.disabled) return;\n\n this._addListeners(this.viewEl);\n\n this._addResizeObserver();\n\n this._setViewSize();\n }\n /**\r\n * Static method to instantiate the ParallaxController.\r\n * @returns {Class} ParallaxController\r\n */\n\n\n ParallaxController.init = function init(options) {\n var hasWindow = typeof window !== 'undefined';\n\n if (!hasWindow) {\n throw new Error('Looks like ParallaxController.init() was called on the server. This method must be called on the client.');\n }\n\n return new ParallaxController(options);\n };\n\n var _proto = ParallaxController.prototype;\n\n _proto._bindAllMethods = function _bindAllMethods() {\n var _this = this;\n\n ['_addListeners', '_removeListeners', '_getScrollPosition', '_handleScroll', '_handleUpdateCache', '_updateAllElements', '_updateElementPosition', '_setViewSize', '_addResizeObserver', '_checkIfViewHasChanged', '_getViewParams', 'getElements', 'createElement', 'removeElementById', 'resetElementStyles', 'updateElementPropsById', 'update', 'updateScrollContainer', 'destroy'].forEach(function (method) {\n // @ts-expect-error\n _this[method] = _this[method].bind(_this);\n });\n };\n\n _proto._addListeners = function _addListeners(el) {\n el.addEventListener('scroll', this._handleScroll, this._supportsPassive ? {\n passive: true\n } : false);\n window.addEventListener('resize', this._handleUpdateCache, false);\n window.addEventListener('blur', this._handleUpdateCache, false);\n window.addEventListener('focus', this._handleUpdateCache, false);\n window.addEventListener('load', this._handleUpdateCache, false);\n };\n\n _proto._removeListeners = function _removeListeners(el) {\n var _this$_resizeObserver;\n\n el.removeEventListener('scroll', this._handleScroll, false);\n window.removeEventListener('resize', this._handleUpdateCache, false);\n window.removeEventListener('blur', this._handleUpdateCache, false);\n window.removeEventListener('focus', this._handleUpdateCache, false);\n window.removeEventListener('load', this._handleUpdateCache, false);\n (_this$_resizeObserver = this._resizeObserver) == null ? void 0 : _this$_resizeObserver.disconnect();\n };\n\n _proto._addResizeObserver = function _addResizeObserver() {\n var _this2 = this;\n\n try {\n var observedEl = this._hasScrollContainer ? this.viewEl : document.documentElement;\n this._resizeObserver = new ResizeObserver(function () {\n return _this2.update();\n });\n\n this._resizeObserver.observe(observedEl);\n } catch (e) {\n console.warn('Failed to create the resize observer in the ParallaxContoller');\n }\n };\n\n _proto._getScrollPosition = function _getScrollPosition() {\n // Save current scroll\n // Supports IE 9 and up.\n var nx = this._hasScrollContainer ? // @ts-expect-error\n this.viewEl.scrollLeft : window.pageXOffset;\n var ny = this._hasScrollContainer ? // @ts-expect-error\n this.viewEl.scrollTop : window.pageYOffset;\n return [nx, ny];\n }\n /**\r\n * Window scroll handler sets scroll position\r\n * and then calls '_updateAllElements()'.\r\n */\n ;\n\n _proto._handleScroll = function _handleScroll() {\n var _this$elements;\n\n var _this$_getScrollPosit2 = this._getScrollPosition(),\n nx = _this$_getScrollPosit2[0],\n ny = _this$_getScrollPosit2[1];\n\n this.scroll.setScroll(nx, ny); // Only called if the last animation request has been\n // completed and there are parallax elements to update\n\n if (!this._ticking && ((_this$elements = this.elements) == null ? void 0 : _this$elements.length) > 0) {\n this._ticking = true; // @ts-ignore\n\n window.requestAnimationFrame(this._updateAllElements);\n }\n }\n /**\r\n * Window resize handler. Sets the new window inner height\r\n * then updates parallax element attributes and positions.\r\n */\n ;\n\n _proto._handleUpdateCache = function _handleUpdateCache() {\n this._setViewSize();\n\n this._updateAllElements({\n updateCache: true\n });\n }\n /**\r\n * Update element positions.\r\n * Determines if the element is in view based on the cached\r\n * attributes, if so set the elements parallax styles.\r\n */\n ;\n\n _proto._updateAllElements = function _updateAllElements(_temp) {\n var _this3 = this;\n\n var _ref2 = _temp === void 0 ? {} : _temp,\n updateCache = _ref2.updateCache;\n\n if (this.elements) {\n this.elements.forEach(function (element) {\n if (updateCache) {\n element.setCachedAttributes(_this3.view, _this3.scroll);\n }\n\n _this3._updateElementPosition(element);\n });\n } // reset ticking so more animations can be called\n\n\n this._ticking = false;\n }\n /**\r\n * Update element positions.\r\n * Determines if the element is in view based on the cached\r\n * attributes, if so set the elements parallax styles.\r\n */\n ;\n\n _proto._updateElementPosition = function _updateElementPosition(element) {\n if (element.props.disabled || this.disabled) return;\n element.updatePosition(this.scroll);\n }\n /**\r\n * Gets the params to set in the View from the scroll container or the window\r\n */\n ;\n\n _proto._getViewParams = function _getViewParams() {\n if (this._hasScrollContainer) {\n // @ts-expect-error\n var _width = this.viewEl.offsetWidth; // @ts-expect-error\n\n var _height = this.viewEl.offsetHeight; // @ts-expect-error\n\n var _scrollHeight = this.viewEl.scrollHeight; // @ts-expect-error\n\n var _scrollWidth = this.viewEl.scrollWidth;\n return this.view.setSize({\n width: _width,\n height: _height,\n scrollHeight: _scrollHeight,\n scrollWidth: _scrollWidth\n });\n }\n\n var html = document.documentElement;\n var width = window.innerWidth || html.clientWidth;\n var height = window.innerHeight || html.clientHeight;\n var scrollHeight = html.scrollHeight;\n var scrollWidth = html.scrollWidth;\n return {\n width: width,\n height: height,\n scrollHeight: scrollHeight,\n scrollWidth: scrollWidth\n };\n }\n /**\r\n * Cache the view attributes\r\n */\n ;\n\n _proto._setViewSize = function _setViewSize() {\n return this.view.setSize(this._getViewParams());\n }\n /**\r\n * Checks if any of the cached attributes of the view have changed.\r\n * @returns boolean\r\n */\n ;\n\n _proto._checkIfViewHasChanged = function _checkIfViewHasChanged() {\n return this.view.hasChanged(this._getViewParams());\n }\n /**\r\n * -------------------------------------------------------\r\n * Public methods\r\n * -------------------------------------------------------\r\n */\n\n /**\r\n * Returns all the parallax elements in the controller\r\n */\n ;\n\n _proto.getElements = function getElements() {\n return this.elements;\n }\n /**\r\n * Creates and returns new parallax element with provided options to be managed by the controller.\r\n */\n ;\n\n _proto.createElement = function createElement(options) {\n var newElement = new Element(_extends({}, options, {\n scrollAxis: this.scrollAxis,\n disabledParallaxController: this.disabled\n }));\n newElement.setCachedAttributes(this.view, this.scroll);\n this.elements = this.elements ? [].concat(this.elements, [newElement]) : [newElement];\n\n this._updateElementPosition(newElement); // NOTE: This checks if the view has changed then update the controller and all elements if it has\n // This shouldn't always be necessary with a resize observer watching the view element\n // but there seems to be cases where the resize observer does not catch and update.\n\n\n if (this._checkIfViewHasChanged()) {\n this.update();\n }\n\n return newElement;\n }\n /**\r\n * Remove an element by id\r\n */\n ;\n\n _proto.removeElementById = function removeElementById(id) {\n if (!this.elements) return;\n this.elements = this.elements.filter(function (el) {\n return el.id !== id;\n });\n }\n /**\r\n * Updates an existing parallax element object with new options.\r\n */\n ;\n\n _proto.updateElementPropsById = function updateElementPropsById(id, props) {\n if (this.elements) {\n this.elements = this.elements.map(function (el) {\n if (el.id === id) {\n return el.updateProps(props);\n }\n\n return el;\n });\n }\n\n this.update();\n }\n /**\r\n * Remove a target elements parallax styles\r\n */\n ;\n\n _proto.resetElementStyles = function resetElementStyles(element) {\n resetStyles(element);\n }\n /**\r\n * Updates all cached attributes on parallax elements.\r\n */\n ;\n\n _proto.update = function update() {\n // Save the latest scroll position because window.scroll\n // may be called and the handle scroll event may not be called.\n var _this$_getScrollPosit3 = this._getScrollPosition(),\n nx = _this$_getScrollPosit3[0],\n ny = _this$_getScrollPosit3[1];\n\n this.scroll.setScroll(nx, ny);\n\n this._setViewSize();\n\n this._updateAllElements({\n updateCache: true\n });\n }\n /**\r\n * Updates the scroll container of the parallax controller\r\n */\n ;\n\n _proto.updateScrollContainer = function updateScrollContainer(el) {\n // remove existing listeners with current el first\n this._removeListeners(this.viewEl);\n\n this.viewEl = el;\n this._hasScrollContainer = !!el;\n this.view = new View({\n width: 0,\n height: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n scrollContainer: el\n });\n\n this._setViewSize();\n\n this._addListeners(this.viewEl);\n\n this._updateAllElements({\n updateCache: true\n });\n };\n\n _proto.disableParallaxController = function disableParallaxController() {\n this.disabled = true; // remove listeners\n\n this._removeListeners(this.viewEl); // reset all styles\n\n\n if (this.elements) {\n this.elements.forEach(function (element) {\n return resetStyles(element);\n });\n }\n };\n\n _proto.enableParallaxController = function enableParallaxController() {\n var _this4 = this;\n\n this.disabled = false;\n\n if (this.elements) {\n this.elements.forEach(function (element) {\n return element.updateElementOptions({\n disabledParallaxController: false,\n scrollAxis: _this4.scrollAxis\n });\n });\n } // add back listeners\n\n\n this._addListeners(this.viewEl);\n\n this._addResizeObserver();\n\n this._setViewSize();\n }\n /**\r\n * Disable all parallax elements\r\n */\n ;\n\n _proto.disableAllElements = function disableAllElements() {\n console.warn('deprecated: use disableParallaxController() instead');\n\n if (this.elements) {\n this.elements = this.elements.map(function (el) {\n return el.updateProps({\n disabled: true\n });\n });\n }\n\n this.update();\n }\n /**\r\n * Enable all parallax elements\r\n */\n ;\n\n _proto.enableAllElements = function enableAllElements() {\n console.warn('deprecated: use enableParallaxController() instead');\n\n if (this.elements) {\n this.elements = this.elements.map(function (el) {\n return el.updateProps({\n disabled: false\n });\n });\n }\n\n this.update();\n }\n /**\r\n * Removes all listeners and resets all styles on managed elements.\r\n */\n ;\n\n _proto.destroy = function destroy() {\n this._removeListeners(this.viewEl);\n\n if (this.elements) {\n this.elements.forEach(function (element) {\n return resetStyles(element);\n });\n } // @ts-expect-error\n\n\n this.elements = undefined;\n };\n\n return ParallaxController;\n}();\n\nexport { EasingPreset, Element, Limits, ParallaxController, Rect, RotationUnits, ScaleUnits, Scroll, ScrollAxis, Units, ValidCSSEffects, View, createId, getProgressAmount, isElementInView, parseElementTransitionEffects, parseValueAndUnit, resetStyles, scaleBetween, scaleEffectByProgress, setElementStyles, testForPassiveScroll };\n//# sourceMappingURL=parallax-controller.esm.js.map\n","import { ParallaxController, parseValueAndUnit, ScrollAxis } from 'parallax-controller';\nexport { EasingPreset } from 'parallax-controller';\nimport React, { useEffect, useContext, useRef, useState } from 'react';\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction removeUndefinedObjectKeys(obj) {\n Object.keys(obj).forEach(function (key) {\n return obj[key] === undefined && delete obj[key];\n });\n return obj;\n}\n\nvar _excluded = [\"disabled\", \"easing\", \"endScroll\", \"onChange\", \"onEnter\", \"onExit\", \"onProgressChange\", \"opacity\", \"rootMargin\", \"rotate\", \"rotateX\", \"rotateY\", \"rotateZ\", \"scale\", \"scaleX\", \"scaleY\", \"scaleZ\", \"shouldAlwaysCompleteAnimation\", \"shouldDisableScalingTranslations\", \"speed\", \"startScroll\", \"targetElement\", \"translateX\", \"translateY\"];\nfunction getIsolatedParallaxProps(props) {\n var disabled = props.disabled,\n easing = props.easing,\n endScroll = props.endScroll,\n onChange = props.onChange,\n onEnter = props.onEnter,\n onExit = props.onExit,\n onProgressChange = props.onProgressChange,\n opacity = props.opacity,\n rootMargin = props.rootMargin,\n rotate = props.rotate,\n rotateX = props.rotateX,\n rotateY = props.rotateY,\n rotateZ = props.rotateZ,\n scale = props.scale,\n scaleX = props.scaleX,\n scaleY = props.scaleY,\n scaleZ = props.scaleZ,\n shouldAlwaysCompleteAnimation = props.shouldAlwaysCompleteAnimation,\n shouldDisableScalingTranslations = props.shouldDisableScalingTranslations,\n speed = props.speed,\n startScroll = props.startScroll,\n targetElement = props.targetElement,\n translateX = props.translateX,\n translateY = props.translateY,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n var parallaxProps = removeUndefinedObjectKeys({\n disabled: disabled,\n easing: easing,\n endScroll: endScroll,\n onChange: onChange,\n onEnter: onEnter,\n onExit: onExit,\n onProgressChange: onProgressChange,\n opacity: opacity,\n rootMargin: rootMargin,\n rotate: rotate,\n rotateX: rotateX,\n rotateY: rotateY,\n rotateZ: rotateZ,\n scale: scale,\n scaleX: scaleX,\n scaleY: scaleY,\n scaleZ: scaleZ,\n shouldAlwaysCompleteAnimation: shouldAlwaysCompleteAnimation,\n shouldDisableScalingTranslations: shouldDisableScalingTranslations,\n speed: speed,\n startScroll: startScroll,\n targetElement: targetElement,\n translateX: translateX,\n translateY: translateY\n });\n return {\n parallaxProps: parallaxProps,\n rest: rest\n };\n}\n\nfunction useVerifyController(controller) {\n useEffect(function () {\n var isServer = typeof window === 'undefined'; // Make sure the provided controller is an instance of the Parallax Controller\n\n var isInstance = controller instanceof ParallaxController; // Throw if neither context or global is available\n\n if (!isServer && !controller && !isInstance) {\n throw new Error(\"Must wrap your application's components in a .\");\n }\n }, [controller]);\n}\n\nvar ParallaxContext = /*#__PURE__*/React.createContext(null);\n\nfunction useParallaxController() {\n var parallaxController = useContext(ParallaxContext);\n var isServer = typeof window === 'undefined';\n\n if (isServer) {\n return null;\n }\n\n if (!parallaxController) {\n throw new Error('Could not find `react-scroll-parallax` context value. Please ensure the component is wrapped in a ');\n }\n\n return parallaxController;\n}\n\nfunction useParallax(props) {\n var controller = useParallaxController();\n var ref = useRef(null);\n\n var _getIsolatedParallaxP = getIsolatedParallaxProps(props),\n parallaxProps = _getIsolatedParallaxP.parallaxProps;\n\n useVerifyController(controller);\n\n var _useState = useState(),\n element = _useState[0],\n setElement = _useState[1]; // create element\n\n\n useEffect(function () {\n var newElement;\n\n if (ref.current instanceof HTMLElement) {\n var options = {\n el: ref.current,\n props: parallaxProps\n };\n newElement = controller == null ? void 0 : controller.createElement(options);\n setElement(newElement);\n } else {\n throw new Error('You must assign the ref returned by the useParallax() hook to an HTML Element.');\n }\n\n return function () {\n if (newElement) {\n controller == null ? void 0 : controller.removeElementById(newElement.id);\n }\n };\n }, []); // update element\n\n useEffect(function () {\n if (element) {\n if (props.disabled) {\n controller == null ? void 0 : controller.resetElementStyles(element);\n controller == null ? void 0 : controller.updateElementPropsById(element.id, parallaxProps);\n } else {\n controller == null ? void 0 : controller.updateElementPropsById(element.id, parallaxProps);\n }\n }\n }, [props.disabled, props.easing, props.endScroll, props.onChange, props.onEnter, props.onExit, props.onProgressChange, props.opacity, props.rootMargin, props.rotate, props.rotateX, props.rotateY, props.rotateZ, props.scale, props.scaleX, props.scaleY, props.scaleZ, props.shouldAlwaysCompleteAnimation, props.shouldDisableScalingTranslations, props.speed, props.startScroll, props.targetElement, props.translateX, props.translateY]);\n return {\n ref: ref,\n controller: controller,\n element: element\n };\n}\n\nfunction Parallax(props) {\n var _getIsolatedParallaxP = getIsolatedParallaxProps(props),\n parallaxProps = _getIsolatedParallaxP.parallaxProps,\n rest = _getIsolatedParallaxP.rest;\n\n var _useParallax = useParallax(parallaxProps),\n ref = _useParallax.ref;\n\n return React.createElement(\"div\", Object.assign({\n ref: ref\n }, rest), props.children);\n}\n\nvar FALLBACK_RECT = {\n height: 0\n};\nfunction getExpandedStyle(layer) {\n if (Array.isArray(layer.translateY)) {\n var translateYStart = parseValueAndUnit(layer.translateY[0]);\n var translateYEnd = parseValueAndUnit(layer.translateY[1]);\n\n if (translateYStart.unit === 'px' && translateYEnd.unit === 'px') {\n return {\n top: Math.abs(translateYEnd.value) * -1 + \"px\",\n bottom: Math.abs(translateYStart.value) * -1 + \"px\"\n };\n }\n\n if (translateYStart.unit === '%' && translateYEnd.unit === '%') {\n var _layer$targetElement$, _layer$targetElement;\n\n var clientRect = (_layer$targetElement$ = (_layer$targetElement = layer.targetElement) == null ? void 0 : _layer$targetElement.getBoundingClientRect()) != null ? _layer$targetElement$ : FALLBACK_RECT;\n var top = Math.abs(clientRect.height * 0.01 * translateYEnd.value) * -1;\n var bottom = Math.abs(clientRect.height * 0.01 * translateYStart.value) * -1;\n return {\n top: top + \"px\",\n bottom: bottom + \"px\"\n };\n }\n }\n\n if (layer.speed) {\n var speed = layer.speed || 0;\n var absSpeed = Math.abs(speed) * 10 * -1;\n return {\n top: absSpeed + \"px\",\n bottom: absSpeed + \"px\"\n };\n }\n\n return {};\n}\n\nfunction getImageStyle(layer) {\n return layer.image ? {\n backgroundImage: \"url(\" + layer.image + \")\",\n backgroundPosition: 'center',\n backgroundSize: 'cover'\n } : {};\n}\n\nvar _excluded$1 = [\"children\", \"disabled\", \"style\", \"expanded\", \"image\", \"testId\"];\nvar absoluteStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0\n};\nvar ParallaxBannerLayer = function ParallaxBannerLayer(props) {\n var _getIsolatedParallaxP = getIsolatedParallaxProps(props),\n parallaxProps = _getIsolatedParallaxP.parallaxProps,\n rest = _getIsolatedParallaxP.rest;\n\n var style = rest.style,\n _rest$expanded = rest.expanded,\n expanded = _rest$expanded === void 0 ? true : _rest$expanded,\n testId = rest.testId,\n divProps = _objectWithoutPropertiesLoose(rest, _excluded$1);\n\n var imageStyle = getImageStyle(props);\n var expandedStyle = expanded ? getExpandedStyle(props) : {};\n var parallax = useParallax(_extends({\n targetElement: props.targetElement,\n shouldDisableScalingTranslations: true\n }, parallaxProps));\n return React.createElement(\"div\", Object.assign({\n \"data-testid\": testId,\n ref: parallax.ref,\n style: _extends({}, imageStyle, absoluteStyle, expandedStyle, style)\n }, divProps), rest.children);\n};\n\nvar _excluded$2 = [\"disabled\", \"style\", \"layers\"];\nvar containerStyle = {\n position: 'relative',\n overflow: 'hidden',\n width: '100%'\n};\nvar ParallaxBanner = function ParallaxBanner(props) {\n var _useState = useState(null),\n targetElement = _useState[0],\n setTargetElement = _useState[1];\n\n var containerRef = useRef(null);\n useEffect(function () {\n setTargetElement(containerRef.current);\n }, []);\n\n var rootStyle = props.style,\n _props$layers = props.layers,\n layers = _props$layers === void 0 ? [] : _props$layers,\n rootRest = _objectWithoutPropertiesLoose(props, _excluded$2);\n\n function renderLayers() {\n if (targetElement) {\n var shouldUseLayers = layers && layers.length > 0;\n\n if (shouldUseLayers) {\n return layers.map(function (layer, i) {\n return React.createElement(ParallaxBannerLayer, Object.assign({}, layer, {\n targetElement: targetElement,\n key: \"layer-\" + i,\n testId: \"layer-\" + i\n }));\n });\n }\n }\n\n return null;\n }\n\n function renderChildren() {\n if (targetElement) {\n return React.Children.map(props.children, function (child) {\n var item = child; // adds the targetElement prop to any ParallaxBannerLayer components\n\n if ((item == null ? void 0 : item.type) === ParallaxBannerLayer) {\n var clone = React.cloneElement(item, {\n targetElement: targetElement\n });\n return clone;\n }\n\n return child;\n });\n }\n\n return null;\n }\n\n return React.createElement(\"div\", Object.assign({\n ref: containerRef,\n style: _extends({}, containerStyle, rootStyle)\n }, rootRest), renderLayers(), renderChildren());\n};\n\nvar createController = function createController(options) {\n // Don't initialize on the server\n var isServer = typeof window === 'undefined';\n\n if (!isServer) {\n // Must not be the server so kick it off...\n return ParallaxController.init(options);\n }\n\n return null;\n};\n\nfunction ParallaxProvider(props) {\n var controller = useRef(null);\n\n if (!controller.current) {\n controller.current = createController({\n scrollAxis: props.scrollAxis || ScrollAxis.vertical,\n scrollContainer: props.scrollContainer,\n disabled: props.isDisabled\n });\n } // update scroll container\n\n\n useEffect(function () {\n if (props.scrollContainer && controller.current) {\n controller.current.updateScrollContainer(props.scrollContainer);\n }\n }, [props.scrollContainer, controller.current]); // disable/enable parallax\n\n useEffect(function () {\n if (props.isDisabled && controller.current) {\n controller.current.disableParallaxController();\n }\n\n if (!props.isDisabled && controller.current) {\n controller.current.enableParallaxController();\n }\n }, [props.isDisabled, controller.current]); // remove the controller when unmounting\n\n useEffect(function () {\n return function () {\n (controller == null ? void 0 : controller.current) && (controller == null ? void 0 : controller.current.destroy());\n };\n }, []);\n return React.createElement(ParallaxContext.Provider, {\n value: controller.current\n }, props.children);\n}\n\nexport { Parallax, ParallaxBanner, ParallaxBannerLayer, ParallaxContext, ParallaxProvider, useParallax, useParallaxController };\n//# sourceMappingURL=react-scroll-parallax.esm.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollLink = require('../mixins/scroll-link');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ButtonElement = function (_React$Component) {\n _inherits(ButtonElement, _React$Component);\n\n function ButtonElement() {\n _classCallCheck(this, ButtonElement);\n\n return _possibleConstructorReturn(this, (ButtonElement.__proto__ || Object.getPrototypeOf(ButtonElement)).apply(this, arguments));\n }\n\n _createClass(ButtonElement, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'button',\n this.props,\n this.props.children\n );\n }\n }]);\n\n return ButtonElement;\n}(_react2.default.Component);\n\n;\n\nexports.default = (0, _scrollLink2.default)(ButtonElement);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollElement = require('../mixins/scroll-element');\n\nvar _scrollElement2 = _interopRequireDefault(_scrollElement);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ElementWrapper = function (_React$Component) {\n _inherits(ElementWrapper, _React$Component);\n\n function ElementWrapper() {\n _classCallCheck(this, ElementWrapper);\n\n return _possibleConstructorReturn(this, (ElementWrapper.__proto__ || Object.getPrototypeOf(ElementWrapper)).apply(this, arguments));\n }\n\n _createClass(ElementWrapper, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n // Remove `parentBindings` and `name` from props\n var newProps = _extends({}, this.props);\n delete newProps.name;\n if (newProps.parentBindings) {\n delete newProps.parentBindings;\n }\n\n return _react2.default.createElement(\n 'div',\n _extends({}, newProps, { ref: function ref(el) {\n _this2.props.parentBindings.domNode = el;\n } }),\n this.props.children\n );\n }\n }]);\n\n return ElementWrapper;\n}(_react2.default.Component);\n\n;\n\nElementWrapper.propTypes = {\n name: _propTypes2.default.string,\n id: _propTypes2.default.string\n};\n\nexports.default = (0, _scrollElement2.default)(ElementWrapper);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollLink = require('../mixins/scroll-link');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar LinkElement = function (_React$Component) {\n _inherits(LinkElement, _React$Component);\n\n function LinkElement() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, LinkElement);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = LinkElement.__proto__ || Object.getPrototypeOf(LinkElement)).call.apply(_ref, [this].concat(args))), _this), _this.render = function () {\n return _react2.default.createElement(\n 'a',\n _this.props,\n _this.props.children\n );\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return LinkElement;\n}(_react2.default.Component);\n\n;\n\nexports.default = (0, _scrollLink2.default)(LinkElement);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Helpers = exports.ScrollElement = exports.ScrollLink = exports.animateScroll = exports.scrollSpy = exports.Events = exports.scroller = exports.Element = exports.Button = exports.Link = undefined;\n\nvar _Link = require('./components/Link.js');\n\nvar _Link2 = _interopRequireDefault(_Link);\n\nvar _Button = require('./components/Button.js');\n\nvar _Button2 = _interopRequireDefault(_Button);\n\nvar _Element = require('./components/Element.js');\n\nvar _Element2 = _interopRequireDefault(_Element);\n\nvar _scroller = require('./mixins/scroller.js');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _scrollEvents = require('./mixins/scroll-events.js');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nvar _scrollSpy = require('./mixins/scroll-spy.js');\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _animateScroll = require('./mixins/animate-scroll.js');\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollLink = require('./mixins/scroll-link.js');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nvar _scrollElement = require('./mixins/scroll-element.js');\n\nvar _scrollElement2 = _interopRequireDefault(_scrollElement);\n\nvar _Helpers = require('./mixins/Helpers.js');\n\nvar _Helpers2 = _interopRequireDefault(_Helpers);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Link = _Link2.default;\nexports.Button = _Button2.default;\nexports.Element = _Element2.default;\nexports.scroller = _scroller2.default;\nexports.Events = _scrollEvents2.default;\nexports.scrollSpy = _scrollSpy2.default;\nexports.animateScroll = _animateScroll2.default;\nexports.ScrollLink = _scrollLink2.default;\nexports.ScrollElement = _scrollElement2.default;\nexports.Helpers = _Helpers2.default;\nexports.default = { Link: _Link2.default, Button: _Button2.default, Element: _Element2.default, scroller: _scroller2.default, Events: _scrollEvents2.default, scrollSpy: _scrollSpy2.default, animateScroll: _animateScroll2.default, ScrollLink: _scrollLink2.default, ScrollElement: _scrollElement2.default, Helpers: _Helpers2.default };","\"use strict\";\n\n/* DEPRECATED */\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\n\nvar utils = require('./utils');\nvar scrollSpy = require('./scroll-spy');\nvar defaultScroller = require('./scroller');\nvar PropTypes = require('prop-types');\nvar scrollHash = require('./scroll-hash');\n\nvar protoTypes = {\n to: PropTypes.string.isRequired,\n containerId: PropTypes.string,\n container: PropTypes.object,\n activeClass: PropTypes.string,\n spy: PropTypes.bool,\n smooth: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n offset: PropTypes.number,\n delay: PropTypes.number,\n isDynamic: PropTypes.bool,\n onClick: PropTypes.func,\n duration: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n absolute: PropTypes.bool,\n onSetActive: PropTypes.func,\n onSetInactive: PropTypes.func,\n ignoreCancelEvents: PropTypes.bool,\n hashSpy: PropTypes.bool,\n spyThrottle: PropTypes.number\n};\n\nvar Helpers = {\n Scroll: function Scroll(Component, customScroller) {\n\n console.warn(\"Helpers.Scroll is deprecated since v1.7.0\");\n\n var scroller = customScroller || defaultScroller;\n\n var Scroll = function (_React$Component) {\n _inherits(Scroll, _React$Component);\n\n function Scroll(props) {\n _classCallCheck(this, Scroll);\n\n var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n active: false\n };\n return _this;\n }\n\n _createClass(Scroll, [{\n key: 'getScrollSpyContainer',\n value: function getScrollSpyContainer() {\n var containerId = this.props.containerId;\n var container = this.props.container;\n\n if (containerId) {\n return document.getElementById(containerId);\n }\n\n if (container && container.nodeType) {\n return container;\n }\n\n return document;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.spy || this.props.hashSpy) {\n var scrollSpyContainer = this.getScrollSpyContainer();\n\n if (!scrollSpy.isMounted(scrollSpyContainer)) {\n scrollSpy.mount(scrollSpyContainer, this.props.spyThrottle);\n }\n\n if (this.props.hashSpy) {\n if (!scrollHash.isMounted()) {\n scrollHash.mount(scroller);\n }\n scrollHash.mapContainer(this.props.to, scrollSpyContainer);\n }\n\n if (this.props.spy) {\n scrollSpy.addStateHandler(this.stateHandler);\n }\n\n scrollSpy.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n this.setState({\n container: scrollSpyContainer\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n scrollSpy.unmount(this.stateHandler, this.spyHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n var className = \"\";\n\n if (this.state && this.state.active) {\n className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n } else {\n className = this.props.className;\n }\n\n var props = _extends({}, this.props);\n\n for (var prop in protoTypes) {\n if (props.hasOwnProperty(prop)) {\n delete props[prop];\n }\n }\n\n props.className = className;\n props.onClick = this.handleClick;\n\n return React.createElement(Component, props);\n }\n }]);\n\n return Scroll;\n }(React.Component);\n\n var _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.scrollTo = function (to, props) {\n scroller.scrollTo(to, _extends({}, _this2.state, props));\n };\n\n this.handleClick = function (event) {\n\n /*\r\n * give the posibility to override onClick\r\n */\n\n if (_this2.props.onClick) {\n _this2.props.onClick(event);\n }\n\n /*\r\n * dont bubble the navigation\r\n */\n\n if (event.stopPropagation) event.stopPropagation();\n if (event.preventDefault) event.preventDefault();\n\n /*\r\n * do the magic!\r\n */\n _this2.scrollTo(_this2.props.to, _this2.props);\n };\n\n this.stateHandler = function () {\n if (scroller.getActiveLink() !== _this2.props.to) {\n if (_this2.state !== null && _this2.state.active && _this2.props.onSetInactive) {\n _this2.props.onSetInactive();\n }\n _this2.setState({ active: false });\n }\n };\n\n this.spyHandler = function (y) {\n\n var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n if (scrollHash.isMounted() && !scrollHash.isInitialized()) {\n return;\n }\n\n var to = _this2.props.to;\n var element = null;\n var elemTopBound = 0;\n var elemBottomBound = 0;\n var containerTop = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var containerCords = scrollSpyContainer.getBoundingClientRect();\n containerTop = containerCords.top;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var cords = element.getBoundingClientRect();\n elemTopBound = cords.top - containerTop + y;\n elemBottomBound = elemTopBound + cords.height;\n }\n\n var offsetY = y - _this2.props.offset;\n var isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n var isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n var activeLink = scroller.getActiveLink();\n\n if (isOutside) {\n if (to === activeLink) {\n scroller.setActiveLink(void 0);\n }\n\n if (_this2.props.hashSpy && scrollHash.getHash() === to) {\n scrollHash.changeHash();\n }\n\n if (_this2.props.spy && _this2.state.active) {\n _this2.setState({ active: false });\n _this2.props.onSetInactive && _this2.props.onSetInactive();\n }\n\n return scrollSpy.updateStates();\n }\n\n if (isInside && activeLink !== to) {\n scroller.setActiveLink(to);\n\n _this2.props.hashSpy && scrollHash.changeHash(to);\n\n if (_this2.props.spy) {\n _this2.setState({ active: true });\n _this2.props.onSetActive && _this2.props.onSetActive(to);\n }\n return scrollSpy.updateStates();\n }\n };\n };\n\n ;\n\n Scroll.propTypes = protoTypes;\n\n Scroll.defaultProps = { offset: 0 };\n\n return Scroll;\n },\n Element: function Element(Component) {\n\n console.warn(\"Helpers.Element is deprecated since v1.7.0\");\n\n var Element = function (_React$Component2) {\n _inherits(Element, _React$Component2);\n\n function Element(props) {\n _classCallCheck(this, Element);\n\n var _this3 = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n _this3.childBindings = {\n domNode: null\n };\n return _this3;\n }\n\n _createClass(Element, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (typeof window === 'undefined') {\n return false;\n }\n this.registerElems(this.props.name);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.registerElems(this.props.name);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (typeof window === 'undefined') {\n return false;\n }\n defaultScroller.unregister(this.props.name);\n }\n }, {\n key: 'registerElems',\n value: function registerElems(name) {\n defaultScroller.register(name, this.childBindings.domNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return React.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n }\n }]);\n\n return Element;\n }(React.Component);\n\n ;\n\n Element.propTypes = {\n name: PropTypes.string,\n id: PropTypes.string\n };\n\n return Element;\n }\n};\n\nmodule.exports = Helpers;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _smooth = require('./smooth');\n\nvar _smooth2 = _interopRequireDefault(_smooth);\n\nvar _cancelEvents = require('./cancel-events');\n\nvar _cancelEvents2 = _interopRequireDefault(_cancelEvents);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\r\n * Gets the easing type from the smooth prop within options.\r\n */\nvar getAnimationType = function getAnimationType(options) {\n return _smooth2.default[options.smooth] || _smooth2.default.defaultEasing;\n};\n/*\r\n * Function helper\r\n */\nvar functionWrapper = function functionWrapper(value) {\n return typeof value === 'function' ? value : function () {\n return value;\n };\n};\n/*\r\n * Wraps window properties to allow server side rendering\r\n */\nvar currentWindowProperties = function currentWindowProperties() {\n if (typeof window !== 'undefined') {\n return window.requestAnimationFrame || window.webkitRequestAnimationFrame;\n }\n};\n\n/*\r\n * Helper function to never extend 60fps on the webpage.\r\n */\nvar requestAnimationFrameHelper = function () {\n return currentWindowProperties() || function (callback, element, delay) {\n window.setTimeout(callback, delay || 1000 / 60, new Date().getTime());\n };\n}();\n\nvar makeData = function makeData() {\n return {\n currentPosition: 0,\n startPosition: 0,\n targetPosition: 0,\n progress: 0,\n duration: 0,\n cancel: false,\n\n target: null,\n containerElement: null,\n to: null,\n start: null,\n delta: null,\n percent: null,\n delayTimeout: null\n };\n};\n\nvar currentPositionX = function currentPositionX(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollLeft;\n } else {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n }\n};\n\nvar currentPositionY = function currentPositionY(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollTop;\n } else {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n }\n};\n\nvar scrollContainerWidth = function scrollContainerWidth(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollWidth - containerElement.offsetWidth;\n } else {\n var body = document.body;\n var html = document.documentElement;\n\n return Math.max(body.scrollWidth, body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth);\n }\n};\n\nvar scrollContainerHeight = function scrollContainerHeight(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollHeight - containerElement.offsetHeight;\n } else {\n var body = document.body;\n var html = document.documentElement;\n\n return Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);\n }\n};\n\nvar animateScroll = function animateScroll(easing, options, timestamp) {\n var data = options.data;\n\n // Cancel on specific events\n if (!options.ignoreCancelEvents && data.cancel) {\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPositionY);\n }\n return;\n };\n\n data.delta = Math.round(data.targetPosition - data.startPosition);\n\n if (data.start === null) {\n data.start = timestamp;\n }\n\n data.progress = timestamp - data.start;\n\n data.percent = data.progress >= data.duration ? 1 : easing(data.progress / data.duration);\n\n data.currentPosition = data.startPosition + Math.ceil(data.delta * data.percent);\n\n if (data.containerElement && data.containerElement !== document && data.containerElement !== document.body) {\n if (options.horizontal) {\n data.containerElement.scrollLeft = data.currentPosition;\n } else {\n data.containerElement.scrollTop = data.currentPosition;\n }\n } else {\n if (options.horizontal) {\n window.scrollTo(data.currentPosition, 0);\n } else {\n window.scrollTo(0, data.currentPosition);\n }\n }\n\n if (data.percent < 1) {\n var easedAnimate = animateScroll.bind(null, easing, options);\n requestAnimationFrameHelper.call(window, easedAnimate);\n return;\n }\n\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPosition);\n }\n};\n\nvar setContainer = function setContainer(options) {\n options.data.containerElement = !options ? null : options.containerId ? document.getElementById(options.containerId) : options.container && options.container.nodeType ? options.container : document;\n};\n\nvar animateTopScroll = function animateTopScroll(scrollOffset, options, to, target) {\n options.data = options.data || makeData();\n\n window.clearTimeout(options.data.delayTimeout);\n\n var setCancel = function setCancel() {\n options.data.cancel = true;\n };\n _cancelEvents2.default.subscribe(setCancel);\n\n setContainer(options);\n\n options.data.start = null;\n options.data.cancel = false;\n options.data.startPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n options.data.targetPosition = options.absolute ? scrollOffset : scrollOffset + options.data.startPosition;\n\n if (options.data.startPosition === options.data.targetPosition) {\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](options.data.to, options.data.target, options.data.currentPosition);\n }\n return;\n }\n\n options.data.delta = Math.round(options.data.targetPosition - options.data.startPosition);\n\n options.data.duration = functionWrapper(options.duration)(options.data.delta);\n options.data.duration = isNaN(parseFloat(options.data.duration)) ? 1000 : parseFloat(options.data.duration);\n options.data.to = to;\n options.data.target = target;\n\n var easing = getAnimationType(options);\n var easedAnimate = animateScroll.bind(null, easing, options);\n\n if (options && options.delay > 0) {\n options.data.delayTimeout = window.setTimeout(function () {\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n }\n requestAnimationFrameHelper.call(window, easedAnimate);\n }, options.delay);\n return;\n }\n\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n }\n requestAnimationFrameHelper.call(window, easedAnimate);\n};\n\nvar proceedOptions = function proceedOptions(options) {\n options = _extends({}, options);\n options.data = options.data || makeData();\n options.absolute = true;\n return options;\n};\n\nvar scrollToTop = function scrollToTop(options) {\n animateTopScroll(0, proceedOptions(options));\n};\n\nvar scrollTo = function scrollTo(toPosition, options) {\n animateTopScroll(toPosition, proceedOptions(options));\n};\n\nvar scrollToBottom = function scrollToBottom(options) {\n options = proceedOptions(options);\n setContainer(options);\n animateTopScroll(options.horizontal ? scrollContainerWidth(options) : scrollContainerHeight(options), options);\n};\n\nvar scrollMore = function scrollMore(toPosition, options) {\n options = proceedOptions(options);\n setContainer(options);\n var currentPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n animateTopScroll(toPosition + currentPosition, options);\n};\n\nexports.default = {\n animateTopScroll: animateTopScroll,\n getAnimationType: getAnimationType,\n scrollToTop: scrollToTop,\n scrollToBottom: scrollToBottom,\n scrollTo: scrollTo,\n scrollMore: scrollMore\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar events = ['mousedown', 'mousewheel', 'touchmove', 'keydown'];\n\nexports.default = {\n subscribe: function subscribe(cancelEvent) {\n return typeof document !== 'undefined' && events.forEach(function (event) {\n return (0, _passiveEventListeners.addPassiveEventListener)(document, event, cancelEvent);\n });\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\r\n * Tell the browser that the event listener won't prevent a scroll.\r\n * Allowing the browser to continue scrolling without having to\r\n * to wait for the listener to return.\r\n */\nvar addPassiveEventListener = exports.addPassiveEventListener = function addPassiveEventListener(target, eventName, listener) {\n var listenerName = listener.name;\n if (!listenerName) {\n listenerName = eventName;\n console.warn('Listener must be a named function.');\n }\n\n if (!attachedListeners.has(eventName)) attachedListeners.set(eventName, new Set());\n var listeners = attachedListeners.get(eventName);\n if (listeners.has(listenerName)) return;\n\n var supportsPassiveOption = function () {\n var supportsPassiveOption = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassiveOption = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n return supportsPassiveOption;\n }();\n target.addEventListener(eventName, listener, supportsPassiveOption ? { passive: true } : false);\n listeners.add(listenerName);\n};\n\nvar removePassiveEventListener = exports.removePassiveEventListener = function removePassiveEventListener(target, eventName, listener) {\n target.removeEventListener(eventName, listener);\n attachedListeners.get(eventName).delete(listener.name || eventName);\n};\n\nvar attachedListeners = new Map();","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nexports.default = function (Component) {\n var Element = function (_React$Component) {\n _inherits(Element, _React$Component);\n\n function Element(props) {\n _classCallCheck(this, Element);\n\n var _this = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n _this.childBindings = {\n domNode: null\n };\n return _this;\n }\n\n _createClass(Element, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (typeof window === 'undefined') {\n return false;\n }\n this.registerElems(this.props.name);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.registerElems(this.props.name);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (typeof window === 'undefined') {\n return false;\n }\n _scroller2.default.unregister(this.props.name);\n }\n }, {\n key: 'registerElems',\n value: function registerElems(name) {\n _scroller2.default.register(name, this.childBindings.domNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n }\n }]);\n\n return Element;\n }(_react2.default.Component);\n\n ;\n\n Element.propTypes = {\n name: _propTypes2.default.string,\n id: _propTypes2.default.string\n };\n\n return Element;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar Events = {\n\tregistered: {},\n\tscrollEvent: {\n\t\tregister: function register(evtName, callback) {\n\t\t\tEvents.registered[evtName] = callback;\n\t\t},\n\t\tremove: function remove(evtName) {\n\t\t\tEvents.registered[evtName] = null;\n\t\t}\n\t}\n};\n\nexports.default = Events;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar scrollHash = {\n mountFlag: false,\n initialized: false,\n scroller: null,\n containers: {},\n\n mount: function mount(scroller) {\n this.scroller = scroller;\n\n this.handleHashChange = this.handleHashChange.bind(this);\n window.addEventListener('hashchange', this.handleHashChange);\n\n this.initStateFromHash();\n this.mountFlag = true;\n },\n mapContainer: function mapContainer(to, container) {\n this.containers[to] = container;\n },\n isMounted: function isMounted() {\n return this.mountFlag;\n },\n isInitialized: function isInitialized() {\n return this.initialized;\n },\n initStateFromHash: function initStateFromHash() {\n var _this = this;\n\n var hash = this.getHash();\n if (hash) {\n window.setTimeout(function () {\n _this.scrollTo(hash, true);\n _this.initialized = true;\n }, 10);\n } else {\n this.initialized = true;\n }\n },\n scrollTo: function scrollTo(to, isInit) {\n var scroller = this.scroller;\n var element = scroller.get(to);\n if (element && (isInit || to !== scroller.getActiveLink())) {\n var container = this.containers[to] || document;\n scroller.scrollTo(to, { container: container });\n }\n },\n getHash: function getHash() {\n return _utils2.default.getHash();\n },\n changeHash: function changeHash(to, saveHashHistory) {\n if (this.isInitialized() && _utils2.default.getHash() !== to) {\n _utils2.default.updateHash(to, saveHashHistory);\n }\n },\n handleHashChange: function handleHashChange() {\n this.scrollTo(this.getHash());\n },\n unmount: function unmount() {\n this.scroller = null;\n this.containers = null;\n window.removeEventListener('hashchange', this.handleHashChange);\n }\n};\n\nexports.default = scrollHash;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollSpy = require('./scroll-spy');\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _scrollHash = require('./scroll-hash');\n\nvar _scrollHash2 = _interopRequireDefault(_scrollHash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar protoTypes = {\n to: _propTypes2.default.string.isRequired,\n containerId: _propTypes2.default.string,\n container: _propTypes2.default.object,\n activeClass: _propTypes2.default.string,\n activeStyle: _propTypes2.default.object,\n spy: _propTypes2.default.bool,\n horizontal: _propTypes2.default.bool,\n smooth: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.string]),\n offset: _propTypes2.default.number,\n delay: _propTypes2.default.number,\n isDynamic: _propTypes2.default.bool,\n onClick: _propTypes2.default.func,\n duration: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.func]),\n absolute: _propTypes2.default.bool,\n onSetActive: _propTypes2.default.func,\n onSetInactive: _propTypes2.default.func,\n ignoreCancelEvents: _propTypes2.default.bool,\n hashSpy: _propTypes2.default.bool,\n saveHashHistory: _propTypes2.default.bool,\n spyThrottle: _propTypes2.default.number\n};\n\nexports.default = function (Component, customScroller) {\n\n var scroller = customScroller || _scroller2.default;\n\n var Link = function (_React$PureComponent) {\n _inherits(Link, _React$PureComponent);\n\n function Link(props) {\n _classCallCheck(this, Link);\n\n var _this = _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n active: false\n };\n return _this;\n }\n\n _createClass(Link, [{\n key: 'getScrollSpyContainer',\n value: function getScrollSpyContainer() {\n var containerId = this.props.containerId;\n var container = this.props.container;\n\n if (containerId && !container) {\n return document.getElementById(containerId);\n }\n\n if (container && container.nodeType) {\n return container;\n }\n\n return document;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.spy || this.props.hashSpy) {\n var scrollSpyContainer = this.getScrollSpyContainer();\n\n if (!_scrollSpy2.default.isMounted(scrollSpyContainer)) {\n _scrollSpy2.default.mount(scrollSpyContainer, this.props.spyThrottle);\n }\n\n if (this.props.hashSpy) {\n if (!_scrollHash2.default.isMounted()) {\n _scrollHash2.default.mount(scroller);\n }\n _scrollHash2.default.mapContainer(this.props.to, scrollSpyContainer);\n }\n\n _scrollSpy2.default.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n this.setState({\n container: scrollSpyContainer\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _scrollSpy2.default.unmount(this.stateHandler, this.spyHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n var className = \"\";\n\n if (this.state && this.state.active) {\n className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n } else {\n className = this.props.className;\n }\n\n var style = {};\n\n if (this.state && this.state.active) {\n style = _extends({}, this.props.style, this.props.activeStyle);\n } else {\n style = _extends({}, this.props.style);\n }\n\n var props = _extends({}, this.props);\n\n for (var prop in protoTypes) {\n if (props.hasOwnProperty(prop)) {\n delete props[prop];\n }\n }\n\n props.className = className;\n props.style = style;\n props.onClick = this.handleClick;\n\n return _react2.default.createElement(Component, props);\n }\n }]);\n\n return Link;\n }(_react2.default.PureComponent);\n\n var _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.scrollTo = function (to, props) {\n scroller.scrollTo(to, _extends({}, _this2.state, props));\n };\n\n this.handleClick = function (event) {\n\n /*\r\n * give the posibility to override onClick\r\n */\n\n if (_this2.props.onClick) {\n _this2.props.onClick(event);\n }\n\n /*\r\n * dont bubble the navigation\r\n */\n\n if (event.stopPropagation) event.stopPropagation();\n if (event.preventDefault) event.preventDefault();\n\n /*\r\n * do the magic!\r\n */\n _this2.scrollTo(_this2.props.to, _this2.props);\n };\n\n this.spyHandler = function (x, y) {\n var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n if (_scrollHash2.default.isMounted() && !_scrollHash2.default.isInitialized()) {\n return;\n }\n\n var horizontal = _this2.props.horizontal;\n\n var to = _this2.props.to;\n var element = null;\n var isInside = void 0;\n var isOutside = void 0;\n\n if (horizontal) {\n var elemLeftBound = 0;\n var elemRightBound = 0;\n var containerLeft = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var containerCords = scrollSpyContainer.getBoundingClientRect();\n containerLeft = containerCords.left;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var cords = element.getBoundingClientRect();\n elemLeftBound = cords.left - containerLeft + x;\n elemRightBound = elemLeftBound + cords.width;\n }\n\n var offsetX = x - _this2.props.offset;\n isInside = offsetX >= Math.floor(elemLeftBound) && offsetX < Math.floor(elemRightBound);\n isOutside = offsetX < Math.floor(elemLeftBound) || offsetX >= Math.floor(elemRightBound);\n } else {\n var elemTopBound = 0;\n var elemBottomBound = 0;\n var containerTop = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var _containerCords = scrollSpyContainer.getBoundingClientRect();\n containerTop = _containerCords.top;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var _cords = element.getBoundingClientRect();\n elemTopBound = _cords.top - containerTop + y;\n elemBottomBound = elemTopBound + _cords.height;\n }\n\n var offsetY = y - _this2.props.offset;\n isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n }\n\n var activeLink = scroller.getActiveLink();\n\n if (isOutside) {\n if (to === activeLink) {\n scroller.setActiveLink(void 0);\n }\n\n if (_this2.props.hashSpy && _scrollHash2.default.getHash() === to) {\n var _props$saveHashHistor = _this2.props.saveHashHistory,\n saveHashHistory = _props$saveHashHistor === undefined ? false : _props$saveHashHistor;\n\n _scrollHash2.default.changeHash(\"\", saveHashHistory);\n }\n\n if (_this2.props.spy && _this2.state.active) {\n _this2.setState({ active: false });\n _this2.props.onSetInactive && _this2.props.onSetInactive(to, element);\n }\n }\n\n if (isInside && (activeLink !== to || _this2.state.active === false)) {\n scroller.setActiveLink(to);\n\n var _props$saveHashHistor2 = _this2.props.saveHashHistory,\n _saveHashHistory = _props$saveHashHistor2 === undefined ? false : _props$saveHashHistor2;\n\n _this2.props.hashSpy && _scrollHash2.default.changeHash(to, _saveHashHistory);\n\n if (_this2.props.spy) {\n _this2.setState({ active: true });\n _this2.props.onSetActive && _this2.props.onSetActive(to, element);\n }\n }\n };\n };\n\n ;\n\n Link.propTypes = protoTypes;\n\n Link.defaultProps = { offset: 0 };\n\n return Link;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _lodash = require('lodash.throttle');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The eventHandler will execute at a rate of 15fps by default\nvar eventThrottler = function eventThrottler(eventHandler) {\n var throttleAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 66;\n return (0, _lodash2.default)(eventHandler, throttleAmount);\n};\n\nvar scrollSpy = {\n\n spyCallbacks: [],\n spySetState: [],\n scrollSpyContainers: [],\n\n mount: function mount(scrollSpyContainer, throttle) {\n if (scrollSpyContainer) {\n var eventHandler = eventThrottler(function (event) {\n scrollSpy.scrollHandler(scrollSpyContainer);\n }, throttle);\n scrollSpy.scrollSpyContainers.push(scrollSpyContainer);\n (0, _passiveEventListeners.addPassiveEventListener)(scrollSpyContainer, 'scroll', eventHandler);\n }\n },\n isMounted: function isMounted(scrollSpyContainer) {\n return scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer) !== -1;\n },\n currentPositionX: function currentPositionX(scrollSpyContainer) {\n if (scrollSpyContainer === document) {\n var supportPageOffset = window.pageYOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n } else {\n return scrollSpyContainer.scrollLeft;\n }\n },\n currentPositionY: function currentPositionY(scrollSpyContainer) {\n if (scrollSpyContainer === document) {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n } else {\n return scrollSpyContainer.scrollTop;\n }\n },\n scrollHandler: function scrollHandler(scrollSpyContainer) {\n var callbacks = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)].spyCallbacks || [];\n callbacks.forEach(function (c) {\n return c(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n });\n },\n addStateHandler: function addStateHandler(handler) {\n scrollSpy.spySetState.push(handler);\n },\n addSpyHandler: function addSpyHandler(handler, scrollSpyContainer) {\n var container = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)];\n\n if (!container.spyCallbacks) {\n container.spyCallbacks = [];\n }\n\n container.spyCallbacks.push(handler);\n\n handler(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n },\n updateStates: function updateStates() {\n scrollSpy.spySetState.forEach(function (s) {\n return s();\n });\n },\n unmount: function unmount(stateHandler, spyHandler) {\n scrollSpy.scrollSpyContainers.forEach(function (c) {\n return c.spyCallbacks && c.spyCallbacks.length && c.spyCallbacks.indexOf(spyHandler) > -1 && c.spyCallbacks.splice(c.spyCallbacks.indexOf(spyHandler), 1);\n });\n\n if (scrollSpy.spySetState && scrollSpy.spySetState.length && scrollSpy.spySetState.indexOf(stateHandler) > -1) {\n scrollSpy.spySetState.splice(scrollSpy.spySetState.indexOf(stateHandler), 1);\n }\n\n document.removeEventListener('scroll', scrollSpy.scrollHandler);\n },\n\n\n update: function update() {\n return scrollSpy.scrollSpyContainers.forEach(function (c) {\n return scrollSpy.scrollHandler(c);\n });\n }\n};\n\nexports.default = scrollSpy;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _animateScroll = require('./animate-scroll');\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar __mapped = {};\nvar __activeLink = void 0;\n\nexports.default = {\n\n unmount: function unmount() {\n __mapped = {};\n },\n\n register: function register(name, element) {\n __mapped[name] = element;\n },\n\n unregister: function unregister(name) {\n delete __mapped[name];\n },\n\n get: function get(name) {\n return __mapped[name] || document.getElementById(name) || document.getElementsByName(name)[0] || document.getElementsByClassName(name)[0];\n },\n\n setActiveLink: function setActiveLink(link) {\n return __activeLink = link;\n },\n\n getActiveLink: function getActiveLink() {\n return __activeLink;\n },\n\n scrollTo: function scrollTo(to, props) {\n\n var target = this.get(to);\n\n if (!target) {\n console.warn(\"target Element not found\");\n return;\n }\n\n props = _extends({}, props, { absolute: false });\n\n var containerId = props.containerId;\n var container = props.container;\n\n var containerElement = void 0;\n if (containerId) {\n containerElement = document.getElementById(containerId);\n } else if (container && container.nodeType) {\n containerElement = container;\n } else {\n containerElement = document;\n }\n\n props.absolute = true;\n\n var horizontal = props.horizontal;\n var scrollOffset = _utils2.default.scrollOffset(containerElement, target, horizontal) + (props.offset || 0);\n\n /*\r\n * if animate is not provided just scroll into the view\r\n */\n if (!props.smooth) {\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](to, target);\n }\n\n if (containerElement === document) {\n if (props.horizontal) {\n window.scrollTo(scrollOffset, 0);\n } else {\n window.scrollTo(0, scrollOffset);\n }\n } else {\n containerElement.scrollTop = scrollOffset;\n }\n\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](to, target);\n }\n\n return;\n }\n\n /*\r\n * Animate scrolling\r\n */\n\n _animateScroll2.default.animateTopScroll(scrollOffset, props, to, target);\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n /*\r\n * https://github.com/oblador/angular-scroll (duScrollDefaultEasing)\r\n */\n defaultEasing: function defaultEasing(x) {\n if (x < 0.5) {\n return Math.pow(x * 2, 2) / 2;\n }\n return 1 - Math.pow((1 - x) * 2, 2) / 2;\n },\n /*\r\n * https://gist.github.com/gre/1650294\r\n */\n // no easing, no acceleration\n linear: function linear(x) {\n return x;\n },\n // accelerating from zero velocity\n easeInQuad: function easeInQuad(x) {\n return x * x;\n },\n // decelerating to zero velocity\n easeOutQuad: function easeOutQuad(x) {\n return x * (2 - x);\n },\n // acceleration until halfway, then deceleration\n easeInOutQuad: function easeInOutQuad(x) {\n return x < .5 ? 2 * x * x : -1 + (4 - 2 * x) * x;\n },\n // accelerating from zero velocity \n easeInCubic: function easeInCubic(x) {\n return x * x * x;\n },\n // decelerating to zero velocity π\n easeOutCubic: function easeOutCubic(x) {\n return --x * x * x + 1;\n },\n // acceleration until halfway, then deceleration \n easeInOutCubic: function easeInOutCubic(x) {\n return x < .5 ? 4 * x * x * x : (x - 1) * (2 * x - 2) * (2 * x - 2) + 1;\n },\n // accelerating from zero velocity \n easeInQuart: function easeInQuart(x) {\n return x * x * x * x;\n },\n // decelerating to zero velocity \n easeOutQuart: function easeOutQuart(x) {\n return 1 - --x * x * x * x;\n },\n // acceleration until halfway, then deceleration\n easeInOutQuart: function easeInOutQuart(x) {\n return x < .5 ? 8 * x * x * x * x : 1 - 8 * --x * x * x * x;\n },\n // accelerating from zero velocity\n easeInQuint: function easeInQuint(x) {\n return x * x * x * x * x;\n },\n // decelerating to zero velocity\n easeOutQuint: function easeOutQuint(x) {\n return 1 + --x * x * x * x * x;\n },\n // acceleration until halfway, then deceleration \n easeInOutQuint: function easeInOutQuint(x) {\n return x < .5 ? 16 * x * x * x * x * x : 1 + 16 * --x * x * x * x * x;\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar updateHash = function updateHash(hash, historyUpdate) {\n var hashVal = hash.indexOf(\"#\") === 0 ? hash.substring(1) : hash;\n var hashToUpdate = hashVal ? \"#\" + hashVal : \"\";\n var curLoc = window && window.location;\n var urlToPush = hashToUpdate ? curLoc.pathname + curLoc.search + hashToUpdate : curLoc.pathname + curLoc.search;\n historyUpdate ? history.pushState(history.state, \"\", urlToPush) : history.replaceState(history.state, \"\", urlToPush);\n};\n\nvar getHash = function getHash() {\n return window.location.hash.replace(/^#/, \"\");\n};\n\nvar filterElementInContainer = function filterElementInContainer(container) {\n return function (element) {\n return container.contains ? container != element && container.contains(element) : !!(container.compareDocumentPosition(element) & 16);\n };\n};\n\nvar isPositioned = function isPositioned(element) {\n return getComputedStyle(element).position !== \"static\";\n};\n\nvar getElementOffsetInfoUntil = function getElementOffsetInfoUntil(element, predicate) {\n var offsetTop = element.offsetTop;\n var currentOffsetParent = element.offsetParent;\n\n while (currentOffsetParent && !predicate(currentOffsetParent)) {\n offsetTop += currentOffsetParent.offsetTop;\n currentOffsetParent = currentOffsetParent.offsetParent;\n }\n\n return { offsetTop: offsetTop, offsetParent: currentOffsetParent };\n};\n\nvar scrollOffset = function scrollOffset(c, t, horizontal) {\n if (horizontal) {\n return c === document ? t.getBoundingClientRect().left + (window.scrollX || window.pageXOffset) : getComputedStyle(c).position !== \"static\" ? t.offsetLeft : t.offsetLeft - c.offsetLeft;\n } else {\n if (c === document) {\n return t.getBoundingClientRect().top + (window.scrollY || window.pageYOffset);\n }\n\n // The offsetParent of an element, according to MDN, is its nearest positioned\n // (an element whose position is anything other than static) ancestor. The offsetTop\n // of an element is taken with respect to its offsetParent which may not neccessarily\n // be its parentElement except the parent itself is positioned.\n\n // So if containerElement is positioned, then it must be an offsetParent somewhere\n // If it happens that targetElement is a descendant of the containerElement, and there\n // is not intermediate positioned element between the two of them, i.e.\n // targetElement\"s offsetParent is the same as the containerElement, then the\n // distance between the two will be the offsetTop of the targetElement.\n // If, on the other hand, there are intermediate positioned elements between the\n // two entities, the distance between the targetElement and the containerElement\n // will be the accumulation of the offsetTop of the element and that of its\n // subsequent offsetParent until the containerElement is reached, since it\n // will also be an offsetParent at some point due to the fact that it is positioned.\n\n // If the containerElement is not positioned, then it can\"t be an offsetParent,\n // which means that the offsetTop of the targetElement would not be with respect to it.\n // However, if the two of them happen to have the same offsetParent, then\n // the distance between them will be the difference between their offsetTop\n // since they are both taken with respect to the same entity.\n // The last resort would be to accumulate their offsetTop until a common\n // offsetParent is reached (usually the document) and taking the difference\n // between the accumulated offsetTops\n\n if (isPositioned(c)) {\n if (t.offsetParent !== c) {\n var isContainerElementOrDocument = function isContainerElementOrDocument(e) {\n return e === c || e === document;\n };\n\n var _getElementOffsetInfo = getElementOffsetInfoUntil(t, isContainerElementOrDocument),\n offsetTop = _getElementOffsetInfo.offsetTop,\n offsetParent = _getElementOffsetInfo.offsetParent;\n\n if (offsetParent !== c) {\n throw new Error(\"Seems containerElement is not an ancestor of the Element\");\n }\n\n return offsetTop;\n }\n\n return t.offsetTop;\n }\n\n if (t.offsetParent === c.offsetParent) {\n return t.offsetTop - c.offsetTop;\n }\n\n var isDocument = function isDocument(e) {\n return e === document;\n };\n return getElementOffsetInfoUntil(t, isDocument).offsetTop - getElementOffsetInfoUntil(c, isDocument).offsetTop;\n }\n};\n\nexports.default = {\n updateHash: updateHash,\n getHash: getHash,\n filterElementInContainer: filterElementInContainer,\n scrollOffset: scrollOffset\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 (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(t, e) {\n return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _setPrototypeOf(t, e);\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 `