{"version":3,"file":"4b4e949b0598b38b1e512076eab4f8e8436f7f9a-fda5b20500e2c9de33f0.js","mappings":"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","sources":["webpack://@nitro/gatsby-harvia.com/../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://@nitro/gatsby-harvia.com/../node_modules/@loadable/component/dist/esm/loadable.esm.mjs","webpack://@nitro/gatsby-harvia.com/../node_modules/call-bind/callBound.js","webpack://@nitro/gatsby-harvia.com/../node_modules/call-bind/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/camelcase/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/define-data-property/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/define-properties/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/es-define-property/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/es-errors/eval.js","webpack://@nitro/gatsby-harvia.com/../node_modules/es-errors/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/es-errors/range.js","webpack://@nitro/gatsby-harvia.com/../node_modules/es-errors/ref.js","webpack://@nitro/gatsby-harvia.com/../node_modules/es-errors/syntax.js","webpack://@nitro/gatsby-harvia.com/../node_modules/es-errors/type.js","webpack://@nitro/gatsby-harvia.com/../node_modules/es-errors/uri.js","webpack://@nitro/gatsby-harvia.com/../node_modules/es-object-atoms/RequireObjectCoercible.js","webpack://@nitro/gatsby-harvia.com/../node_modules/function-bind/implementation.js","webpack://@nitro/gatsby-harvia.com/../node_modules/function-bind/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://@nitro/gatsby-harvia.com/../node_modules/get-intrinsic/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/gopd/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/has-property-descriptors/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/has-proto/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/has-symbols/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/has-symbols/shams.js","webpack://@nitro/gatsby-harvia.com/../node_modules/hasown/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/object-keys/implementation.js","webpack://@nitro/gatsby-harvia.com/../node_modules/object-keys/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/object-keys/isArguments.js","webpack://@nitro/gatsby-harvia.com/../node_modules/object.entries/implementation.js","webpack://@nitro/gatsby-harvia.com/../node_modules/object.entries/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/object.entries/polyfill.js","webpack://@nitro/gatsby-harvia.com/../node_modules/object.entries/shim.js","webpack://@nitro/gatsby-harvia.com/../node_modules/react-fast-compare/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/react-helmet/es/Helmet.js","webpack://@nitro/gatsby-harvia.com/../node_modules/react-side-effect/lib/index.js","webpack://@nitro/gatsby-harvia.com/../node_modules/dom-helpers/esm/removeClass.js","webpack://@nitro/gatsby-harvia.com/../node_modules/react-transition-group/esm/config.js","webpack://@nitro/gatsby-harvia.com/../node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://@nitro/gatsby-harvia.com/../node_modules/react-transition-group/esm/utils/reflow.js","webpack://@nitro/gatsby-harvia.com/../node_modules/react-transition-group/esm/Transition.js","webpack://@nitro/gatsby-harvia.com/../node_modules/react-transition-group/esm/CSSTransition.js","webpack://@nitro/gatsby-harvia.com/../node_modules/dom-helpers/esm/addClass.js","webpack://@nitro/gatsby-harvia.com/../node_modules/dom-helpers/esm/hasClass.js","webpack://@nitro/gatsby-harvia.com/../node_modules/set-function-length/index.js","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/node_modules/gatsby-source-datocms/index.js","webpack://@nitro/gatsby-harvia.com/../src/image-utils.ts","webpack://@nitro/gatsby-harvia.com/../src/components/hooks.ts","webpack://@nitro/gatsby-harvia.com/../src/components/layout-wrapper.tsx","webpack://@nitro/gatsby-harvia.com/../src/components/picture.tsx","webpack://@nitro/gatsby-harvia.com/../src/components/placeholder.tsx","webpack://@nitro/gatsby-harvia.com/../src/components/main-image.tsx","webpack://@nitro/gatsby-harvia.com/../src/components/gatsby-image.server.tsx","webpack://@nitro/gatsby-harvia.com/../src/components/gatsby-image.browser.tsx","webpack://@nitro/gatsby-harvia.com/../src/components/static-image.server.tsx","webpack://@nitro/gatsby-harvia.com/../src/components/static-image.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/atoms/BackgroundVideo.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/atoms/EmailLink.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/atoms/PhoneLink.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/atoms/PostalAddress.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/dato/DatoBlock.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/dato/DatoContentModules.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/dato/DatoImage.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/molecules/tileable-blocks/HighlightToExternalUrlBlock.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/dato/blocks/DatoHighlightToExternalUrl.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/dato/blocks/DatoKlaviyoFormEmbed.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/layouts/BgColor.module.scss","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/layouts/BgColor.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/hooks/useAlternatePaths.ts","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/atoms/accountlinks/FacebookLink.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/atoms/accountlinks/InstagramLink.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/atoms/accountlinks/LinkedinLink.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/atoms/accountlinks/PinterestLink.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/atoms/accountlinks/TwitterLink.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/atoms/accountlinks/YoutubeLink.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/atoms/CookieConsentLink.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/dato/DatoContactLocation.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/organisms/pageFooter/pageFooter.module.scss","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/organisms/pageFooter/pageFooter.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/images/Harvia_sauna_spa-logo.svg","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/organisms/pageHeader/NavLink.module.scss","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/organisms/pageHeader/NavLink.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/organisms/pageHeader/NavLinks.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/organisms/pageHeader/MainNav.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/organisms/pageHeader/MainNav.module.scss","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/dato/DatoMainNav.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/organisms/pageHeader/PageHeader.module.scss","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/organisms/pageHeader/TopNav.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/organisms/pageHeader/TopNav.module.scss","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/organisms/pageHeader/PageHeader.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/layouts/DefaultLayout.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/layouts/DefaultLayout.module.scss","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/molecules/AccordionStateless.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/molecules/BackgroundMedia.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/molecules/BackgroundMedia.module.scss","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/molecules/tileable-blocks/HighlightBlock.module.scss","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/molecules/tileable-blocks/HighlightBlock.tsx","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/hooks/useDatoMicrocopy.ts","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/hooks/useSiteMetadata.ts","webpack://@nitro/gatsby-harvia.com/../gatsby-theme-harvia/src/components/molecules/Accordion.module.scss","webpack://@nitro/gatsby-harvia.com/../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@nitro/gatsby-harvia.com/../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"],"sourcesContent":["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';\nimport _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 hoistNonReactStatics from 'hoist-non-react-statics';\n\n/* eslint-disable import/prefer-default-export */\nfunction invariant(condition, message) {\n if (condition) return;\n var error = new Error(\"loadable: \" + message);\n error.framesToPop = 1;\n error.name = 'Invariant Violation';\n throw error;\n}\nfunction warn(message) {\n // eslint-disable-next-line no-console\n console.warn(\"loadable: \" + message);\n}\nvar Context = /*#__PURE__*/\nReact.createContext();\nvar LOADABLE_REQUIRED_CHUNKS_KEY = '__LOADABLE_REQUIRED_CHUNKS__';\nfunction getRequiredChunkKey(namespace) {\n return \"\" + namespace + LOADABLE_REQUIRED_CHUNKS_KEY;\n}\nvar sharedInternals = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getRequiredChunkKey: getRequiredChunkKey,\n invariant: invariant,\n Context: Context\n});\nvar LOADABLE_SHARED = {\n initialChunks: {}\n};\nvar STATUS_PENDING = 'PENDING';\nvar STATUS_RESOLVED = 'RESOLVED';\nvar STATUS_REJECTED = 'REJECTED';\nfunction resolveConstructor(ctor) {\n if (typeof ctor === 'function') {\n return {\n requireAsync: ctor,\n resolve: function resolve() {\n return undefined;\n },\n chunkName: function chunkName() {\n return undefined;\n }\n };\n }\n return ctor;\n}\nvar withChunkExtractor = function withChunkExtractor(Component) {\n var LoadableWithChunkExtractor = function LoadableWithChunkExtractor(props) {\n return React.createElement(Context.Consumer, null, function (extractor) {\n return React.createElement(Component, Object.assign({\n __chunkExtractor: extractor\n }, props));\n });\n };\n if (Component.displayName) {\n LoadableWithChunkExtractor.displayName = Component.displayName + \"WithChunkExtractor\";\n }\n return LoadableWithChunkExtractor;\n};\nvar identity = function identity(v) {\n return v;\n};\nfunction createLoadable(_ref) {\n var _ref$defaultResolveCo = _ref.defaultResolveComponent,\n defaultResolveComponent = _ref$defaultResolveCo === void 0 ? identity : _ref$defaultResolveCo,\n _render = _ref.render,\n onLoad = _ref.onLoad;\n function loadable(loadableConstructor, options) {\n if (options === void 0) {\n options = {};\n }\n var ctor = resolveConstructor(loadableConstructor);\n var cache = {};\n /**\n * Cachekey represents the component to be loaded\n * if key changes - component has to be reloaded\n * @param props\n * @returns {null|Component}\n */\n\n function _getCacheKey(props) {\n if (options.cacheKey) {\n return options.cacheKey(props);\n }\n if (ctor.resolve) {\n return ctor.resolve(props);\n }\n return 'static';\n }\n /**\n * Resolves loaded `module` to a specific `Component\n * @param module\n * @param props\n * @param Loadable\n * @returns Component\n */\n\n function resolve(module, props, Loadable) {\n var Component = options.resolveComponent ? options.resolveComponent(module, props) : defaultResolveComponent(module); // FIXME: suppressed due to https://github.com/gregberge/loadable-components/issues/990\n // if (options.resolveComponent && !ReactIs.isValidElementType(Component)) {\n // throw new Error(\n // `resolveComponent returned something that is not a React component!`,\n // )\n // }\n\n hoistNonReactStatics(Loadable, Component, {\n preload: true\n });\n return Component;\n }\n var cachedLoad = function cachedLoad(props) {\n var cacheKey = _getCacheKey(props);\n var promise = cache[cacheKey];\n if (!promise || promise.status === STATUS_REJECTED) {\n promise = ctor.requireAsync(props);\n promise.status = STATUS_PENDING;\n cache[cacheKey] = promise;\n promise.then(function () {\n promise.status = STATUS_RESOLVED;\n }, function (error) {\n console.error('loadable-components: failed to asynchronously load component', {\n fileName: ctor.resolve(props),\n chunkName: ctor.chunkName(props),\n error: error ? error.message : error\n });\n promise.status = STATUS_REJECTED;\n });\n }\n return promise;\n };\n var InnerLoadable = /*#__PURE__*/\n function (_React$Component) {\n _inheritsLoose(InnerLoadable, _React$Component);\n InnerLoadable.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n var cacheKey = _getCacheKey(props);\n return _extends({}, state, {\n cacheKey: cacheKey,\n // change of a key triggers loading state automatically\n loading: state.loading || state.cacheKey !== cacheKey\n });\n };\n function InnerLoadable(props) {\n var _this;\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n result: null,\n error: null,\n loading: true,\n cacheKey: _getCacheKey(props)\n };\n invariant(!props.__chunkExtractor || ctor.requireSync, 'SSR requires `@loadable/babel-plugin`, please install it'); // Server-side\n\n if (props.__chunkExtractor) {\n // This module has been marked with no SSR\n if (options.ssr === false) {\n return _assertThisInitialized(_this);\n } // We run load function, we assume that it won't fail and that it\n // triggers a synchronous loading of the module\n\n ctor.requireAsync(props)[\"catch\"](function () {\n return null;\n }); // So we can require now the module synchronously\n\n _this.loadSync();\n props.__chunkExtractor.addChunk(ctor.chunkName(props));\n return _assertThisInitialized(_this);\n } // Client-side with `isReady` method present (SSR probably)\n // If module is already loaded, we use a synchronous loading\n // Only perform this synchronous loading if the component has not\n // been marked with no SSR, else we risk hydration mismatches\n\n if (options.ssr !== false && (\n // is ready - was loaded in this session\n ctor.isReady && ctor.isReady(props) ||\n // is ready - was loaded during SSR process\n ctor.chunkName && LOADABLE_SHARED.initialChunks[ctor.chunkName(props)])) {\n _this.loadSync();\n }\n return _this;\n }\n var _proto = InnerLoadable.prototype;\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true; // retrieve loading promise from a global cache\n\n var cachedPromise = this.getCache(); // if promise exists, but rejected - clear cache\n\n if (cachedPromise && cachedPromise.status === STATUS_REJECTED) {\n this.setCache();\n } // component might be resolved synchronously in the constructor\n\n if (this.state.loading) {\n this.loadAsync();\n }\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Component has to be reloaded on cacheKey change\n if (prevState.cacheKey !== this.state.cacheKey) {\n this.loadAsync();\n }\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n _proto.safeSetState = function safeSetState(nextState, callback) {\n if (this.mounted) {\n this.setState(nextState, callback);\n }\n }\n /**\n * returns a cache key for the current props\n * @returns {Component|string}\n */;\n _proto.getCacheKey = function getCacheKey() {\n return _getCacheKey(this.props);\n }\n /**\n * access the persistent cache\n */;\n _proto.getCache = function getCache() {\n return cache[this.getCacheKey()];\n }\n /**\n * sets the cache value. If called without value sets it as undefined\n */;\n _proto.setCache = function setCache(value) {\n if (value === void 0) {\n value = undefined;\n }\n cache[this.getCacheKey()] = value;\n };\n _proto.triggerOnLoad = function triggerOnLoad() {\n var _this2 = this;\n if (onLoad) {\n setTimeout(function () {\n onLoad(_this2.state.result, _this2.props);\n });\n }\n }\n /**\n * Synchronously loads component\n * target module is expected to already exists in the module cache\n * or be capable to resolve synchronously (webpack target=node)\n */;\n _proto.loadSync = function loadSync() {\n // load sync is expecting component to be in the \"loading\" state already\n // sounds weird, but loading=true is the initial state of InnerLoadable\n if (!this.state.loading) return;\n try {\n var loadedModule = ctor.requireSync(this.props);\n var result = resolve(loadedModule, this.props, Loadable);\n this.state.result = result;\n this.state.loading = false;\n } catch (error) {\n console.error('loadable-components: failed to synchronously load component, which expected to be available', {\n fileName: ctor.resolve(this.props),\n chunkName: ctor.chunkName(this.props),\n error: error ? error.message : error\n });\n this.state.error = error;\n }\n }\n /**\n * Asynchronously loads a component.\n */;\n _proto.loadAsync = function loadAsync() {\n var _this3 = this;\n var promise = this.resolveAsync();\n promise.then(function (loadedModule) {\n var result = resolve(loadedModule, _this3.props, Loadable);\n _this3.safeSetState({\n result: result,\n loading: false\n }, function () {\n return _this3.triggerOnLoad();\n });\n })[\"catch\"](function (error) {\n return _this3.safeSetState({\n error: error,\n loading: false\n });\n });\n return promise;\n }\n /**\n * Asynchronously resolves(not loads) a component.\n * Note - this function does not change the state\n */;\n _proto.resolveAsync = function resolveAsync() {\n var _this$props = this.props,\n __chunkExtractor = _this$props.__chunkExtractor,\n forwardedRef = _this$props.forwardedRef,\n props = _objectWithoutPropertiesLoose(_this$props, [\"__chunkExtractor\", \"forwardedRef\"]);\n return cachedLoad(props);\n };\n _proto.render = function render() {\n var _this$props2 = this.props,\n forwardedRef = _this$props2.forwardedRef,\n propFallback = _this$props2.fallback,\n __chunkExtractor = _this$props2.__chunkExtractor,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"forwardedRef\", \"fallback\", \"__chunkExtractor\"]);\n var _this$state = this.state,\n error = _this$state.error,\n loading = _this$state.loading,\n result = _this$state.result;\n if (options.suspense) {\n var cachedPromise = this.getCache() || this.loadAsync();\n if (cachedPromise.status === STATUS_PENDING) {\n throw this.loadAsync();\n }\n }\n if (error) {\n throw error;\n }\n var fallback = propFallback || options.fallback || null;\n if (loading) {\n return fallback;\n }\n return _render({\n fallback: fallback,\n result: result,\n options: options,\n props: _extends({}, props, {\n ref: forwardedRef\n })\n });\n };\n return InnerLoadable;\n }(React.Component);\n var EnhancedInnerLoadable = withChunkExtractor(InnerLoadable);\n var Loadable = React.forwardRef(function (props, ref) {\n return React.createElement(EnhancedInnerLoadable, Object.assign({\n forwardedRef: ref\n }, props));\n });\n Loadable.displayName = 'Loadable'; // In future, preload could use ``\n\n Loadable.preload = function (props) {\n Loadable.load(props);\n };\n Loadable.load = function (props) {\n return cachedLoad(props);\n };\n return Loadable;\n }\n function lazy(ctor, options) {\n return loadable(ctor, _extends({}, options, {\n suspense: true\n }));\n }\n return {\n loadable: loadable,\n lazy: lazy\n };\n}\nfunction defaultResolveComponent(loadedModule) {\n // eslint-disable-next-line no-underscore-dangle\n return loadedModule.__esModule ? loadedModule[\"default\"] : loadedModule[\"default\"] || loadedModule;\n}\n\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nvar _createLoadable = /*#__PURE__*/\n createLoadable({\n defaultResolveComponent: defaultResolveComponent,\n render: function render(_ref) {\n var Component = _ref.result,\n props = _ref.props;\n return React.createElement(Component, props);\n }\n }),\n loadable = _createLoadable.loadable,\n lazy = _createLoadable.lazy;\n\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nvar _createLoadable$1 = /*#__PURE__*/\n createLoadable({\n onLoad: function onLoad(result, props) {\n if (result && props.forwardedRef) {\n if (typeof props.forwardedRef === 'function') {\n props.forwardedRef(result);\n } else {\n props.forwardedRef.current = result;\n }\n }\n },\n render: function render(_ref) {\n var result = _ref.result,\n props = _ref.props;\n if (props.children) {\n return props.children(result);\n }\n return null;\n }\n }),\n loadable$1 = _createLoadable$1.loadable,\n lazy$1 = _createLoadable$1.lazy;\n\n/* eslint-disable no-underscore-dangle, camelcase */\nvar BROWSER = typeof window !== 'undefined';\nfunction loadableReady(done, _temp) {\n if (done === void 0) {\n done = function done() {};\n }\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$namespace = _ref.namespace,\n namespace = _ref$namespace === void 0 ? '' : _ref$namespace,\n _ref$chunkLoadingGlob = _ref.chunkLoadingGlobal,\n chunkLoadingGlobal = _ref$chunkLoadingGlob === void 0 ? '__LOADABLE_LOADED_CHUNKS__' : _ref$chunkLoadingGlob;\n if (!BROWSER) {\n warn('`loadableReady()` must be called in browser only');\n done();\n return Promise.resolve();\n }\n var requiredChunks = null;\n if (BROWSER) {\n var id = getRequiredChunkKey(namespace);\n var dataElement = document.getElementById(id);\n if (dataElement) {\n requiredChunks = JSON.parse(dataElement.textContent);\n var extElement = document.getElementById(id + \"_ext\");\n if (extElement) {\n var _JSON$parse = JSON.parse(extElement.textContent),\n namedChunks = _JSON$parse.namedChunks;\n namedChunks.forEach(function (chunkName) {\n LOADABLE_SHARED.initialChunks[chunkName] = true;\n });\n } else {\n // version mismatch\n throw new Error('loadable-component: @loadable/server does not match @loadable/component');\n }\n }\n }\n if (!requiredChunks) {\n warn('`loadableReady()` requires state, please use `getScriptTags` or `getScriptElements` server-side');\n done();\n return Promise.resolve();\n }\n var resolved = false;\n return new Promise(function (resolve) {\n window[chunkLoadingGlobal] = window[chunkLoadingGlobal] || [];\n var loadedChunks = window[chunkLoadingGlobal];\n var originalPush = loadedChunks.push.bind(loadedChunks);\n function checkReadyState() {\n if (requiredChunks.every(function (chunk) {\n return loadedChunks.some(function (_ref2) {\n var chunks = _ref2[0];\n return chunks.indexOf(chunk) > -1;\n });\n })) {\n if (!resolved) {\n resolved = true;\n resolve();\n }\n }\n }\n loadedChunks.push = function () {\n originalPush.apply(void 0, arguments);\n checkReadyState();\n };\n checkReadyState();\n }).then(done);\n}\n\n/* eslint-disable no-underscore-dangle */\nvar loadable$2 = loadable;\nloadable$2.lib = loadable$1;\nvar lazy$2 = lazy;\nlazy$2.lib = lazy$1;\nvar __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = sharedInternals;\nexport default loadable$2;\nexport { __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, lazy$2 as lazy, loadableReady };","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBind = require('./');\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n var intrinsic = GetIntrinsic(name, !!allowMissing);\n if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n return callBind(intrinsic);\n }\n return intrinsic;\n};","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\nmodule.exports = function callBind(originalFunction) {\n if (typeof originalFunction !== 'function') {\n throw new $TypeError('a function is required');\n }\n var func = $reflectApply(bind, $call, arguments);\n return setFunctionLength(func, 1 + $max(0, originalFunction.length - (arguments.length - 1)), true);\n};\nvar applyBind = function applyBind() {\n return $reflectApply(bind, $apply, arguments);\n};\nif ($defineProperty) {\n $defineProperty(module.exports, 'apply', {\n value: applyBind\n });\n} else {\n module.exports.apply = applyBind;\n}","'use strict';\n\nconst preserveCamelCase = string => {\n let isLastCharLower = false;\n let isLastCharUpper = false;\n let isLastLastCharUpper = false;\n for (let i = 0; i < string.length; i++) {\n const character = string[i];\n if (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {\n string = string.slice(0, i) + '-' + string.slice(i);\n isLastCharLower = false;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = true;\n i++;\n } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {\n string = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = false;\n isLastCharLower = true;\n } else {\n isLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;\n }\n }\n return string;\n};\nconst camelCase = (input, options) => {\n if (!(typeof input === 'string' || Array.isArray(input))) {\n throw new TypeError('Expected the input to be `string | string[]`');\n }\n options = Object.assign({\n pascalCase: false\n }, options);\n const postProcess = x => options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n if (Array.isArray(input)) {\n input = input.map(x => x.trim()).filter(x => x.length).join('-');\n } else {\n input = input.trim();\n }\n if (input.length === 0) {\n return '';\n }\n if (input.length === 1) {\n return options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n }\n const hasUpperCase = input !== input.toLowerCase();\n if (hasUpperCase) {\n input = preserveCamelCase(input);\n }\n input = input.replace(/^[_.\\- ]+/, '').toLowerCase().replace(/[_.\\- ]+(\\w|$)/g, (_, p1) => p1.toUpperCase()).replace(/\\d+(\\w|$)/g, m => m.toUpperCase());\n return postProcess(input);\n};\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;","'use strict';\n\nvar $defineProperty = require('es-define-property');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(obj, property, value) {\n if (!obj || typeof obj !== 'object' && typeof obj !== 'function') {\n throw new $TypeError('`obj` must be an object or a function`');\n }\n if (typeof property !== 'string' && typeof property !== 'symbol') {\n throw new $TypeError('`property` must be a string or a symbol`');\n }\n if (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n throw new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n }\n if (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n throw new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n }\n if (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n throw new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n }\n if (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n throw new $TypeError('`loose`, if provided, must be a boolean');\n }\n var nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n var nonWritable = arguments.length > 4 ? arguments[4] : null;\n var nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n var loose = arguments.length > 6 ? arguments[6] : false;\n\n /* @type {false | TypedPropertyDescriptor} */\n var desc = !!gopd && gopd(obj, property);\n if ($defineProperty) {\n $defineProperty(obj, property, {\n configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n value: value,\n writable: nonWritable === null && desc ? desc.writable : !nonWritable\n });\n } else if (loose || !nonEnumerable && !nonWritable && !nonConfigurable) {\n // must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n obj[property] = value; // eslint-disable-line no-param-reassign\n } else {\n throw new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n }\n};","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\nvar isFunction = function (fn) {\n return typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\nvar supportsDescriptors = require('has-property-descriptors')();\nvar defineProperty = function (object, name, value, predicate) {\n if (name in object) {\n if (predicate === true) {\n if (object[name] === value) {\n return;\n }\n } else if (!isFunction(predicate) || !predicate()) {\n return;\n }\n }\n if (supportsDescriptors) {\n defineDataProperty(object, name, value, true);\n } else {\n defineDataProperty(object, name, value);\n }\n};\nvar defineProperties = function (object, map) {\n var predicates = arguments.length > 2 ? arguments[2] : {};\n var props = keys(map);\n if (hasSymbols) {\n props = concat.call(props, Object.getOwnPropertySymbols(map));\n }\n for (var i = 0; i < props.length; i += 1) {\n defineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n }\n};\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\nmodule.exports = defineProperties;","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n try {\n $defineProperty({}, 'a', {\n value: 1\n });\n } catch (e) {\n // IE 8 has a broken defineProperty\n $defineProperty = false;\n }\n}\nmodule.exports = $defineProperty;","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;","'use strict';\n\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('./RequireObjectCoercible')} */\nmodule.exports = function RequireObjectCoercible(value) {\n if (value == null) {\n throw new $TypeError(arguments.length > 0 && arguments[1] || 'Cannot call method on ' + value);\n }\n return value;\n};","'use strict';\n\n/* eslint no-invalid-this: 1 */\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\nvar concatty = function concatty(a, b) {\n var arr = [];\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n return arr;\n};\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(this, concatty(args, arguments));\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(that, concatty(args, arguments));\n };\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n return bound;\n};","'use strict';\n\nvar implementation = require('./implementation');\nmodule.exports = Function.prototype.bind || implementation;","\"use strict\";\n\nmodule.exports = Object.assign;","'use strict';\n\nvar undefined;\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n try {\n return $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n } catch (e) {}\n};\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n try {\n $gOPD({}, '');\n } catch (e) {\n $gOPD = null; // this is IE 8, which has a broken gOPD\n }\n}\nvar throwTypeError = function () {\n throw new $TypeError();\n};\nvar ThrowTypeError = $gOPD ? function () {\n try {\n // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n arguments.callee; // IE 8 does not throw here\n return throwTypeError;\n } catch (calleeThrows) {\n try {\n // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n return $gOPD(arguments, 'callee').get;\n } catch (gOPDthrows) {\n return throwTypeError;\n }\n }\n}() : throwTypeError;\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\nvar getProto = Object.getPrototypeOf || (hasProto ? function (x) {\n return x.__proto__;\n} // eslint-disable-line no-proto\n: null);\nvar needsEval = {};\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\nvar INTRINSICS = {\n __proto__: null,\n '%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n '%Array%': Array,\n '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n '%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n '%AsyncFromSyncIteratorPrototype%': undefined,\n '%AsyncFunction%': needsEval,\n '%AsyncGenerator%': needsEval,\n '%AsyncGeneratorFunction%': needsEval,\n '%AsyncIteratorPrototype%': needsEval,\n '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n '%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n '%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n '%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n '%Boolean%': Boolean,\n '%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n '%Date%': Date,\n '%decodeURI%': decodeURI,\n '%decodeURIComponent%': decodeURIComponent,\n '%encodeURI%': encodeURI,\n '%encodeURIComponent%': encodeURIComponent,\n '%Error%': $Error,\n '%eval%': eval,\n // eslint-disable-line no-eval\n '%EvalError%': $EvalError,\n '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n '%Function%': $Function,\n '%GeneratorFunction%': needsEval,\n '%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n '%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n '%isFinite%': isFinite,\n '%isNaN%': isNaN,\n '%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n '%JSON%': typeof JSON === 'object' ? JSON : undefined,\n '%Map%': typeof Map === 'undefined' ? undefined : Map,\n '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n '%Math%': Math,\n '%Number%': Number,\n '%Object%': Object,\n '%parseFloat%': parseFloat,\n '%parseInt%': parseInt,\n '%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n '%RangeError%': $RangeError,\n '%ReferenceError%': $ReferenceError,\n '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n '%RegExp%': RegExp,\n '%Set%': typeof Set === 'undefined' ? undefined : Set,\n '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n '%String%': String,\n '%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n '%Symbol%': hasSymbols ? Symbol : undefined,\n '%SyntaxError%': $SyntaxError,\n '%ThrowTypeError%': ThrowTypeError,\n '%TypedArray%': TypedArray,\n '%TypeError%': $TypeError,\n '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n '%URIError%': $URIError,\n '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n '%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\nif (getProto) {\n try {\n null.error; // eslint-disable-line no-unused-expressions\n } catch (e) {\n // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n var errorProto = getProto(getProto(e));\n INTRINSICS['%Error.prototype%'] = errorProto;\n }\n}\nvar doEval = function doEval(name) {\n var value;\n if (name === '%AsyncFunction%') {\n value = getEvalledConstructor('async function () {}');\n } else if (name === '%GeneratorFunction%') {\n value = getEvalledConstructor('function* () {}');\n } else if (name === '%AsyncGeneratorFunction%') {\n value = getEvalledConstructor('async function* () {}');\n } else if (name === '%AsyncGenerator%') {\n var fn = doEval('%AsyncGeneratorFunction%');\n if (fn) {\n value = fn.prototype;\n }\n } else if (name === '%AsyncIteratorPrototype%') {\n var gen = doEval('%AsyncGenerator%');\n if (gen && getProto) {\n value = getProto(gen.prototype);\n }\n }\n INTRINSICS[name] = value;\n return value;\n};\nvar LEGACY_ALIASES = {\n __proto__: null,\n '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n '%ArrayPrototype%': ['Array', 'prototype'],\n '%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n '%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n '%ArrayProto_values%': ['Array', 'prototype', 'values'],\n '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n '%BooleanPrototype%': ['Boolean', 'prototype'],\n '%DataViewPrototype%': ['DataView', 'prototype'],\n '%DatePrototype%': ['Date', 'prototype'],\n '%ErrorPrototype%': ['Error', 'prototype'],\n '%EvalErrorPrototype%': ['EvalError', 'prototype'],\n '%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n '%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n '%FunctionPrototype%': ['Function', 'prototype'],\n '%Generator%': ['GeneratorFunction', 'prototype'],\n '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n '%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n '%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n '%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n '%JSONParse%': ['JSON', 'parse'],\n '%JSONStringify%': ['JSON', 'stringify'],\n '%MapPrototype%': ['Map', 'prototype'],\n '%NumberPrototype%': ['Number', 'prototype'],\n '%ObjectPrototype%': ['Object', 'prototype'],\n '%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n '%PromisePrototype%': ['Promise', 'prototype'],\n '%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n '%Promise_all%': ['Promise', 'all'],\n '%Promise_reject%': ['Promise', 'reject'],\n '%Promise_resolve%': ['Promise', 'resolve'],\n '%RangeErrorPrototype%': ['RangeError', 'prototype'],\n '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n '%RegExpPrototype%': ['RegExp', 'prototype'],\n '%SetPrototype%': ['Set', 'prototype'],\n '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n '%StringPrototype%': ['String', 'prototype'],\n '%SymbolPrototype%': ['Symbol', 'prototype'],\n '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n '%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n '%TypeErrorPrototype%': ['TypeError', 'prototype'],\n '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n '%URIErrorPrototype%': ['URIError', 'prototype'],\n '%WeakMapPrototype%': ['WeakMap', 'prototype'],\n '%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n var first = $strSlice(string, 0, 1);\n var last = $strSlice(string, -1);\n if (first === '%' && last !== '%') {\n throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n } else if (last === '%' && first !== '%') {\n throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n }\n var result = [];\n $replace(string, rePropName, function (match, number, quote, subString) {\n result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n });\n return result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n var intrinsicName = name;\n var alias;\n if (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n alias = LEGACY_ALIASES[intrinsicName];\n intrinsicName = '%' + alias[0] + '%';\n }\n if (hasOwn(INTRINSICS, intrinsicName)) {\n var value = INTRINSICS[intrinsicName];\n if (value === needsEval) {\n value = doEval(intrinsicName);\n }\n if (typeof value === 'undefined' && !allowMissing) {\n throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n }\n return {\n alias: alias,\n name: intrinsicName,\n value: value\n };\n }\n throw new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n if (typeof name !== 'string' || name.length === 0) {\n throw new $TypeError('intrinsic name must be a non-empty string');\n }\n if (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n throw new $TypeError('\"allowMissing\" argument must be a boolean');\n }\n if ($exec(/^%?[^%]*%?$/, name) === null) {\n throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n }\n var parts = stringToPath(name);\n var intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n var intrinsicRealName = intrinsic.name;\n var value = intrinsic.value;\n var skipFurtherCaching = false;\n var alias = intrinsic.alias;\n if (alias) {\n intrinsicBaseName = alias[0];\n $spliceApply(parts, $concat([0, 1], alias));\n }\n for (var i = 1, isOwn = true; i < parts.length; i += 1) {\n var part = parts[i];\n var first = $strSlice(part, 0, 1);\n var last = $strSlice(part, -1);\n if ((first === '\"' || first === \"'\" || first === '`' || last === '\"' || last === \"'\" || last === '`') && first !== last) {\n throw new $SyntaxError('property names with quotes must have matching quotes');\n }\n if (part === 'constructor' || !isOwn) {\n skipFurtherCaching = true;\n }\n intrinsicBaseName += '.' + part;\n intrinsicRealName = '%' + intrinsicBaseName + '%';\n if (hasOwn(INTRINSICS, intrinsicRealName)) {\n value = INTRINSICS[intrinsicRealName];\n } else if (value != null) {\n if (!(part in value)) {\n if (!allowMissing) {\n throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n }\n return void undefined;\n }\n if ($gOPD && i + 1 >= parts.length) {\n var desc = $gOPD(value, part);\n isOwn = !!desc;\n\n // By convention, when a data property is converted to an accessor\n // property to emulate a data property that does not suffer from\n // the override mistake, that accessor's getter is marked with\n // an `originalValue` property. Here, when we detect this, we\n // uphold the illusion by pretending to see that original data\n // property, i.e., returning the value rather than the getter\n // itself.\n if (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n value = desc.get;\n } else {\n value = value[part];\n }\n } else {\n isOwn = hasOwn(value, part);\n value = value[part];\n }\n if (isOwn && !skipFurtherCaching) {\n INTRINSICS[intrinsicRealName] = value;\n }\n }\n }\n return value;\n};","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nif ($gOPD) {\n try {\n $gOPD([], 'length');\n } catch (e) {\n // IE 8 has a broken gOPD\n $gOPD = null;\n }\n}\nmodule.exports = $gOPD;","'use strict';\n\nvar $defineProperty = require('es-define-property');\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n return !!$defineProperty;\n};\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n // node v0.6 has a bug where array lengths can be Set but not Defined\n if (!$defineProperty) {\n return null;\n }\n try {\n return $defineProperty([], 'length', {\n value: 1\n }).length !== 1;\n } catch (e) {\n // In Firefox 4-22, defining length on an array throws an exception.\n return true;\n }\n};\nmodule.exports = hasPropertyDescriptors;","'use strict';\n\nvar test = {\n __proto__: null,\n foo: {}\n};\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n // @ts-expect-error: TS errors on an inherited property for some reason\n return {\n __proto__: test\n }.foo === test.foo && !(test instanceof $Object);\n};","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\nmodule.exports = function hasNativeSymbols() {\n if (typeof origSymbol !== 'function') {\n return false;\n }\n if (typeof Symbol !== 'function') {\n return false;\n }\n if (typeof origSymbol('foo') !== 'symbol') {\n return false;\n }\n if (typeof Symbol('bar') !== 'symbol') {\n return false;\n }\n return hasSymbolSham();\n};","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') {\n return false;\n }\n if (typeof Symbol.iterator === 'symbol') {\n return true;\n }\n var obj = {};\n var sym = Symbol('test');\n var symObj = Object(sym);\n if (typeof sym === 'string') {\n return false;\n }\n if (Object.prototype.toString.call(sym) !== '[object Symbol]') {\n return false;\n }\n if (Object.prototype.toString.call(symObj) !== '[object Symbol]') {\n return false;\n }\n\n // temp disabled per https://github.com/ljharb/object.assign/issues/17\n // if (sym instanceof Symbol) { return false; }\n // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n // if (!(symObj instanceof Symbol)) { return false; }\n\n // if (typeof Symbol.prototype.toString !== 'function') { return false; }\n // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n var symVal = 42;\n obj[sym] = symVal;\n for (sym in obj) {\n return false;\n } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) {\n return false;\n }\n if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) {\n return false;\n }\n var syms = Object.getOwnPropertySymbols(obj);\n if (syms.length !== 1 || syms[0] !== sym) {\n return false;\n }\n if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) {\n return false;\n }\n if (typeof Object.getOwnPropertyDescriptor === 'function') {\n var descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n if (descriptor.value !== symVal || descriptor.enumerable !== true) {\n return false;\n }\n }\n return true;\n};","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n // modified from https://github.com/es-shims/es5-shim\n var has = Object.prototype.hasOwnProperty;\n var toStr = Object.prototype.toString;\n var isArgs = require('./isArguments'); // eslint-disable-line global-require\n var isEnumerable = Object.prototype.propertyIsEnumerable;\n var hasDontEnumBug = !isEnumerable.call({\n toString: null\n }, 'toString');\n var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n var dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor'];\n var equalsConstructorPrototype = function (o) {\n var ctor = o.constructor;\n return ctor && ctor.prototype === o;\n };\n var excludedKeys = {\n $applicationCache: true,\n $console: true,\n $external: true,\n $frame: true,\n $frameElement: true,\n $frames: true,\n $innerHeight: true,\n $innerWidth: true,\n $onmozfullscreenchange: true,\n $onmozfullscreenerror: true,\n $outerHeight: true,\n $outerWidth: true,\n $pageXOffset: true,\n $pageYOffset: true,\n $parent: true,\n $scrollLeft: true,\n $scrollTop: true,\n $scrollX: true,\n $scrollY: true,\n $self: true,\n $webkitIndexedDB: true,\n $webkitStorageInfo: true,\n $window: true\n };\n var hasAutomationEqualityBug = function () {\n /* global window */\n if (typeof window === 'undefined') {\n return false;\n }\n for (var k in window) {\n try {\n if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n try {\n equalsConstructorPrototype(window[k]);\n } catch (e) {\n return true;\n }\n }\n } catch (e) {\n return true;\n }\n }\n return false;\n }();\n var equalsConstructorPrototypeIfNotBuggy = function (o) {\n /* global window */\n if (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n return equalsConstructorPrototype(o);\n }\n try {\n return equalsConstructorPrototype(o);\n } catch (e) {\n return false;\n }\n };\n keysShim = function keys(object) {\n var isObject = object !== null && typeof object === 'object';\n var isFunction = toStr.call(object) === '[object Function]';\n var isArguments = isArgs(object);\n var isString = isObject && toStr.call(object) === '[object String]';\n var theKeys = [];\n if (!isObject && !isFunction && !isArguments) {\n throw new TypeError('Object.keys called on a non-object');\n }\n var skipProto = hasProtoEnumBug && isFunction;\n if (isString && object.length > 0 && !has.call(object, 0)) {\n for (var i = 0; i < object.length; ++i) {\n theKeys.push(String(i));\n }\n }\n if (isArguments && object.length > 0) {\n for (var j = 0; j < object.length; ++j) {\n theKeys.push(String(j));\n }\n } else {\n for (var name in object) {\n if (!(skipProto && name === 'prototype') && has.call(object, name)) {\n theKeys.push(String(name));\n }\n }\n }\n if (hasDontEnumBug) {\n var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n for (var k = 0; k < dontEnums.length; ++k) {\n if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n theKeys.push(dontEnums[k]);\n }\n }\n }\n return theKeys;\n };\n}\nmodule.exports = keysShim;","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) {\n return origKeys(o);\n} : require('./implementation');\nvar originalKeys = Object.keys;\nkeysShim.shim = function shimObjectKeys() {\n if (Object.keys) {\n var keysWorksWithArguments = function () {\n // Safari 5.0 bug\n var args = Object.keys(arguments);\n return args && args.length === arguments.length;\n }(1, 2);\n if (!keysWorksWithArguments) {\n Object.keys = function keys(object) {\n // eslint-disable-line func-name-matching\n if (isArgs(object)) {\n return originalKeys(slice.call(object));\n }\n return originalKeys(object);\n };\n }\n } else {\n Object.keys = keysShim;\n }\n return Object.keys || keysShim;\n};\nmodule.exports = keysShim;","'use strict';\n\nvar toStr = Object.prototype.toString;\nmodule.exports = function isArguments(value) {\n var str = toStr.call(value);\n var isArgs = str === '[object Arguments]';\n if (!isArgs) {\n isArgs = str !== '[object Array]' && value !== null && typeof value === 'object' && typeof value.length === 'number' && value.length >= 0 && toStr.call(value.callee) === '[object Function]';\n }\n return isArgs;\n};","'use strict';\n\nvar RequireObjectCoercible = require('es-object-atoms/RequireObjectCoercible');\nvar callBound = require('call-bind/callBound');\nvar $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar $push = callBound('Array.prototype.push');\nmodule.exports = function entries(O) {\n var obj = RequireObjectCoercible(O);\n var entrys = [];\n for (var key in obj) {\n if ($isEnumerable(obj, key)) {\n // checks own-ness as well\n $push(entrys, [key, obj[key]]);\n }\n }\n return entrys;\n};","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\nvar polyfill = callBind(getPolyfill(), Object);\ndefine(polyfill, {\n getPolyfill: getPolyfill,\n implementation: implementation,\n shim: shim\n});\nmodule.exports = polyfill;","'use strict';\n\nvar implementation = require('./implementation');\nmodule.exports = function getPolyfill() {\n return typeof Object.entries === 'function' ? Object.entries : implementation;\n};","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\nmodule.exports = function shimEntries() {\n var polyfill = getPolyfill();\n define(Object, {\n entries: polyfill\n }, {\n entries: function testEntries() {\n return Object.entries !== polyfill;\n }\n });\n return polyfill;\n};","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done) if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n if (hasSet && a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (a[i] !== b[i]) return false;\n return true;\n }\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message || '').match(/stack|recursion/i)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n return target;\n};\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (encode === false) {\n return String(str);\n }\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n return innermostTitle || innermostDefaultTitle || undefined;\n};\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n return innermostBaseTag;\n }, []);\n};\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n var value = tag[primaryAttributeKey].toLowerCase();\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n approvedSeenTags[attributeKey] = tagUnion;\n }\n return approvedTags;\n }, []).reverse();\n};\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n return null;\n};\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\nvar rafPolyfill = function () {\n var clock = Date.now();\n return function (callback) {\n var currentTime = Date.now();\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\nvar _helmetCallback = null;\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n updateTitle(title, titleAttributes);\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n var addedTags = {};\n var removedTags = {};\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n cb && cb();\n onChangeClientState(newState, addedTags, removedTags);\n};\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n if (!elementTag) {\n return;\n }\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = {\n __html: content\n };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n return React.createElement(type, mappedTag);\n });\n};\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, {\n title: title,\n titleAttributes: titleAttributes\n }, encode)\n };\n};\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n return newFlattenedProps;\n };\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n return true;\n };\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n var arrayTypeChildren = {};\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n _this2.warnOnInvalidChildren(child, nestedChildren);\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n var newProps = _extends({}, props);\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n return React.createElement(Component, newProps);\n };\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n return mappedState;\n }, _temp;\n};\nvar NullComponent = function NullComponent() {\n return null;\n};\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexport default HelmetExport;\nexport { HelmetExport as Helmet };","'use strict';\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\nvar React = require('react');\nvar React__default = _interopDefault(React);\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n var mountedInstances = [];\n var state;\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n var SideEffect = /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n var _proto = SideEffect.prototype;\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n return SideEffect;\n }(React.PureComponent);\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n return SideEffect;\n };\n}\nmodule.exports = withSideEffect;","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\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 function Transition(props, context) {\n var _this;\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 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 _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\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 var _proto = Transition.prototype;\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n if (prevProps !== this.props) {\n var status = this.state.status;\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 this.updateStatus(false, nextStatus);\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\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 return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\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 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 _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\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 this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n _proto.performExit = function performExit() {\n var _this3 = this;\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 this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\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 _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 _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n var active = true;\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n this.nextCallback.cancel = function () {\n active = false;\n };\n return this.nextCallback;\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 if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\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 this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n _proto.render = function render() {\n var status = this.state.status;\n if (status === UNMOUNTED) {\n return null;\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 return /*#__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 return Transition;\n}(React.Component);\nTransition.contextType = TransitionGroupContext;\n// Name the function so it is clearer in the documentation\n\nfunction noop() {}\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 _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n function CSSTransition() {\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.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n _this.removeClasses(node, 'exit');\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n var type = appearing ? 'appear' : 'enter';\n _this.addClass(node, type, 'active');\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n var type = appearing ? 'appear' : 'enter';\n _this.removeClasses(node, type);\n _this.addClass(node, type, 'done');\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n _this.removeClasses(node, 'appear');\n _this.removeClasses(node, 'enter');\n _this.addClass(node, 'exit', 'base');\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n _this.addClass(node, 'exit', 'active');\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n _this.removeClasses(node, 'exit');\n _this.addClass(node, 'exit', 'done');\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n return _this;\n }\n var _proto = CSSTransition.prototype;\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n if (phase === 'active') {\n if (node) forceReflow(node);\n }\n if (className) {\n this.appliedClasses[type][phase] = className;\n _addClass(node, className);\n }\n };\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n return CSSTransition;\n}(React.Component);\nCSSTransition.defaultProps = {\n classNames: ''\n};\nexport default CSSTransition;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n if (typeof fn !== 'function') {\n throw new $TypeError('`fn` is not a function');\n }\n if (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n throw new $TypeError('`length` must be a positive 32-bit integer');\n }\n var loose = arguments.length > 2 && !!arguments[2];\n var functionLengthIsConfigurable = true;\n var functionLengthIsWritable = true;\n if ('length' in fn && gOPD) {\n var desc = gOPD(fn, 'length');\n if (desc && !desc.configurable) {\n functionLengthIsConfigurable = false;\n }\n if (desc && !desc.writable) {\n functionLengthIsWritable = false;\n }\n }\n if (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n if (hasDescriptors) {\n define( /** @type {Parameters[0]} */fn, 'length', length, true, true);\n } else {\n define( /** @type {Parameters[0]} */fn, 'length', length);\n }\n }\n return fn;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nvar React = require('react');\n\nvar _require = require('react-helmet'),\n Helmet = _require.Helmet;\n\nvar objectEntries = require('object.entries');\n\nvar objectAssign = require('object-assign');\n\nvar HelmetDatoCms = function HelmetDatoCms(_ref) {\n var seo = _ref.seo,\n favicon = _ref.favicon,\n children = _ref.children,\n rest = _objectWithoutProperties(_ref, [\"seo\", \"favicon\", \"children\"]);\n\n return React.createElement(Helmet, rest, (seo ? seo.tags : []).concat(favicon ? favicon.tags : []).map(function (item, i) {\n return React.createElement(item.tagName, objectAssign({\n key: \"helmet-datocms-\".concat(i)\n }, objectEntries(item.attributes || {}).reduce(function (acc, _ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n name = _ref3[0],\n value = _ref3[1];\n\n if (value) {\n acc[name] = value;\n }\n\n return acc;\n }, {})), item.content);\n }).concat(children));\n};\n\nmodule.exports = {\n HelmetDatoCms: HelmetDatoCms\n};","import camelCase from \"camelcase\"\nimport type { IGatsbyImageData } from \"./index\"\n\nconst DEFAULT_PIXEL_DENSITIES = [0.25, 0.5, 1, 2]\nexport const DEFAULT_BREAKPOINTS = [750, 1080, 1366, 1920]\nexport const EVERY_BREAKPOINT = [\n 320, 654, 768, 1024, 1366, 1600, 1920, 2048, 2560, 3440, 3840, 4096,\n]\nconst DEFAULT_FLUID_WIDTH = 800\nconst DEFAULT_FIXED_WIDTH = 800\nconst DEFAULT_ASPECT_RATIO = 4 / 3\n\nexport type Fit = \"cover\" | \"fill\" | \"inside\" | \"outside\" | \"contain\"\n\nexport type Layout = \"fixed\" | \"fullWidth\" | \"constrained\"\nexport type ImageFormat = \"jpg\" | \"png\" | \"webp\" | \"avif\" | \"auto\" | \"\"\n\n/**\n * The minimal required reporter, as we don't want to import it from gatsby-cli\n */\nexport interface IReporter {\n warn(message: string): void\n}\n\nexport interface ISharpGatsbyImageArgs {\n layout?: Layout\n formats?: Array\n placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n tracedSVGOptions?: Record\n width?: number\n height?: number\n aspectRatio?: number\n sizes?: string\n quality?: number\n transformOptions?: {\n fit?: Fit\n cropFocus?: number | string\n duotone?: {\n highlight: string\n shadow: string\n opacity?: number\n }\n grayscale?: boolean\n rotate?: number\n trim?: number\n }\n jpgOptions?: Record\n pngOptions?: Record\n webpOptions?: Record\n avifOptions?: Record\n blurredOptions?: { width?: number; toFormat?: ImageFormat }\n breakpoints?: Array\n outputPixelDensities?: Array\n backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n width?: number\n height?: number\n layout?: Layout\n filename: string\n outputPixelDensities?: Array\n breakpoints?: Array\n fit?: Fit\n reporter?: IReporter\n sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n sizes: Array\n presentationWidth: number\n presentationHeight: number\n aspectRatio: number\n unscaledWidth: number\n}\n\nexport interface IImage {\n src: string\n width: number\n height: number\n format: ImageFormat\n}\n\nexport interface IGatsbyImageHelperArgs {\n pluginName: string\n generateImageSource: (\n filename: string,\n width: number,\n height: number,\n format: ImageFormat,\n fit?: Fit,\n options?: Record\n ) => IImage\n layout?: Layout\n formats?: Array\n filename: string\n placeholderURL?: string\n width?: number\n height?: number\n sizes?: string\n reporter?: IReporter\n sourceMetadata?: { width: number; height: number; format: ImageFormat }\n fit?: Fit\n options?: Record\n breakpoints?: Array\n backgroundColor?: string\n aspectRatio?: number\n}\n\nconst warn = (message: string): void => console.warn(message)\n\nconst sortNumeric = (a: number, b: number): number => a - b\n\nexport const getSizes = (width: number, layout: Layout): string | undefined => {\n switch (layout) {\n // If screen is wider than the max size, image width is the max size,\n // otherwise it's the width of the screen\n case `constrained`:\n return `(min-width: ${width}px) ${width}px, 100vw`\n\n // Image is always the same width, whatever the size of the screen\n case `fixed`:\n return `${width}px`\n\n // Image is always the width of the screen\n case `fullWidth`:\n return `100vw`\n\n default:\n return undefined\n }\n}\n\nexport const getSrcSet = (images: Array): string =>\n images.map(image => `${image.src} ${image.width}w`).join(`,\\n`)\n\nexport function formatFromFilename(filename: string): ImageFormat | undefined {\n const dot = filename.lastIndexOf(`.`)\n if (dot !== -1) {\n const ext = filename.slice(dot + 1)\n if (ext === `jpeg`) {\n return `jpg`\n }\n if (ext.length === 3 || ext.length === 4) {\n return ext as ImageFormat\n }\n }\n return undefined\n}\n\nexport function setDefaultDimensions(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageHelperArgs {\n let {\n layout = `constrained`,\n width,\n height,\n sourceMetadata,\n breakpoints,\n aspectRatio,\n formats = [`auto`, `webp`],\n } = args\n formats = formats.map(format => format.toLowerCase() as ImageFormat)\n layout = camelCase(layout) as Layout\n\n if (width && height) {\n return { ...args, formats, layout, aspectRatio: width / height }\n }\n if (sourceMetadata.width && sourceMetadata.height && !aspectRatio) {\n aspectRatio = sourceMetadata.width / sourceMetadata.height\n }\n\n if (layout === `fullWidth`) {\n width = width || sourceMetadata.width || breakpoints[breakpoints.length - 1]\n height = height || Math.round(width / (aspectRatio || DEFAULT_ASPECT_RATIO))\n } else {\n if (!width) {\n if (height && aspectRatio) {\n width = height * aspectRatio\n } else if (sourceMetadata.width) {\n width = sourceMetadata.width\n } else if (height) {\n width = Math.round(height / DEFAULT_ASPECT_RATIO)\n } else {\n width = DEFAULT_FIXED_WIDTH\n }\n }\n\n if (aspectRatio && !height) {\n height = Math.round(width / aspectRatio)\n } else if (!aspectRatio) {\n aspectRatio = width / height\n }\n }\n return { ...args, width, height, aspectRatio, layout, formats }\n}\n\n/**\n * Use this for getting an image for the blurred placeholder. This ensures the\n * aspect ratio and crop match the main image\n */\nexport function getLowResolutionImageURL(\n args: IGatsbyImageHelperArgs,\n width = 20\n): string {\n args = setDefaultDimensions(args)\n const { generateImageSource, filename, aspectRatio } = args\n return generateImageSource(\n filename,\n width,\n Math.round(width / aspectRatio),\n args.sourceMetadata.format || `jpg`,\n args.fit,\n args.options\n )?.src\n}\n\nexport function generateImageData(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageData {\n args = setDefaultDimensions(args)\n\n let {\n pluginName,\n sourceMetadata,\n generateImageSource,\n layout,\n fit,\n options,\n width,\n height,\n filename,\n reporter = { warn },\n backgroundColor,\n placeholderURL,\n } = args\n\n if (!pluginName) {\n reporter.warn(\n `[gatsby-plugin-image] \"generateImageData\" was not passed a plugin name`\n )\n }\n\n if (typeof generateImageSource !== `function`) {\n throw new Error(`generateImageSource must be a function`)\n }\n\n if (!sourceMetadata || (!sourceMetadata.width && !sourceMetadata.height)) {\n // No metadata means we let the CDN handle max size etc, aspect ratio etc\n sourceMetadata = {\n width,\n height,\n format: sourceMetadata?.format || formatFromFilename(filename) || `auto`,\n }\n } else if (!sourceMetadata.format) {\n sourceMetadata.format = formatFromFilename(filename)\n }\n\n const formats = new Set(args.formats)\n\n if (formats.size === 0 || formats.has(`auto`) || formats.has(``)) {\n formats.delete(`auto`)\n formats.delete(``)\n formats.add(sourceMetadata.format)\n }\n\n if (formats.has(`jpg`) && formats.has(`png`)) {\n reporter.warn(\n `[${pluginName}] Specifying both 'jpg' and 'png' formats is not supported. Using 'auto' instead`\n )\n if (sourceMetadata.format === `jpg`) {\n formats.delete(`png`)\n } else {\n formats.delete(`jpg`)\n }\n }\n\n const imageSizes = calculateImageSizes({ ...args, sourceMetadata })\n\n const result: IGatsbyImageData[\"images\"] = {\n sources: [],\n }\n\n let sizes = args.sizes\n if (!sizes) {\n sizes = getSizes(imageSizes.presentationWidth, layout)\n }\n\n formats.forEach(format => {\n const images = imageSizes.sizes\n .map(size => {\n const imageSrc = generateImageSource(\n filename,\n size,\n Math.round(size / imageSizes.aspectRatio),\n format,\n fit,\n options\n )\n if (\n !imageSrc?.width ||\n !imageSrc.height ||\n !imageSrc.src ||\n !imageSrc.format\n ) {\n reporter.warn(\n `[${pluginName}] The resolver for image ${filename} returned an invalid value.`\n )\n return undefined\n }\n return imageSrc\n })\n .filter(Boolean)\n\n if (format === `jpg` || format === `png` || format === `auto`) {\n const unscaled =\n images.find(img => img.width === imageSizes.unscaledWidth) || images[0]\n\n if (unscaled) {\n result.fallback = {\n src: unscaled.src,\n srcSet: getSrcSet(images),\n sizes,\n }\n }\n } else {\n result.sources?.push({\n srcSet: getSrcSet(images),\n sizes,\n type: `image/${format}`,\n })\n }\n })\n\n const imageProps: Partial = {\n images: result,\n layout,\n backgroundColor,\n }\n\n if (placeholderURL) {\n imageProps.placeholder = { fallback: placeholderURL }\n }\n\n switch (layout) {\n case `fixed`:\n imageProps.width = imageSizes.presentationWidth\n imageProps.height = imageSizes.presentationHeight\n break\n\n case `fullWidth`:\n imageProps.width = 1\n imageProps.height = 1 / imageSizes.aspectRatio\n break\n\n case `constrained`:\n imageProps.width = args.width || imageSizes.presentationWidth || 1\n imageProps.height = (imageProps.width || 1) / imageSizes.aspectRatio\n }\n\n return imageProps as IGatsbyImageData\n}\n\nconst dedupeAndSortDensities = (values: Array): Array =>\n Array.from(new Set([1, ...values])).sort(sortNumeric)\n\nexport function calculateImageSizes(args: IImageSizeArgs): IImageSizes {\n const {\n width,\n height,\n filename,\n layout = `constrained`,\n sourceMetadata: imgDimensions,\n reporter = { warn },\n breakpoints = DEFAULT_BREAKPOINTS,\n } = args\n\n // check that all dimensions provided are positive\n const userDimensions = { width, height }\n const erroneousUserDimensions = Object.entries(userDimensions).filter(\n ([_, size]) => typeof size === `number` && size < 1\n )\n if (erroneousUserDimensions.length) {\n throw new Error(\n `Specified dimensions for images must be positive numbers (> 0). Problem dimensions you have are ${erroneousUserDimensions\n .map(dim => dim.join(`: `))\n .join(`, `)}`\n )\n }\n\n if (layout === `fixed`) {\n return fixedImageSizes(args)\n } else if (layout === `constrained`) {\n return responsiveImageSizes(args)\n } else if (layout === `fullWidth`) {\n return responsiveImageSizes({ breakpoints, ...args })\n } else {\n reporter.warn(\n `No valid layout was provided for the image at ${filename}. Valid image layouts are fixed, fullWidth, and constrained. Found ${layout}`\n )\n return {\n sizes: [imgDimensions.width],\n presentationWidth: imgDimensions.width,\n presentationHeight: imgDimensions.height,\n aspectRatio: imgDimensions.width / imgDimensions.height,\n unscaledWidth: imgDimensions.width,\n }\n }\n}\nexport function fixedImageSizes({\n filename,\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n reporter = { warn },\n}: IImageSizeArgs): IImageSizes {\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n if (!width) {\n if (!height) {\n width = DEFAULT_FIXED_WIDTH\n } else {\n width = Math.round(height * aspectRatio)\n }\n } else if (!height) {\n height = Math.round(width / aspectRatio)\n }\n\n const originalWidth = width // will use this for presentationWidth, don't want to lose it\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n\n // If the image is smaller than requested, warn the user that it's being processed as such\n // print out this message with the necessary information before we overwrite it for sizing\n if (isTopSizeOverriden) {\n const fixedDimension = imgDimensions.width < width ? `width` : `height`\n reporter.warn(`\nThe requested ${fixedDimension} \"${\n fixedDimension === `width` ? width : height\n }px\" for the image ${filename} was larger than the actual image ${fixedDimension} of ${\n imgDimensions[fixedDimension]\n }px. If possible, replace the current image with a larger one.`)\n\n if (fixedDimension === `width`) {\n width = imgDimensions.width\n height = Math.round(width / aspectRatio)\n } else {\n height = imgDimensions.height\n width = height * aspectRatio\n }\n }\n\n const sizes = densities\n .filter(size => size >= 1) // remove smaller densities because fixed images don't need them\n .map(density => Math.round(density * (width as number)))\n .filter(size => size <= imgDimensions.width)\n\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function responsiveImageSizes({\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n breakpoints,\n layout,\n}: IImageSizeArgs): IImageSizes {\n let sizes\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n // Case 1: width of height were passed in, make sure it isn't larger than the actual image\n width = width && Math.min(width, imgDimensions.width)\n height = height && Math.min(height, imgDimensions.height)\n\n // Case 2: neither width or height were passed in, use default size\n if (!width && !height) {\n width = Math.min(DEFAULT_FLUID_WIDTH, imgDimensions.width)\n height = width / aspectRatio\n }\n\n // if it still hasn't been found, calculate width from the derived height.\n // TS isn't smart enough to realise the type for height has been narrowed here\n if (!width) {\n width = (height as number) * aspectRatio\n }\n\n const originalWidth = width\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n if (isTopSizeOverriden) {\n width = imgDimensions.width\n height = imgDimensions.height\n }\n\n width = Math.round(width)\n\n if (breakpoints?.length > 0) {\n sizes = breakpoints.filter(size => size <= imgDimensions.width)\n\n // If a larger breakpoint has been filtered-out, add the actual image width instead\n if (\n sizes.length < breakpoints.length &&\n !sizes.includes(imgDimensions.width)\n ) {\n sizes.push(imgDimensions.width)\n }\n } else {\n sizes = densities.map(density => Math.round(density * (width as number)))\n sizes = sizes.filter(size => size <= imgDimensions.width)\n }\n\n // ensure that the size passed in is included in the final output\n if (layout === `constrained` && !sizes.includes(width)) {\n sizes.push(width)\n }\n sizes = sizes.sort(sortNumeric)\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function getDimensionsAndAspectRatio(\n dimensions,\n options\n): { width: number; height: number; aspectRatio: number } {\n // Calculate the eventual width/height of the image.\n const imageAspectRatio = dimensions.width / dimensions.height\n\n let width = options.width\n let height = options.height\n\n switch (options.fit) {\n case `fill`: {\n width = options.width ? options.width : dimensions.width\n height = options.height ? options.height : dimensions.height\n break\n }\n case `inside`: {\n const widthOption = options.width\n ? options.width\n : Number.MAX_SAFE_INTEGER\n const heightOption = options.height\n ? options.height\n : Number.MAX_SAFE_INTEGER\n\n width = Math.min(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.min(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n case `outside`: {\n const widthOption = options.width ? options.width : 0\n const heightOption = options.height ? options.height : 0\n\n width = Math.max(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.max(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n\n default: {\n if (options.width && !options.height) {\n width = options.width\n height = Math.round(options.width / imageAspectRatio)\n }\n\n if (options.height && !options.width) {\n width = Math.round(options.height * imageAspectRatio)\n height = options.height\n }\n }\n }\n\n return {\n width,\n height,\n aspectRatio: width / height,\n }\n}\n","/* global GATSBY___IMAGE */\nimport { generateImageData, EVERY_BREAKPOINT } from \"../image-utils\"\nimport type { CSSProperties, HTMLAttributes, ImgHTMLAttributes } from \"react\"\nimport type { Node } from \"gatsby\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { IGatsbyImageData } from \"./gatsby-image.browser\"\nimport type {\n IGatsbyImageHelperArgs,\n Layout,\n IImage,\n ImageFormat,\n} from \"../image-utils\"\n\n// Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\nexport const hasNativeLazyLoadSupport = (): boolean =>\n typeof HTMLImageElement !== `undefined` &&\n `loading` in HTMLImageElement.prototype\n\nexport function gatsbyImageIsInstalled(): boolean {\n return typeof GATSBY___IMAGE !== `undefined` && GATSBY___IMAGE\n}\n\nexport type IGatsbyImageDataParent = T & {\n gatsbyImageData: IGatsbyImageData\n}\nexport type IGatsbyImageParent = T & {\n gatsbyImage: IGatsbyImageData\n}\nexport type FileNode = Partial & {\n childImageSharp?: IGatsbyImageDataParent>\n}\n\nconst isGatsbyImageData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageData | any\n): node is IGatsbyImageData =>\n // 🦆 check for a deep prop to be sure this is a valid gatsbyImageData object\n Boolean(node?.images?.fallback?.src)\n\nconst isGatsbyImageDataParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageDataParent | any\n): node is IGatsbyImageDataParent => Boolean(node?.gatsbyImageData)\n\nconst isGatsbyImageParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageParent | any\n): node is IGatsbyImageParent => Boolean(node?.gatsbyImage)\n\nexport type ImageDataLike =\n | FileNode\n | IGatsbyImageDataParent\n | IGatsbyImageParent\n | IGatsbyImageData\n\nexport const getImage = (\n node: ImageDataLike | null\n): IGatsbyImageData | undefined => {\n // This checks both for gatsbyImageData and gatsbyImage\n if (isGatsbyImageData(node)) {\n return node\n }\n // gatsbyImageData GraphQL field\n if (isGatsbyImageDataParent(node)) {\n return node.gatsbyImageData\n }\n // gatsbyImage GraphQL field for Gatsby's Image CDN service\n if (isGatsbyImageParent(node)) {\n return node.gatsbyImage\n }\n return node?.childImageSharp?.gatsbyImageData\n}\n\nexport const getSrc = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.src\n\nexport const getSrcSet = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.srcSet\n\nexport function getWrapperProps(\n width: number,\n height: number,\n layout: Layout\n): Pick, \"className\" | \"style\"> & {\n \"data-gatsby-image-wrapper\": string\n} {\n const wrapperStyle: CSSProperties = {}\n\n let className = `gatsby-image-wrapper`\n\n // If the plugin isn't installed we need to apply the styles inline\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.position = `relative`\n wrapperStyle.overflow = `hidden`\n }\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n } else if (layout === `constrained`) {\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.display = `inline-block`\n wrapperStyle.verticalAlign = `top`\n }\n className = `gatsby-image-wrapper gatsby-image-wrapper-constrained`\n }\n\n return {\n className,\n \"data-gatsby-image-wrapper\": ``,\n style: wrapperStyle,\n }\n}\n\nexport interface IUrlBuilderArgs {\n width: number\n height: number\n baseUrl: string\n format: ImageFormat\n options: OptionsType\n}\nexport interface IGetImageDataArgs> {\n baseUrl: string\n /**\n * For constrained and fixed images, the size of the image element\n */\n width?: number\n height?: number\n /**\n * If available, pass the source image width and height\n */\n sourceWidth?: number\n sourceHeight?: number\n /**\n * If only one dimension is passed, then this will be used to calculate the other.\n */\n aspectRatio?: number\n layout?: Layout\n /**\n * Returns a URL based on the passed arguments. Should be a pure function\n */\n urlBuilder: (args: IUrlBuilderArgs) => string\n\n /**\n * Should be a data URI\n */\n placeholderURL?: string\n backgroundColor?: string\n /**\n * Used in error messages etc\n */\n pluginName?: string\n\n /**\n * If you do not support auto-format, pass an array of image types here\n */\n formats?: Array\n\n breakpoints?: Array\n\n /**\n * Passed to the urlBuilder function\n */\n options?: OptionsType\n}\n\n/**\n * Use this hook to generate gatsby-plugin-image data in the browser.\n */\nexport function getImageData({\n baseUrl,\n urlBuilder,\n sourceWidth,\n sourceHeight,\n pluginName = `getImageData`,\n formats = [`auto`],\n breakpoints,\n options,\n ...props\n}: IGetImageDataArgs): IGatsbyImageData {\n if (\n !breakpoints?.length &&\n (props.layout === `fullWidth` || (props.layout as string) === `FULL_WIDTH`)\n ) {\n breakpoints = EVERY_BREAKPOINT\n }\n const generateImageSource = (\n baseUrl: string,\n width: number,\n height?: number,\n format?: ImageFormat\n ): IImage => {\n return {\n width,\n height,\n format,\n src: urlBuilder({ baseUrl, width, height, options, format }),\n }\n }\n\n const sourceMetadata: IGatsbyImageHelperArgs[\"sourceMetadata\"] = {\n width: sourceWidth,\n height: sourceHeight,\n format: `auto`,\n }\n\n const args: IGatsbyImageHelperArgs = {\n ...props,\n pluginName,\n generateImageSource,\n filename: baseUrl,\n formats,\n breakpoints,\n sourceMetadata,\n }\n return generateImageData(args)\n}\n\nexport function getMainProps(\n isLoading: boolean,\n isLoaded: boolean,\n images: IGatsbyImageData[\"images\"],\n loading?: \"eager\" | \"lazy\",\n style: CSSProperties = {}\n): Partial {\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n transform: `translateZ(0)`,\n transition: `opacity 250ms linear`,\n width: `100%`,\n willChange: `opacity`,\n ...style,\n }\n }\n\n const result = {\n ...images,\n loading,\n shouldLoad: isLoading,\n \"data-main-image\": ``,\n style: {\n ...style,\n opacity: isLoaded ? 1 : 0,\n },\n }\n\n return result\n}\n\nexport type PlaceholderImageAttrs = ImgHTMLAttributes &\n Pick & {\n \"data-placeholder-image\"?: string\n }\n\nexport function getPlaceholderProps(\n placeholder: PlaceholderImageAttrs | undefined,\n isLoaded: boolean,\n layout: Layout,\n width?: number,\n height?: number,\n backgroundColor?: string,\n objectFit?: CSSProperties[\"objectFit\"],\n objectPosition?: CSSProperties[\"objectPosition\"]\n): PlaceholderImageAttrs {\n const wrapperStyle: CSSProperties = {}\n\n if (backgroundColor) {\n wrapperStyle.backgroundColor = backgroundColor\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n wrapperStyle.backgroundColor = backgroundColor\n wrapperStyle.position = `relative`\n } else if (layout === `constrained`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n } else if (layout === `fullWidth`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n }\n }\n\n if (objectFit) {\n wrapperStyle.objectFit = objectFit\n }\n\n if (objectPosition) {\n wrapperStyle.objectPosition = objectPosition\n }\n const result: PlaceholderImageAttrs = {\n ...placeholder,\n \"aria-hidden\": true,\n \"data-placeholder-image\": ``,\n style: {\n opacity: isLoaded ? 0 : 1,\n transition: `opacity 500ms linear`,\n ...wrapperStyle,\n },\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n result.style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n width: `100%`,\n }\n }\n\n return result\n}\n\nexport interface IArtDirectedImage {\n media: string\n image: IGatsbyImageData\n}\n\n/**\n * Generate a Gatsby image data object with multiple, art-directed images that display at different\n * resolutions.\n *\n * @param defaultImage The image displayed when no media query matches.\n * It is also used for all other settings applied to the image, such as width, height and layout.\n * You should pass a className to the component with media queries to adjust the size of the container,\n * as this cannot be adjusted automatically.\n * @param artDirected Array of objects which each contains a `media` string which is a media query\n * such as `(min-width: 320px)`, and the image object to use when that query matches.\n */\nexport function withArtDirection(\n defaultImage: IGatsbyImageData,\n artDirected: Array\n): IGatsbyImageData {\n const { images, placeholder, ...props } = defaultImage\n const output: IGatsbyImageData = {\n ...props,\n images: {\n ...images,\n sources: [],\n },\n placeholder: placeholder && {\n ...placeholder,\n sources: [],\n },\n }\n\n artDirected.forEach(({ media, image }) => {\n if (!media) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(\n \"[gatsby-plugin-image] All art-directed images passed to must have a value set for `media`. Skipping.\"\n )\n }\n return\n }\n\n if (\n image.layout !== defaultImage.layout &&\n process.env.NODE_ENV === `development`\n ) {\n console.warn(\n `[gatsby-plugin-image] Mismatched image layout: expected \"${defaultImage.layout}\" but received \"${image.layout}\". All art-directed images use the same layout as the default image`\n )\n }\n\n output.images.sources.push(\n ...image.images.sources.map(source => {\n return { ...source, media }\n }),\n {\n media,\n srcSet: image.images.fallback.srcSet,\n }\n )\n\n if (!output.placeholder) {\n return\n }\n\n output.placeholder.sources.push({\n media,\n srcSet: image.placeholder.fallback,\n })\n })\n output.images.sources.push(...images.sources)\n if (placeholder?.sources) {\n output.placeholder?.sources.push(...placeholder.sources)\n }\n return output\n}\n","import React, { Fragment, FunctionComponent } from \"react\"\nimport terserMacro from \"../../macros/terser.macro\"\nimport { Layout } from \"../image-utils\"\n\nexport interface ILayoutWrapperProps {\n layout: Layout\n width: number\n height: number\n}\n\nconst NativeScriptLoading: FunctionComponent = () => (\n \n)\n\nexport function getSizer(\n layout: Layout,\n width: number,\n height: number\n): string {\n let sizer = ``\n if (layout === `fullWidth`) {\n sizer = `
`\n }\n\n if (layout === `constrained`) {\n sizer = `
\"\"
`\n }\n\n return sizer\n}\n\nconst Sizer: FunctionComponent = function Sizer({\n layout,\n width,\n height,\n}) {\n if (layout === `fullWidth`) {\n return (\n
\n )\n }\n\n if (layout === `constrained`) {\n return (\n
\n \n
\n )\n }\n\n return null\n}\n\nexport const LayoutWrapper: FunctionComponent =\n function LayoutWrapper({ children, ...props }) {\n return (\n \n \n {children}\n\n {SERVER ? : null}\n \n )\n }\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\n\nexport interface IResponsiveImageProps {\n sizes?: string\n srcSet: string\n}\n\nexport type SourceProps = IResponsiveImageProps &\n (\n | {\n media: string\n type?: string\n }\n | {\n media?: string\n type: string\n }\n )\n\ntype FallbackProps = { src: string } & Partial\n\ntype ImageProps = ImgHTMLAttributes & {\n src: string\n alt: string\n shouldLoad: boolean\n}\n\nexport type PictureProps = ImgHTMLAttributes & {\n fallback?: FallbackProps\n sources?: Array\n alt: string\n shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent = function Image({\n src,\n srcSet,\n loading,\n alt = ``,\n shouldLoad,\n ...props\n}) {\n return (\n \n )\n}\n\nexport const Picture: React.FC = function Picture({\n fallback,\n sources = [],\n shouldLoad = true,\n ...props\n}) {\n const sizes = props.sizes || fallback?.sizes\n const fallbackImage = (\n \n )\n\n if (!sources.length) {\n return fallbackImage\n }\n\n return (\n \n {sources.map(({ media, srcSet, type }) => (\n \n ))}\n {fallbackImage}\n \n )\n}\n\nImage.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string,\n shouldLoad: PropTypes.bool,\n}\n\nPicture.displayName = `Picture`\nPicture.propTypes = {\n alt: PropTypes.string.isRequired,\n shouldLoad: PropTypes.bool,\n fallback: PropTypes.exact({\n src: PropTypes.string.isRequired,\n srcSet: PropTypes.string,\n sizes: PropTypes.string,\n }),\n sources: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.exact({\n media: PropTypes.string.isRequired,\n type: PropTypes.string,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n PropTypes.exact({\n media: PropTypes.string,\n type: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n ])\n ),\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\nimport { Picture, SourceProps } from \"./picture\"\n\nexport type PlaceholderProps = ImgHTMLAttributes & {\n fallback?: string\n sources?: Array\n}\n\nexport const Placeholder: FunctionComponent =\n function Placeholder({ fallback, ...props }) {\n if (fallback) {\n return (\n \n )\n } else {\n return
\n }\n }\n\nPlaceholder.displayName = `Placeholder`\nPlaceholder.propTypes = {\n fallback: PropTypes.string,\n sources: Picture.propTypes?.sources,\n alt: function (props, propName, componentName): Error | null {\n if (!props[propName]) {\n return null\n }\n\n return new Error(\n `Invalid prop \\`${propName}\\` supplied to \\`${componentName}\\`. Validation failed.`\n )\n },\n}\n","import React from \"react\"\nimport { Picture, PictureProps } from \"./picture\"\n\nexport type MainImageProps = PictureProps\n\nexport const MainImage: React.FC = function MainImage(props) {\n return (\n <>\n \n \n \n )\n}\n\nMainImage.displayName = `MainImage`\nMainImage.propTypes = Picture.propTypes\n","import React from \"react\"\nimport { getWrapperProps, getMainProps, getPlaceholderProps } from \"./hooks\"\nimport { Placeholder } from \"./placeholder\"\nimport { MainImage, MainImageProps } from \"./main-image\"\nimport { LayoutWrapper } from \"./layout-wrapper\"\nimport PropTypes from \"prop-types\"\nimport type { FunctionComponent, WeakValidationMap } from \"react\"\nimport type { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\n\nconst removeNewLines = (str: string): string => str.replace(/\\n/g, ``)\n\nexport const GatsbyImage: FunctionComponent =\n function GatsbyImage({\n as = `div`,\n className,\n class: preactClass,\n style,\n image,\n loading = `lazy`,\n imgClassName,\n imgStyle,\n backgroundColor,\n objectFit,\n objectPosition,\n ...props\n }) {\n if (!image) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n return null\n }\n\n if (preactClass) {\n className = preactClass\n }\n\n imgStyle = {\n objectFit,\n objectPosition,\n backgroundColor,\n ...imgStyle,\n }\n\n const {\n width,\n height,\n layout,\n images,\n placeholder,\n backgroundColor: placeholderBackgroundColor,\n } = image\n\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n const cleanedImages: IGatsbyImageData[\"images\"] = {\n fallback: undefined,\n sources: [],\n }\n if (images.fallback) {\n cleanedImages.fallback = {\n ...images.fallback,\n srcSet: images.fallback.srcSet\n ? removeNewLines(images.fallback.srcSet)\n : undefined,\n }\n }\n\n if (images.sources) {\n cleanedImages.sources = images.sources.map(source => {\n return {\n ...source,\n srcSet: removeNewLines(source.srcSet),\n }\n })\n }\n\n return React.createElement(\n as,\n {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n },\n \n \n\n )}\n // When eager is set we want to start the isLoading state on true (we want to load the img without react)\n {...getMainProps(\n loading === `eager`,\n false,\n cleanedImages,\n loading,\n imgStyle\n )}\n />\n \n )\n }\n\nexport const altValidator: PropTypes.Validator = (\n props: GatsbyImageProps,\n propName,\n componentName,\n ...rest\n): Error | undefined => {\n if (!props.alt && props.alt !== ``) {\n return new Error(\n `The \"alt\" prop is required in ${componentName}. If the image is purely presentational then pass an empty string: e.g. alt=\"\". Learn more: https://a11y-style-guide.com/style-guide/section-media.html`\n )\n }\n\n return PropTypes.string(props, propName, componentName, ...rest)\n}\n\nexport const propTypes = {\n image: PropTypes.object.isRequired,\n alt: altValidator,\n} as WeakValidationMap\n","import {\n createElement,\n memo,\n useMemo,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\"\nimport {\n getWrapperProps,\n gatsbyImageIsInstalled,\n hasNativeLazyLoadSupport,\n} from \"./hooks\"\nimport { getSizer } from \"./layout-wrapper\"\nimport { propTypes } from \"./gatsby-image.server\"\nimport type {\n FC,\n ElementType,\n FunctionComponent,\n ImgHTMLAttributes,\n CSSProperties,\n ReactEventHandler,\n} from \"react\"\nimport type { renderImageToString } from \"./lazy-hydrate\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { Layout } from \"../image-utils\"\n\nconst imageCache = new Set()\nlet renderImageToStringPromise\nlet renderImage: typeof renderImageToString | undefined\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface GatsbyImageProps\n extends Omit<\n ImgHTMLAttributes,\n \"placeholder\" | \"onLoad\" | \"src\" | \"srcSet\" | \"width\" | \"height\"\n > {\n alt: string\n as?: ElementType\n className?: string\n class?: string\n imgClassName?: string\n image: IGatsbyImageData\n imgStyle?: CSSProperties\n backgroundColor?: string\n objectFit?: CSSProperties[\"objectFit\"]\n objectPosition?: CSSProperties[\"objectPosition\"]\n onLoad?: (props: { wasCached: boolean }) => void\n onError?: ReactEventHandler\n onStartLoad?: (props: { wasCached: boolean }) => void\n}\n\nexport interface IGatsbyImageData {\n layout: Layout\n width: number\n height: number\n backgroundColor?: string\n images: Pick\n placeholder?: Pick\n}\n\nconst GatsbyImageHydrator: FC = function GatsbyImageHydrator({\n as = `div`,\n image,\n style,\n backgroundColor,\n className,\n class: preactClass,\n onStartLoad,\n onLoad,\n onError,\n ...props\n}) {\n const { width, height, layout } = image\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n const root = useRef()\n const cacheKey = useMemo(() => JSON.stringify(image.images), [image.images])\n\n // Preact uses class instead of className so we need to check for both\n if (preactClass) {\n className = preactClass\n }\n\n const sizer = getSizer(layout, width, height)\n\n useEffect(() => {\n if (!renderImageToStringPromise) {\n renderImageToStringPromise = import(`./lazy-hydrate`).then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n renderImage = renderImageToString\n\n return {\n renderImageToString,\n swapPlaceholderImage,\n }\n }\n )\n }\n\n // The plugin image component is a bit special where if it's server-side rendered, we add extra script tags to support lazy-loading without\n // In this case we stop hydration but fire the correct events.\n const ssrImage = root.current.querySelector(\n `[data-gatsby-image-ssr]`\n ) as HTMLImageElement\n if (ssrImage && hasNativeLazyLoadSupport()) {\n if (ssrImage.complete) {\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n } else {\n onStartLoad?.({\n wasCached: true,\n })\n\n ssrImage.addEventListener(`load`, function onLoadListener() {\n ssrImage.removeEventListener(`load`, onLoadListener)\n\n onLoad?.({\n wasCached: true,\n })\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n })\n }\n\n imageCache.add(cacheKey)\n\n return\n }\n\n if (renderImage && imageCache.has(cacheKey)) {\n return\n }\n\n let animationFrame\n let cleanupCallback\n renderImageToStringPromise.then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n if (!root.current) {\n return\n }\n\n root.current.innerHTML = renderImageToString({\n isLoading: true,\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n if (!imageCache.has(cacheKey)) {\n animationFrame = requestAnimationFrame(() => {\n if (root.current) {\n cleanupCallback = swapPlaceholderImage(\n root.current,\n cacheKey,\n imageCache,\n style,\n onStartLoad,\n onLoad,\n onError\n )\n }\n })\n }\n }\n )\n\n // eslint-disable-next-line consistent-return\n return (): void => {\n if (animationFrame) {\n cancelAnimationFrame(animationFrame)\n }\n if (cleanupCallback) {\n cleanupCallback()\n }\n }\n }, [image])\n\n // useLayoutEffect is ran before React commits to the DOM. This allows us to make sure our HTML is using our cached image version\n useLayoutEffect(() => {\n if (imageCache.has(cacheKey) && renderImage) {\n root.current.innerHTML = renderImage({\n isLoading: imageCache.has(cacheKey),\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n }\n }, [image])\n\n // By keeping all props equal React will keep the component in the DOM\n return createElement(as, {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n ref: root,\n dangerouslySetInnerHTML: {\n __html: sizer,\n },\n suppressHydrationWarning: true,\n })\n}\n\nexport const GatsbyImage: FunctionComponent = memo(\n function GatsbyImage(props) {\n if (!props.image) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n }\n\n return null\n }\n\n if (!gatsbyImageIsInstalled() && process.env.NODE_ENV === `development`) {\n console.warn(\n `[gatsby-plugin-image] You're missing out on some cool performance features. Please add \"gatsby-plugin-image\" to your gatsby-config.js`\n )\n }\n\n return createElement(GatsbyImageHydrator, props)\n }\n)\n\nGatsbyImage.propTypes = propTypes\nGatsbyImage.displayName = `GatsbyImage`\n","import React, { FunctionComponent, ReactElement } from \"react\"\nimport {\n altValidator,\n GatsbyImage as GatsbyImageServer,\n} from \"./gatsby-image.server\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport PropTypes from \"prop-types\"\nimport { ISharpGatsbyImageArgs } from \"../image-utils\"\n\nexport interface IStaticImageProps\n extends Omit,\n Omit {\n src: string\n}\n\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nexport function _getStaticImage(\n GatsbyImage: FunctionComponent\n): React.FC {\n return function StaticImage({\n src,\n __imageData: imageData,\n __error,\n // We extract these because they're not meant to be passed-down to GatsbyImage\n /* eslint-disable @typescript-eslint/no-unused-vars */\n width,\n height,\n aspectRatio,\n tracedSVGOptions,\n placeholder,\n formats,\n quality,\n transformOptions,\n jpgOptions,\n pngOptions,\n webpOptions,\n avifOptions,\n blurredOptions,\n breakpoints,\n outputPixelDensities,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...props\n }): ReactElement {\n if (__error) {\n console.warn(__error)\n }\n\n if (imageData) {\n return \n }\n console.warn(`Image not loaded`, src)\n if (!__error && process.env.NODE_ENV === `development`) {\n console.warn(\n `Please ensure that \"gatsby-plugin-image\" is included in the plugins array in gatsby-config.js, and that your version of gatsby is at least 2.24.78`\n )\n }\n return null\n }\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator = (\n props: IStaticImageProps & IPrivateProps,\n propName: keyof IStaticImageProps & IPrivateProps,\n ...rest\n) => {\n if (\n props.layout === `fullWidth` &&\n (propName === `width` || propName === `height`) &&\n props[propName]\n ) {\n return new Error(\n `\"${propName}\" ${props[propName]} may not be passed when layout is fullWidth.`\n )\n }\n return PropTypes.number(props, propName, ...rest)\n}\n\nconst validLayouts = new Set([`fixed`, `fullWidth`, `constrained`])\n\nexport const propTypes = {\n src: PropTypes.string.isRequired,\n alt: altValidator,\n width: checkDimensionProps,\n height: checkDimensionProps,\n sizes: PropTypes.string,\n layout: (props: IStaticImageProps & IPrivateProps): Error | undefined => {\n if (props.layout === undefined) {\n return undefined\n }\n if (validLayouts.has(props.layout)) {\n return undefined\n }\n\n return new Error(\n `Invalid value ${props.layout}\" provided for prop \"layout\". Defaulting to \"constrained\". Valid values are \"fixed\", \"fullWidth\" or \"constrained\".`\n )\n },\n}\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import {\n GatsbyImage as GatsbyImageBrowser,\n IGatsbyImageData,\n} from \"./gatsby-image.browser\"\nimport React from \"react\"\nimport {\n _getStaticImage,\n propTypes,\n IStaticImageProps,\n} from \"./static-image.server\"\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageBrowser)\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import React from \"react\"\n//import * as styles from \"./BackgroundVideo.module.scss\"\n\nexport type BackgroundVideoProps = React.DetailedHTMLProps<\n React.VideoHTMLAttributes,\n HTMLVideoElement\n>\n\nconst BackgroundVideo: React.FC = props => {\n //console.log('Rendering BackgroundVideo', props)\n return (\n \n )\n}\n\nexport default BackgroundVideo\n","import React from \"react\"\n\ntype EmailLinkProps = {\n email: string\n /** */\n labelPrefix?: string\n} & React.HTMLProps\n\nconst EmailLink = (props: EmailLinkProps) => {\n const { email, labelPrefix, ...rest } = props\n if (!email) {\n return null\n }\n const label = labelPrefix ? `${labelPrefix} ${email}` : email\n return (\n \n {label}\n \n )\n}\n\nexport default EmailLink\n","import React from \"react\"\n\ntype PhoneLinkProps = {\n phone?: string\n labelPrefix?: string\n} & React.HTMLProps\n\nconst PhoneLink = (props: PhoneLinkProps) => {\n const { phone, labelPrefix, ...rest } = props\n if (!phone) {\n return null\n }\n const label = labelPrefix ? `${labelPrefix} ${phone}` : phone\n return (\n \n {label}\n \n )\n}\n\nexport default PhoneLink\n","import React from \"react\"\n//import * as styles from \"./Address.module.scss\"\n\ntype PostalAddressProps = {\n postOfficeBoxNumber?: string | null\n streetAddress?: string | null\n postalCode?: string | null\n addressLocality?: string | null\n addressRegion?: string | null\n addressCountry?: string | null\n labelPrefixPo?: string\n}\n\nconst PostalAddress = (props: PostalAddressProps) => {\n // console.log(\"Rendering Address\", data)\n\n return (\n

\n {[\n props.postOfficeBoxNumber && props.labelPrefixPo\n ? `${props.labelPrefixPo} ${props.postOfficeBoxNumber}`\n : props.postOfficeBoxNumber,\n props.streetAddress,\n [props.postalCode, props.addressLocality].filter(i => i).join(\" \"),\n [props.addressRegion, props.addressCountry?.toUpperCase()].filter(i => i).join(\", \"),\n ]\n .filter(i => i)\n .join(\"\\n\")}\n

\n )\n}\n\nexport default PostalAddress\n","import loadable from \"@loadable/component\"\nimport React from \"react\"\nimport DatoHighlightToExternalUrl from \"./blocks/DatoHighlightToExternalUrl\"\nimport type { DatoImageGalleryProps } from \"./blocks/DatoImageGallery\"\nimport DatoKlaviyoFormEmbed from \"./blocks/DatoKlaviyoFormEmbed\"\nimport type { DatoProductFilterProps } from \"./blocks/DatoProductFilter\"\n\nconst DatoApplicationDownload = loadable(() => import(\"./blocks/DatoApplicationDownload\"))\nconst DatoArticleFinder = loadable(() => import(\"./blocks/DatoArticleFinder\"))\nconst DatoBrochureList = loadable(() => import(\"./blocks/DatoBrochureList\"))\nconst DatoContactCollectionRef = loadable(() => import(\"./blocks/DatoContactCollectionRef\"))\nconst DatoContactLocationBlock = loadable(() => import(\"./blocks/DatoContactLocationBlock\"))\nconst DatoContactPersons = loadable(() => import(\"./blocks/DatoContactPersons\"))\nconst DatoCtaRef = loadable(() => import(\"./blocks/DatoCtaRef\"))\nconst DatoCtaToArticle = loadable(() => import(\"./blocks/DatoCtaToArticle\"))\nconst DatoCtaToExternalUrl = loadable(() => import(\"./blocks/DatoCtaToExternalUrl\"))\nconst DatoCtaToPage = loadable(() => import(\"./blocks/DatoCtaToPage\"))\nconst DatoCtaToProduct = loadable(() => import(\"./blocks/DatoCtaToProduct\"))\nconst DatoCtaToProductFinder = loadable(() => import(\"./blocks/DatoCtaToProductFinder\"))\nconst DatoDealerFinder = loadable(() => import(\"./blocks/DatoDealerFinder\"))\nconst DatoExternalVideo = loadable(() => import(\"./blocks/DatoExternalVideo\"))\nconst DatoFAQ = loadable(() => import(\"./blocks/DatoFaq\"))\nconst DatoForm = loadable(() => import(\"./blocks/DatoForm\"))\nconst DatoHighlightToArticle = loadable(() => import(\"./blocks/DatoHighlightToArticle\"))\nconst DatoHighlightToPage = loadable(() => import(\"./blocks/DatoHighlightToPage\"))\nconst DatoHighlightToProduct = loadable(() => import(\"./blocks/DatoHighlightToProduct\"))\nconst DatoHighlightToProductFinder = loadable(() => import(\"./blocks/DatoHighlightToProductFinder\"))\nconst DatoIframeBlock = loadable(() => import(\"./blocks/DatoIframeBlock\"))\nconst DatoImageGallery = loadable(() => import(\"./blocks/DatoImageGallery\"))\nconst DatoLatestArticles = loadable(() => import(\"./blocks/DatoLatestArticles\"))\nconst DatoMediaBlock = loadable(() => import(\"./blocks/DatoMediaBlock\"))\nconst DatoMediaWithText = loadable(() => import(\"./blocks/DatoMediaWithText\"))\nconst DatoModularContentRef = loadable(() => import(\"./blocks/DatoModularContentRef\"))\nconst DatoNumberFacts = loadable(() => import(\"./blocks/DatoNumberFacts\"))\nconst DatoPickedArticles = loadable(() => import(\"./blocks/DatoPickedArticles\"))\nconst DatoProductFilter = loadable(() => import(\"./blocks/DatoProductFilter\"))\nconst DatoProductFinderLinkBar = loadable(() => import(\"./blocks/DatoProductFinderLinkBar\"))\nconst DatoProductFinderTabs = loadable(() => import(\"./blocks/DatoProductFinderTabs\"))\nconst DatoSaunaCalculatorBlock = loadable(() => import(\"./blocks/DatoSaunaCalculatorBlock\"))\nconst DatoSaunaPlannerBlock = loadable(() => import(\"./blocks/DatoSaunaPlannerBlock\"))\nconst DatoTabularContent = loadable(() => import(\"./blocks/DatoTabularContent\"))\nconst DatoTextBlock = loadable(() => import(\"./blocks/DatoTextBlock\"))\nconst DatoTileGrid = loadable(() => import(\"./blocks/DatoTileGrid\"))\nconst DatoVideoWithText = loadable(() => import(\"./blocks/DatoVideoWithText\"))\nconst DatoTypeform = loadable(() => import(\"./blocks/DatoTypeform\"))\nconst DatoProductFilesList = loadable(() => import(\"./blocks/DatoProductFilesList\"))\nconst DatoLeadooDynamicEmbedding = loadable(() => import(\"./blocks/DatoLeadooDynamicEmbedding\"))\n\nexport type DatoBlockProps =\n | ({ __typename: \"DatoCmsApplicationDownload\" } & Queries.DatoApplicationDownloadFragment)\n | ({ __typename: \"DatoCmsArticleFinder\" } & Queries.DatoArticleFinderFragment)\n | ({ __typename: \"DatoCmsBrochureList\" } & Queries.DatoBrochureListBlockFragment)\n | ({ __typename: \"DatoCmsContactCollectionRef\" } & Queries.DatoContactCollectionRefFragment)\n | ({ __typename: \"DatoCmsContactLocationBlock\" } & Queries.DatoContactLocationBlockFragment)\n | ({ __typename: \"DatoCmsContactPersonSet\" } & Queries.DatoContactPersonsFragment)\n | ({ __typename: \"DatoCmsCtaToArticle\" } & Queries.DatoCtaToArticleFragment)\n | ({ __typename: \"DatoCmsCtaToExternalUrl\" } & Queries.DatoCtaToExternalUrlFragment)\n | ({ __typename: \"DatoCmsCtaToPage\" } & Queries.DatoCtaToPageFragment)\n | ({ __typename: \"DatoCmsCtaRef\" } & Queries.DatoCtaRefFragment)\n | ({ __typename: \"DatoCmsCtaToProduct\" } & Queries.DatoCtaToProductFragment)\n | ({ __typename: \"DatoCmsCtaToProductFinder\" } & Queries.DatoCtaToProductFinderFragment)\n | ({ __typename: \"DatoCmsDealerFinder\" } & Queries.DatoDealerFinderFragment)\n | ({ __typename: \"DatoCmsExternalVideo\" } & Queries.DatoExternalVideoFragment)\n | ({ __typename: \"DatoCmsHighlightToPage\" } & Queries.DatoHighlightToPageFragment)\n | ({ __typename: \"DatoCmsIframeBlock\" } & Queries.DatoIframeBlockFragment)\n | ({ __typename: \"DatoCmsImageGallery\" } & DatoImageGalleryProps)\n | ({ __typename: \"DatoCmsLatestArticleSet\" } & Queries.DatoLatestArticlesFragment)\n | ({ __typename: \"DatoCmsHighlightToArticle\" } & Queries.DatoHighlightToArticleFragment)\n | ({ __typename: \"DatoCmsHighlightToProduct\" } & Queries.DatoHighlightToProductFragment)\n | ({ __typename: \"DatoCmsHighlightToProductFinder\" } & Queries.DatoHighlightToProductFinderFragment)\n | ({ __typename: \"DatoCmsHighlightToExternalUrl\" } & Queries.DatoHighlightToExternalUrlFragment)\n | ({ __typename: \"DatoCmsMediaBlock\" } & Queries.DatoMediaBlockFragment)\n | ({ __typename: \"DatoCmsMediaWithText\" } & Queries.DatoMediaWithTextFragment)\n | ({ __typename: \"DatoCmsModularContentRef\" } & Queries.DatoModularContentRefFragment)\n | ({ __typename: \"DatoCmsNumberFactSet\" } & Queries.DatoNumberFactsFragment)\n | ({ __typename: \"DatoCmsPickedArticleSet\" } & Queries.DatoPickedArticlesFragment)\n | ({ __typename: \"DatoCmsProductFilter\" } & DatoProductFilterProps)\n | ({ __typename: \"DatoCmsProductFinderTabSet\" } & Queries.DatoProductFinderTabsFragment)\n | ({ __typename: \"DatoCmsProductFinderLinkBar\" } & Queries.DatoProductFinderLinkBarFragment)\n | ({ __typename: \"DatoCmsSaunaCalculatorBlock\" } & Queries.DatoSaunaCalculatorBlockFragment)\n | ({ __typename: \"DatoCmsSaunaPlannerBlock\" } & Queries.DatoSaunaPlannerBlockFragment)\n | ({ __typename: \"DatoCmsTabularContent\" } & Queries.DatoTabularContentFragment)\n | ({ __typename: \"DatoCmsTextBlock\" } & Queries.DatoTextBlockFragment)\n | ({ __typename: \"DatoCmsTileGrid\" } & Queries.DatoTileGridFragment)\n | ({ __typename: \"DatoCmsVideoWithText\" } & Queries.DatoVideoWithTextFragment)\n | ({ __typename: \"DatoCmsForm\" } & Queries.DatoFormFragment)\n | ({ __typename: \"DatoCmsFaq\" } & Queries.DatoFAQFragment)\n | ({ __typename: \"DatoCmsTypeform\" } & Queries.DatoTypeformFragment)\n | ({ __typename: \"DatoCmsProductFilesList\" } & Queries.DatoProductFilesListFragment)\n | ({ __typename: \"DatoCmsKlaviyoFormEmbed\" } & Queries.DatoKlaviyoFormEmbedFragment)\n | ({ __typename: \"DatoCmsLeadooDynamicEmbedding\" } & Queries.DatoLeadooDynamicEmbeddingFragment)\n\n/**\n * Mappaa Datosta block-tyyppiset sisällöt React komponetteihin.\n */\nconst DatoBlock = (props: DatoBlockProps) => {\n // console.debug(\"Rendering DatoBlock\", props)\n switch (props.__typename) {\n case \"DatoCmsApplicationDownload\":\n return \n case \"DatoCmsArticleFinder\":\n return \n case \"DatoCmsBrochureList\":\n return \n case \"DatoCmsContactCollectionRef\":\n return \n case \"DatoCmsContactLocationBlock\":\n return \n case \"DatoCmsContactPersonSet\":\n return \n case \"DatoCmsCtaToArticle\":\n return \n case \"DatoCmsCtaToExternalUrl\":\n return \n case \"DatoCmsCtaToPage\":\n return \n case \"DatoCmsCtaRef\":\n return \n case \"DatoCmsCtaToProduct\":\n return \n case \"DatoCmsCtaToProductFinder\":\n return \n case \"DatoCmsDealerFinder\":\n return \n case \"DatoCmsExternalVideo\":\n return \n case \"DatoCmsHighlightToPage\":\n return \n case \"DatoCmsIframeBlock\":\n return \n case \"DatoCmsImageGallery\":\n return \n case \"DatoCmsLatestArticleSet\":\n return \n case \"DatoCmsHighlightToArticle\":\n return \n case \"DatoCmsHighlightToProduct\":\n return \n case \"DatoCmsHighlightToProductFinder\":\n return \n case \"DatoCmsHighlightToExternalUrl\":\n return \n case \"DatoCmsMediaBlock\":\n return \n case \"DatoCmsMediaWithText\":\n return \n case \"DatoCmsModularContentRef\":\n return \n case \"DatoCmsNumberFactSet\":\n return \n case \"DatoCmsPickedArticleSet\":\n return \n case \"DatoCmsProductFilter\":\n return \n case \"DatoCmsProductFinderTabSet\":\n return \n case \"DatoCmsProductFinderLinkBar\":\n return \n case \"DatoCmsSaunaCalculatorBlock\":\n return \n case \"DatoCmsSaunaPlannerBlock\":\n return \n case \"DatoCmsTabularContent\":\n return \n case \"DatoCmsTextBlock\":\n return \n case \"DatoCmsTileGrid\":\n return \n case \"DatoCmsVideoWithText\":\n return \n case \"DatoCmsForm\":\n return \n case \"DatoCmsFaq\":\n return \n case \"DatoCmsTypeform\":\n return \n case \"DatoCmsProductFilesList\":\n return \n case \"DatoCmsKlaviyoFormEmbed\":\n return \n case \"DatoCmsLeadooDynamicEmbedding\":\n return \n default:\n console.warn(\"Unmapped module:\", (props as any).__typename)\n return null\n }\n}\n\nexport default DatoBlock\n","import { graphql } from \"gatsby\"\nimport React from \"react\"\nimport DatoBlock, { DatoBlockProps } from \"./DatoBlock\"\n\n//import * as styles from \"./DatoPageModules.module.scss\"\n\nexport type DatoModularContent = DatoBlockProps\n\ntype DatoContentModulesProps =\n | Queries.DatoSharedModularContentModulesFragment\n | Queries.DatoPageModulesFragment\n | Queries.DatoProductLandingPageModulesFragment\n | Queries.DatoArticleModulesFragment\n | { modules: Queries.DatoFooterFragment[\"content\"] }\n\nconst DatoContentModules = (props: DatoContentModulesProps) => {\n // console.debug(\"Rendering DatoContentModules\", props)\n\n if (!props.modules) {\n return null\n }\n\n return props.modules.map(module => {\n return module ? : null\n })\n}\n\nexport default DatoContentModules\n\n/**\n * Eri sivujen mahdolliset modular contentit + shared modular content\n * Yritetään pitää listat aakkosjärjestyksessä\n */\nexport const query = graphql`\n fragment DatoSharedModularContentModules on DatoCmsSharedModularContent {\n modules {\n ... on Node {\n key: id\n __typename\n }\n ...DatoApplicationDownload\n ...DatoContactCollectionRef\n ...DatoContactLocationBlock\n ...DatoContactPersons\n ...DatoCtaToArticle\n ...DatoCtaToExternalUrl\n #...DatoCtaToExternalUrlRef\n ...DatoCtaToPage\n ...DatoCtaRef\n ...DatoCtaToProduct\n ...DatoCtaToProductFinder\n ...DatoExternalVideo\n ...DatoFAQ\n ...DatoForm\n ...DatoHighlightToArticle\n ...DatoHighlightToExternalUrl\n ...DatoHighlightToPage\n ...DatoHighlightToProduct\n ...DatoHighlightToProductFinder\n ...DatoIframeBlock\n ...DatoImageGallery\n ...DatoLatestArticles\n ...DatoMediaBlock\n ...DatoMediaWithText\n #...DatoModularContentRef\n ...DatoNumberFacts\n ...DatoPickedArticles\n ...DatoProductFilter\n ...DatoProductFinderLinkBar\n ...DatoProductFinderTabs\n ...DatoSaunaCalculatorBlock\n #...DatoTabularContent\n ...DatoTextBlock\n ...DatoTileGrid\n ...DatoVideoWithText\n #...DatoTypeform # not enabled for lack of content => GraphQL error\n ...DatoKlaviyoFormEmbed\n ...DatoLeadooDynamicEmbedding\n }\n }\n fragment DatoPageModules on DatoCmsPage {\n modules {\n ... on Node {\n key: id\n __typename\n }\n ...DatoApplicationDownload\n ...DatoArticleFinder\n ...DatoBrochureListBlock\n ...DatoContactCollectionRef\n ...DatoContactLocationBlock\n ...DatoContactPersons\n ...DatoCtaToArticle\n ...DatoCtaToExternalUrl\n #...DatoCtaToExternalUrlRef\n ...DatoCtaToPage\n ...DatoCtaRef\n ...DatoCtaToProduct\n ...DatoCtaToProductFinder\n ...DatoDealerFinder\n ...DatoExternalVideo\n ...DatoFAQ\n ...DatoForm\n ...DatoHighlightToArticle\n ...DatoHighlightToExternalUrl\n ...DatoHighlightToPage\n ...DatoHighlightToProduct\n ...DatoHighlightToProductFinder\n ...DatoIframeBlock\n ...DatoImageGallery\n ...DatoLatestArticles\n ...DatoMediaBlock\n ...DatoMediaWithText\n ...DatoModularContentRef\n ...DatoNumberFacts\n ...DatoPickedArticles\n ...DatoProductFilter\n ...DatoProductFinderLinkBar\n ...DatoProductFinderTabs\n ...DatoSaunaCalculatorBlock\n ...DatoSaunaPlannerBlock\n ...DatoTabularContent\n ...DatoTextBlock\n ...DatoTileGrid\n ...DatoVideoWithText\n ...DatoProductFilesList\n ...DatoTypeform # not enabled for lack of content or not in model validation rules => GraphQL error\n ...DatoKlaviyoFormEmbed\n ...DatoLeadooDynamicEmbedding\n }\n }\n\n fragment DatoProductLandingPageModules on DatoCmsProductLandingPage {\n modules {\n ... on Node {\n key: id\n __typename\n }\n ...DatoApplicationDownload\n ...DatoContactCollectionRef\n ...DatoContactLocationBlock\n ...DatoContactPersons\n ...DatoCtaToArticle\n ...DatoCtaToExternalUrl\n #...DatoCtaToExternalUrlRef\n ...DatoCtaToPage\n ...DatoCtaRef\n ...DatoCtaToProduct\n ...DatoCtaToProductFinder\n ...DatoDealerFinder\n ...DatoExternalVideo\n ...DatoFAQ\n #...DatoForm\n ...DatoHighlightToArticle\n ...DatoHighlightToExternalUrl\n ...DatoHighlightToPage\n ...DatoHighlightToProduct\n ...DatoHighlightToProductFinder\n ...DatoIframeBlock\n ...DatoImageGallery\n ...DatoLatestArticles\n ...DatoMediaBlock\n ...DatoMediaWithText\n ...DatoModularContentRef\n ...DatoNumberFacts\n ...DatoPickedArticles\n ...DatoProductFilter\n ...DatoProductFinderLinkBar\n ...DatoProductFinderTabs\n ...DatoSaunaCalculatorBlock\n ...DatoSaunaPlannerBlock\n ...DatoTabularContent\n ...DatoTextBlock\n ...DatoTileGrid\n ...DatoVideoWithText\n ...DatoTypeform\n ...DatoKlaviyoFormEmbed\n ...DatoLeadooDynamicEmbedding\n }\n }\n fragment DatoArticleModules on DatoCmsArticle {\n modules {\n ... on Node {\n key: id\n __typename\n }\n ...DatoApplicationDownload\n ...DatoContactCollectionRef\n ...DatoContactLocationBlock\n ...DatoContactPersons\n ...DatoCtaToArticle\n ...DatoCtaToExternalUrl\n #...DatoCtaToExternalUrlRef\n ...DatoCtaToPage\n ...DatoCtaRef\n ...DatoCtaToProduct\n ...DatoCtaToProductFinder\n ...DatoExternalVideo\n ...DatoFAQ\n #...DatoForm\n #...DatoHighlightToArticle\n #...DatoHighlightToPage\n #...DatoHighlightToProduct\n #...DatoHighlightToProductFinder\n ...DatoIframeBlock\n ...DatoImageGallery\n ...DatoLatestArticles\n ...DatoMediaBlock\n ...DatoMediaWithText\n ...DatoModularContentRef\n ...DatoNumberFacts\n ...DatoPickedArticles\n ...DatoProductFilter\n ...DatoProductFinderLinkBar\n #...DatoProductFinderTabs\n #...DatoTabularContent\n ...DatoTextBlock\n ...DatoTileGrid\n ...DatoVideoWithText\n #...DatoTypeform # not enabled for lack of content => GraphQL error\n ...DatoKlaviyoFormEmbed\n ...DatoLeadooDynamicEmbedding\n }\n }\n`\n","import { graphql } from \"gatsby\"\nimport { GatsbyImage, GatsbyImageProps, IGatsbyImageData } from \"gatsby-plugin-image\"\nimport React from \"react\"\n//import * as styles from \"./DatoImage.module.scss\"\n\n/**\n * Focal point \"boost\" calculator. Converts focalpoint values (0-1) to CSS objectPosition values (0-100) with a boost.\n * Boost is used as a multiplier to move focalpoint further away from center which suits most \"normal\" images better(?)\n * @param num\n * @param boost\n * @returns\n */\nfunction focalpointToCssPos(num: number, boost = 1.5) {\n return Math.min(Math.max((num - 0.5) * boost + 0.5, 0), 1) * 100\n}\n\n/**\n * Välikerros kuvan käsittelyyn, jotta helpompi päivittää uuteen plugariin aikanaan.\n */\nexport type DatoImageProps = Omit & {\n focalPoint?: { x: number; y: number } | null\n image?: IGatsbyImageData | Record | null\n}\n\nconst DatoImage = (props: DatoImageProps) => {\n // console.debug(\"Rendering DatoImage\", props)\n\n const { focalPoint, alt = \"\", ...rest } = props\n\n if (!props.image) {\n // console.error(\"Tried to render DatoImage without image prop\")\n return null\n }\n\n // boostataan focalpointin sijaintia kauemmas keskustasta, jolloin \"normaalin\" muotoiset kuvat rajautuu lähemmäs tavoitetta\n // TODO miksi käytetään CSS objectPosition? Miksi ylipäätään tarpeellinen?\n const imgStyle = focalPoint\n ? {\n ...props.imgStyle,\n objectPosition: `${focalpointToCssPos(focalPoint.x)}% ${focalpointToCssPos(focalPoint.y)}%`,\n }\n : props.imgStyle\n\n const image: IGatsbyImageData = {\n ...(props.image as IGatsbyImageData),\n images: {\n ...(props.image as IGatsbyImageData).images,\n },\n }\n /**\n * Korjaus GatsbyImagen / Dato source pluginin bugiin:\n * Jos kuvan tyyppi on (Datossa) image/tif, kuva ei tule näkyviin sivulle, vaikka source oikeasti tulee datocsm.asset.com CDN:stä jpg/webp/avif muodossa.\n * Epäselvää miksi tämä tehdää juuri näin.\n */\n if (image.images && !image.images.fallback && image.images.sources?.[0]) {\n // deep clone to avoid mutating props by reference\n image.images.fallback = {\n sizes: \"100vw\",\n src: image.images?.sources[0].srcSet.split(\" \")[0],\n srcSet: image.images.sources[0].srcSet,\n }\n }\n\n return \n}\n\nexport default DatoImage\n\nexport const query = graphql`\n fragment DatoImageDefault on DatoCmsFileField {\n alt\n image: gatsbyImageData(width: 1000, placeholder: BLURRED, layout: FULL_WIDTH)\n focalPoint {\n x\n y\n }\n }\n`\n","import React from \"react\"\nimport { slugify } from \"../../../utils\"\nimport BackgroundMedia, { BackgroundMediaProps } from \"../BackgroundMedia\"\nimport HighlightBlock, { HighlightBlockLayout } from \"./HighlightBlock\"\n//import * as styles from \"./HighlightToExternalUrlBlock.module.scss\"\n\ntype HighlightToExternalUrlBlockProps = {\n text?: string | null\n title?: string | null\n media?: Queries.DatoMediaFragment | null // TODO pass a ReactElement instead\n url?: string | null\n layout?: string | null\n}\n\nconst HighlightToExternalUrlBlock = (props: HighlightToExternalUrlBlockProps) => {\n //console.log('Rendering HighlightToExternalUrlBlock', props)\n\n return (\n }\n title={props.title}\n titleAs=\"h2\"\n content={props.text &&

{props.text}

}\n />\n )\n}\n\nexport default HighlightToExternalUrlBlock\n","import { graphql } from \"gatsby\"\nimport React from \"react\"\nimport HighlightToExternalUrlBlock from \"../../molecules/tileable-blocks/HighlightToExternalUrlBlock\"\n//import * as styles from \"./DatoHighlightToExternalUrl.module.scss\"\n\nconst DatoHighlightToExternalUrl = (props: Queries.DatoHighlightToExternalUrlFragment) => {\n // console.debug('Rendering DatoHighlightToExternalUrl', props)\n return \n}\n\nexport default DatoHighlightToExternalUrl\n\nexport const query = graphql`\n fragment DatoHighlightToExternalUrl on DatoCmsHighlightToExternalUrl {\n id: originalId # Korjaus daton bugiin, jos käytetään structured textissä\n text\n title\n media {\n ...DatoMedia\n }\n url\n layout\n }\n`\n","import { Script, ScriptStrategy, graphql } from \"gatsby\"\nimport React from \"react\"\n// import * as styles from \"./DatoKlaviyoFormEmbed.module.scss\"\n\ntype DatoKlaviyoFormEmbedProps = Queries.DatoKlaviyoFormEmbedFragment\n\nconst DatoKlaviyoFormEmbed = (props: DatoKlaviyoFormEmbedProps) => {\n // console.log('Rendering DatoKlaviyoFormEmbed', props)\n return (\n
\n {\n console.error(\"Klaviyo Form external JS load failed\")\n }}\n />\n\n
\n
\n )\n}\n\nexport default DatoKlaviyoFormEmbed\n\nexport const query = graphql`\n fragment DatoKlaviyoFormEmbed on DatoCmsKlaviyoFormEmbed {\n id: originalId # Korjaus daton bugiin, jos käytetään structured textissä\n formId\n }\n`\n","// extracted by mini-css-extract-plugin\nexport var bgBrandBlack = \"BgColor-module--bgBrandBlack--4ed3e\";\nexport var bgBrandGreyWarmDark = \"BgColor-module--bgBrandGreyWarmDark--7df04\";\nexport var bgBrandGreyWarmLight = \"BgColor-module--bgBrandGreyWarmLight--b551d\";\nexport var bgBrandRed = \"BgColor-module--bgBrandRed--6a159\";\nexport var bgBrandWhite = \"BgColor-module--bgBrandWhite--60d42\";\nexport var bgSemiTransparent = \"BgColor-module--bgSemiTransparent--05bf9\";\nexport var bgTransparent = \"BgColor-module--bgTransparent--cb8c6\";","import React from \"react\"\nimport * as styles from \"./BgColor.module.scss\"\n\ntype BgColorProps = {\n color?: HarviaBackgroundColor | string\n id?: string\n className?: string\n children: React.ReactNode\n}\n\nexport type HarviaBackgroundColor =\n | \"Transparent\"\n | \"SemiTransparent\"\n | \"BrandRed\"\n | \"BrandBlack\"\n | \"BrandWhite\"\n | \"BrandGreyWarmLight\"\n | \"BrandGreyWarmDark\"\n | \"Semi Transparent\"\n | \"Brand Red\"\n | \"Brand Black\"\n | \"Brand White\"\n | \"Brand Grey Warm Light\"\n | \"Brand Grey Warm Dark\"\n\nconst BgColor = (props: BgColorProps) => {\n // console.debug(\"Rendering BgColor\", props)\n const { color = \"BrandWhite\" } = props\n\n const colorClass = color ? styles[`bg${color.replace(/\\s/g, \"\")}`] : \"\"\n\n return (\n
\n {props.children}\n
\n )\n}\n\nexport default BgColor\n","import { useContext } from \"react\"\nimport { PageContext } from \"../context/PageContext\"\nimport useArticlePath from \"./useArticlePath\"\nimport useProductPath from \"./useProductPath\"\nimport useRoutePath from \"./useRoutePath\"\nimport useSiteMetadata, { SiteMetadataLocale } from \"./useSiteMetadata\"\n\n/*\n\n https://developers.google.com/search/docs/advanced/crawling/localized-versions\n\n \n \n \n \n \n \n \n\n */\n\nexport type AlternatePaths = {\n locale: SiteMetadataLocale\n path?: string\n current: boolean\n}[]\n\nconst _store: Record = {}\n\nconst useAlternatePaths = () => {\n const page = useContext(PageContext)\n const getProductPath = useProductPath()\n const getArticlePath = useArticlePath()\n const getRoutePath = useRoutePath()\n const { locales } = useSiteMetadata()\n\n const key = page.originalId || page.sku\n\n if (!key) return []\n if (!locales) return []\n\n // ei cacheteta, että kielen vaihtaminen toimii\n //if (_store[key]) return _store[key]\n\n const alternates = locales.map(itm => {\n return {\n locale: itm,\n current: page.locale === itm.dato,\n path:\n (page.sku && getProductPath(page.sku, itm.dato)) ||\n getArticlePath(page.originalId, itm.dato) ||\n getRoutePath(page.originalId, itm.dato),\n }\n })\n\n _store[key] = alternates\n\n return _store[key]\n}\n\nexport default useAlternatePaths\n","import React from \"react\"\nimport { FaFacebookF } from \"react-icons/fa\"\nimport ExternalLink from \"../ExternalLink\"\n//import * as styles from \"./FacebookLink.module.scss\"\n\ntype FacebookLinkProps = { account?: string | null; children?: React.ReactNode }\n\nconst FacebookLink = ({ account, children }: FacebookLinkProps) => {\n //console.log('Rendering FacebookLink', props)\n if (!account) return null\n return (\n \n \n {children}\n \n )\n}\n\nexport default FacebookLink\n","import React from \"react\"\nimport { FaInstagram } from \"react-icons/fa\"\nimport ExternalLink from \"../ExternalLink\"\n//import * as styles from \"./InstagramLink.module.scss\"\n\ntype InstagramLinkProps = { account?: string | null; children?: React.ReactNode }\n\nconst InstagramLink = ({ account, children }: InstagramLinkProps) => {\n //console.log('Rendering InstagramLink', props)\n if (!account) return null\n return (\n \n \n {children}\n \n )\n}\n\nexport default InstagramLink\n","import React from \"react\"\nimport { FaLinkedin } from \"react-icons/fa\"\n//import * as styles from \"./LinkedinLink.module.scss\"\n\ntype LinkedinLinkProps = { account?: string | null; children?: React.ReactNode }\n\nconst LinkedinLink = ({ account, children }: LinkedinLinkProps) => {\n //console.log('Rendering LinkedinLink', props)\n if (!account) return null\n return (\n \n \n {children}\n \n )\n}\n\nexport default LinkedinLink\n","import React from \"react\"\nimport { FaPinterest } from \"react-icons/fa\"\nimport ExternalLink from \"../ExternalLink\"\n//import * as styles from \"./PinterestLink.module.scss\"\n\ntype PinterestLinkProps = { account?: string | null; children?: React.ReactNode }\n\nconst PinterestLink = ({ account, children }: PinterestLinkProps) => {\n //console.log('Rendering PinterestLink', props)\n if (!account) return null\n return (\n \n \n {children}\n \n )\n}\n\nexport default PinterestLink\n","import React from \"react\"\nimport { FaTwitter } from \"react-icons/fa\"\n//import * as styles from \"./TwitterLink.module.scss\"\n\ntype TwitterLinkProps = { account?: string | null; children?: React.ReactNode }\n\nconst TwitterLink = ({ account, children }: TwitterLinkProps) => {\n //console.log('Rendering TwitterLink', props)\n if (!account) return null\n return (\n \n \n {children}\n \n )\n}\n\nexport default TwitterLink\n","import React from \"react\"\nimport { FaYoutube } from \"react-icons/fa\"\nimport ExternalLink from \"../ExternalLink\"\n//import * as styles from \"./YoutubeLink.module.scss\"\n\ntype YoutubeLinkProps = { account?: string | null; children?: React.ReactNode }\n\nconst YoutubeLink = ({ account, children }: YoutubeLinkProps) => {\n //console.log('Rendering YoutubeLink', props)\n if (!account) return null\n return (\n \n \n {children}\n \n )\n}\n\nexport default YoutubeLink\n","import React, { MouseEvent } from \"react\"\n//import styles from \"./CookieConsentLink.module.scss\"\n\ndeclare global {\n interface CookiebotConsents {\n given: boolean\n preferences: boolean\n statistics: boolean\n marketing: boolean\n method?: null | \"explicit\" | \"implied\"\n }\n\n interface Window {\n Cookiebot?: {\n renew: () => void\n consent: CookiebotConsents\n }\n ldanalytics\n }\n}\n\ntype CookieConsentLinkProps = {\n children: React.ReactNode\n}\n\n/**\n * Link like element that triggers a Cookiebot event when clicked.\n * For now triggers only \"reset\" event.\n */\nconst CookieConsentLink = (props: CookieConsentLinkProps) => {\n function onResetLinkClick(_e: MouseEvent) {\n if (window.Cookiebot !== undefined) {\n window.Cookiebot.renew()\n }\n }\n\n return (\n \n {props.children}\n \n )\n}\n\nexport default CookieConsentLink\n","import { graphql } from \"gatsby\"\nimport React, { useContext } from \"react\"\nimport { PageContext } from \"../../context/PageContext\"\nimport useDatoMicrocopy from \"../../hooks/useDatoMicrocopy\"\nimport EmailLink from \"../atoms/EmailLink\"\nimport PhoneLink from \"../atoms/PhoneLink\"\nimport PostalAddress from \"../atoms/PostalAddress\"\n\nconst DatoContactLocation = (props: Queries.DatoContactLocationFragment) => {\n const { locale } = useContext(PageContext)\n const t = useDatoMicrocopy(\"contact\", locale)\n\n return (\n
\n

{props.title}

\n \n\n

\n {props.phone && (\n <>\n \n
\n \n )}\n {props.email && }\n

\n
\n )\n}\n\nexport default DatoContactLocation\n\nexport const quert = graphql`\n fragment DatoContactLocation on DatoCmsContactLocation {\n title\n description\n phone\n email\n faxNumber\n postOfficeBoxNumber\n streetAddress\n postalCode\n addressRegion\n addressLocality\n addressCountry\n availabilityDetails\n callRates\n }\n`\n","// extracted by mini-css-extract-plugin\nexport var bottomContent = \"pageFooter-module--bottomContent--2a73c\";\nexport var container = \"pageFooter-module--container--57ebd\";\nexport var footerItem = \"pageFooter-module--footerItem--3a859\";\nexport var linkList = \"pageFooter-module--linkList--444ca\";\nexport var mainContent = \"pageFooter-module--mainContent--12e29\";\nexport var someLinks = \"pageFooter-module--someLinks--f90cc\";","import { graphql } from \"gatsby\"\nimport React from \"react\"\nimport useWebsite from \"../../../hooks/useWebsite\"\nimport FacebookLink from \"../../atoms/accountlinks/FacebookLink\"\nimport InstagramLink from \"../../atoms/accountlinks/InstagramLink\"\nimport LinkedinLink from \"../../atoms/accountlinks/LinkedinLink\"\nimport PinterestLink from \"../../atoms/accountlinks/PinterestLink\"\nimport TwitterLink from \"../../atoms/accountlinks/TwitterLink\"\nimport YoutubeLink from \"../../atoms/accountlinks/YoutubeLink\"\nimport CookieConsentLink from \"../../atoms/CookieConsentLink\"\nimport DatoContactLocation from \"../../dato/DatoContactLocation\"\nimport DatoContentModules from \"../../dato/DatoContentModules\"\nimport DatoLinkList from \"../../dato/DatoLinkList\"\nimport DatoLinkToRecord from \"../../dato/DatoLinkToRecord\"\nimport * as styles from \"./pageFooter.module.scss\"\n\nconst PageFooter = (props: Queries.DatoFooterFragment) => {\n //console.log(\"Rendering PageFooter\", props)\n const website = useWebsite()\n\n return (\n <>\n \n
\n
\n
\n {props.footerItems?.map(itm => {\n if (!itm) return null\n switch (itm.__typename) {\n case \"DatoCmsLinkList\":\n return (\n
\n \n
\n )\n\n case \"DatoCmsContactLocation\":\n return (\n \n \n
\n )\n\n case \"DatoCmsAccountSet\":\n return (\n
\n

{itm.title}

\n
\n \n \n \n \n \n \n
\n
\n )\n\n default:\n return null\n }\n })}\n
\n
\n \n © {new Date().getFullYear()} {website?.title || \"Harvia\"}\n \n \n {/* \n
\n
\n \n \n )\n}\n\nexport default PageFooter\n\nexport const query = graphql`\n fragment DatoFooter on DatoCmsFooter {\n content {\n ... on Node {\n key: id\n __typename\n }\n ...DatoCtaRef\n }\n footerItems {\n ... on Node {\n id\n __typename\n }\n ... on DatoCmsLinkList {\n id\n ...DatoLinkList\n }\n\n ... on DatoCmsContactLocation {\n id\n ...DatoContactLocation\n }\n\n ... on DatoCmsAccountSet {\n id\n title\n facebook\n twitter\n instagram\n pinterest\n linkedin\n youtube\n }\n }\n bottomLinks {\n ...DatoLinkList\n }\n }\n`\n","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMi4wLjEsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAxMjcuNiAxMjcuNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTI3LjYgMTI3LjY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQoJLnN0MHtmaWxsOiNFQTAwMjk7fQ0KCS5zdDF7ZmlsbDojRkZGRkZGO30NCjwvc3R5bGU+DQo8Zz4NCgk8Zz4NCgkJPHJlY3QgeD0iMCIgeT0iLTAuMSIgY2xhc3M9InN0MCIgd2lkdGg9IjEyNy42IiBoZWlnaHQ9IjEyOCIvPg0KCQk8Zz4NCgkJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01Mi44LDUyYy01LDAtOC41LDAuNS0xMS4xLDEuM2MtMywxLTQuNywyLjYtNi4zLDQuN2MtMi44LDMuOC00LjksMTAuOC01LjEsMTcuNWg2LjRjMCwwLTAuNS0yLjQsMC01LjRoNQ0KCQkJCWgwLjhsLTAuOCwzLjRsLTAuNSwyLjFoMC41aDUuNEw1Mi44LDUyTDUyLjgsNTJ6IE00NS40LDU4LjNsLTEuNSw2LjJsLTIuMiwwSDM4YzAuOS0yLjQsMi4xLTQuMSwzLjctNS4yDQoJCQkJQzQyLjgsNTguNyw0NC4xLDU4LjMsNDUuNCw1OC4zTDQ1LjQsNTguM3oiLz4NCgkJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xMTYuOSw1MmMtNSwwLTguNSwwLjUtMTEuMSwxLjNjLTMsMS00LjcsMi42LTYuMyw0LjdjLTIuOCwzLjgtNC45LDEwLjgtNSwxNy41aDYuNGMwLDAtMC41LTIuNCwwLTUuNGg1DQoJCQkJaDAuOGwtMC44LDMuNGwtMC41LDIuMWgwLjVoNS40TDExNi45LDUyTDExNi45LDUyeiBNMTA5LjUsNTguM2wtMS41LDYuMmgtMi4ybC0zLjcsMGMwLjgtMi40LDIuMS00LjEsMy43LTUuMg0KCQkJCUMxMDYuOSw1OC43LDEwOC4yLDU4LjMsMTA5LjUsNTguM0wxMDkuNSw1OC4zeiIvPg0KCQkJPHBvbHlnb24gY2xhc3M9InN0MSIgcG9pbnRzPSIxNi40LDUyLjEgMjIuMyw1Mi4xIDIwLjEsNjEuNCAyNS41LDYxLjQgMjcuNyw1Mi4xIDMzLjYsNTIuMSAyOCw3NS41IDIyLjEsNzUuNSAyNC4xLDY3LjEgDQoJCQkJMTguNyw2Ny4xIDE2LjcsNzUuNSAxMC44LDc1LjUgMTYuNCw1Mi4xIAkJCSIvPg0KCQkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTU1LjUsNTIuMWwtNS42LDIzLjVsNiwwTDYwLDU4LjNjMi44LDAsNCwwLDQuMiwwLjZjMC41LDEuOS0wLjgsMi41LTUsNS40bDEuNSwxMS4yaDYuOGwtMi4zLTkuMg0KCQkJCWMzLjUtMi42LDQuOS00LjUsNS40LTcuOWMwLjctNC41LTMuNi02LjQtNi40LTYuNEg1NS41TDU1LjUsNTIuMXoiLz4NCgkJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iNzEuNCw1Mi4xIDcyLjMsNzUuNSA3OSw3NS41IDkxLjMsNTIuMSA4NC41LDUyLjEgNzcuNiw2Ny4zIDc4LjIsNTIuMSA3MS40LDUyLjEgCQkJIi8+DQoJCQk8cG9seWdvbiBjbGFzcz0ic3QxIiBwb2ludHM9IjkxLjcsNTIuMSA5Ny43LDUyLjEgOTIsNzUuNSA4Ni4xLDc1LjUgOTEuNyw1Mi4xIAkJCSIvPg0KCQk8L2c+DQoJPC9nPg0KCTxnPg0KCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzguOSw5Ny4xYy0wLjIsMC0wLjMtMC4xLTAuNS0wLjFjLTAuMi0wLjEtMC41LTAuMS0wLjktMC4xYy0xLjEsMC0xLjcsMC41LTEuNywxLjFjMCwwLjgsMC44LDEsMS43LDEuNA0KCQkJYzAuOCwwLjQsMS43LDAuOSwxLjcsMi4xYzAsMS43LTEuNCwyLjUtMy4zLDIuNWMtMC42LDAtMS4yLTAuMS0xLjctMC4zYy0wLjMtMC4xLTAuNC0wLjMtMC40LTAuNmMwLTAuMywwLjItMC42LDAuNi0wLjYNCgkJCWMwLjIsMCwwLjMsMC4xLDAuNiwwLjJjMC4yLDAuMSwwLjYsMC4yLDEuMSwwLjJjMS40LDAsMi0wLjYsMi0xLjNjMC0wLjgtMS0xLjEtMS45LTEuNWMtMC44LTAuNC0xLjUtMC45LTEuNS0yDQoJCQljMC0xLjYsMS40LTIuNCwzLTIuNGMwLjYsMCwxLjEsMC4xLDEuNSwwLjNjMC4zLDAuMSwwLjQsMC4zLDAuNCwwLjVDMzkuNSw5Ni44LDM5LjMsOTcuMSwzOC45LDk3LjF6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik00NC45LDk5bC0wLjcsMy40Yy0wLjEsMC40LDAsMC41LDAuMiwwLjZjMC4xLDAuMSwwLjIsMC4zLDAuMSwwLjRjLTAuMSwwLjMtMC40LDAuNS0wLjcsMC41DQoJCQljLTAuMiwwLTAuNC0wLjEtMC42LTAuMmMtMC4xLDAtMC4xLTAuMS0wLjEtMC4yYy0wLjQsMC4zLTAuOSwwLjQtMS40LDAuNGMtMS4xLDAtMS43LTAuNy0xLjctMS43YzAtMC4yLDAtMC42LDAuMS0wLjlsMC4xLTAuOA0KCQkJYzAuMS0wLjksMC40LTEuNSwwLjktMS45YzAuNC0wLjMsMC44LTAuNSwxLjUtMC41YzAuNCwwLDAuOSwwLjEsMS4yLDAuNGMwLjEtMC4yLDAuMy0wLjQsMC42LTAuNGMwLjMsMCwwLjYsMC4yLDAuNiwwLjUNCgkJCUM0NSw5OC44LDQ1LDk4LjksNDQuOSw5OXogTTQzLjEsMTAyLjVjMC0wLjIsMC4xLTAuMywwLjEtMC41bDAuNS0yLjRjLTAuMi0wLjItMC42LTAuNC0wLjktMC40Yy0wLjQsMC0wLjYsMC4xLTAuOCwwLjMNCgkJCWMtMC4zLDAuMi0wLjQsMC42LTAuNSwxbC0wLjIsMS4yYzAsMC4xLDAsMC4zLDAsMC40YzAsMC41LDAuMywwLjgsMC44LDAuOEM0Mi40LDEwMi45LDQyLjcsMTAyLjcsNDMuMSwxMDIuNXoiLz4NCgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTUwLjksOTlsLTAuNiwzLjNjMCwwLjEsMCwwLjMsMCwwLjRjMCwwLjQsMC4zLDAuNCwwLjMsMC43YzAsMC40LTAuMywwLjYtMC43LDAuNmMtMC4yLDAtMC4zLTAuMS0wLjQtMC4yDQoJCQljLTAuMS0wLjEtMC4yLTAuMy0wLjMtMC40Yy0wLjUsMC4zLTEsMC42LTEuNiwwLjZjLTEuMSwwLTEuNy0wLjYtMS43LTEuNmMwLTAuMywwLTAuNiwwLjEtMC44bDAuNS0yLjhjMC4xLTAuNCwwLjMtMC42LDAuNi0wLjYNCgkJCWMwLjMsMCwwLjYsMC4yLDAuNiwwLjZjMCwwLjEsMCwwLjIsMCwwLjNsLTAuNSwyLjRjMCwwLjItMC4xLDAuNC0wLjEsMC42YzAsMC41LDAuMywwLjgsMC43LDAuOGMwLjQsMCwwLjgtMC4yLDEuMi0wLjRsMC43LTMuNw0KCQkJYzAuMS0wLjQsMC4zLTAuNiwwLjYtMC42YzAuMywwLDAuNiwwLjIsMC42LDAuNkM1MC45LDk4LjgsNTAuOSw5OC45LDUwLjksOTl6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01Ni43LDEwMC41bC0wLjYsMi44Yy0wLjEsMC40LTAuMywwLjYtMC42LDAuNmMtMC4zLDAtMC42LTAuMi0wLjYtMC42YzAtMC4xLDAtMC4yLDAtMC4zbDAuNS0yLjUNCgkJCWMwLTAuMiwwLjEtMC40LDAuMS0wLjVjMC0wLjUtMC4yLTAuOC0wLjctMC44Yy0wLjQsMC0wLjksMC4yLTEuMiwwLjVsLTAuNywzLjZjLTAuMSwwLjQtMC4zLDAuNi0wLjYsMC42Yy0wLjMsMC0wLjYtMC4yLTAuNi0wLjYNCgkJCWMwLTAuMSwwLTAuMiwwLTAuM2wwLjYtMy4yYzAtMC4xLDAtMC4zLDAtMC40YzAtMC40LTAuMy0wLjQtMC4zLTAuN2MwLTAuNCwwLjMtMC42LDAuNy0wLjZjMC4xLDAsMC4zLDAuMSwwLjQsMC4yDQoJCQljMC4xLDAuMSwwLjIsMC4yLDAuMiwwLjRjMC41LTAuMywxLjEtMC42LDEuNy0wLjZjMS4xLDAsMS41LDAuNywxLjUsMS42QzU2LjcsMTAwLDU2LjcsMTAwLjMsNTYuNywxMDAuNXoiLz4NCgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTYyLjYsOTlsLTAuNywzLjRjLTAuMSwwLjQsMCwwLjUsMC4yLDAuNmMwLjEsMC4xLDAuMiwwLjMsMC4xLDAuNGMtMC4xLDAuMy0wLjQsMC41LTAuNywwLjUNCgkJCWMtMC4yLDAtMC40LTAuMS0wLjYtMC4yYy0wLjEsMC0wLjEtMC4xLTAuMS0wLjJjLTAuNCwwLjMtMC45LDAuNC0xLjQsMC40Yy0xLjEsMC0xLjctMC43LTEuNy0xLjdjMC0wLjIsMC0wLjYsMC4xLTAuOWwwLjEtMC44DQoJCQljMC4xLTAuOSwwLjQtMS41LDAuOS0xLjljMC40LTAuMywwLjgtMC41LDEuNS0wLjVjMC40LDAsMC45LDAuMSwxLjIsMC40YzAuMS0wLjIsMC4zLTAuNCwwLjYtMC40YzAuMywwLDAuNiwwLjIsMC42LDAuNQ0KCQkJQzYyLjYsOTguOCw2Mi42LDk4LjksNjIuNiw5OXogTTYwLjcsMTAyLjVjMC0wLjIsMC4xLTAuMywwLjEtMC41bDAuNS0yLjRjLTAuMi0wLjItMC42LTAuNC0wLjktMC40Yy0wLjQsMC0wLjYsMC4xLTAuOCwwLjMNCgkJCWMtMC4zLDAuMi0wLjQsMC42LTAuNSwxbC0wLjIsMS4yYzAsMC4xLDAsMC4zLDAsMC40YzAsMC41LDAuMywwLjgsMC44LDAuOEM2MCwxMDIuOSw2MC40LDEwMi43LDYwLjcsMTAyLjV6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik03Mi44LDEwMC44Yy0wLjIsMC42LTAuNCwxLjEtMC44LDEuNmwwLjQsMC43YzAuMSwwLjEsMC4xLDAuMiwwLjEsMC40YzAsMC4zLTAuMywwLjYtMC42LDAuNg0KCQkJYy0wLjIsMC0wLjQtMC4xLTAuNS0wLjNsLTAuMy0wLjRjLTAuNiwwLjUtMS4zLDAuNy0yLjEsMC43Yy0xLjQsMC0yLjItMS0yLjItMi4xYzAtMS40LDEuMS0yLjEsMi0yLjZjLTAuNC0wLjYtMC41LTEtMC41LTEuNQ0KCQkJYzAtMS4yLDAuOS0yLjEsMi4xLTIuMWMwLjUsMCwwLjksMC4xLDEuMiwwLjNjMC40LDAuMiwwLjUsMC41LDAuNiwwLjdjMCwwLjMtMC4yLDAuNi0wLjUsMC42Yy0wLjIsMC0wLjQtMC4xLTAuNi0wLjMNCgkJCWMtMC4yLTAuMS0wLjQtMC4yLTAuNy0wLjJjLTAuNCwwLTAuOSwwLjMtMC45LDAuOWMwLDAuMywwLjIsMC43LDAuNCwxLjFsMS40LDIuNGMwLjItMC40LDAuNC0wLjgsMC41LTEuMg0KCQkJYzAuMS0wLjMsMC4zLTAuNCwwLjUtMC40YzAuNCwwLDAuNiwwLjIsMC42LDAuNUM3Mi45LDEwMC4zLDcyLjksMTAwLjUsNzIuOCwxMDAuOHogTTY5LjMsMTAwLjFjLTAuOCwwLjUtMS4zLDEtMS4zLDEuNg0KCQkJYzAsMC42LDAuNCwxLjEsMS4xLDEuMWMwLjYsMCwxLjEtMC4yLDEuNS0wLjZMNjkuMywxMDAuMXoiLz4NCgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTgyLjIsOTcuMWMtMC4yLDAtMC4zLTAuMS0wLjUtMC4xYy0wLjItMC4xLTAuNS0wLjEtMC45LTAuMWMtMS4xLDAtMS43LDAuNS0xLjcsMS4xYzAsMC44LDAuOCwxLDEuNywxLjQNCgkJCWMwLjgsMC40LDEuNywwLjksMS43LDIuMWMwLDEuNy0xLjQsMi41LTMuMywyLjVjLTAuNiwwLTEuMi0wLjEtMS43LTAuM2MtMC4zLTAuMS0wLjQtMC4zLTAuNC0wLjZjMC0wLjMsMC4yLTAuNiwwLjYtMC42DQoJCQljMC4yLDAsMC4zLDAuMSwwLjYsMC4yYzAuMiwwLjEsMC42LDAuMiwxLjEsMC4yYzEuNCwwLDItMC42LDItMS4zYzAtMC44LTEtMS4xLTEuOS0xLjVjLTAuOC0wLjQtMS41LTAuOS0xLjUtMg0KCQkJYzAtMS42LDEuNC0yLjQsMy0yLjRjMC42LDAsMS4xLDAuMSwxLjUsMC4zYzAuMywwLjEsMC40LDAuMywwLjQsMC41QzgyLjcsOTYuOCw4Mi41LDk3LjEsODIuMiw5Ny4xeiIvPg0KCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNODYuNSw5OC4xYzEuMSwwLDEuNywwLjYsMS43LDEuN2MwLDAuMy0wLjEsMC43LTAuMSwxbC0wLjIsMC44Yy0wLjMsMS41LTAuOSwyLjMtMi40LDIuMw0KCQkJYy0wLjQsMC0wLjgtMC4xLTEuMS0wLjNsLTAuMywxLjdjLTAuMSwwLjQtMC4zLDAuNi0wLjYsMC42Yy0wLjMsMC0wLjYtMC4yLTAuNi0wLjZjMC0wLjEsMC0wLjIsMC4xLTAuM2wxLTUuMmMwLTAuMSwwLTAuMywwLTAuNA0KCQkJYzAtMC40LTAuMy0wLjQtMC4zLTAuN2MwLTAuNCwwLjMtMC42LDAuNy0wLjZjMC4yLDAsMC4zLDAuMSwwLjUsMC4yYzAuMSwwLjEsMC4yLDAuMiwwLjIsMC4zQzg1LjMsOTguNCw4NS44LDk4LjEsODYuNSw5OC4xeg0KCQkJIE04Ni4xLDk5LjJjLTAuNCwwLTAuOCwwLjItMS4xLDAuNWwtMC42LDIuOWMwLjIsMC4yLDAuNSwwLjMsMC44LDAuM2MwLjksMCwxLjItMC43LDEuMy0xLjVsMC4yLTAuOWMwLjEtMC4zLDAuMS0wLjQsMC4xLTAuNg0KCQkJQzg2LjksOTkuNiw4Ni43LDk5LjIsODYuMSw5OS4yeiIvPg0KCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNOTMuOSw5OWwtMC43LDMuNGMtMC4xLDAuNCwwLDAuNSwwLjIsMC42YzAuMSwwLjEsMC4yLDAuMywwLjEsMC40Yy0wLjEsMC4zLTAuNCwwLjUtMC43LDAuNQ0KCQkJYy0wLjIsMC0wLjQtMC4xLTAuNi0wLjJjLTAuMSwwLTAuMS0wLjEtMC4xLTAuMmMtMC40LDAuMy0wLjksMC40LTEuNCwwLjRjLTEuMSwwLTEuNy0wLjctMS43LTEuN2MwLTAuMiwwLTAuNiwwLjEtMC45bDAuMS0wLjgNCgkJCWMwLjEtMC45LDAuNC0xLjUsMC45LTEuOWMwLjQtMC4zLDAuOC0wLjUsMS41LTAuNWMwLjQsMCwwLjksMC4xLDEuMiwwLjRjMC4xLTAuMiwwLjMtMC40LDAuNi0wLjRjMC4zLDAsMC42LDAuMiwwLjYsMC41DQoJCQlDOTMuOSw5OC44LDkzLjksOTguOSw5My45LDk5eiBNOTIsMTAyLjVjMC0wLjIsMC4xLTAuMywwLjEtMC41bDAuNS0yLjRjLTAuMi0wLjItMC42LTAuNC0wLjktMC40Yy0wLjQsMC0wLjYsMC4xLTAuOCwwLjMNCgkJCWMtMC4zLDAuMi0wLjQsMC42LTAuNSwxbC0wLjIsMS4yYzAsMC4xLDAsMC4zLDAsMC40YzAsMC41LDAuMywwLjgsMC44LDAuOEM5MS40LDEwMi45LDkxLjcsMTAyLjcsOTIsMTAyLjV6Ii8+DQoJPC9nPg0KPC9nPg0KPC9zdmc+DQo=\"","// extracted by mini-css-extract-plugin\nexport var hasCurrentPage = \"NavLink-module--hasCurrentPage--10682\";\nexport var hoverHelper = \"NavLink-module--hoverHelper--43a1e\";\nexport var isCurrentPage = \"NavLink-module--isCurrentPage--4ca47\";\nexport var linkRow = \"NavLink-module--linkRow--c2a76\";\nexport var navlink = \"NavLink-module--navlink--bcee5\";\nexport var open = \"NavLink-module--open--89996\";\nexport var subnav1 = \"NavLink-module--subnav-1--25f27\";\nexport var subnav2 = \"NavLink-module--subnav-2--6bb4b\";\nexport var subnav3 = \"NavLink-module--subnav-3--d76c7\";\nexport var subnav4 = \"NavLink-module--subnav-4--1b88c\";","import tokens from \"@nitro/harvia-style-dictionary/tokens/base.json\"\nimport React, { useEffect, useRef, useState } from \"react\"\nimport { IoIosArrowDown, IoIosArrowUp } from \"react-icons/io\"\nimport { CSSTransition } from \"react-transition-group\"\nimport { isBrowser } from \"../../../utils\"\nimport * as styles from \"./NavLink.module.scss\"\nimport NavLinks, { NavLinkNode } from \"./NavLinks\"\n\ntype NavLinkProps = {\n level: number\n subLinks: NavLinkNode[]\n link: JSX.Element\n isCurrentPage?: boolean\n hasCurrentPage?: boolean\n}\n\nconst NavLink = (props: NavLinkProps) => {\n // console.debug(\"rendering NavLink\", props)\n\n const { level, hasCurrentPage = false, isCurrentPage = false, subLinks } = props\n\n const [isOpen, setOpen] = useState(props.level > 1 && hasCurrentPage)\n\n const thisItem = useRef(null)\n\n const onOpenClick = (/*e: React.MouseEvent*/): void => {\n // timeout, jotta avattava navigaatio ei heti sulkeudu windowClickHandlerin kautta\n const val = !isOpen\n setTimeout(() => {\n setOpen(val)\n }, 0)\n }\n\n useEffect(() => {\n function windowClickHandler(e: MouseEvent): void {\n if (!isOpen) {\n return\n }\n // find if clicked inside current nav tree, else close navigation\n let navClick = false\n let cur = e.target as HTMLElement\n while (cur) {\n //console.log(cur);\n if (cur === thisItem.current) {\n navClick = true\n break\n }\n cur = cur.parentElement as HTMLElement\n }\n\n if (!navClick) setOpen(false)\n }\n function windowKeyboardHandler(e: KeyboardEvent) {\n if (isOpen && e.key === \"Escape\") {\n setOpen(false)\n }\n }\n\n window.addEventListener(\"keydown\", windowKeyboardHandler)\n window.addEventListener(\"click\", windowClickHandler)\n\n return (): void => {\n window.removeEventListener(\"keydown\", windowKeyboardHandler)\n window.removeEventListener(\"click\", windowClickHandler)\n }\n }, [level, thisItem, isOpen])\n\n const hasSubnav = subLinks && subLinks.length > 0\n\n const hoverToggle =\n hasSubnav && props.level === 1 && isBrowser && window.innerWidth > parseFloat(tokens.breakpoint.md.value)\n\n return (\n hoverToggle && setOpen(true)}\n onMouseLeave={() => hoverToggle && setOpen(false)}>\n \n {props.link}\n {hasSubnav && (\n \n )}\n \n\n {hoverToggle &&
setOpen(false)}>
}\n\n {/* unmountOnExit = ssr tilassa renderoidaan kaikki linkit, selamella renderoidaan vain näkyvät */}\n \n
    \n {}\n
\n
\n \n )\n}\n\nexport default NavLink\n","import React from \"react\"\n\nimport NavLink from \"./NavLink\"\n\nexport type NavLinkNode = {\n readonly id: string\n readonly subLinks: NavLinkNode[]\n readonly link: JSX.Element\n readonly isCurrentPage?: boolean\n readonly hasCurrentPage?: boolean\n readonly position: number\n}\n\ntype NavLinksProps = {\n nodes: NavLinkNode[]\n level: number\n}\n\nconst NavLinks = ({ nodes, level }: NavLinksProps) => {\n // console.debug(\"Rendering NavLinks\", nodes)\n\n return <>{nodes.map(node => node && )}\n}\n\nexport default NavLinks\n","import React, { useEffect, useRef, useState } from \"react\"\n//import { useTranslation } from \"react-i18next\"\nimport { IoMdMenu } from \"react-icons/io\"\nimport * as styles from \"./MainNav.module.scss\"\nimport NavLinks, { NavLinkNode } from \"./NavLinks\"\n\ntype MainNavProps = {\n menuTree: NavLinkNode[]\n labelOpen: string\n labelClose: string\n}\n\nconst MainNav = (props: MainNavProps) => {\n // console.debug(\"Rendering MainNav\", props)\n\n const navRef = useRef(null)\n const [isOpen, setOpen] = useState(false)\n\n useEffect(() => {\n function mainNavOutsideCloseHandler(e: MouseEvent): void {\n // suljetaan navi jos klikattu sen ulkpouolelle\n if (navRef.current && !navRef.current.contains(e.target as HTMLElement)) {\n setOpen(false)\n }\n }\n\n document.addEventListener(\"click\", mainNavOutsideCloseHandler)\n return (): void => {\n document.removeEventListener(\"click\", mainNavOutsideCloseHandler)\n }\n }, [navRef])\n\n if (!props.menuTree) {\n return null\n }\n\n const clickHandler = (e: React.MouseEvent): void => {\n e.preventDefault()\n setOpen(!isOpen)\n }\n\n return (\n \n )\n}\n\nexport default MainNav\n","// extracted by mini-css-extract-plugin\nexport var closed = \"MainNav-module--closed--b6025\";\nexport var container = \"MainNav-module--container--89633\";\nexport var list = \"MainNav-module--list--4d797\";\nexport var menuToggle = \"MainNav-module--menuToggle--ff8d0\";\nexport var onlyMobile = \"MainNav-module--onlyMobile--6426b\";\nexport var open = \"MainNav-module--open--c72f3\";","import { Link, graphql } from \"gatsby\"\nimport React, { useContext } from \"react\"\nimport { IoIosArrowForward } from \"react-icons/io\"\nimport { PageContext } from \"../../context/PageContext\"\nimport useDatoMicrocopy from \"../../hooks/useDatoMicrocopy\"\nimport useRoutePath from \"../../hooks/useRoutePath\"\nimport { findRecursive } from \"../../utils\"\nimport ExternalLink from \"../atoms/ExternalLink\"\nimport MainNav from \"../organisms/pageHeader/MainNav\"\nimport { NavLinkNode } from \"../organisms/pageHeader/NavLinks\"\n\ntype RequiredNotNull = {\n [P in keyof T]: NonNullable\n}\n\ntype Ensure = T & Required>>\ntype Mutable = { -readonly [Key in keyof Type]: Type[Key] }\n\ntype DatoMainNavTreeNode = NonNullable[number]\n\ntype ValidMainNavNode = Ensure, \"label\"> & { hidden: false }\n\n/**\n * Filter logic of a Menu Item node\n * @param node\n * @returns\n */\nfunction filterMenuItemNode(node: DatoMainNavTreeNode): node is ValidMainNavNode {\n // menu items must have a user visible label\n if (!node?.label) {\n return false // exclude from menu\n }\n // menu items can be marked as \"hidden\" in DatoCMS. Those should not be included.\n if (node.hidden === true) {\n return false\n }\n // pass the filtering and include in the menu\n return true\n}\n\n/**\n * Recursive filtering an sorting of Menu tree nodes.\n * Removes nodes that don't pass `filterMenuItemNode()` and sorts nodes by `position` property.\n *\n * @param nodes -- Menu items\n * @param getRotuePath -- Function to resolve URL path from current menu item data\n * @param routeId -- Current page route record ID used to\n * @returns\n */\nfunction parseTree(\n nodes: readonly DatoMainNavTreeNode[],\n getRoutePath: (routeId: string) => string | undefined,\n routeId?: string\n): NavLinkNode[] {\n if (nodes === null) {\n return []\n }\n // console.debug(\"Parsing MainMenu tree\", nodes)\n\n return nodes\n .reduce((res, node) => {\n if (!filterMenuItemNode(node)) {\n return res // nothing to do for this node so return our current progress\n }\n // recurse into next level of menu tree and handle childs first\n const subLinks = parseTree(node?.nodes || [], getRoutePath, routeId)\n\n // contruct a NavLinkNode with filtered child nodes, add the new object to result\n let link: React.JSX.Element\n if (node.route?.originalId) {\n const path = getRoutePath(node.route.originalId) + (node.urlParams ? node.urlParams : \"\")\n link = {node.label}\n } else if (node.externalUrl) {\n link = (\n \n {node.label} \n \n )\n } else {\n console.warn(\"Failed to create MainNav link from Menu Item\", node)\n return res\n }\n\n const navLink: NavLinkNode = {\n id: node.id,\n subLinks,\n link,\n // modifies UI to show this menu has the current your're on under it if true\n hasCurrentPage: !!findRecursive(\n // cast to mutable because `findRecursive()` infers types... somehow\n node.nodes as Mutable,\n (node: DatoMainNavTreeNode) => node?.route?.originalId === routeId,\n \"nodes\"\n ),\n // modifies UI to higlight this item if true\n isCurrentPage: node.route?.originalId === routeId,\n position: node.position || 0,\n }\n res.push(navLink)\n return res\n }, [])\n .sort((a, b) => a.position - b.position)\n}\n\nconst DatoMainNav = (props: Queries.DatoMainNavTreeFragment) => {\n const { locale, originalId } = useContext(PageContext)\n const t = useDatoMicrocopy(\"common\", locale)\n const getRoutePath = useRoutePath()\n if (!props.nodes) {\n return null\n }\n\n const nodes = parseTree(props.nodes, (routeId: string) => getRoutePath(routeId, locale), originalId)\n\n return \n}\n\nexport default DatoMainNav\n\nexport const query = graphql`\n fragment DatoMenuItem on DatoCmsMenuItem {\n id: originalId\n route {\n originalId\n }\n externalUrl\n urlParams\n label\n position\n hidden\n }\n fragment DatoMainNavTree on DatoCmsMenuItem {\n nodes: treeChildren {\n # first level after root node, the one with products, contacts, sauna etc routes\n ...DatoMenuItem\n nodes: treeChildren {\n ...DatoMenuItem\n nodes: treeChildren {\n ...DatoMenuItem\n nodes: treeChildren {\n ...DatoMenuItem\n }\n }\n }\n }\n }\n`\n","// extracted by mini-css-extract-plugin\nexport var atTop = \"PageHeader-module--atTop--98821\";\nexport var container = \"PageHeader-module--container--4623b\";\nexport var content = \"PageHeader-module--content--e18b7\";\nexport var logo = \"PageHeader-module--logo--da63d\";\nexport var nav = \"PageHeader-module--nav--ab839\";","import React from \"react\"\nimport { IoGlobeOutline, IoSearchSharp } from \"react-icons/io5\"\nimport { useLocaleDialog } from \"../../../context/LocaleDialogContext\"\nimport { usePageLocale } from \"../../../context/PageContext\"\nimport { useUserPreferences } from \"../../../context/UserContext\"\nimport useDatoMicrocopy from \"../../../hooks/useDatoMicrocopy\"\nimport useRoutePath from \"../../../hooks/useRoutePath\"\nimport Button from \"../../atoms/Button\"\nimport { getLangTitle, getLocaleAreaTitle } from \"../localeDialog/localeLabels\"\nimport * as styles from \"./TopNav.module.scss\"\n\n// type TopNavProps = {}\n\nconst TopNav = (/* props: TopNavProps */) => {\n const locale = usePageLocale()\n const userPrefs = useUserPreferences()\n const [, setLocaleDialogOpen] = useLocaleDialog()\n\n const t = useDatoMicrocopy(\"common\", locale)\n //const { productRoot_originalId } = React.useContext(PageContext)\n // tuotehakusivu\n const getRoutePath = useRoutePath()\n const productPagePath = getRoutePath(\"19682286\", locale)\n\n /**\n * Show actual page locale as users language here because that's what's actually used everywhere.\n * Re-evaluate when User Preferences vs. Page locale conflicts are resovled somehow.\n */\n const language = locale || userPrefs.language // TODO `locale` is always set here?\n\n return (\n \n )\n}\n\nexport default TopNav\n","// extracted by mini-css-extract-plugin\nexport var container = \"TopNav-module--container--879dc\";\nexport var findProducts = \"TopNav-module--findProducts--17b6c\";\nexport var langSelect = \"TopNav-module--langSelect--e2b9c\";\nexport var location = \"TopNav-module--location--fe4d4\";\nexport var searchIcon = \"TopNav-module--searchIcon--991ce\";","import { Link } from \"gatsby\"\nimport React, { useEffect, useState } from \"react\"\nimport useRoutePath from \"../../../hooks/useRoutePath\"\nimport useWebsite from \"../../../hooks/useWebsite\"\nimport logo from \"../../../images/Harvia_sauna_spa-logo.svg\"\nimport DatoMainNav from \"../../dato/DatoMainNav\"\nimport * as styles from \"./PageHeader.module.scss\"\nimport TopNav from \"./TopNav\"\n\ntype PageHeaderProps = { mainMenu?: Queries.DatoMainNavTreeFragment | null }\n\nconst PageHeader = (props: PageHeaderProps) => {\n //console.log('Rendering PageHeader', props)\n\n const [atTop, setAtTop] = useState(true)\n\n const getRoutePath = useRoutePath()\n const frontPageUrl = getRoutePath(useWebsite().rootRoute?.originalId)\n\n useEffect(() => {\n function onScroll(_: Event) {\n const scrollTop = !(document.body.scrollTop || document.documentElement.scrollTop)\n if (scrollTop !== atTop) setAtTop(scrollTop)\n }\n\n document.addEventListener(\"scroll\", onScroll)\n return () => {\n document.removeEventListener(\"scroll\", onScroll)\n }\n })\n\n return (\n
\n
\n {frontPageUrl ? (\n \n \"Harvia\n \n ) : (\n
\n \"Harvia\n
\n )}\n
\n \n {props.mainMenu && }\n
\n
\n
\n )\n}\n\nexport default PageHeader\n","import { graphql, useStaticQuery } from \"gatsby\"\nimport { HelmetDatoCms, HelmetDatoCmsTags } from \"gatsby-source-datocms\"\nimport React, { useContext, useEffect, useRef } from \"react\"\nimport { PageContext } from \"../../context/PageContext\"\nimport useAlternatePaths from \"../../hooks/useAlternatePaths\"\nimport \"../../styles/default.scss\"\nimport PageFooter from \"../organisms/pageFooter/pageFooter\"\nimport PageHeader from \"../organisms/pageHeader/PageHeader\"\nimport * as styles from \"./DefaultLayout.module.scss\"\n\ntype DefaultLayoutProps = {\n mainMenu?: Queries.DatoMainNavTreeFragment | null\n seoMetaTags: HelmetDatoCmsTags\n footer?: Queries.DatoFooterFragment | null\n children: React.ReactNode\n}\n\nconst SITE_URL = \"https://www.harvia.com\"\nconst WEBSITE_TITLE = \"Harvia\"\n\nconst DefaultLayout = (props: DefaultLayoutProps) => {\n // console.debug(\"Rendering DefaultLayout\", props)\n const { locale, localePim } = useContext(PageContext)\n const alternates = useAlternatePaths()\n\n const data = useStaticQuery(graphql`\n query DefaultLayout {\n datoCmsSite {\n faviconMetaTags {\n tags\n }\n }\n }\n `)\n\n /** Daton seoMetaTags.tags tuottaa vääränlaisen og:locale -tagin jos Datossa käytössä yksiosainen locale.\n * Poistetaan tai käytetään localePim:ä kunnes toimiva korjaus löytyy.\n * Ei tiedossa paljonko tällä vaikutusta hakukoneiden toimintaan.\n * */\n const fixedTags =\n props.seoMetaTags?.tags &&\n props.seoMetaTags.tags\n .map(tag => {\n if (tag.attributes?.property !== \"og:locale\") return tag // ei og:locale tagi\n\n const lOrig = tag.attributes.content.split(\"_\") // \"sv_SV\"\n\n if (lOrig[0] !== lOrig[1].toLowerCase()) return tag // alkuperäinen on oikeassa muodossa\n\n const lPim = localePim.split(\"-\") // \"sv-SE\"\n\n // käytetään localePim:iä, koska sama kieli\n if (lPim[0] === lOrig[0]) {\n tag.attributes.content = lPim.join(\"_\") // https://ogp.me/ => oikea formaatti: sv_SE\n return tag\n }\n\n // eri kieli ja mahdollisesti väärässä formaatissa, poistetaan koko tagi\n return null\n })\n .filter(Boolean)\n\n const seo = {\n tags: [...data.datoCmsSite.faviconMetaTags.tags, ...(fixedTags || [])],\n }\n\n // Set fallback locale version canonical url\n // Todo: Check Dato record for available locales, and set canonical ONLY if current locale is not available\n const curPage = alternates.find(alt => alt.current)\n const canonical =\n !!curPage?.locale?.fallbackLocales?.length &&\n alternates.find(alt => curPage.locale?.fallbackLocales && alt.locale?.dato === curPage.locale?.fallbackLocales[0])\n\n const cookiebotLifecycle = useRef<{\n consentDuringClick: CookiebotConsents | undefined\n eventFromButtonClick: boolean\n }>({\n consentDuringClick: undefined,\n eventFromButtonClick: false,\n })\n\n useEffect(() => {\n /**\n * Reload browser if any of the given consent level were withdrawn. Implementation is hacking around the lacking Cookiebot API so that it works for all browsers.\n */\n function CookiebotOnDeclineHandler() {\n if (!cookiebotLifecycle.current.eventFromButtonClick) return\n\n const consentDuringClick = cookiebotLifecycle.current.consentDuringClick\n const currentConsent = window.Cookiebot?.consent\n\n if (!(consentDuringClick && currentConsent)) return\n\n if (\n (consentDuringClick.marketing && !currentConsent.marketing) ||\n (consentDuringClick.preferences && !currentConsent.preferences) ||\n (consentDuringClick.statistics && !currentConsent.statistics)\n ) {\n window.location.reload()\n }\n }\n\n function clickHandler(e: MouseEvent) {\n const buttonId = (e.target as { id?: string | null })?.id\n if (\n // We want listen for clicks on both \"Deny\" and \"Allow Selection\" buttons\n buttonId === \"CybotCookiebotDialogBodyButtonDecline\" ||\n buttonId === \"CybotCookiebotDialogBodyLevelButtonLevelOptinAllowallSelection\"\n ) {\n cookiebotLifecycle.current = {\n eventFromButtonClick: true,\n consentDuringClick: window.Cookiebot?.consent ? { ...window.Cookiebot.consent } : undefined,\n }\n }\n }\n\n const body = document.getElementsByTagName(\"body\")[0]\n\n body.addEventListener(\"click\", clickHandler)\n window.addEventListener(\"CookiebotOnDecline\", CookiebotOnDeclineHandler)\n window.addEventListener(\"CookiebotOnAccept\", CookiebotOnDeclineHandler)\n return () => {\n body.removeEventListener(\"click\", clickHandler)\n window.addEventListener(\"CookiebotOnDecline\", CookiebotOnDeclineHandler)\n window.addEventListener(\"CookiebotOnAccept\", CookiebotOnDeclineHandler)\n }\n })\n\n return (\n <>\n \n {canonical && canonical.path && }\n {/* Sama sisältö eri kielillä: https://developers.google.com/search/docs/advanced/crawling/localized-versions */}\n {alternates.map(alt => {\n if (!alt.path || !alt.locale?.dato) return null\n return \n })}\n \n \n \n\n
{props.children}
\n {props.footer && }\n \n )\n}\n\nexport default DefaultLayout\n","// extracted by mini-css-extract-plugin\nexport var content = \"DefaultLayout-module--content--98948\";","import React, { Children, ReactNode } from \"react\"\nimport { CSSTransition } from \"react-transition-group\"\nimport * as styles from \"./Accordion.module.scss\"\n\ntype AccordionStatelessProps = {\n title?: ReactNode\n categoryTitle?: ReactNode\n\n /** Initially open */\n open?: boolean\n children: ReactNode\n}\n\nconst AccordionStateless = (props: AccordionStatelessProps) => {\n return (\n <>\n
\n {(props.title || props.categoryTitle) && (\n
\n {props.categoryTitle &&
{props.categoryTitle}
}\n
{props.title}
\n
\n )}\n \n
\n {!!Children.toArray(props.children).length &&
{props.children}
}\n
\n
\n
\n \n )\n}\n\nexport default AccordionStateless\n","import React from \"react\"\nimport BackgroundVideo from \"../atoms/BackgroundVideo\"\nimport DatoImage from \"../dato/DatoImage\"\nimport * as styles from \"./BackgroundMedia.module.scss\"\n\nexport type BackgroundMediaProps = Queries.DatoMediaFragment\n\n// TODO tämä sisältää Dato ja Gatby riippuvaisia osia. Molekyylien ei tulisi olla sidottuja niihin\n\nconst BackgroundMedia = (props: BackgroundMediaProps) => {\n //console.log(\"Rendering BackgroundMedia\", props)\n\n const mediaType = props.mimeType?.split(\"/\")[0] || (props.video ? \"video\" : \"image\")\n\n return (\n
\n {mediaType == \"video\"\n ? props.video?.mp4Url && (\n \n )\n : props.image && (\n \n )}\n
\n )\n}\n\nexport default BackgroundMedia\n","// extracted by mini-css-extract-plugin\nexport var container = \"BackgroundMedia-module--container--7b5c6\";\nexport var image = \"BackgroundMedia-module--image--2a4ea\";\nexport var video = \"BackgroundMedia-module--video--b32d9\";","// extracted by mini-css-extract-plugin\nexport var container = \"HighlightBlock-module--container--cae53\";\nexport var content = \"HighlightBlock-module--content--b9e88\";\nexport var contentBottom = \"HighlightBlock-module--contentBottom--4da13\";\nexport var hitArea = \"HighlightBlock-module--hitArea--f8427\";\nexport var layoutFullSize = \"HighlightBlock-module--layoutFullSize--36497\";\nexport var layoutTextLeft = \"HighlightBlock-module--layoutTextLeft--963ec\";\nexport var layoutTextRight = \"HighlightBlock-module--layoutTextRight--b6833\";\nexport var layoutTile = \"HighlightBlock-module--layoutTile--7082b\";\nexport var mediaArea = \"HighlightBlock-module--mediaArea--959cc\";\nexport var text = \"HighlightBlock-module--text--867b7\";\nexport var textArea = \"HighlightBlock-module--textArea--b3442\";\nexport var textLayoutCont = \"HighlightBlock-module--textLayoutCont--311db\";\nexport var title = \"HighlightBlock-module--title--53c72\";","import tokens from \"@nitro/harvia-style-dictionary/tokens/base.json\"\nimport { Link } from \"gatsby\"\nimport React, { ReactNode } from \"react\"\nimport { isBrowser } from \"../../../utils\"\nimport BgColor from \"../../layouts/BgColor\"\nimport AccordionStateless from \"../AccordionStateless\"\nimport * as styles from \"./HighlightBlock.module.scss\"\n\ntype HighlightBlockProps = {\n id?: string\n title?: string | null\n titleAs?: \"h2\" | \"h3\" | \"span\"\n categoryTitle?: string\n media: ReactNode\n content: ReactNode\n /** defaults to \"Tile\" */\n layout?: HighlightBlockLayout | null\n contentPosition?: \"Top\" | \"Bottom\"\n linkTo?: string\n}\n\nexport type HighlightBlockLayout = \"Tile\" | \"FullSize\" | \"TextLeft\" | \"TextRight\"\n\nconst HighlightBlock = (props: HighlightBlockProps) => {\n //console.log('Rendering HighlightBlock', props)\n\n /*\n Ei piiloteta tekstiä mobiilissa, SSR:ssä eikä muilla kun \"Tile\" layoutilla\n */\n const isMobile = isBrowser && window.innerWidth < parseFloat(tokens.breakpoint.md.value)\n const disableHover = !isBrowser || isMobile\n const [open, setOpen] = React.useState(disableHover)\n\n const { layout = \"Tile\", contentPosition = \"Top\" } = props\n\n const Title = props.titleAs || \"span\"\n\n return (\n setOpen(true)}\n onPointerEnter={() => setOpen(true)}\n onPointerLeave={() => setOpen(disableHover)}\n className={`${styles.container} ${styles[`content${contentPosition}`]} ${styles[`layout${layout}`]}`}>\n
{props.media}
\n
\n\n \n
\n {props.title}}>\n {props.content}\n \n
\n
\n \n )\n}\n\nexport default HighlightBlock\n","import { graphql, useStaticQuery } from \"gatsby\"\nimport type { DatoLocale } from \"../types\"\n\nconst namespaces = [\n \"contactCategorySelect\",\n \"shipmentTracking\",\n \"productSupportCategorySelect\",\n \"productAgeSelect\",\n \"formCommon\",\n \"interestSelect\",\n \"formErrors\",\n \"formContact\",\n \"saunaCalculator\",\n \"product\",\n \"contact\",\n \"article\",\n \"productFinder\",\n \"common\",\n \"locale\",\n] as const\n\ntype Namespace = (typeof namespaces)[number]\n\ntype MicrocopyObject = Record\n\ntype StoreNamespace = {\n [locale in DatoLocale]?: MicrocopyObject\n}\n\ntype Store = { [ns in Namespace]?: StoreNamespace }\n\nlet _store: Store | null = null\n\ntype QueryData = {\n allDatoCmsMicrocopy: {\n nodes: {\n namespace: Namespace\n _allCopyLocales: {\n locale: string\n value: string\n }[]\n }[]\n }\n}\n\n/**\n * Parse Microcopy data from DatoCMS\n */\nfunction parseMicrocopy(jsonString: string): MicrocopyObject {\n return JSON.parse(jsonString)\n}\n/**\n * Get a translation from Dato _Translations_ content.\n *\n * Returns: Translated value matching the given `key` or `defaultValue` if not found\n */\nexport type GetMicrocopy = (\n /** Name of the field in _Translations_ type of entry */\n key: string,\n /** Value returned if no translation found by _key_ */\n defaultValue?: string,\n /** vewrite _namespace_ defined at useTranslation() call for this translation */\n namespaceOverwrite?: Namespace\n) => string\n/**\n * Temporary drop-in replacement for useDatoTranslation() while we're moving to using\n * a library (like i18next) to handle translations.\n * useDatoTranslation() used Dato transalation_* single instance models as data source.\n * This uses new microcopy records\n */\nconst useDatoMicrocopy = (namespace: Namespace, locale: DatoLocale): GetMicrocopy => {\n const data = useStaticQuery(graphql`\n query AllDatoMicrocopy {\n allDatoCmsMicrocopy {\n nodes {\n namespace\n _allCopyLocales {\n value\n locale\n }\n }\n }\n }\n `)\n\n const t: GetMicrocopy = (key: string, defaultValue?: string, namespaceOverwrite?: Namespace) => {\n const effectiveNamespace = namespaceOverwrite || namespace\n if (!_store || !effectiveNamespace) {\n console.warn(`useDatoMicrocopy() no translations or missing namespace`)\n return defaultValue || \"\"\n }\n const data = _store[effectiveNamespace]\n if (!data) {\n console.warn(`useDatoMicrocopy() no translations in namespace ${effectiveNamespace}`)\n return defaultValue || \"\"\n }\n\n const effectiveLocaleData = data[locale] !== undefined ? data[locale] : data[\"en\"]\n\n if (\n effectiveLocaleData === undefined ||\n effectiveLocaleData === null ||\n (!effectiveLocaleData[key] && defaultValue === undefined)\n ) {\n console.warn(\n `useDatoMicrocopy() no value and default value missing for key \"${key}\" in namespace ${effectiveNamespace} (locale \"${locale}\")`\n )\n }\n\n return effectiveLocaleData !== undefined && effectiveLocaleData !== null\n ? effectiveLocaleData[key] || defaultValue || \"\"\n : \"\"\n }\n\n if (!data) {\n console.error(\"Microcopy data fetch failed\")\n return t\n }\n\n if (_store !== null) {\n // we've already parsed and re-arranged raw data from Dato and are ready\n return t\n }\n\n // parse and re-arrange raw data from Dato to more useful structure\n _store = {}\n const nodes = data.allDatoCmsMicrocopy.nodes\n for (const { _allCopyLocales, namespace } of nodes) {\n for (const copy of _allCopyLocales) {\n const parsed = parseMicrocopy(copy.value)\n const ns = _store[namespace]\n if (!ns) {\n _store[namespace] = { [copy.locale]: parsed }\n } else {\n ns[copy.locale] = parsed\n }\n }\n }\n\n return t\n}\n\nexport default useDatoMicrocopy\n","import { graphql, useStaticQuery } from \"gatsby\"\n\nexport type SiteMetadataLocale = NonNullable<\n NonNullable[\"siteMetadata\"]>[\"locales\"]\n>[number]\n\nfunction useSiteMetadata() {\n const data = useStaticQuery(graphql`\n query SiteMetadata {\n site {\n siteMetadata {\n # siteUrl\n locales {\n slug\n dato\n pim\n label\n labelLocal\n fallbackLocales\n }\n pim {\n baseParams\n }\n }\n }\n }\n `)\n\n // Return directly wanted data\n return data.site?.siteMetadata ? data.site.siteMetadata : { siteUrl: null, locales: [], pim: null }\n}\n\nexport default useSiteMetadata\n","// extracted by mini-css-extract-plugin\nexport var category = \"Accordion-module--category--3931e\";\nexport var closed = \"Accordion-module--closed--a4d9e\";\nexport var container = \"Accordion-module--container--09e1f\";\nexport var content = \"Accordion-module--content--73ce8\";\nexport var title = \"Accordion-module--title--d0ae0\";\nexport var titleBar = \"Accordion-module--titleBar--e1d85\";\nexport var titleBarText = \"Accordion-module--titleBarText--99342\";\nexport var toggleButton = \"Accordion-module--toggleButton--da815\";","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.indexOf(n) >= 0) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };"],"names":["_assertThisInitialized","e","ReferenceError","invariant","condition","message","error","Error","framesToPop","name","Context","LOADABLE_SHARED","initialChunks","STATUS_PENDING","STATUS_REJECTED","identity","v","createLoadable","_ref","_ref$defaultResolveCo","defaultResolveComponent","_render","render","onLoad","loadable","loadableConstructor","options","ctor","requireAsync","resolve","chunkName","resolveConstructor","cache","_getCacheKey","props","cacheKey","module","Loadable","Component","resolveComponent","preload","LoadableWithChunkExtractor","cachedLoad","promise","status","then","console","fileName","InnerLoadable","_React$Component","_this","call","this","state","result","loading","__chunkExtractor","requireSync","ssr","loadSync","addChunk","isReady","getDerivedStateFromProps","_proto","prototype","componentDidMount","mounted","cachedPromise","getCache","setCache","loadAsync","componentDidUpdate","prevProps","prevState","componentWillUnmount","safeSetState","nextState","callback","setState","getCacheKey","value","undefined","triggerOnLoad","_this2","setTimeout","_this3","resolveAsync","loadedModule","_this$props","forwardedRef","_this$props2","propFallback","fallback","_this$state","suspense","ref","EnhancedInnerLoadable","Consumer","extractor","Object","assign","displayName","load","lazy","_createLoadable","__esModule","_createLoadable$1","current","children","loadable$1","lazy$1","loadable$2","lib","GetIntrinsic","callBind","$indexOf","exports","allowMissing","intrinsic","bind","setFunctionLength","$TypeError","$apply","$call","$reflectApply","$defineProperty","$max","originalFunction","func","arguments","length","applyBind","apply","camelCase","input","Array","isArray","TypeError","pascalCase","map","x","trim","filter","join","toUpperCase","toLowerCase","string","isLastCharLower","isLastCharUpper","isLastLastCharUpper","i","character","test","slice","preserveCamelCase","replace","_","p1","m","charAt","$SyntaxError","gopd","obj","property","nonEnumerable","nonWritable","nonConfigurable","loose","desc","configurable","enumerable","writable","keys","hasSymbols","Symbol","toStr","toString","concat","defineDataProperty","supportsDescriptors","defineProperty","object","predicate","fn","defineProperties","predicates","getOwnPropertySymbols","EvalError","RangeError","SyntaxError","URIError","max","Math","concatty","a","b","arr","j","that","target","bound","args","arrLike","offset","slicy","boundLength","boundArgs","Function","joiner","str","joiny","Empty","implementation","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","getOwnPropertyDescriptor","throwTypeError","ThrowTypeError","calleeThrows","get","gOPDthrows","hasProto","getProto","getPrototypeOf","__proto__","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","ArrayBuffer","iterator","Atomics","BigInt","BigInt64Array","BigUint64Array","Boolean","DataView","Date","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","eval","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isFinite","isNaN","JSON","Map","Number","parseFloat","parseInt","Promise","Proxy","Reflect","RegExp","Set","SharedArrayBuffer","String","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","WeakRef","WeakSet","errorProto","doEval","gen","LEGACY_ALIASES","hasOwn","$concat","$spliceApply","splice","$replace","$strSlice","$exec","exec","rePropName","reEscapeChar","getBaseIntrinsic","alias","intrinsicName","parts","first","last","match","number","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","part","hasPropertyDescriptors","hasArrayLengthDefineBug","foo","$Object","origSymbol","hasSymbolSham","sym","symObj","getOwnPropertyNames","syms","propertyIsEnumerable","descriptor","$hasOwn","hasOwnProperty","keysShim","has","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","o","constructor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","window","k","isObject","isFunction","isArguments","isString","theKeys","skipProto","push","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","shim","keysWorksWithArguments","callee","RequireObjectCoercible","callBound","$isEnumerable","$push","O","entrys","key","define","getPolyfill","polyfill","entries","hasElementType","Element","hasMap","hasSet","hasArrayBuffer","isView","equal","it","size","next","done","source","flags","valueOf","$$typeof","warn","clock","_class","_temp","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","REACT_TAG_MAP","accesskey","charset","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","reduce","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","_typeof","createClass","Constructor","protoProps","staticProps","_extends","objectWithoutProperties","indexOf","encodeSpecialCharacters","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","tag","lowerCaseAttributeKey","getTagsFromPropsList","tagName","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","forEach","tagUnion","rafPolyfill","now","currentTime","cafPolyfill","id","clearTimeout","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","g","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","_helmetCallback","commitTagChanges","newState","cb","baseTag","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","title","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","attributes","document","elementTag","getElementsByTagName","helmetAttributeString","getAttribute","helmetAttributes","split","attributesToRemove","attributeKeys","attribute","setAttribute","indexToSave","_i","removeAttribute","type","tags","headElement","head","querySelector","tagNodes","querySelectorAll","indexToDelete","newElement","createElement","innerHTML","styleSheet","cssText","appendChild","createTextNode","some","existingTag","index","isEqualNode","parentNode","removeChild","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","encode","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","content","dangerouslySetInnerHTML","__html","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","mapStateOnServer","_ref$title","base","link","meta","noscript","script","style","HelmetSideEffects","defer","HelmetExport","HelmetWrapper","instance","classCallCheck","self","possibleConstructorReturn","subClass","superClass","create","setPrototypeOf","inherits","shouldComponentUpdate","nextProps","mapNestedChildrenToProps","child","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_ref2","_babelHelpers$extends2","_babelHelpers$extends3","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","_child$props","initAttributes","convertReactPropstoHtmlAttributes","_props","set","canUseDOM","propTypes","defaultTitle","titleTemplate","defaultProps","peek","rewind","mappedState","renderStatic","ex","React","React__default","_defineProperty","reducePropsToState","handleStateChangeOnClient","WrappedComponent","mountedInstances","emitChange","SideEffect","_PureComponent","recordedState","UNSAFE_componentWillMount","PureComponent","getDisplayName","replaceClassName","origClass","classToRemove","forceReflow","node","scrollTop","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","context","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","timeout","mounting","nodeRef","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","config","onEntered","onEnter","onEntering","onTransitionEnd","onExit","onExiting","onExited","cancel","setNextCallback","_this4","active","event","handler","doesNotHaveTimeoutOrListener","addEndListener","_ref3","maybeNextCallback","childProps","TransitionGroupContext","Provider","only","noop","contextType","removeClass","classes","c","className","element","classList","remove","baseVal","CSSTransition","_len","_key","appliedClasses","_this$resolveArgument","resolveArguments","removeClasses","addClass","_this$resolveArgument2","_this$resolveArgument3","getClassNames","classNames","isStringClassNames","baseClassName","activeClassName","doneClassName","phase","add","contains","hasClass","_addClass","_this$appliedClasses$","hasDescriptors","gOPD","$floor","functionLengthIsConfigurable","functionLengthIsWritable","_slicedToArray","_arrayWithHoles","_s","_e","_arr","_n","_d","err","_iterableToArrayLimit","minLen","_arrayLikeToArray","n","from","_unsupportedIterableToArray","_nonIterableRest","len","arr2","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","require","Helmet","objectEntries","objectAssign","HelmetDatoCms","seo","favicon","rest","item","acc","N","height","HTMLImageElement","t","r","u","shouldLoad","opacity","s","l","backgroundColor","width","position","top","left","bottom","right","objectFit","objectPosition","d","transition","z","D","_ref5","layout","paddingTop","maxWidth","display","alt","role","src","A","q","P","H","srcSet","decoding","G","sources","sizes","_ref6","media","V","isRequired","B","F","U","Y","h","X","image","J","Z","K","Q","ee","te","as","onStartLoad","p","onError","f","w","y","E","M","S","$","I","stringify","images","_ref7","renderImageToString","swapPlaceholderImage","complete","wasCached","addEventListener","removeEventListener","_ref8","isLoading","isLoaded","suppressHydrationWarning","ae","ie","re","_len2","_key2","ne","se","oe","__imageData","__error","muted","playsInline","autoPlay","loop","email","labelPrefix","label","itemProp","href","phone","_props$addressCountry","itemScope","itemType","postOfficeBoxNumber","labelPrefixPo","streetAddress","postalCode","addressLocality","addressRegion","addressCountry","DatoApplicationDownload","resolved","__webpack_modules__","importAsync","__webpack_require__","DatoArticleFinder","DatoBrochureList","DatoContactCollectionRef","DatoContactLocationBlock","DatoContactPersons","DatoCtaRef","DatoCtaToArticle","DatoCtaToExternalUrl","DatoCtaToPage","DatoCtaToProduct","DatoCtaToProductFinder","DatoDealerFinder","DatoExternalVideo","DatoFAQ","DatoForm","DatoHighlightToArticle","DatoHighlightToPage","DatoHighlightToProduct","DatoHighlightToProductFinder","DatoIframeBlock","DatoImageGallery","DatoLatestArticles","DatoMediaBlock","DatoMediaWithText","DatoModularContentRef","DatoNumberFacts","DatoPickedArticles","DatoProductFilter","DatoProductFinderLinkBar","DatoProductFinderTabs","DatoSaunaCalculatorBlock","DatoSaunaPlannerBlock","DatoTabularContent","DatoTextBlock","DatoTileGrid","DatoVideoWithText","DatoTypeform","DatoProductFilesList","DatoLeadooDynamicEmbedding","DatoBlock","__typename","DatoHighlightToExternalUrl","DatoKlaviyoFormEmbed","modules","focalpointToCssPos","num","boost","min","_image$images$sources","focalPoint","imgStyle","_image$images","GatsbyImage","HighlightBlock","linkTo","url","slugify","BackgroundMedia","titleAs","text","HighlightToExternalUrlBlock","formId","Script","strategy","ScriptStrategy","idle","bgBrandBlack","bgBrandGreyWarmDark","bgBrandGreyWarmLight","bgBrandRed","bgBrandWhite","bgSemiTransparent","bgTransparent","color","colorClass","styles","_store","useAlternatePaths","page","useContext","PageContext","getProductPath","useProductPath","getArticlePath","useArticlePath","getRoutePath","useRoutePath","locales","useSiteMetadata","originalId","sku","alternates","itm","locale","dato","path","account","ExternalLink","FaFacebookF","FaInstagram","rel","FaLinkedin","FaPinterest","FaTwitter","FaYoutube","onClick","Cookiebot","renew","useDatoMicrocopy","PostalAddress","PhoneLink","EmailLink","footerItem","_props$footerItems","_props$bottomLinks","_props$bottomLinks$li","website","useWebsite","DatoContentModules","footerItems","DatoLinkList","titleElement","DatoContactLocation","FacebookLink","facebook","TwitterLink","twitter","InstagramLink","instagram","PinterestLink","pinterest","LinkedinLink","linkedin","YoutubeLink","youtube","getFullYear","bottomLinks","links","DatoLinkToRecord","CookieConsentLink","hoverHelper","linkRow","navlink","subnav1","subnav2","subnav3","subnav4","level","hasCurrentPage","isCurrentPage","subLinks","isOpen","setOpen","useState","thisItem","useRef","useEffect","windowClickHandler","navClick","cur","parentElement","windowKeyboardHandler","hasSubnav","hoverToggle","isBrowser","innerWidth","tokens","onMouseEnter","onMouseLeave","onOpenClick","val","IoIosArrowUp","IoIosArrowDown","NavLinks","nodes","NavLink","navRef","mainNavOutsideCloseHandler","menuTree","preventDefault","labelClose","labelOpen","IoMdMenu","parseTree","routeId","res","_node$route","_node$route3","hidden","filterMenuItemNode","route","urlParams","Link","to","externalUrl","IoIosArrowForward","verticalAlign","navLink","findRecursive","_node$route2","sort","MainNav","atTop","logo","nav","TopNav","usePageLocale","userPrefs","useUserPreferences","setLocaleDialogOpen","useLocaleDialog","productPagePath","language","IoGlobeOutline","localeArea","getLocaleAreaTitle","getLangTitle","Button","IoSearchSharp","priority","_useWebsite$rootRoute","setAtTop","frontPageUrl","rootRoute","onScroll","body","documentElement","mainMenu","DatoMainNav","SITE_URL","WEBSITE_TITLE","_props$seoMetaTags","_curPage$locale","_curPage$locale$fallb","localePim","data","useStaticQuery","fixedTags","seoMetaTags","_tag$attributes","lOrig","lPim","_toConsumableArray","datoCmsSite","faviconMetaTags","curPage","find","canonical","fallbackLocales","_curPage$locale2","_alt$locale","_curPage$locale3","cookiebotLifecycle","consentDuringClick","eventFromButtonClick","CookiebotOnDeclineHandler","_window$Cookiebot","currentConsent","consent","marketing","preferences","statistics","location","reload","clickHandler","_e$target","buttonId","_window$Cookiebot2","lang","_alt$locale2","hrefLang","PageHeader","footer","PageFooter","open","categoryTitle","Children","toArray","_props$mimeType","_props$video","mediaType","mimeType","video","mp4Url","BackgroundVideo","poster","thumbnailUrl","DatoImage","container","contentBottom","hitArea","layoutFullSize","layoutTextLeft","layoutTextRight","layoutTile","mediaArea","textArea","textLayoutCont","isMobile","disableHover","contentPosition","Title","onFocus","onPointerEnter","onPointerLeave","BgColor","AccordionStateless","namespace","defaultValue","namespaceOverwrite","effectiveNamespace","effectiveLocaleData","allDatoCmsMicrocopy","_allCopyLocales","copy","parsed","jsonString","parse","ns","_data$site","site","siteMetadata","siteUrl","pim","category","closed","titleBar","titleBarText","toggleButton"],"sourceRoot":""}