{"version":3,"file":"client.eaaeef282028b50d6324.js","mappings":"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","sources":["webpack://B2C.Godfisk/webpack/runtime/chunk loaded","webpack://B2C.Godfisk/webpack/runtime/create fake namespace object","webpack://B2C.Godfisk/webpack/runtime/load script","webpack://B2C.Godfisk/./source/components/models/link-base/link-base.jsx","webpack://B2C.Godfisk/./source/components/link/link.jsx","webpack://B2C.Godfisk/./source/components/icon/icon.jsx","webpack://B2C.Godfisk/./source/components/colored-tag/colored-tag.jsx","webpack://B2C.Godfisk/./source/components/floating-tag/floating-tag.jsx","webpack://B2C.Godfisk/./source/components/floating-tags/floating-tags.jsx","webpack://B2C.Godfisk/./source/components/react-component/react-component.jsx","webpack://B2C.Godfisk/./source/components/accordion-block/accordion-block-item.jsx","webpack://B2C.Godfisk/./source/components/accordion-block/accordion-block.jsx","webpack://B2C.Godfisk/./source/components/rich-text/rich-text.jsx","webpack://B2C.Godfisk/./source/components/area-block/area-block.jsx","webpack://B2C.Godfisk/./source/components/breadcrumbs/breadcrumbs-link.jsx","webpack://B2C.Godfisk/./source/components/breadcrumbs/breadcrumbs.jsx","webpack://B2C.Godfisk/./source/components/carousel/carousel.jsx","webpack://B2C.Godfisk/./source/components/checkbox/checkbox.jsx","webpack://B2C.Godfisk/./source/components/colored-tags-list/colored-tags-list.jsx","webpack://B2C.Godfisk/./source/components/content-area/content-area.jsx","webpack://B2C.Godfisk/./source/components/dictionary-block/dictionary-block.jsx","webpack://B2C.Godfisk/./source/components/error-message/error-message.jsx","webpack://B2C.Godfisk/./source/hooks/use-toggle.js","webpack://B2C.Godfisk/./source/components/expandable-panel/expandable-panel.jsx","webpack://B2C.Godfisk/./source/js/image-resizer.js","webpack://B2C.Godfisk/./source/js/dom-image-utils.js","webpack://B2C.Godfisk/./source/components/image/image.jsx","webpack://B2C.Godfisk/./source/components/logo/logo.jsx","webpack://B2C.Godfisk/./source/components/scroll-button/scroll-button.jsx","webpack://B2C.Godfisk/./source/components/poor-text/poor-text.jsx","webpack://B2C.Godfisk/./source/components/models/menu-link/menu-link.jsx","webpack://B2C.Godfisk/./source/components/models/menu-section/menu-section.jsx","webpack://B2C.Godfisk/./source/components/models/footer-menu/footer-menu.jsx","webpack://B2C.Godfisk/./source/components/footer/footer.jsx","webpack://B2C.Godfisk/./source/components/form-input-text/form-input-text.jsx","webpack://B2C.Godfisk/./source/hooks/use-event.js","webpack://B2C.Godfisk/./source/hooks/use-click-outside.js","webpack://B2C.Godfisk/./source/hooks/use-escape.js","webpack://B2C.Godfisk/./source/js/emit-event.js","webpack://B2C.Godfisk/./source/components/header-menu/header-menu.jsx","webpack://B2C.Godfisk/./source/js/messenger.js","webpack://B2C.Godfisk/./source/js/api-helper.js","webpack://B2C.Godfisk/./source/components/search-form/search-form.jsx","webpack://B2C.Godfisk/./source/components/quick-search/quick-search.jsx","webpack://B2C.Godfisk/./source/components/header/header.jsx","webpack://B2C.Godfisk/./source/js/breakpoints.js","webpack://B2C.Godfisk/./source/hooks/use-breakpoints.js","webpack://B2C.Godfisk/./source/components/heading-cropper/heading-cropper.jsx","webpack://B2C.Godfisk/./source/components/icon-label/icon-label.jsx","webpack://B2C.Godfisk/./source/js/pluralOrSingularText.js","webpack://B2C.Godfisk/./source/components/ingredients/ingredient-name.jsx","webpack://B2C.Godfisk/./source/components/ingredients/ingredient-unit.jsx","webpack://B2C.Godfisk/./source/components/ingredients/ingredient-amount.jsx","webpack://B2C.Godfisk/./source/components/ingredients/print-order.js","webpack://B2C.Godfisk/./source/js/id-helper.js","webpack://B2C.Godfisk/./source/components/ingredients/ingredient.jsx","webpack://B2C.Godfisk/./source/components/ingredients/ingredients.jsx","webpack://B2C.Godfisk/./source/js/fullCopy.js","webpack://B2C.Godfisk/./source/components/link-button/link-button.jsx","webpack://B2C.Godfisk/./source/components/load-more-button/load-more-button.jsx","webpack://B2C.Godfisk/./source/components/loading-indicator/loading-indicator.jsx","webpack://B2C.Godfisk/./source/components/modal/modal.jsx","webpack://B2C.Godfisk/./source/components/models/filter-item/filter-item.jsx","webpack://B2C.Godfisk/./source/components/models/filter/filter.jsx","webpack://B2C.Godfisk/./source/js/recipe-message-bus.js","webpack://B2C.Godfisk/./source/components/recipe-details/recipe-details.jsx","webpack://B2C.Godfisk/./source/components/search-teaser/search-teaser.jsx","webpack://B2C.Godfisk/./source/components/models/load-more-search-results/load-more-search-results.jsx","webpack://B2C.Godfisk/./source/components/teaser/teaser.jsx","webpack://B2C.Godfisk/./source/components/models/load-more-teasers-results/load-more-teasers-results.jsx","webpack://B2C.Godfisk/./source/components/models/pager-lang/pager-lang.jsx","webpack://B2C.Godfisk/./source/components/tags-filter-item/tags-filter-item.jsx","webpack://B2C.Godfisk/./source/components/tags-filter/tags-filter.jsx","webpack://B2C.Godfisk/./source/components/recipe-teaser/recipe-teaser.jsx","webpack://B2C.Godfisk/./source/components/models/recipes-overview-results/recipes-overview-results.jsx","webpack://B2C.Godfisk/./source/components/search-section/search-section.jsx","webpack://B2C.Godfisk/./source/components/models/search-results/search-results.jsx","webpack://B2C.Godfisk/./source/components/models/share-link/share-link.jsx","webpack://B2C.Godfisk/./source/components/video/video.jsx","webpack://B2C.Godfisk/./source/components/models/technique-step/technique-step.jsx","webpack://B2C.Godfisk/./source/components/not-found-page/not-found-page.jsx","webpack://B2C.Godfisk/./source/components/page-heading/page-heading.jsx","webpack://B2C.Godfisk/./source/hooks/use-did-update-effect.js","webpack://B2C.Godfisk/./source/js/string-helper.js","webpack://B2C.Godfisk/./source/components/pager/pager.jsx","webpack://B2C.Godfisk/./source/components/q-a-block/q-a-item.jsx","webpack://B2C.Godfisk/./source/components/q-a-block/q-a-block.jsx","webpack://B2C.Godfisk/./source/components/rate-recipe/rate-recipe-item.jsx","webpack://B2C.Godfisk/./source/components/rate-recipe/rate-recipe.jsx","webpack://B2C.Godfisk/./source/components/recipe-filter/recipe-filter.jsx","webpack://B2C.Godfisk/./source/components/recipe-filters/recipe-filters-remove-filter-button.jsx","webpack://B2C.Godfisk/./source/components/toggle-button/toggle-button.jsx","webpack://B2C.Godfisk/./source/components/recipe-filters/recipe-filters.jsx","webpack://B2C.Godfisk/./source/components/view-select/view-select-item.jsx","webpack://B2C.Godfisk/./source/components/view-select/view-select.jsx","webpack://B2C.Godfisk/./source/js/form-helper.js","webpack://B2C.Godfisk/./source/components/recipes-overview-page/recipes-overview-page.jsx","webpack://B2C.Godfisk/./source/components/teasers-list/teasers-list.jsx","webpack://B2C.Godfisk/./source/components/related-items-header/related-items-header.jsx","webpack://B2C.Godfisk/./source/components/related-articles-block/related-articles-block.jsx","webpack://B2C.Godfisk/./source/components/related-recipes-block/related-recipes-block.jsx","webpack://B2C.Godfisk/./source/components/rich-text-block/rich-text-block.jsx","webpack://B2C.Godfisk/./source/components/search-page/search-page.jsx","webpack://B2C.Godfisk/./source/components/share-panel/share-panel.jsx","webpack://B2C.Godfisk/./source/components/share-and-rate-recipe-panel/share-and-rate-recipe-panel.jsx","webpack://B2C.Godfisk/./source/components/skip-to-main/skip-to-main.jsx","webpack://B2C.Godfisk/./source/components/sources-and-links-block/sources-and-links-block.jsx","webpack://B2C.Godfisk/./source/components/tabs-panel/tab.jsx","webpack://B2C.Godfisk/./source/components/tabs-panel/tabs-panel.jsx","webpack://B2C.Godfisk/./source/components/teasers-list-advanced/teasers-list-advanced.jsx","webpack://B2C.Godfisk/./source/components/technique-navigation/technique-navigation.jsx","webpack://B2C.Godfisk/./source/components/technique-steps-carousel/technique-steps-carousel.jsx","webpack://B2C.Godfisk/./source/components/text-with-image-block/text-with-image-block.jsx","webpack://B2C.Godfisk/./source/components/text-with-side-panel/text-with-side-panel.jsx","webpack://B2C.Godfisk/./source/components/tip-block/tip-block.jsx","webpack://B2C.Godfisk/./source/components/top-banner-block/top-banner-block.jsx","webpack://B2C.Godfisk/./source/components/top-image-block/top-image-block.jsx","webpack://B2C.Godfisk/./source/components/video-block/video-block.jsx","webpack://B2C.Godfisk/./source/components/weekly-menu-block/weekly-menu-block.jsx","webpack://B2C.Godfisk/./source/assets/inline-icons/icons.js","webpack://B2C.Godfisk/./source/js/polyfills/class-list.js","webpack://B2C.Godfisk/./source/js/input-detection.js","webpack://B2C.Godfisk/./source/js/input-detection-loader.js","webpack://B2C.Godfisk/./source/app.components-exposed.js","webpack://B2C.Godfisk/./source/assets/inline-icons/arrow-left-large.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/arrow-right-large.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/arrow-right.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/arrow-top.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/check.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/clock.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/close.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/copy-link.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/difficulty-level.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/list-view-one-column.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/list-view-two-columns.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/menu-close.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/menu.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/print.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/search.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/star-empty.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/star-full.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/toggle.svg","webpack://B2C.Godfisk/./source/assets/inline-icons/ sync \\.svg$","webpack://B2C.Godfisk/webpack/bootstrap","webpack://B2C.Godfisk/webpack/runtime/compat get default export","webpack://B2C.Godfisk/webpack/runtime/define property getters","webpack://B2C.Godfisk/webpack/runtime/ensure chunk","webpack://B2C.Godfisk/webpack/runtime/get javascript chunk filename","webpack://B2C.Godfisk/webpack/runtime/get mini-css chunk filename","webpack://B2C.Godfisk/webpack/runtime/global","webpack://B2C.Godfisk/webpack/runtime/hasOwnProperty shorthand","webpack://B2C.Godfisk/webpack/runtime/make namespace object","webpack://B2C.Godfisk/webpack/runtime/node module decorator","webpack://B2C.Godfisk/webpack/runtime/publicPath","webpack://B2C.Godfisk/webpack/runtime/jsonp chunk loading","webpack://B2C.Godfisk/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"B2C.Godfisk:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import PropTypes from 'prop-types';\r\n\r\nconst LinkBase = {};\r\n\r\nLinkBase.propTypes = {\r\n url: PropTypes.string,\r\n text: PropTypes.string,\r\n openInNewTab: PropTypes.bool,\r\n};\r\n\r\nexport default LinkBase;\r\n","/* eslint-disable react/jsx-no-target-blank */\r\n/* eslint-disable view-models/no-unused-meta */\r\n/* eslint-disable react/prop-types */\r\n// TODO: remove view-models/no-unused-meta and eslint-disable react/prop-types rule when this issue https://github.com/asbjornh/view-models/issues/18 is resolved\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport LinkBase from 'components/models/link-base';\r\nimport cn from 'classnames';\r\n\r\nconst Link = ({\r\n className,\r\n openInNewTab = false,\r\n url,\r\n text,\r\n tabindex,\r\n inlineStyle,\r\n onFocus = () => {},\r\n onBlur = () => {},\r\n}) => (\r\n \r\n {text}\r\n \r\n);\r\n\r\nLink.viewModelMeta = {\r\n className: 'ignore',\r\n tabindex: 'ignore',\r\n inlineStyle: 'ignore',\r\n onFocus: 'ignore',\r\n onBlur: 'ignore',\r\n};\r\n\r\nLink.propTypes = Object.assign({}, LinkBase.propTypes, {\r\n className: PropTypes.string,\r\n inlineStyle: PropTypes.object,\r\n tabindex: PropTypes.number,\r\n onFocus: PropTypes.func,\r\n onBlur: PropTypes.func,\r\n});\r\n\r\nexport default Link;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport cn from 'classnames';\r\n\r\n// NOTE: When running tests, importing SVGs directly will make the application crash, so all icons are exported as noops instead.\r\nconst icons = require(\r\n process.env.NODE_ENV === 'test'\r\n ? '../../assets/inline-icons/icons-noop.js'\r\n : '../../assets/inline-icons/icons.js'\r\n).default;\r\n\r\nconst Icon = ({ className, name, style, useFill }) => {\r\n const defaultProps = icons[name].customDefaultProps;\r\n\r\n return icons[name]\r\n ? React.createElement(icons[name], {\r\n ...(defaultProps && defaultProps),\r\n className: cn('icon', className, { '-use-fill-color': useFill }),\r\n focusable: 'false',\r\n style,\r\n })\r\n : null;\r\n};\r\n\r\nIcon.propTypes = {\r\n className: PropTypes.string,\r\n name: PropTypes.oneOf(Object.keys(icons)).isRequired,\r\n style: PropTypes.shape({}),\r\n useFill: PropTypes.bool,\r\n};\r\n\r\nIcon.viewModelMeta = 'ignore';\r\n\r\nexport default Icon;\r\n","/* eslint-disable react/prop-types */\r\n/* eslint-disable view-models/no-unused-meta */\r\n// TODO: remove view-models/no-unused-meta and eslint-disable react/prop-types rule when this issue https://github.com/asbjornh/view-models/issues/18 is resolved\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Link from 'components/link';\r\nimport cn from 'classnames';\r\nimport Icon from 'components/icon';\r\n\r\nconst ColoredTag = ({\r\n text,\r\n url,\r\n openInNewTab,\r\n className,\r\n color,\r\n linkTabIndex,\r\n isActive,\r\n}) => {\r\n var tagStyle = {\r\n backgroundColor: color,\r\n };\r\n\r\n let Component = url ? 'a' : 'div';\r\n\r\n return (\r\n \r\n {isActive && }\r\n {text}\r\n \r\n );\r\n};\r\n\r\nColoredTag.propTypes = Object.assign({}, Link.propTypes, {\r\n color: PropTypes.string,\r\n linkTabIndex: PropTypes.number,\r\n isActive: PropTypes.bool,\r\n});\r\n\r\nColoredTag.viewModelMeta = {\r\n linkTabIndex: 'ignore',\r\n};\r\n\r\nexport default ColoredTag;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ColoredTag from 'components/colored-tag';\r\n\r\n// eslint-disable-next-line view-models/no-errors\r\nexport const position = {\r\n topLeft: 'top-left',\r\n topCenter: 'top-center',\r\n topRight: 'top-right',\r\n bottomLeft: 'bottom-left',\r\n bottomCenter: 'bottom-center',\r\n bottomRight: 'bottom-right',\r\n};\r\n\r\nconst FloatingTag = props => {\r\n return ;\r\n};\r\n\r\nFloatingTag.propTypes = Object.assign({}, ColoredTag.propTypes, {\r\n position: PropTypes.oneOf(Object.values(position)).isRequired,\r\n});\r\n\r\n// eslint-disable-next-line view-models/no-errors\r\nexport default FloatingTag;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport FloatingTag, { position } from 'components/floating-tag';\r\nimport cn from 'classnames';\r\n\r\nconst FloatingTags = ({ items, children, className }) => {\r\n return (\r\n \r\n {items && items.length > 0 && (\r\n
    \r\n {items.map((item, index) => {\r\n const isTopTag =\r\n item.position === position.topLeft ||\r\n item.position === position.topCenter ||\r\n item.position === position.topRight;\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n
\r\n )}\r\n {children}\r\n \r\n );\r\n};\r\n\r\nFloatingTags.propTypes = {\r\n items: PropTypes.arrayOf(PropTypes.exact(FloatingTag.propTypes)),\r\n children: PropTypes.node,\r\n className: PropTypes.string,\r\n};\r\n\r\nFloatingTags.viewModelMeta = {\r\n className: 'ignore',\r\n};\r\n\r\nexport default FloatingTags;\r\n","import PropTypes from 'prop-types';\r\n\r\nconst ReactComponent = {};\r\n\r\n// Empty propTypes needed in order for ReactComponent.cs to be generated.\r\nReactComponent.propTypes = {\r\n componentName: PropTypes.string.isRequired,\r\n};\r\n\r\nReactComponent.viewModelMeta = 'ignore'; // Not generated automatically, defained on BE instead.\r\n\r\n// 'ReactComponent' is used as the base class in all generated .cs-files (configurerd in CSharpWebpackPlugin options in webpack.config.js)\r\nexport default ReactComponent;\r\n","import ReactComponent from 'components/react-component/react-component';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AccordionBlockItem = {};\r\n\r\nAccordionBlockItem.propTypes = {\r\n heading: PropTypes.string.isRequired,\r\n content: PropTypes.arrayOf(PropTypes.shape(ReactComponent.propTypes))\r\n .isRequired,\r\n};\r\n\r\nexport default AccordionBlockItem;\r\n","import React, { Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport FloatingTags from 'components/floating-tags';\r\nimport FloatingTag from 'components/floating-tag';\r\nimport {\r\n Accordion as AccordionComponent,\r\n AccordionItem,\r\n AccordionItemHeading,\r\n AccordionItemButton,\r\n AccordionItemPanel,\r\n AccordionItemState,\r\n} from 'react-accessible-accordion';\r\nimport AccordionBlockItem from './accordion-block-item';\r\nimport * as Components from '../../app.components';\r\n\r\nconst AccordionBlock = ({\r\n autoCollapse = true,\r\n heading,\r\n headingTags,\r\n items,\r\n}) => {\r\n return (\r\n
\r\n
\r\n \r\n

{heading}

\r\n \r\n \r\n {items.length > 0 &&\r\n items.map((item, index) => {\r\n return (\r\n \r\n \r\n {({ expanded }) => (\r\n \r\n \r\n \r\n
\r\n \r\n {index + 1}\r\n \r\n {item.heading}\r\n
\r\n
\r\n
\r\n \r\n {expanded &&\r\n item.content &&\r\n item.content.map((block, index) => {\r\n const Block = Components[block.componentName];\r\n if (!Block) {\r\n return null;\r\n }\r\n return (\r\n \r\n \r\n
\r\n );\r\n })}\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nAccordionBlock.propTypes = {\r\n heading: PropTypes.string,\r\n headingTags: PropTypes.arrayOf(PropTypes.exact(FloatingTag.propTypes)),\r\n autoCollapse: PropTypes.bool,\r\n items: PropTypes.arrayOf(PropTypes.exact(AccordionBlockItem.propTypes))\r\n .isRequired,\r\n};\r\n\r\nexport default AccordionBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport cn from 'classnames';\r\n\r\nconst RichText = ({ text, className }) => {\r\n return !text ? null : (\r\n \r\n );\r\n};\r\n\r\nRichText.propTypes = {\r\n text: PropTypes.string,\r\n className: PropTypes.string,\r\n};\r\n\r\nRichText.viewModelMeta = 'ignore';\r\n\r\nexport default RichText;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport RichText from 'components/rich-text';\r\nimport cn from 'classnames';\r\n\r\nconst AreaBlock = ({ heading, textHtml, className }) => {\r\n return (\r\n \r\n
\r\n {heading &&

{heading}

}\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nAreaBlock.propTypes = {\r\n heading: PropTypes.string,\r\n textHtml: PropTypes.string,\r\n className: PropTypes.string,\r\n};\r\n\r\nAreaBlock.viewModelMeta = {\r\n className: 'ignore',\r\n};\r\n\r\nexport default AreaBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst BreadcrumbsLink = ({ text, url, ariaCurrent }) => {\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n};\r\n\r\nBreadcrumbsLink.propTypes = {\r\n text: PropTypes.string,\r\n url: PropTypes.string,\r\n ariaCurrent: PropTypes.string,\r\n};\r\n\r\nBreadcrumbsLink.viewModelMeta = {\r\n ariaCurrent: 'ignore',\r\n};\r\n\r\nexport default BreadcrumbsLink;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport BreadcrumbsLink from './breadcrumbs-link';\r\nimport cn from 'classnames';\r\n\r\nconst Breadcrumbs = ({\r\n links,\r\n className,\r\n lang = { ariaLabel: 'Breadcrumb' },\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nBreadcrumbs.propTypes = {\r\n lang: PropTypes.shape({\r\n ariaLabel: PropTypes.string,\r\n }),\r\n links: PropTypes.arrayOf(PropTypes.exact(BreadcrumbsLink.propTypes)),\r\n className: PropTypes.string,\r\n};\r\n\r\nBreadcrumbs.viewModelMeta = {\r\n className: 'ignore',\r\n};\r\n\r\nexport default Breadcrumbs;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Scrollbar from 'react-scrollbars-custom';\r\nimport * as Components from '../../app.components';\r\n\r\nconst Carousel = ({ items, itemComponentName }) => {\r\n const Item = Components[itemComponentName];\r\n if (!Item) {\r\n // eslint-disable-next-line no-console\r\n console.error(`Components.${itemComponentName} is not defined`);\r\n return null;\r\n }\r\n return items ? (\r\n
\r\n
\r\n \r\n
\r\n {items.map((item, index) => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n })}\r\n
\r\n \r\n
\r\n
\r\n ) : null;\r\n};\r\n\r\nCarousel.propTypes = {\r\n itemComponentName: PropTypes.oneOf(['Teaser', 'RecipeTeaser']),\r\n items: PropTypes.array,\r\n};\r\n\r\nCarousel.viewModelMeta = 'ignore';\r\n\r\nexport default Carousel;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\n\r\nconst Checkbox = ({\r\n checked,\r\n name,\r\n value,\r\n label,\r\n id,\r\n onChange = () => {},\r\n disabled,\r\n className,\r\n}) => {\r\n const [isChecked, setisChecked] = React.useState(checked);\r\n\r\n const handleCange = () => {\r\n setisChecked(!isChecked);\r\n onChange(!isChecked);\r\n };\r\n\r\n React.useEffect(() => {\r\n setisChecked(checked);\r\n }, [checked]);\r\n\r\n return (\r\n \r\n handleCange(e)}\r\n defaultChecked={checked}\r\n defaultValue={value}\r\n id={id}\r\n disabled={disabled}\r\n />\r\n \r\n
{label}
\r\n \r\n );\r\n};\r\n\r\nCheckbox.propTypes = {\r\n checked: PropTypes.bool,\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n value: PropTypes.string,\r\n label: PropTypes.string,\r\n className: PropTypes.string,\r\n onChange: PropTypes.func,\r\n disabled: PropTypes.bool,\r\n};\r\n\r\nCheckbox.viewModelMeta = 'ignore';\r\n\r\nexport default Checkbox;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ColoredTag from 'components/colored-tag';\r\nimport cn from 'classnames';\r\n\r\nconst ColoredTagsList = ({ items, className, linksTabIndex }) => {\r\n const hasActiveItem = items.filter(x => x.isActive).length > 0;\r\n\r\n return (\r\n \r\n {items &&\r\n items.map((item, index) => {\r\n return (\r\n
  • \r\n \r\n
  • \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nColoredTagsList.propTypes = {\r\n items: PropTypes.arrayOf(PropTypes.exact(ColoredTag.propTypes)),\r\n className: PropTypes.string,\r\n linksTabIndex: PropTypes.number,\r\n};\r\n\r\nColoredTagsList.viewModelMeta = {\r\n className: 'ignore',\r\n linksTabIndex: 'ignore',\r\n};\r\n\r\nexport default ColoredTagsList;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\nimport * as Components from '../../app.components';\r\n\r\nconst ContentArea = ({ blocks, className, place }) => {\r\n return blocks ? (\r\n \r\n {blocks.map((block, index) => {\r\n const Block = Components[block.componentName];\r\n if (!Block) {\r\n // eslint-disable-next-line no-console\r\n console.error(`Components.${block.componentName} is not defined`);\r\n return null;\r\n }\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n })}\r\n \r\n ) : null;\r\n};\r\n\r\nContentArea.propTypes = {\r\n blocks: PropTypes.array,\r\n className: PropTypes.string,\r\n place: PropTypes.string,\r\n};\r\n\r\nContentArea.viewModelMeta = 'ignore';\r\n\r\nexport default ContentArea;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\n\r\nconst DictionaryBlock = ({\r\n heading,\r\n className,\r\n hintText,\r\n items,\r\n backgroundColor,\r\n}) => {\r\n return (\r\n \r\n
    \r\n {heading &&

    {heading}

    }\r\n {hintText && {hintText}}\r\n
    \r\n
    \r\n {items &&\r\n items.length > 0 &&\r\n items.map((item, index) => (\r\n
    \r\n {item.label}\r\n {item.value}\r\n
    \r\n ))}\r\n
    \r\n \r\n );\r\n};\r\n\r\nDictionaryBlock.propTypes = {\r\n heading: PropTypes.string,\r\n hintText: PropTypes.string,\r\n items: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n label: PropTypes.string,\r\n value: PropTypes.string,\r\n })\r\n ),\r\n backgroundColor: PropTypes.string,\r\n className: PropTypes.string,\r\n};\r\n\r\nDictionaryBlock.viewModelMeta = {\r\n className: 'ignore',\r\n};\r\n\r\nexport default DictionaryBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ErrorMessage = ({ text }) => {\r\n return
    {text}
    ;\r\n};\r\n\r\nErrorMessage.propTypes = {\r\n text: PropTypes.string,\r\n};\r\n\r\nErrorMessage.viewModelMeta = 'ignore';\r\n\r\nexport default ErrorMessage;\r\n","import React, { useCallback } from 'react';\r\n\r\nexport default function useToggle(initiallyActive) {\r\n const [isActive, setIsActive] = React.useState(initiallyActive);\r\n const toggle = useCallback(() => setIsActive(isActive => !isActive), []);\r\n const activate = useCallback(() => setIsActive(true), []);\r\n const deactivate = useCallback(() => setIsActive(false), []);\r\n\r\n return { isActive, toggle, deactivate, activate };\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\nimport Icon from 'components/icon';\r\nimport useToggle from 'hooks/use-toggle';\r\n\r\nconst ExpandablePanel = ({\r\n children,\r\n toggleTextShow = 'Show',\r\n toggleTextHide = 'Hide',\r\n toggleElement = 'button',\r\n}) => {\r\n const { isActive: panelIsOpenedInMobile, toggle: togglePanel } =\r\n useToggle(false);\r\n\r\n const ToggleElement = toggleElement;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {!panelIsOpenedInMobile ? toggleTextShow : toggleTextHide}\r\n \r\n \r\n\r\n
    {children}
    \r\n \r\n );\r\n};\r\n\r\nExpandablePanel.propTypes = {\r\n toggleTextShow: PropTypes.string,\r\n toggleTextHide: PropTypes.string,\r\n toggleElement: PropTypes.string,\r\n children: PropTypes.node,\r\n};\r\n\r\nExpandablePanel.viewModelMeta = 'ignore';\r\n\r\nexport default ExpandablePanel;\r\n","import replaceQueryParameters from '@creuna/utils/replace-query-parameters';\r\nimport CryptoJs from 'crypto-js';\r\n\r\nconst resizeQueryHashSalt = '{DB2BF126-5117-49B4-AB02-949E94E711BD}';\r\n\r\nconst transforms = {\r\n downFit: 'downFit',\r\n downFill: 'downFill',\r\n};\r\n\r\nconst skipForResizeExtensions = ['svg'];\r\n\r\nconst queryParameters = {\r\n width: undefined,\r\n height: undefined,\r\n transform: undefined,\r\n center: undefined,\r\n};\r\n\r\nfunction checkImageCanBeResized(url) {\r\n if (!url) return false;\r\n var extension = url.split(/#|\\?/)[0].split('.').pop().trim();\r\n extension = extension.toLowerCase();\r\n if (skipForResizeExtensions.some(item => item === extension)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nfunction buildResizeUrl(url, width, height, transform, centerX, centerY) {\r\n if (!checkImageCanBeResized(url)) {\r\n return url;\r\n }\r\n\r\n var resizeUrl = replaceQueryParameters(\r\n url,\r\n Object.assign({}, queryParameters, {\r\n width: width > 0 ? width : undefined,\r\n height: height > 0 ? height : undefined,\r\n transform: transform,\r\n center:\r\n transform !== transforms.downFit\r\n ? serializeCenter(centerX, centerY)\r\n : undefined,\r\n })\r\n );\r\n\r\n const resizeQuery = resizeUrl.split(/#|\\?/)[1];\r\n if (resizeQuery) {\r\n var queryHash = CryptoJs.MD5(\r\n resizeQuery.replace('%2C', '%2c') + resizeQueryHashSalt\r\n );\r\n resizeUrl = replaceQueryParameters(resizeUrl, { hash: queryHash });\r\n }\r\n\r\n return resizeUrl;\r\n}\r\n\r\nfunction calcImageWidth(containerWidth, resolution) {\r\n resolution = resolution > 0 ? resolution : 1;\r\n return (\r\n Math.ceil((containerWidth * (window.devicePixelRatio || 1)) / resolution) *\r\n resolution\r\n );\r\n}\r\n\r\nfunction calcImageHeight(containerHeight, resolution) {\r\n resolution = resolution > 0 ? resolution : 1;\r\n return (\r\n Math.ceil((containerHeight * (window.devicePixelRatio || 1)) / resolution) *\r\n resolution\r\n );\r\n}\r\n\r\nfunction serializeCenter(x, y) {\r\n if (x > 0 || y > 0) {\r\n return `${x / 100},${y / 100}`;\r\n }\r\n return undefined;\r\n}\r\n\r\nexport default {\r\n buildResizeUrl,\r\n checkImageCanBeResized,\r\n calcImageWidth,\r\n calcImageHeight,\r\n Transforms: transforms,\r\n};\r\n","export function createHtmlImage() {\r\n var image = typeof Image !== 'undefined' ? new Image() : {};\r\n return image;\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport debounce from 'lodash/debounce';\r\nimport imageResizer from 'js/image-resizer';\r\nimport cn from 'classnames';\r\nimport { createHtmlImage } from 'js/dom-image-utils';\r\n\r\nconst FirstLoadSizeMultiplier = 0.05; // First time we preload smaller image in order to reduce wait time.\r\n\r\n/**\r\n * Image\r\n *\r\n * Key notes:\r\n * - automatically responsive by default (size is automatically calculated from container size)\r\n * - default transform is 'fill'\r\n * - width or height can be fixed (useful for fluid images), in this case default transform is 'fit'\r\n * - when both width and height are defined it becomes unresponsive.\r\n * - can be rendered as fluid or ordinary image\r\n * - resolution it is kind of steps for automatic size calculation, for example if resolution is 100, horizontal image width could be 100,200,300...1200... and height is calculated according to aspect ratio and vise versa for vertical image\r\n * - default resolutions for images with size > 100 is 100 for < 100 is 10\r\n * - device pixel ratio is taken into account for calculating image size\r\n *\r\n * Transforms:\r\n * 'fill' - image is cropped according to container proportions to fill it completely.\r\n * 'fit' - image is resized with saving original proportions to fit container by width or height.\r\n */\r\nclass Image extends React.Component {\r\n static transforms = {\r\n fill: 'fill',\r\n fit: 'fit',\r\n };\r\n\r\n static propTypes = {\r\n className: PropTypes.string,\r\n src: PropTypes.string.isRequired,\r\n alt: PropTypes.string,\r\n transform: PropTypes.oneOf(Object.values(Image.transforms)),\r\n fluid: PropTypes.bool,\r\n focusPoint: PropTypes.shape({\r\n x: PropTypes.number.isRequired,\r\n y: PropTypes.number.isRequired,\r\n }),\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n resolution: PropTypes.number,\r\n };\r\n\r\n static viewModelMeta = {\r\n className: 'ignore',\r\n transform: 'ignore',\r\n fluid: 'ignore',\r\n width: 'ignore',\r\n height: 'ignore',\r\n resolution: 'ignore',\r\n };\r\n\r\n canBeResized = imageResizer.checkImageCanBeResized(this.props.src);\r\n autoTransform = this.constructor.transforms.fill;\r\n autoCalcWidthOnly = false;\r\n autoCalcHeightOnly = false;\r\n\r\n defaultSrc = !this.canBeResized\r\n ? this.props.src\r\n : this.props.width > 0 && this.props.height > 0\r\n ? imageResizer.buildResizeUrl(\r\n this.props.src,\r\n this.props.width,\r\n this.props.height,\r\n this.props.transform ||\r\n this.autoTransform === this.constructor.transforms.fill\r\n ? imageResizer.Transforms.downFill\r\n : imageResizer.Transforms.downFit\r\n )\r\n : undefined;\r\n\r\n state = {\r\n src: this.defaultSrc,\r\n width: 0,\r\n height: 0,\r\n ratio: 0,\r\n containerOffsetWidth: 0,\r\n containerOffsetHeight: 0,\r\n };\r\n\r\n preloadImage = createHtmlImage();\r\n firstPreloadImage = createHtmlImage();\r\n\r\n handleResize = () => {\r\n if (\r\n !this.container ||\r\n (this.container.offsetWidth === 0 && this.container.offsetHeight === 0)\r\n ) {\r\n return;\r\n }\r\n\r\n if (this.container.offsetWidth === 0 || this.container.offsetHeight === 0) {\r\n this.autoTransform = Image.transforms.fit;\r\n this.autoCalcWidthOnly = this.container.offsetWidth > 0;\r\n this.autoCalcHeightOnly = this.container.offsetHeight > 0;\r\n }\r\n\r\n const skipByWidth =\r\n this.props.width > 0\r\n ? this.state.width === this.props.width\r\n : this.container.offsetWidth === this.state.containerOffsetWidth;\r\n\r\n const skipByHeight =\r\n this.props.height > 0\r\n ? this.state.height === this.props.height\r\n : this.container.offsetHeight === this.state.containerOffsetHeight;\r\n\r\n if (skipByWidth && skipByHeight) {\r\n return;\r\n }\r\n\r\n const resolutionByWidth =\r\n !(this.props.width > 0) &&\r\n this.container.offsetWidth > this.container.offsetHeight;\r\n\r\n let resolution = this.props.resolution;\r\n if (!(resolution > 0)) {\r\n var resolutionSize = resolutionByWidth\r\n ? this.container.offsetWidth\r\n : this.container.offsetHeight;\r\n\r\n resolution = resolutionSize > 100 ? 100 : 10;\r\n }\r\n\r\n const widthResolution = resolutionByWidth ? resolution : 1;\r\n const heightResolution = resolutionByWidth ? 1 : resolution;\r\n\r\n let newWidth =\r\n this.props.width > 0\r\n ? this.props.width\r\n : this.autoCalcHeightOnly\r\n ? 0\r\n : imageResizer.calcImageWidth(\r\n this.container.offsetWidth,\r\n widthResolution\r\n );\r\n\r\n let newHeight =\r\n this.props.height > 0\r\n ? this.props.height\r\n : this.autoCalcWidthOnly\r\n ? 0\r\n : imageResizer.calcImageHeight(\r\n this.container.offsetHeight,\r\n heightResolution\r\n );\r\n\r\n if (resolutionByWidth) {\r\n if (!this.autoCalcWidthOnly && !this.props.height > 0) {\r\n newHeight = Math.ceil(\r\n newWidth / (this.container.offsetWidth / this.container.offsetHeight)\r\n );\r\n }\r\n } else {\r\n if (!this.autoCalcHeightOnly && !this.props.width > 0) {\r\n newWidth = Math.ceil(\r\n newHeight / (this.container.offsetHeight / this.container.offsetWidth)\r\n );\r\n }\r\n }\r\n\r\n const newRatio =\r\n this.container.offsetHeight > 0\r\n ? Math.ceil(this.container.offsetWidth / this.container.offsetHeight)\r\n : 1;\r\n\r\n this.setState(previousState => {\r\n if (\r\n previousState.width >= newWidth &&\r\n previousState.height >= newHeight &&\r\n previousState.ratio === newRatio\r\n ) {\r\n return {\r\n containerOffsetWidth: this.container.offsetWidth,\r\n containerOffsetHeight: this.container.offsetHeight,\r\n };\r\n }\r\n\r\n const newSrc = imageResizer.buildResizeUrl(\r\n this.props.src,\r\n newWidth,\r\n newHeight,\r\n (this.props.transform || this.autoTransform) === Image.transforms.fill\r\n ? imageResizer.Transforms.downFill\r\n : imageResizer.Transforms.downFit,\r\n this.props.focusPoint ? this.props.focusPoint.x : null,\r\n this.props.focusPoint ? this.props.focusPoint.y : null\r\n );\r\n\r\n if (!this.firstPreloadImage.src && !this.state.src) {\r\n var firstLoadWidth = Math.ceil(newWidth * FirstLoadSizeMultiplier);\r\n var firstLoadHeight = Math.ceil(newHeight * FirstLoadSizeMultiplier);\r\n if (firstLoadWidth > 0 && firstLoadHeight > 0) {\r\n const firstLoadSrc = imageResizer.buildResizeUrl(\r\n this.props.src,\r\n firstLoadWidth,\r\n firstLoadHeight,\r\n (this.props.transform || this.autoTransform) ===\r\n Image.transforms.fill\r\n ? imageResizer.Transforms.downFill\r\n : imageResizer.Transforms.downFit,\r\n this.props.focusPoint ? this.props.focusPoint.x : null,\r\n this.props.focusPoint ? this.props.focusPoint.y : null\r\n );\r\n this.firstPreloadImage.src = firstLoadSrc;\r\n }\r\n }\r\n\r\n if (newSrc !== this.state.src) {\r\n this.preloadImage.src = newSrc;\r\n }\r\n\r\n return {\r\n width: newWidth,\r\n height: newHeight,\r\n ratio: newRatio,\r\n containerOffsetWidth: this.container.offsetWidth,\r\n containerOffsetHeight: this.container.offsetHeight,\r\n };\r\n });\r\n };\r\n\r\n debouncedHandleResize = debounce(this.handleResize, 300);\r\n\r\n onFirstSrcPreloaded() {\r\n if (!this.state.src) {\r\n this.setState({ src: this.firstPreloadImage.src });\r\n }\r\n }\r\n\r\n onSrcPreloaded() {\r\n this.setState({ src: this.preloadImage.src });\r\n }\r\n\r\n checkElementIsHidden(element) {\r\n return !element.offsetParent;\r\n }\r\n\r\n isHidden() {\r\n return this.checkElementIsHidden(this.container);\r\n }\r\n\r\n getHiddenRoot() {\r\n if (!this.checkElementIsHidden(this.container)) {\r\n return null;\r\n }\r\n\r\n var parent = this.container.parentElement;\r\n while (parent && this.checkElementIsHidden(parent.parentElement)) {\r\n parent = parent.parentElement;\r\n }\r\n\r\n return parent;\r\n }\r\n\r\n onObservedChange() {\r\n if (!this.isHidden()) {\r\n this.debouncedHandleResize();\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const self = this;\r\n this.firstPreloadImage.onload = () => {\r\n self.onFirstSrcPreloaded();\r\n };\r\n this.preloadImage.onload = () => {\r\n self.onSrcPreloaded();\r\n };\r\n if (this.canBeResized) {\r\n this.handleResize();\r\n this.debouncedHandleResize();\r\n window.addEventListener('resize', this.debouncedHandleResize);\r\n }\r\n\r\n this.observer = this.canBeResized\r\n ? new MutationObserver(() => this.onObservedChange.call(this))\r\n : null;\r\n\r\n if (this.observer && this.isHidden()) {\r\n this.observer.observe(this.getHiddenRoot(), {\r\n attributes: true,\r\n });\r\n }\r\n this.setState({ componentDidMount: true });\r\n }\r\n\r\n getSnapshotBeforeUpdate(prevProps) {\r\n if (\r\n this.props.width !== prevProps.width ||\r\n this.props.height !== prevProps.height\r\n ) {\r\n this.handleResize();\r\n }\r\n return null;\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.canBeResized) {\r\n window.removeEventListener('resize', this.debouncedHandleResize);\r\n }\r\n if (this.observer) {\r\n this.observer.disconnect();\r\n }\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.canBeResized) this.debouncedHandleResize();\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {!this.props.fluid ? (\r\n (this.container = c)}\r\n >\r\n {this.state.src && (\r\n \r\n )}\r\n \r\n ) : (\r\n (this.container = c)}\r\n >\r\n {this.state.src && (\r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Image;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\nimport Image from 'components/image';\r\n\r\nconst Logo = ({ className, url, image, imageClass }) => {\r\n return (\r\n \r\n {image && }\r\n \r\n );\r\n};\r\n\r\nLogo.propTypes = {\r\n className: PropTypes.string,\r\n imageClass: PropTypes.string,\r\n url: PropTypes.string,\r\n image: PropTypes.exact(Image.propTypes),\r\n};\r\n\r\nLogo.viewModelMeta = {\r\n className: 'ignore',\r\n imageClass: 'ignore',\r\n};\r\n\r\nexport default Logo;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\nimport scrollToElement from 'scroll-to-element';\r\nimport Icon from 'components/icon';\r\n\r\nconst ScrollButton = ({\r\n className,\r\n speed = 500,\r\n label,\r\n targetElement,\r\n iconName,\r\n ariaLabel,\r\n}) => {\r\n const scrollToEl = () => {\r\n scrollToElement(targetElement, {\r\n offset: 0,\r\n ease: 'linear',\r\n duration: speed,\r\n });\r\n };\r\n\r\n return (\r\n \r\n {label && {label}}\r\n \r\n \r\n );\r\n};\r\n\r\nScrollButton.propTypes = {\r\n className: PropTypes.string,\r\n label: PropTypes.string,\r\n speed: PropTypes.number,\r\n targetElement: PropTypes.string.isRequired,\r\n iconName: PropTypes.string,\r\n ariaLabel: PropTypes.string,\r\n};\r\n\r\nScrollButton.viewModelMeta = 'ignore';\r\n\r\nexport default ScrollButton;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport cn from 'classnames';\r\n\r\nconst PoorText = ({ text, className }) => {\r\n return !text ? null : (\r\n \r\n );\r\n};\r\n\r\nPoorText.propTypes = {\r\n text: PropTypes.string,\r\n className: PropTypes.string,\r\n};\r\n\r\nPoorText.viewModelMeta = 'ignore';\r\n\r\nexport default PoorText;\r\n","import PropTypes from 'prop-types';\r\nimport Link from 'components/link';\r\n\r\nconst MenuLink = {};\r\n\r\nMenuLink.propTypes = Object.assign({}, Link.propTypes, {\r\n isActive: PropTypes.bool,\r\n});\r\n\r\nexport default MenuLink;\r\n","import PropTypes from 'prop-types';\r\nimport MenuLink from 'components/models/menu-link';\r\n\r\nconst MenuSection = {};\r\n\r\nMenuSection.propTypes = {\r\n heading: PropTypes.string,\r\n links: PropTypes.arrayOf(PropTypes.exact(MenuLink.propTypes)),\r\n};\r\n\r\nexport default MenuSection;\r\n","import MenuSection from 'components/models/menu-section';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst FooterMenu = {};\r\n\r\nFooterMenu.propTypes = {\r\n mainMenu: PropTypes.exact(MenuSection.propTypes),\r\n aboutUs: PropTypes.exact(MenuSection.propTypes),\r\n followUs: PropTypes.exact(MenuSection.propTypes),\r\n};\r\n\r\nexport default FooterMenu;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Logo from 'components/logo';\r\nimport ScrollButton from 'components/scroll-button';\r\nimport PoorText from 'components/poor-text';\r\nimport FooterMenu from 'components/models/footer-menu';\r\nimport Link from 'components/link';\r\nimport cn from 'classnames';\r\n\r\nconst Footer = ({ logo, toTopButtonText, contactInfo, footerMenu }) => {\r\n return (\r\n
    \r\n
    \r\n {footerMenu && footerMenu.mainMenu && (\r\n \r\n {footerMenu.mainMenu.heading && (\r\n

    {footerMenu.mainMenu.heading}

    \r\n )}\r\n {footerMenu.mainMenu.links && (\r\n
      \r\n {footerMenu.mainMenu.links.map((item, index) => {\r\n return (\r\n
    • \r\n \r\n
    • \r\n );\r\n })}\r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n
    \r\n {footerMenu && (\r\n \r\n {footerMenu.aboutUs && (\r\n \r\n {footerMenu.aboutUs.heading && (\r\n

    \r\n {footerMenu.aboutUs.heading}\r\n

    \r\n )}\r\n
      \r\n {footerMenu.aboutUs.links.map((item, index) => {\r\n return (\r\n
    • \r\n \r\n
    • \r\n );\r\n })}\r\n
    \r\n
    \r\n )}\r\n {footerMenu.followUs && (\r\n \r\n {footerMenu.followUs.heading && (\r\n

    \r\n {footerMenu.followUs.heading}\r\n

    \r\n )}\r\n
      \r\n {footerMenu.followUs.links.map((item, index) => {\r\n return (\r\n
    • \r\n \r\n
    • \r\n );\r\n })}\r\n
    \r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n
    \r\n {contactInfo && contactInfo.heading && (\r\n

    {contactInfo.heading}

    \r\n )}\r\n {contactInfo && contactInfo.textHtml && (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nFooter.propTypes = {\r\n contactInfo: PropTypes.shape({\r\n heading: PropTypes.string,\r\n textHtml: PropTypes.string,\r\n }),\r\n toTopButtonText: PropTypes.string.isRequired,\r\n logo: PropTypes.exact(Logo.propTypes),\r\n footerMenu: PropTypes.exact(FooterMenu.propTypes),\r\n};\r\n\r\nexport default Footer;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\n\r\nconst FormInputText = ({ label, name, placeholder, value, className }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nFormInputText.propTypes = {\r\n label: PropTypes.string,\r\n placeholder: PropTypes.string,\r\n name: PropTypes.string,\r\n value: PropTypes.string,\r\n className: PropTypes.string,\r\n};\r\n\r\nFormInputText.viewModelMeta = 'ignore';\r\n\r\nexport default FormInputText;\r\n","import React from 'react';\r\n\r\n/** Attaches an event listener for `eventName` to `window`. */\r\nexport default function useEvent(\r\n eventName = '',\r\n eventHandler = () => {},\r\n dependencies = []\r\n) {\r\n React.useEffect(() => {\r\n window.addEventListener(eventName, eventHandler);\r\n return () => window.removeEventListener(eventName, eventHandler);\r\n }, dependencies);\r\n}\r\n","import useEvent from './use-event';\r\n\r\n/** Executes the provided callback when a click event occurs outside of the provided ref */\r\nconst useClickOutside = (ref, callback = () => {}) => {\r\n useEvent('click', e => {\r\n if (\r\n ref.current &&\r\n e.target !== ref.current &&\r\n !ref.current.contains(e.target)\r\n ) {\r\n callback();\r\n }\r\n });\r\n};\r\n\r\nexport default useClickOutside;\r\n","import useEvent from './use-event';\r\n\r\nconst isEscape = event =>\r\n event && (event.key === 'Escape' || event.which === 27);\r\n\r\n/** Fires `callback` when the escape key is pressed */\r\nexport default function useEscape(callback) {\r\n useEvent('keydown', e => {\r\n if (isEscape(e)) {\r\n callback();\r\n }\r\n });\r\n}\r\n","// TODO: refactor it to create EventBus instead\r\n\r\nexport const events = {\r\n OPEN_QUICK_SEARCH: 'openQuickSearch',\r\n};\r\n\r\nfunction emitEvent(name, eventData) {\r\n if (Object.values(events).indexOf(name) > -1) {\r\n let event = null;\r\n try {\r\n event = new CustomEvent(name, { detail: eventData });\r\n } catch (err) {\r\n event = document.createEvent('Event');\r\n event.initEvent(name, true, true);\r\n event.detail = eventData;\r\n }\r\n\r\n document.dispatchEvent(event);\r\n }\r\n}\r\n\r\nexport default emitEvent;\r\n","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ColoredTagsList from 'components/colored-tags-list';\r\nimport MenuSection from 'components/models/menu-section';\r\nimport useToggle from 'hooks/use-toggle';\r\nimport cn from 'classnames';\r\nimport Icon from 'components/icon';\r\nimport useClickOutside from 'hooks/use-click-outside';\r\nimport useEscape from 'hooks/use-escape';\r\nimport emitEvent, { events } from 'js/emit-event';\r\n\r\nimport Link from 'components/link';\r\n\r\nconst headerMenuPanelId = 'header-menu-panel';\r\n\r\nconst HeaderMenu = ({\r\n main,\r\n lang = {\r\n menuAriaLabel: 'Modalvindu for hovedmeny',\r\n },\r\n aboutUs,\r\n followUs,\r\n tagLinks,\r\n onMenuToggle,\r\n}) => {\r\n const { isActive: isOpened, toggle, deactivate } = useToggle(false);\r\n const ref = React.useRef();\r\n const [mainSectionLinkFocuses, setMinSectionLinkFocuses] = useState(false);\r\n\r\n useEffect(() => {\r\n onMenuToggle(isOpened);\r\n }, [isOpened]);\r\n\r\n useEscape(deactivate);\r\n useClickOutside(ref, deactivate);\r\n\r\n const toggleText = isOpened\r\n ? lang && lang.closeLabel\r\n ? lang.closeLabel\r\n : ''\r\n : main && main.heading\r\n ? main.heading\r\n : '';\r\n const toggleIconName = isOpened ? 'menu-close' : 'menu';\r\n\r\n const linkTabIndex = isOpened ? null : -1;\r\n\r\n React.useEffect(() => {\r\n const bodyClass = 'header-menu-is-opened';\r\n isOpened\r\n ? document.body.classList.add(bodyClass)\r\n : document.body.classList.remove(bodyClass);\r\n }, [isOpened]);\r\n\r\n const onOpenSearch = () => {\r\n emitEvent(events.OPEN_QUICK_SEARCH, {});\r\n deactivate();\r\n };\r\n\r\n return (\r\n \r\n \r\n {toggleText}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {lang.searchButtonText}\r\n \r\n \r\n
    \r\n {main && main.links && (\r\n \r\n {main.links.map((item, index) => {\r\n return (\r\n
  • \r\n {\r\n setMinSectionLinkFocuses(true);\r\n }}\r\n onBlur={() => {\r\n setMinSectionLinkFocuses(false);\r\n }}\r\n />\r\n\r\n \r\n
  • \r\n );\r\n })}\r\n \r\n )}\r\n {tagLinks && (\r\n \r\n )}\r\n
    \r\n {aboutUs && (\r\n
    \r\n {aboutUs.heading && (\r\n

    \r\n {aboutUs.heading}\r\n

    \r\n )}\r\n
      \r\n {aboutUs.links.map((item, index) => {\r\n return (\r\n
    • \r\n \r\n
    • \r\n );\r\n })}\r\n
    \r\n
    \r\n )}\r\n {followUs && (\r\n
    \r\n {followUs.heading && (\r\n

    \r\n {followUs.heading}\r\n

    \r\n )}\r\n
      \r\n {followUs.links.map((item, index) => {\r\n return (\r\n
    • \r\n \r\n
    • \r\n );\r\n })}\r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nHeaderMenu.propTypes = {\r\n lang: PropTypes.shape({\r\n closeLabel: PropTypes.string.isRequired,\r\n showQuickSearchLabel: PropTypes.string.isRequired,\r\n searchButtonText: PropTypes.string.isRequired,\r\n menuAriaLabel: PropTypes.string.isRequired,\r\n }).isRequired,\r\n main: PropTypes.exact(MenuSection.propTypes),\r\n aboutUs: PropTypes.exact(MenuSection.propTypes),\r\n followUs: PropTypes.exact(MenuSection.propTypes),\r\n tagLinks: PropTypes.exact(ColoredTagsList.propTypes),\r\n onMenuToggle: PropTypes.func,\r\n};\r\n\r\nHeaderMenu.viewModelMeta = {\r\n onMenuToggle: 'ignore',\r\n};\r\n\r\nexport default HeaderMenu;\r\n","import PubSub from 'pubsub-js';\r\n\r\nconst errorMessageTopic = 'error-message';\r\nconst messageTopic = 'message';\r\n\r\nfunction onTopic(topic, func) {\r\n if (typeof func !== 'function') {\r\n return;\r\n }\r\n\r\n return PubSub.subscribe(topic, (topic, { message }) => {\r\n func({ message });\r\n });\r\n}\r\n\r\nfunction send(topic, { message }) {\r\n PubSub.publish(topic, { message });\r\n}\r\n\r\nconst onErrorMessage = func => onTopic(errorMessageTopic, func);\r\n\r\nconst onMessage = func => onTopic(messageTopic, func);\r\n\r\nconst sendErrorMessage = ({ message }) => send(errorMessageTopic, { message });\r\n\r\nconst sendMessage = ({ message }) => send(messageTopic, { message });\r\n\r\nexport default {\r\n onErrorMessage,\r\n onMessage,\r\n sendErrorMessage,\r\n sendMessage,\r\n};\r\n","//import analytics from './analytics';\r\nimport getData from '@creuna/utils/get-data';\r\nimport messenger from './messenger';\r\n\r\nconst defaultFetchOptions = {\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n credentials: 'include',\r\n};\r\n\r\nfunction parseResponse(response) {\r\n return response.json().then(json => ({ json, response }));\r\n}\r\n\r\nfunction handleUserMessages({ json, response }) {\r\n if (json.messageToUser) {\r\n if (json.success) {\r\n messenger.sendMessage({ message: json.messageToUser });\r\n } else {\r\n messenger.sendErrorMessage({ message: json.messageToUser });\r\n }\r\n }\r\n\r\n return { json, response };\r\n}\r\n\r\n/*function handleAnalytics({ json, response }) {\r\n if (json.analytics) {\r\n analytics.send(json.analytics);\r\n }\r\n\r\n return { json, response };\r\n}*/\r\n\r\nfunction handleNotOk({ json, response }) {\r\n // NOTE: `response.ok` is true when the returned status is in the inclusive range 200-299.\r\n if (!response.ok && !json.messageToUser) {\r\n const error = new Error(response.statusText);\r\n\r\n error.name = `${response.status} on ${response.url}`;\r\n\r\n throw error;\r\n }\r\n\r\n return { json, response };\r\n}\r\n\r\nfunction handleResponse({ json }) {\r\n return json.payload || json;\r\n}\r\n\r\nfunction handleFetchError(error) {\r\n messenger.sendErrorMessage({\r\n message:\r\n getData('generic-error-message') ||\r\n 'Noe gikk galt. Vennligst prøv igjen senere.',\r\n });\r\n\r\n return Promise.reject(error);\r\n}\r\n\r\nfunction request(url, options) {\r\n return (\r\n fetch(url, options)\r\n .then(parseResponse)\r\n .then(handleUserMessages)\r\n //.then(handleAnalytics)\r\n .then(handleNotOk)\r\n .then(handleResponse)\r\n .catch(handleFetchError)\r\n );\r\n}\r\n\r\nfunction post(endpoint, data) {\r\n return request(\r\n endpoint,\r\n Object.assign({}, defaultFetchOptions, {\r\n body: data,\r\n method: 'post',\r\n })\r\n );\r\n}\r\n\r\nfunction get(endpoint) {\r\n return request(endpoint, defaultFetchOptions);\r\n}\r\n\r\nfunction execute(endpoint, data) {\r\n if (endpoint.indexOf('/static-site/api') !== -1) {\r\n return new Promise(resolve => {\r\n setTimeout(() => {\r\n resolve(request(endpoint, defaultFetchOptions));\r\n }, 1000);\r\n });\r\n }\r\n\r\n return post(endpoint, JSON.stringify(data));\r\n}\r\n\r\nexport default {\r\n execute,\r\n get,\r\n};\r\n","import React, {\r\n useState,\r\n useRef,\r\n useEffect,\r\n forwardRef,\r\n useImperativeHandle,\r\n} from 'react';\r\nimport Icon from 'components/icon';\r\nimport PropTypes from 'prop-types';\r\nimport useEscape from 'hooks/use-escape';\r\nimport cn from 'classnames';\r\nimport Autosuggest from 'react-autosuggest';\r\nimport apiHelper from 'js/api-helper';\r\n\r\nconst SearchForm = forwardRef(\r\n (\r\n {\r\n searchPageUrl,\r\n searchInputAriaLabel,\r\n searchButtonText,\r\n searchButtonTextHidden = true,\r\n searchHint,\r\n query,\r\n className,\r\n onInputChange = () => {},\r\n onInputFocus = () => {},\r\n onEscPress = () => {},\r\n onSearch = null,\r\n autocompleteEndpoint,\r\n autocompleteSuggestionsAriaLabel,\r\n searchFormAriaLabel = 'Søkefelt for globalsøk',\r\n },\r\n ref\r\n ) => {\r\n const [value, setValue] = useState(query || '');\r\n const [suggestions, setSuggestions] = useState([]);\r\n const form = useRef(null);\r\n const searchInput = useRef(null);\r\n\r\n const onSuggestionsClearRequested = () => {\r\n setSuggestions([]);\r\n };\r\n\r\n useEffect(() => {\r\n setValue(query || '');\r\n }, [query]);\r\n\r\n const onSearchTextChange = (event, { newValue }) => {\r\n setValue(newValue);\r\n onInputChange(newValue);\r\n };\r\n\r\n const getSuggestionsCacheMap = () => {\r\n var globalContext = window || global;\r\n if (!globalContext.suggestionsDictionary) {\r\n globalContext.suggestionsDictionary = new Map();\r\n }\r\n\r\n return globalContext.suggestionsDictionary;\r\n };\r\n\r\n const tryGetSuggestionsFromCache = query => {\r\n return getSuggestionsCacheMap().get(query);\r\n };\r\n\r\n const putSuggestionsToCache = (query, suggestions) => {\r\n getSuggestionsCacheMap().set(query, suggestions);\r\n };\r\n\r\n const onSuggestionsFetchRequested = ({ value }) => {\r\n const inputValue = value.trim().toLowerCase();\r\n const inputLength = inputValue.length;\r\n const query = { q: inputValue };\r\n\r\n if (inputLength !== 0 && autocompleteEndpoint) {\r\n const suggestionsFromCache = tryGetSuggestionsFromCache(inputValue);\r\n if (suggestionsFromCache) {\r\n setSuggestions(suggestionsFromCache);\r\n } else {\r\n apiHelper\r\n .execute(autocompleteEndpoint, query)\r\n .then(results => {\r\n setSuggestions(results);\r\n putSuggestionsToCache(inputValue, results);\r\n })\r\n .catch(error => {\r\n setSuggestions([]);\r\n\r\n // eslint-disable-next-line no-console\r\n console.log(\r\n 'Unexpected error happened during autocomplete suggestions request:',\r\n error\r\n );\r\n });\r\n }\r\n } else {\r\n setSuggestions([]);\r\n }\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n resetSearchValue() {\r\n setValue('');\r\n },\r\n toggleInputFocus(focus = true) {\r\n if (searchInput && searchInput.current) {\r\n focus ? searchInput.current.focus() : searchInput.current.blur();\r\n }\r\n },\r\n }));\r\n\r\n const onFormSubmit = e => {\r\n if (onSearch) {\r\n e.preventDefault();\r\n onSearch({ query: value });\r\n }\r\n };\r\n\r\n useEscape(() => {\r\n onEscPress();\r\n if (searchInput && searchInput.current) {\r\n searchInput.current.blur();\r\n }\r\n }, [searchInput]);\r\n\r\n const inputProps = {\r\n placeholder: searchHint,\r\n value,\r\n onChange: onSearchTextChange,\r\n onFocus: onInputFocus,\r\n ref: searchInput,\r\n 'aria-label': searchInputAriaLabel,\r\n name: 'q',\r\n type: 'search',\r\n };\r\n\r\n const getSuggestionValue = suggestion => suggestion;\r\n\r\n const onSuggestionSelected = () => {\r\n setTimeout(function () {\r\n form.current.submit();\r\n }, 1);\r\n };\r\n\r\n return (\r\n \r\n
    {suggestion}
    }\r\n inputProps={inputProps}\r\n renderSuggestionsContainer={({ containerProps, children }) => (\r\n \r\n {children}\r\n \r\n )}\r\n onSuggestionSelected={onSuggestionSelected}\r\n />\r\n \r\n \r\n );\r\n }\r\n);\r\n\r\nSearchForm.viewModelMeta = {\r\n className: 'ignore',\r\n query: 'ignore',\r\n onInputChange: 'ignore',\r\n onInputFocus: 'ignore',\r\n onEscPress: 'ignore',\r\n searchButtonTextHidden: 'ignore',\r\n};\r\n\r\nSearchForm.propTypes = {\r\n searchHint: PropTypes.string,\r\n query: PropTypes.string,\r\n className: PropTypes.string,\r\n searchPageUrl: PropTypes.string,\r\n searchInputAriaLabel: PropTypes.string.isRequired,\r\n searchButtonText: PropTypes.string.isRequired,\r\n onInputChange: PropTypes.func,\r\n onInputFocus: PropTypes.func,\r\n onEscPress: PropTypes.func,\r\n onSearch: PropTypes.func,\r\n searchButtonTextHidden: PropTypes.bool,\r\n autocompleteEndpoint: PropTypes.string,\r\n autocompleteSuggestionsAriaLabel: PropTypes.string.isRequired,\r\n searchFormAriaLabel: PropTypes.string,\r\n};\r\n\r\nexport default SearchForm;\r\n","/* eslint-disable react/no-multi-comp */\r\nimport React, { useEffect, useRef } from 'react';\r\nimport SearchForm from 'components/search-form';\r\nimport Icon from 'components/icon';\r\nimport useToggle from 'hooks/use-toggle';\r\nimport cn from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { events } from 'js/emit-event';\r\n\r\nconst quickSearchFormId = 'quick-search-form';\r\n\r\nconst QuickSearch = ({\r\n className,\r\n showQuickSearchLabel,\r\n hideQuickSearchLabel,\r\n searchForm,\r\n}) => {\r\n const { isActive, toggle, activate, deactivate } = useToggle(false);\r\n const searchFormRef = useRef(null);\r\n\r\n const resetSearchState = () => {\r\n deactivate();\r\n };\r\n\r\n useEffect(() => {\r\n if (searchFormRef && searchFormRef.current) {\r\n searchFormRef.current.toggleInputFocus(isActive);\r\n !isActive && searchFormRef.current.resetSearchValue();\r\n }\r\n }, [isActive, searchFormRef]);\r\n\r\n useEffect(() => {\r\n document.addEventListener(events.OPEN_QUICK_SEARCH, activate);\r\n\r\n return () => {\r\n document.removeEventListener(events.OPEN_QUICK_SEARCH, activate);\r\n };\r\n }, []);\r\n\r\n const onSearchInputFocus = () => {\r\n activate();\r\n };\r\n\r\n const renderIcon = isActive => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n {renderIcon(false)}\r\n \r\n
    \r\n
    \r\n \r\n {renderIcon(isActive)}\r\n \r\n \r\n \r\n \r\n {renderIcon(true)}\r\n \r\n
    \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nQuickSearch.viewModelMeta = {\r\n className: 'ignore',\r\n};\r\n\r\nQuickSearch.propTypes = {\r\n className: PropTypes.string,\r\n searchForm: PropTypes.exact(SearchForm.propTypes).isRequired,\r\n showQuickSearchLabel: PropTypes.string,\r\n hideQuickSearchLabel: PropTypes.string,\r\n};\r\n\r\nexport default QuickSearch;\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Logo from 'components/logo';\r\nimport HeaderMenu from 'components/header-menu';\r\nimport QuickSearch from 'components/quick-search';\r\nimport FocusTrap from 'focus-trap-react';\r\n\r\nconst Header = ({ logo, headerMenu, quickSearch }) => {\r\n const [isHeaderMenuActive, setIsHeaderMenuActive] = useState(false);\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n {quickSearch && (\r\n \r\n )}\r\n \r\n {headerMenu && (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nHeader.propTypes = {\r\n quickSearch: PropTypes.exact(QuickSearch.propTypes),\r\n logo: PropTypes.exact(Logo.propTypes),\r\n headerMenu: PropTypes.exact(HeaderMenu.propTypes),\r\n};\r\n\r\nexport default Header;\r\n","import isRunningOnClient from '@creuna/utils/is-running-on-client';\r\n\r\nfunction minWidth(size) {\r\n return function () {\r\n return isRunningOnClient\r\n ? window.matchMedia(`(min-width: ${size}px)`).matches\r\n : null;\r\n };\r\n}\r\n\r\nconst breakpoints = {\r\n s: 0,\r\n m: 768,\r\n l: 1024,\r\n ipadPro: 1025,\r\n};\r\n\r\nexport default {\r\n s: minWidth(breakpoints.s),\r\n m: minWidth(breakpoints.m),\r\n l: minWidth(breakpoints.l),\r\n ipadPro: minWidth(breakpoints.ipadPro),\r\n};\r\n","import React, { useEffect } from 'react';\r\nimport breakpoints from 'js/breakpoints';\r\n\r\nexport default function useBreakpoints(\r\n initiallyDesktop,\r\n initiallyTablet,\r\n initiallyMobile,\r\n initiallyDesktopLargerThanIpad\r\n) {\r\n const [state, setState] = React.useState({\r\n isDesktop: initiallyDesktop,\r\n isTablet: initiallyTablet,\r\n isMobile: initiallyMobile,\r\n isDesktopLargerThanIpad: initiallyDesktopLargerThanIpad,\r\n brekpointsStarted: false,\r\n });\r\n\r\n const onResize = () => {\r\n setState({\r\n isDesktop: breakpoints.l(),\r\n isTablet: breakpoints.m() && !breakpoints.l(),\r\n isMobile: breakpoints.s() && !breakpoints.m(),\r\n isDesktopLargerThanIpad: breakpoints.ipadPro(),\r\n brekpointsStarted: true,\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n onResize();\r\n window.addEventListener('resize', onResize);\r\n return () => window.removeEventListener('resize', onResize);\r\n }, []);\r\n\r\n return state;\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport useBreakpoints from 'hooks/use-breakpoints';\r\nimport LinesEllipsis from 'react-lines-ellipsis';\r\nimport responsiveHOC from 'react-lines-ellipsis/lib/responsiveHOC';\r\n\r\nconst ResponsiveEllipsis = responsiveHOC()(LinesEllipsis);\r\n\r\nconst HeadingCropper = ({ text, maxLinesMobile, maxLinesDesktop }) => {\r\n const { isDesktop } = useBreakpoints(true);\r\n return (\r\n text && (\r\n \r\n )\r\n );\r\n};\r\n\r\nHeadingCropper.propTypes = {\r\n text: PropTypes.string,\r\n maxLinesMobile: PropTypes.number.isRequired,\r\n maxLinesDesktop: PropTypes.number.isRequired,\r\n};\r\n\r\nHeadingCropper.viewModelMeta = 'ignore';\r\n\r\nexport default HeadingCropper;\r\n","import React from 'react';\r\nimport Icon from 'components/icon';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\n\r\nexport const sizes = {\r\n normal: 'normal',\r\n small: 'small',\r\n};\r\n\r\nconst IconLabel = ({\r\n className,\r\n icon,\r\n size = sizes.normal,\r\n text,\r\n iconAriaLabel,\r\n tabIndex,\r\n}) => {\r\n return (\r\n \r\n \r\n {iconAriaLabel && (\r\n \r\n {iconAriaLabel}\r\n \r\n )}\r\n {text}\r\n \r\n );\r\n};\r\n\r\nIconLabel.viewModelMeta = 'ignore';\r\n\r\nIconLabel.propTypes = {\r\n className: PropTypes.string,\r\n iconAriaLabel: PropTypes.string,\r\n tabIndex: PropTypes.number,\r\n icon: PropTypes.string,\r\n size: PropTypes.oneOf(Object.values(sizes)),\r\n text: PropTypes.string,\r\n};\r\n\r\nexport default IconLabel;\r\n","function pluralOrSingularText(amount, plural, singular) {\r\n let text = null;\r\n\r\n if (amount || amount === 0) {\r\n if (amount <= 1 || amount === 0) {\r\n singular ? (text = singular) : null;\r\n } else {\r\n plural ? (text = plural) : null;\r\n }\r\n }\r\n\r\n return text;\r\n}\r\n\r\nexport default pluralOrSingularText;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport pluralOrSingularText from 'js/pluralOrSingularText.js';\r\n\r\nconst IngredientName = ({ amount, plural, singular }) => {\r\n let name = pluralOrSingularText(amount, plural, singular);\r\n\r\n return name && {name};\r\n};\r\n\r\nIngredientName.propTypes = {\r\n amount: PropTypes.number,\r\n plural: PropTypes.string,\r\n singular: PropTypes.string,\r\n};\r\n\r\nIngredientName.viewModelMeta = 'ignore';\r\n\r\nexport default IngredientName;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport pluralOrSingularText from 'js/pluralOrSingularText.js';\r\n\r\nconst IngredientUnit = ({ amount, plural, singular }) => {\r\n let unitText = pluralOrSingularText(amount, plural, singular);\r\n\r\n return (\r\n unitText && (\r\n {unitText}\r\n )\r\n );\r\n};\r\n\r\nIngredientUnit.propTypes = {\r\n amount: PropTypes.number,\r\n plural: PropTypes.string,\r\n singular: PropTypes.string,\r\n};\r\n\r\nIngredientUnit.viewModelMeta = 'ignore';\r\n\r\nexport default IngredientUnit;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst IngredientAmount = ({ number }) => {\r\n return number && number !== 0 ? (\r\n {number}\r\n ) : null;\r\n};\r\n\r\nIngredientAmount.propTypes = {\r\n number: PropTypes.number,\r\n};\r\n\r\nIngredientAmount.viewModelMeta = 'ignore';\r\n\r\nexport default IngredientAmount;\r\n","const printOrder = { aui: 'aui', iau: 'iau', iua: 'iua' };\r\nexport default printOrder;\r\n","const prefixesDictionary = {};\r\n\r\nconst generateUniqueId = prefix => {\r\n if (!prefixesDictionary[prefix]) {\r\n prefixesDictionary[prefix] = 1;\r\n } else {\r\n prefixesDictionary[prefix] += 1;\r\n }\r\n return `${prefix}-${prefixesDictionary[prefix]}`;\r\n};\r\n\r\nexport default {\r\n generateUniqueId,\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport IngredientName from './ingredient-name';\r\nimport IngredientUnit from './ingredient-unit';\r\nimport IngredientAmount from './ingredient-amount';\r\nimport PrintOrder from './print-order.js';\r\nimport idHelper from 'js/id-helper';\r\n\r\nconst Ingredient = ({ amount, printOrder, unit, name }) => {\r\n const uniqueIngredientId = useMemo(\r\n () => idHelper.generateUniqueId('ingredient-item'),\r\n []\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {printOrder && (\r\n \r\n {printOrder === PrintOrder.aui && (\r\n \r\n \r\n {unit && }\r\n {name && }\r\n \r\n )}\r\n {printOrder === PrintOrder.iau && (\r\n \r\n {name && }\r\n \r\n {unit && }\r\n \r\n )}\r\n {printOrder === PrintOrder.iua && (\r\n \r\n {name && }\r\n {unit && }\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nIngredient.propTypes = {\r\n printOrder: PropTypes.oneOf(Object.values(PrintOrder)),\r\n amount: PropTypes.number,\r\n unit: PropTypes.shape({\r\n plural: PropTypes.string,\r\n singular: PropTypes.string,\r\n }),\r\n name: PropTypes.shape({\r\n plural: PropTypes.string,\r\n singular: PropTypes.string,\r\n }),\r\n};\r\n\r\nIngredient.viewModelMeta = 'ignore';\r\n\r\nexport default Ingredient;\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ExpandablePanel from 'components/expandable-panel';\r\nimport Ingredient from './ingredient';\r\nimport fullCopy from 'js/fullCopy.js';\r\n\r\nconst Ingredients = ({\r\n lang = {\r\n increaseNumberOfServingsAriaLabel: 'Høyere antall porsjoner',\r\n decreaseNumberOfServingsAriaLabel: 'Lavere antall porsjoner',\r\n },\r\n heading,\r\n sections,\r\n servingsDefaultNumber,\r\n}) => {\r\n const servingNumber = servingsDefaultNumber || 1;\r\n const [currentSections, setCurrentSections] = useState([]);\r\n\r\n const [currentServings, setCurrentServings] = useState(servingNumber);\r\n\r\n const handleKeyDown = e => {\r\n if (e.key === '-' || e.key === '.') {\r\n e.preventDefault();\r\n }\r\n };\r\n\r\n const handlePaste = e => {\r\n e.preventDefault();\r\n const pastedText = (e.clipboardData || window.clipboardData).getData(\r\n 'text'\r\n );\r\n const sanitizedText = pastedText.replace(/[-.]/g, '');\r\n const updatedText =\r\n e.target.value.slice(0, e.target.selectionStart) +\r\n sanitizedText +\r\n e.target.value.slice(e.target.selectionEnd);\r\n setCurrentServings(parseInt(updatedText));\r\n };\r\n\r\n const handleServingsInputChange = v => {\r\n setCurrentServings(parseInt(v));\r\n };\r\n\r\n const increaseServings = () => {\r\n setCurrentServings(currentServings + 1);\r\n };\r\n\r\n const decreaseServings = () => {\r\n setCurrentServings(\r\n currentServings > 1 ? currentServings - 1 : currentServings\r\n );\r\n };\r\n\r\n const calcAmount = (amount, ratio) => {\r\n const str = (amount * ratio).toFixed(2);\r\n const endingZeroes = /(\\.0*$)/;\r\n const tmpSrt = str.replace(endingZeroes, '');\r\n return parseFloat(tmpSrt);\r\n };\r\n\r\n const updateSections = () => {\r\n const newSections = fullCopy(sections);\r\n const servings = currentServings > 1 ? currentServings : 1;\r\n const ratio = servings / servingNumber;\r\n\r\n newSections.forEach(section => {\r\n section.ingredients.forEach(ingredient => {\r\n ingredient.amount = calcAmount(ingredient.amount, ratio);\r\n });\r\n });\r\n\r\n setCurrentSections(newSections);\r\n };\r\n\r\n React.useEffect(() => {\r\n updateSections();\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n updateSections();\r\n }, [currentServings]);\r\n\r\n return (\r\n \r\n
    \r\n {heading &&

    {heading}

    }\r\n
    \r\n \r\n {lang.servingsLabel}\r\n \r\n
    \r\n handleServingsInputChange(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n onPaste={handlePaste}\r\n />\r\n \r\n +\r\n \r\n \r\n -\r\n \r\n
    \r\n
    \r\n\r\n {currentSections && (\r\n
    \r\n {currentSections.map((section, sectionIndex) => (\r\n \r\n {section.heading && (\r\n \r\n {section.heading}\r\n \r\n )}\r\n {section.ingredients &&\r\n section.ingredients.map((ingredient, ingredientIndex) => {\r\n const showIngredient =\r\n ingredient.printOrder &&\r\n ingredient.amount !== null &&\r\n ingredient.amount !== undefined;\r\n return showIngredient ? (\r\n \r\n \r\n \r\n ) : null;\r\n })}\r\n \r\n ))}\r\n \r\n )}\r\n
    \r\n \r\n );\r\n};\r\n\r\nIngredients.propTypes = {\r\n heading: PropTypes.string,\r\n lang: PropTypes.shape({\r\n mobileShowLabel: PropTypes.string.isRequired,\r\n mobileHideLabel: PropTypes.string.isRequired,\r\n servingsLabel: PropTypes.string.isRequired,\r\n increaseNumberOfServingsAriaLabel: PropTypes.string.isRequired,\r\n decreaseNumberOfServingsAriaLabel: PropTypes.string.isRequired,\r\n }),\r\n servingsDefaultNumber: PropTypes.number,\r\n sections: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n heading: PropTypes.string,\r\n ingredients: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n printOrder: PropTypes.oneOf(['aui', 'iau', 'iua']), //Should be the same as print-order.js object\r\n amount: PropTypes.number.isRequired,\r\n unit: PropTypes.shape({\r\n plural: PropTypes.string,\r\n singular: PropTypes.string,\r\n }),\r\n name: PropTypes.shape({\r\n plural: PropTypes.string,\r\n singular: PropTypes.string,\r\n }),\r\n })\r\n ),\r\n })\r\n ),\r\n};\r\n\r\nIngredients.viewModelMeta = {\r\n sections: [{ ingredients: [{ amount: 'double' }] }],\r\n};\r\n\r\nexport default Ingredients;\r\n","function fullcopy(data) {\r\n let copy = JSON.parse(JSON.stringify(data));\r\n\r\n return copy;\r\n}\r\n\r\nexport default fullcopy;\r\n","/* eslint-disable react/jsx-no-target-blank */\r\n/* eslint-disable view-models/no-unused-meta */\r\n/* eslint-disable react/prop-types */\r\n// TODO: remove view-models/no-unused-meta and eslint-disable react/prop-types\r\nimport React from 'react';\r\nimport LinkBase from 'components/models/link-base';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\n\r\nconst LinkButton = ({\r\n className,\r\n openInNewTab = false,\r\n url,\r\n text,\r\n tabindex,\r\n}) => {\r\n return url ? (\r\n \r\n {text}\r\n \r\n ) : (\r\n \r\n {text}\r\n \r\n );\r\n};\r\n\r\nLinkButton.viewModelMeta = {\r\n className: 'ignore',\r\n tabindex: 'ignore',\r\n};\r\n\r\nLinkButton.propTypes = Object.assign({}, LinkBase.propTypes, {\r\n className: PropTypes.string,\r\n tabindex: PropTypes.number,\r\n});\r\n\r\nexport default LinkButton;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\n\r\nconst LoadMoreButton = ({ text, onClick = () => {}, className }) => {\r\n const handleClick = () => {\r\n onClick();\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nLoadMoreButton.propTypes = {\r\n text: PropTypes.string,\r\n onClick: PropTypes.func,\r\n className: PropTypes.string,\r\n};\r\n\r\nLoadMoreButton.viewModelMeta = 'ignore';\r\n\r\nexport default LoadMoreButton;\r\n","import React from 'react';\r\n\r\nconst LoadingIndicator = () => {\r\n return
    ;\r\n};\r\n\r\nLoadingIndicator.viewModelMeta = 'ignore';\r\n\r\nexport default LoadingIndicator;\r\n","import React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Modal } from 'react-responsive-modal';\r\n\r\nconst MODAL_ROOT_CLASS = 'modal';\r\n\r\nconst ModalComponent = ({\r\n children,\r\n isOpened = false,\r\n titleAriaLabel,\r\n id,\r\n onClose = () => {},\r\n}) => {\r\n useEffect(() => {\r\n if (isOpened) {\r\n document.body.classList.add(`${MODAL_ROOT_CLASS}__body-modal-opened`);\r\n } else {\r\n document.body.classList.remove(`${MODAL_ROOT_CLASS}__body-modal-opened`);\r\n }\r\n\r\n return () => {\r\n document.body.classList.remove(`${MODAL_ROOT_CLASS}__body-modal-opened`);\r\n };\r\n }, [isOpened]);\r\n\r\n return (\r\n \r\n {titleAriaLabel && (\r\n

    \r\n {titleAriaLabel}\r\n

    \r\n )}\r\n {children}\r\n \r\n );\r\n};\r\n\r\nModalComponent.propTypes = {\r\n isOpened: PropTypes.bool,\r\n children: PropTypes.node,\r\n onClose: PropTypes.func,\r\n titleAriaLabel: PropTypes.string,\r\n id: PropTypes.string,\r\n};\r\n\r\nModalComponent.viewModelMeta = 'ignore';\r\n\r\nexport default ModalComponent;\r\n","import PropTypes from 'prop-types';\r\n\r\nconst FilterItem = {};\r\n\r\nFilterItem.propTypes = {\r\n text: PropTypes.string.isRequired,\r\n value: PropTypes.string.isRequired,\r\n selected: PropTypes.bool,\r\n noHits: PropTypes.bool,\r\n};\r\n\r\nexport default FilterItem;\r\n","import PropTypes from 'prop-types';\r\nimport FilterItem from '../filter-item/filter-item';\r\n\r\nconst Filter = {};\r\n\r\nFilter.propTypes = {\r\n heading: PropTypes.string,\r\n allItemsLabel: PropTypes.string,\r\n items: PropTypes.arrayOf(PropTypes.exact(FilterItem.propTypes)),\r\n name: PropTypes.string,\r\n};\r\n\r\nexport default Filter;\r\n","import PubSub from 'pubsub-js';\r\n\r\nconst ratingTopic = 'NEWRATING';\r\n\r\nconst recipeMessageBus = {\r\n subscribeToNewRating: callback => PubSub.subscribe(ratingTopic, callback),\r\n publishNewRating: newRating => PubSub.publish(ratingTopic, newRating),\r\n unsubscribeFromNewRating: token => PubSub.unsubscribe(token),\r\n};\r\n\r\nexport default recipeMessageBus;\r\n","import React, { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\nimport IconLabel from 'components/icon-label';\r\nimport recipeMessageBus from 'js/recipe-message-bus';\r\n\r\n// eslint-disable-next-line view-models/no-errors\r\nexport const sizes = {\r\n normal: 'normal',\r\n small: 'small',\r\n};\r\n\r\nconst RecipeDetails = ({\r\n className,\r\n size = sizes.normal,\r\n cookingTime,\r\n difficultyLevel,\r\n rating,\r\n cookingTimeIconAriaLabel,\r\n difficultyLevelIconAriaLabel,\r\n ratingIconAriaLabel,\r\n useFocusableDetails = true,\r\n isRecipePage = false,\r\n}) => {\r\n const [currentRating, setCurrentRating] = useState(rating);\r\n useEffect(() => {\r\n if (isRecipePage) {\r\n const token = recipeMessageBus.subscribeToNewRating((msg, data) => {\r\n setCurrentRating(data);\r\n });\r\n\r\n return () => {\r\n recipeMessageBus.unsubscribeFromNewRating(token);\r\n };\r\n }\r\n }, [isRecipePage]);\r\n\r\n const commonIconLabelProps = {\r\n className: 'recipe-details__item',\r\n size: size,\r\n ...(useFocusableDetails && { tabIndex: 0 }),\r\n };\r\n\r\n return (\r\n \r\n {cookingTime && (\r\n \r\n )}\r\n {difficultyLevel && (\r\n \r\n )}\r\n {currentRating && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nRecipeDetails.propTypes = {\r\n className: PropTypes.string,\r\n size: PropTypes.oneOf(Object.values(sizes)),\r\n cookingTime: PropTypes.string,\r\n difficultyLevel: PropTypes.string,\r\n rating: PropTypes.string,\r\n cookingTimeIconAriaLabel: PropTypes.string,\r\n difficultyLevelIconAriaLabel: PropTypes.string,\r\n ratingIconAriaLabel: PropTypes.string,\r\n useFocusableDetails: PropTypes.bool,\r\n isRecipePage: PropTypes.bool,\r\n};\r\n\r\nRecipeDetails.viewModelMeta = {\r\n className: 'ignore',\r\n size: 'ignore',\r\n useFocusableDetails: 'ignore',\r\n};\r\n\r\n// eslint-disable-next-line view-models/no-errors\r\nexport default RecipeDetails;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Image from 'components/image';\r\nimport Icon from 'components/icon';\r\nimport cn from 'classnames';\r\nimport HeadingCropper from 'components/heading-cropper';\r\nimport RecipeDetails, {\r\n sizes as recipeDetailsSizes,\r\n} from 'components/recipe-details';\r\nimport apiHelper from 'js/api-helper';\r\n\r\nconst SearchTeaser = ({\r\n image,\r\n heading,\r\n url,\r\n trackUrl,\r\n color,\r\n className,\r\n recipeDetails,\r\n}) => {\r\n const teaserStyle = {\r\n backgroundColor: color,\r\n };\r\n\r\n const handleLinkClick = e => {\r\n if (trackUrl) {\r\n var defaultBehaviour = e.ctrlKey;\r\n if (!defaultBehaviour) {\r\n e.preventDefault();\r\n }\r\n apiHelper.execute(trackUrl, {}).then(_response => {\r\n if (!defaultBehaviour && url) {\r\n window.location.href = url;\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {image && (\r\n \r\n )}\r\n \r\n {heading && (\r\n

    \r\n \r\n

    \r\n )}\r\n \r\n {recipeDetails && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nSearchTeaser.propTypes = {\r\n image: PropTypes.exact(Image.propTypes),\r\n heading: PropTypes.string,\r\n url: PropTypes.string,\r\n trackUrl: PropTypes.string,\r\n color: PropTypes.string,\r\n className: PropTypes.string,\r\n recipeDetails: PropTypes.exact(RecipeDetails.propTypes),\r\n};\r\n\r\nSearchTeaser.viewModelMeta = {\r\n className: 'ignore',\r\n};\r\n\r\nexport default SearchTeaser;\r\n","import SearchTeaser from 'components/search-teaser/search-teaser';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst LoadMoreSearchResults = {};\r\n\r\nLoadMoreSearchResults.propTypes = {\r\n hits: PropTypes.arrayOf(PropTypes.exact(SearchTeaser.propTypes)),\r\n hasMore: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default LoadMoreSearchResults;\r\n","import React from 'react';\r\nimport Image from 'components/image';\r\nimport PoorText from 'components/poor-text';\r\nimport HeadingCropper from 'components/heading-cropper';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\n\r\n// eslint-disable-next-line view-models/no-errors\r\nexport const TeaserWidths = {\r\n oneThird: '1-3',\r\n twoThird: '2-3',\r\n full: 'full-width',\r\n};\r\n\r\nconst Teaser = ({\r\n className,\r\n categories,\r\n teaserWidth,\r\n url,\r\n image,\r\n heading,\r\n headingTagLevel = 3,\r\n introHtml,\r\n backgroundColor,\r\n}) => {\r\n const horizontalMode = teaserWidth !== TeaserWidths.oneThird;\r\n const fullWidthMode = teaserWidth === TeaserWidths.full;\r\n\r\n const imageProps = {\r\n ...(horizontalMode && {\r\n fluid: true,\r\n }),\r\n };\r\n\r\n const RootElement = url ? 'a' : 'div';\r\n const hideIntro = teaserWidth === TeaserWidths.oneThird && image;\r\n const HeadingTag = `h${headingTagLevel}`;\r\n\r\n return (\r\n \r\n \r\n
    \r\n {image && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n {categories && categories.length > 0 && (\r\n
      \r\n {categories.map((item, index) => (\r\n
    • \r\n {item}\r\n
    • \r\n ))}\r\n
    \r\n )}\r\n {heading && (\r\n \r\n \r\n \r\n )}\r\n {introHtml && !hideIntro && (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nTeaser.propTypes = {\r\n teaserWidth: PropTypes.oneOf(Object.values(TeaserWidths)),\r\n categories: PropTypes.arrayOf(PropTypes.string),\r\n className: PropTypes.string,\r\n url: PropTypes.string,\r\n image: PropTypes.exact(Image.propTypes),\r\n heading: PropTypes.string.isRequired,\r\n headingTagLevel: PropTypes.oneOf([2, 3]),\r\n introHtml: PropTypes.string,\r\n backgroundColor: PropTypes.string.isRequired,\r\n};\r\n\r\nTeaser.viewModelMeta = {\r\n headingTagLevel: 'ignore',\r\n className: 'ignore',\r\n teaserWidth: 'ignore',\r\n};\r\n\r\n// eslint-disable-next-line view-models/no-errors\r\nexport default Teaser;\r\n","import PropTypes from 'prop-types';\r\nimport Teaser from 'components/teaser/teaser';\r\n\r\nconst LoadMoreTeasersResults = {};\r\n\r\nLoadMoreTeasersResults.propTypes = {\r\n items: PropTypes.arrayOf(Teaser.propTypes),\r\n hasMore: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default LoadMoreTeasersResults;\r\n","import PropTypes from 'prop-types';\r\n\r\nconst PagerLang = {};\r\n\r\nPagerLang.propTypes = {\r\n nextLabel: PropTypes.string.isRequired,\r\n prevLabel: PropTypes.string.isRequired,\r\n pageLabel: PropTypes.string.isRequired,\r\n jumpBackwardAriaLabel: PropTypes.string.isRequired,\r\n jumpForwardAriaLabel: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default PagerLang;\r\n","/* eslint-disable view-models/no-unused-meta */\r\n/* eslint-disable react/prop-types */\r\n// TODO: remove view-models/no-unused-meta and eslint-disable react/prop-types\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport FilterItem from 'components/models/filter-item';\r\nimport cn from 'classnames';\r\nimport Icon from 'components/icon';\r\n\r\nconst TagsFilterItem = ({\r\n color,\r\n text,\r\n value,\r\n selected = false,\r\n onClick = () => {},\r\n className,\r\n}) => {\r\n var buttonStyle = {\r\n backgroundColor: color,\r\n };\r\n return (\r\n onClick()}\r\n style={buttonStyle}\r\n >\r\n {selected && }\r\n {text}\r\n \r\n );\r\n};\r\n\r\nTagsFilterItem.propTypes = Object.assign({}, FilterItem.propTypes, {\r\n color: PropTypes.string.isRequired,\r\n onClick: PropTypes.func,\r\n className: PropTypes.string,\r\n});\r\n\r\nTagsFilterItem.viewModelMeta = {\r\n className: 'ignore',\r\n};\r\n\r\nexport default TagsFilterItem;\r\n","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport TagsFilterItem from 'components/tags-filter-item';\r\nimport cn from 'classnames';\r\n\r\nconst TagsFilter = ({\r\n name,\r\n items,\r\n // eslint-disable-next-line no-unused-vars\r\n onChange = ({ name, items }) => {},\r\n className,\r\n}) => {\r\n const [selectedItem, setSelectedItem] = useState(null);\r\n\r\n useEffect(() => {\r\n setSelectedItem(items.find(x => x.selected));\r\n }, [items]);\r\n\r\n const handleItemClick = clickedItem => {\r\n const newSelectedItem = clickedItem === selectedItem ? null : clickedItem;\r\n setSelectedItem(newSelectedItem);\r\n const currentItems = items.map(item => {\r\n return { ...item, selected: item === newSelectedItem };\r\n });\r\n onChange({ name: name, items: currentItems });\r\n };\r\n\r\n return (\r\n \r\n {items &&\r\n items.map(item => (\r\n \r\n handleItemClick(item)}\r\n className=\"tags-filter__item-button\"\r\n />\r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nTagsFilter.propTypes = {\r\n name: PropTypes.string,\r\n items: PropTypes.arrayOf(PropTypes.exact(TagsFilterItem.propTypes)),\r\n onChange: PropTypes.func,\r\n className: PropTypes.string,\r\n};\r\n\r\nTagsFilter.viewModelMeta = {\r\n className: 'ignore',\r\n onChange: 'ignore',\r\n};\r\n\r\nexport default TagsFilter;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Image from 'components/image';\r\nimport cn from 'classnames';\r\nimport Icon from 'components/icon';\r\nimport HeadingCropper from 'components/heading-cropper';\r\nimport RecipeDetails, {\r\n sizes as recipeDetailsSizes,\r\n} from 'components/recipe-details';\r\n\r\nconst RecipeTeaser = ({\r\n className,\r\n image,\r\n heading,\r\n headingTagLevel = 3,\r\n url,\r\n recipeDetails,\r\n}) => {\r\n const HeadingTag = `h${headingTagLevel}`;\r\n return (\r\n \r\n \r\n {image && (\r\n \r\n )}\r\n \r\n {heading && (\r\n \r\n \r\n \r\n )}\r\n \r\n {recipeDetails && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nRecipeTeaser.propTypes = {\r\n id: PropTypes.string,\r\n className: PropTypes.string,\r\n image: PropTypes.exact(Image.propTypes),\r\n heading: PropTypes.string,\r\n headingTagLevel: PropTypes.oneOf([2, 3]),\r\n url: PropTypes.string,\r\n recipeDetails: PropTypes.exact(RecipeDetails.propTypes),\r\n};\r\n\r\nRecipeTeaser.viewModelMeta = {\r\n className: 'ignore',\r\n headingTagLevel: 'ignore',\r\n};\r\n\r\nexport default RecipeTeaser;\r\n","import PropTypes from 'prop-types';\r\nimport TagsFilter from 'components/tags-filter/tags-filter';\r\nimport Filter from '../filter/filter';\r\nimport RecipeTeaser from 'components/recipe-teaser/recipe-teaser';\r\n\r\nconst RecipesOverviewResults = {};\r\n\r\nRecipesOverviewResults.propTypes = {\r\n categoriesFilter: PropTypes.exact(TagsFilter.propTypes),\r\n filters: PropTypes.arrayOf(Filter.propTypes),\r\n recipesList: PropTypes.arrayOf(RecipeTeaser.propTypes),\r\n totalCount: PropTypes.number.isRequired,\r\n pager: PropTypes.shape({\r\n page: PropTypes.number,\r\n totalPages: PropTypes.number,\r\n }),\r\n};\r\n\r\nexport default RecipesOverviewResults;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport SearchTeaser from 'components/search-teaser/search-teaser';\r\nimport useBreakpoints from 'hooks/use-breakpoints';\r\nimport Masonry, { ResponsiveMasonry } from 'react-responsive-masonry';\r\nimport LoadingIndicator from 'components/loading-indicator';\r\nimport ErrorMessage from 'components/error-message';\r\nimport LoadMoreButton from 'components/load-more-button/load-more-button';\r\n\r\nconst SearchSection = ({\r\n heading,\r\n hits,\r\n hasMore,\r\n loadMoreButtonText,\r\n onLoadMoreClick = () => {},\r\n isLoading,\r\n showError,\r\n errorMessage,\r\n}) => {\r\n const { isDesktop } = useBreakpoints(true);\r\n\r\n return (\r\n
    \r\n
    \r\n

    {heading}

    \r\n {hits && (\r\n \r\n {isDesktop ? (\r\n
      \r\n {hits.map((teaser, index) => (\r\n
    • \r\n \r\n
    • \r\n ))}\r\n
    \r\n ) : (\r\n
    \r\n \r\n \r\n {hits.map((teaser, index) => (\r\n
    \r\n \r\n
    \r\n ))}\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n )}\r\n {hasMore && (\r\n \r\n )}\r\n {isLoading && }\r\n {showError && }\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nSearchSection.propTypes = {\r\n errorMessage: PropTypes.string,\r\n pageType: PropTypes.string.isRequired,\r\n heading: PropTypes.string.isRequired,\r\n hits: PropTypes.arrayOf(PropTypes.exact(SearchTeaser.propTypes)),\r\n hasMore: PropTypes.bool.isRequired,\r\n onLoadMoreClick: PropTypes.func,\r\n loadMoreButtonText: PropTypes.string.isRequired,\r\n isLoading: PropTypes.bool,\r\n showError: PropTypes.bool,\r\n};\r\n\r\nSearchSection.viewModelMeta = {\r\n loadMoreButtonText: 'ignore',\r\n isLoading: 'ignore',\r\n showError: 'ignore',\r\n errorMessage: 'ignore',\r\n};\r\n\r\nexport default SearchSection;\r\n","import SearchSection from 'components/search-section/search-section';\r\nimport TagsFilter from 'components/tags-filter/tags-filter';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst SearchResults = {};\r\n\r\nSearchResults.propTypes = {\r\n pageTypeFilter: PropTypes.exact(TagsFilter.propTypes),\r\n sections: PropTypes.arrayOf(PropTypes.exact(SearchSection.propTypes)),\r\n queryTrackId: PropTypes.string,\r\n totalCount: PropTypes.number.isRequired,\r\n};\r\n\r\nexport default SearchResults;\r\n","import PropTypes from 'prop-types';\r\nimport Image from 'components/image';\r\n\r\nconst ShareLink = {};\r\n\r\nShareLink.propTypes = {\r\n icon: PropTypes.exact(Image.propTypes),\r\n url: PropTypes.string.isRequired,\r\n label: PropTypes.string,\r\n};\r\n\r\nexport default ShareLink;\r\n","import React, { useState, useCallback, useRef, useMemo } from 'react';\r\nimport Modal from 'components/modal';\r\nimport Image from 'components/image';\r\nimport useToggle from '../../hooks/use-toggle';\r\nimport PropTypes from 'prop-types';\r\nimport ReactPlayer from 'react-player';\r\nimport cn from 'classnames';\r\nimport idHelper from 'js/id-helper';\r\n\r\nconst Video = ({\r\n src,\r\n autoplay = false,\r\n className,\r\n previewImage,\r\n imageSettings = {},\r\n fluid,\r\n playButtonTabIndex,\r\n modalTitleAriaLabel = 'Modalvindu for videoavspiller',\r\n}) => {\r\n const uniqueVideoModalId = useMemo(\r\n () => idHelper.generateUniqueId('video'),\r\n []\r\n );\r\n const { isActive, deactivate, activate } = useToggle(false);\r\n const [playing, setPlaying] = useState(false);\r\n const playerContainerRef = useRef();\r\n\r\n const onPlayBtnClick = e => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n activate();\r\n if (autoplay) {\r\n setPlaying(true);\r\n }\r\n };\r\n\r\n const onPlayerReady = useCallback(() => {\r\n if (playerContainerRef && playerContainerRef.current) {\r\n const youtubeIframe = playerContainerRef.current.querySelector('iframe');\r\n\r\n if (youtubeIframe) {\r\n youtubeIframe.setAttribute('tabindex', '0');\r\n }\r\n }\r\n }, [playerContainerRef]);\r\n\r\n return (\r\n \r\n {previewImage && (\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nVideo.propTypes = {\r\n previewImage: PropTypes.exact(Image.propTypes),\r\n src: PropTypes.string,\r\n autoplay: PropTypes.bool,\r\n className: PropTypes.string,\r\n fluid: PropTypes.bool,\r\n imageSettings: PropTypes.shape({\r\n className: PropTypes.string,\r\n height: PropTypes.number,\r\n width: PropTypes.number,\r\n fluid: PropTypes.bool,\r\n }),\r\n playButtonTabIndex: PropTypes.string,\r\n modalTitleAriaLabel: PropTypes.string,\r\n};\r\n\r\nVideo.viewModelMeta = {\r\n className: 'ignore',\r\n imageSettings: 'ignore',\r\n fluid: 'ignore',\r\n playButtonTabIndex: 'ignore',\r\n};\r\n\r\nexport default Video;\r\n","import PropTypes from 'prop-types';\r\nimport Image from 'components/image';\r\nimport Video from 'components/video';\r\n\r\nconst TechniqueStep = {};\r\n\r\nTechniqueStep.propTypes = {\r\n heading: PropTypes.string,\r\n introHtml: PropTypes.string,\r\n image: PropTypes.exact(Image.propTypes),\r\n video: PropTypes.exact(Video.propTypes),\r\n};\r\n\r\nexport default TechniqueStep;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport LinkButton from 'components/link-button';\r\nimport ColoredTag from 'components/colored-tag';\r\nimport SearchForm from 'components/search-form';\r\nimport PoorText from 'components/poor-text';\r\n\r\nconst NotFoundPage = ({\r\n heading,\r\n tag1Text,\r\n tag2Text,\r\n introHtml,\r\n searchForm,\r\n homePageButton,\r\n}) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {heading &&

    {heading}

    }\r\n \r\n \r\n
    \r\n {introHtml && (\r\n \r\n )}\r\n \r\n {homePageButton && (\r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nNotFoundPage.propTypes = {\r\n heading: PropTypes.string,\r\n tag1Text: PropTypes.string,\r\n tag2Text: PropTypes.string,\r\n introHtml: PropTypes.string,\r\n searchForm: PropTypes.exact(SearchForm.propTypes),\r\n homePageButton: PropTypes.exact(LinkButton.propTypes),\r\n};\r\n\r\nexport default NotFoundPage;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\n\r\nconst PageHeading = ({ text, className }) => {\r\n return (\r\n

    \r\n {text}\r\n

    \r\n );\r\n};\r\n\r\nPageHeading.propTypes = {\r\n text: PropTypes.string,\r\n className: PropTypes.string,\r\n};\r\n\r\nPageHeading.viewModelMeta = 'ignore';\r\n\r\nexport default PageHeading;\r\n","import { useRef, useEffect } from 'react';\r\n\r\nexport default function useDidUpdateEffect(fn, inputs) {\r\n const didMountRef = useRef(false);\r\n\r\n useEffect(() => {\r\n if (didMountRef.current) fn();\r\n else didMountRef.current = true;\r\n }, inputs);\r\n}\r\n","function format(string, ...args) {\r\n return string.replace(/{(\\d+)}/g, function (match, number) {\r\n return typeof args[number] !== 'undefined' ? args[number] : '';\r\n });\r\n}\r\n\r\nexport default {\r\n format,\r\n};\r\n","import React, { useRef, useState, useEffect, useMemo } from 'react';\r\nimport ReactPaginate from 'react-paginate';\r\nimport cn from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport useDidUpdateEffect from 'hooks/use-did-update-effect';\r\nimport stringHelper from 'js/string-helper';\r\nimport PagerLang from 'components/models/pager-lang/pager-lang';\r\n\r\nconst Pager = ({\r\n totalPages,\r\n page,\r\n pageRangeDisplayed = 2,\r\n className,\r\n lang = {\r\n prevLabel: 'Prev',\r\n pageLabel: '{0} of {1}',\r\n nextLabel: 'Next',\r\n jumpBackwardAriaLabel: 'Jump backward',\r\n jumpForwardAriaLabel: 'Jump forward',\r\n },\r\n onPageChange,\r\n}) => {\r\n const pagerSelectRef = useRef(null);\r\n const pagerWrapperRef = useRef(null);\r\n const pagerRef = useRef(null);\r\n const [currentPage, setCurrentPage] = useState(page);\r\n\r\n useDidUpdateEffect(() => {\r\n setCurrentPage(page);\r\n }, [page]);\r\n\r\n const pagerSelectOptions = useMemo(() => {\r\n return Array.from({ length: totalPages }, (_, i) => i + 1);\r\n }, [totalPages]);\r\n\r\n useEffect(() => {\r\n if (\r\n pagerWrapperRef &&\r\n pagerWrapperRef.current &&\r\n pagerSelectRef &&\r\n pagerSelectRef.current &&\r\n totalPages\r\n ) {\r\n const firstPagerItem = pagerWrapperRef.current.querySelector('ul > li');\r\n firstPagerItem.parentNode.insertBefore(\r\n pagerSelectRef.current,\r\n firstPagerItem.nextSibling\r\n );\r\n }\r\n }, [pagerSelectRef, pagerWrapperRef, totalPages]);\r\n\r\n const onMobileSelectorChange = e => {\r\n const newPage = +e.target.value;\r\n setCurrentPage(newPage);\r\n onPageChange(newPage);\r\n\r\n if (pagerRef && pagerRef.current) {\r\n pagerRef.current.handlePageChange(newPage - 1);\r\n }\r\n };\r\n\r\n const onPagerPageChange = ({ selected }) => {\r\n const newPage = selected + 1;\r\n setCurrentPage(newPage);\r\n onPageChange(newPage);\r\n };\r\n\r\n return totalPages > 1 ? (\r\n \r\n {pagerSelectOptions && pagerSelectOptions.length > 0 && (\r\n
  • \r\n \r\n {pagerSelectOptions.map(option => (\r\n \r\n ))}\r\n \r\n
  • \r\n )}\r\n
    \r\n \r\n stringHelper.format(lang.pageLabel, pageIndex, totalPages)\r\n }\r\n breakAriaLabels={{\r\n forward: lang.jumpBackwardAriaLabel,\r\n backward: lang.jumpForwardAriaLabel,\r\n }}\r\n hrefAllControls={true}\r\n breakClassName=\"pager__break\"\r\n disableInitialCallback={true}\r\n pageRangeDisplayed={pageRangeDisplayed}\r\n marginPagesDisplayed={1}\r\n containerClassName=\"pager__list\"\r\n pageClassName=\"pager__item\"\r\n pageLinkClassName=\"pager__link\"\r\n previousClassName=\"pager__prev\"\r\n nextClassName=\"pager__next\"\r\n onPageChange={onPagerPageChange}\r\n />\r\n
    \r\n \r\n ) : null;\r\n};\r\n\r\nPager.viewModelMeta = 'ignore';\r\n\r\nPager.propTypes = {\r\n className: PropTypes.string,\r\n pageRangeDisplayed: PropTypes.number,\r\n page: PropTypes.number,\r\n totalPages: PropTypes.number,\r\n lang: PropTypes.shape(PagerLang.propTypes).isRequired,\r\n onPageChange: PropTypes.func,\r\n};\r\n\r\nexport default Pager;\r\n","import PropTypes from 'prop-types';\r\n\r\nconst QAItem = {};\r\n\r\nQAItem.propTypes = {\r\n heading: PropTypes.string.isRequired,\r\n contentHtml: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default QAItem;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport RichText from 'components/rich-text';\r\nimport {\r\n Accordion as AccordionComponent,\r\n AccordionItem,\r\n AccordionItemHeading,\r\n AccordionItemButton,\r\n AccordionItemPanel,\r\n} from 'react-accessible-accordion';\r\nimport QAItem from './q-a-item';\r\n\r\nconst QABlock = ({ autoCollapse = true, items }) => {\r\n return (\r\n
    \r\n
    \r\n \r\n {items.length > 0 &&\r\n items.map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n
    \r\n {item.heading}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n })}\r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nQABlock.propTypes = {\r\n autoCollapse: PropTypes.bool,\r\n items: PropTypes.arrayOf(PropTypes.exact(QAItem.propTypes)).isRequired,\r\n};\r\n\r\nexport default QABlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\nimport Icon from 'components/icon';\r\n\r\nconst RateRecipeItem = ({\r\n className,\r\n isActive,\r\n value,\r\n hint,\r\n onMouseEnter = () => {},\r\n onMouseLeave = () => {},\r\n onClick = () => {},\r\n onFocus = () => {},\r\n onBlur = () => {},\r\n isDisabled = false,\r\n}) => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nRateRecipeItem.viewModelMeta = {\r\n className: 'ignore',\r\n isActive: 'ignore',\r\n isDisabled: 'ignore',\r\n onFocus: 'ignore',\r\n onMouseLeave: 'ignore',\r\n onBlur: 'ignore',\r\n};\r\n\r\nRateRecipeItem.propTypes = {\r\n className: PropTypes.string,\r\n isActive: PropTypes.bool,\r\n value: PropTypes.number,\r\n hint: PropTypes.string.isRequired,\r\n onMouseEnter: PropTypes.func,\r\n onClick: PropTypes.func,\r\n onFocus: PropTypes.func,\r\n onMouseLeave: PropTypes.func,\r\n onBlur: PropTypes.func,\r\n isDisabled: PropTypes.bool,\r\n};\r\n\r\nexport default RateRecipeItem;\r\n","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Cookies from 'js-cookie';\r\nimport apiHelper from 'js/api-helper';\r\nimport RateRecipeItem from './rate-recipe-item';\r\nimport recipeMessageBus from 'js/recipe-message-bus';\r\nimport cn from 'classnames';\r\n\r\nconst COOKIE_DATA_NAME = 'godfiskRecipesRating';\r\n\r\nconst RateRecipe = ({\r\n recipeId,\r\n currentRating,\r\n submitUrl,\r\n items,\r\n className,\r\n lang,\r\n}) => {\r\n const [isRatedByUser, setIsRatedByUser] = useState(false);\r\n const [showError, setShowError] = useState(false);\r\n const [cookiesData, setCookiesData] = useState({});\r\n const [selectedItem, setSelectedItem] = useState({});\r\n const [isHintShown, setIsHintShown] = useState(false);\r\n const [rateConfirmation, setRateConfirmation] = useState(null);\r\n const [isTemporaryDisabled, setIsTemporaryDisabled] = useState(false);\r\n\r\n const setSelectedItemByValue = value => {\r\n const newSelectedItem = items.find(i => i.value === value);\r\n setSelectedItem(\r\n value && value !== 0 && newSelectedItem ? newSelectedItem : {}\r\n );\r\n };\r\n\r\n const isItemActive = (itemRating, currentRating) => {\r\n return itemRating <= currentRating;\r\n };\r\n\r\n const onItemsMouseLeave = () => {\r\n if (!isRatedByUser) {\r\n setSelectedItemByValue(currentRating);\r\n setIsHintShown(false);\r\n }\r\n };\r\n\r\n const onItemClick = () => {\r\n setIsRatedByUser(true);\r\n setIsHintShown(false);\r\n apiHelper\r\n .execute(submitUrl, {\r\n rateValue: selectedItem.value,\r\n })\r\n .then(response => {\r\n if (response.rating && response.ratingValue) {\r\n setRateConfirmation(response.confirmation);\r\n\r\n const newRecipeId = recipeId;\r\n const currentCookieData = cookiesData;\r\n const addCookieData = { [newRecipeId]: selectedItem.value };\r\n const newCookieData = { ...currentCookieData, ...addCookieData };\r\n\r\n Cookies.set(COOKIE_DATA_NAME, JSON.stringify(newCookieData), {\r\n expires: 365,\r\n });\r\n\r\n setCookiesData(newCookieData);\r\n setShowError(false);\r\n recipeMessageBus.publishNewRating(response.rating);\r\n } else {\r\n setShowError(true);\r\n setIsRatedByUser(false);\r\n setIsTemporaryDisabled(true);\r\n }\r\n })\r\n .catch(() => {\r\n setIsRatedByUser(false);\r\n setShowError(true);\r\n setIsTemporaryDisabled(true);\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n const recipeCookiesString = Cookies.get(COOKIE_DATA_NAME);\r\n if (recipeCookiesString) {\r\n const recipeCookies = JSON.parse(recipeCookiesString);\r\n setCookiesData(recipeCookies);\r\n if (recipeCookies[recipeId]) {\r\n setRateConfirmation(lang.youHaveAlreadyRatedMessage);\r\n }\r\n }\r\n setSelectedItemByValue(currentRating);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (cookiesData && cookiesData[recipeId]) {\r\n setIsRatedByUser(true);\r\n } else {\r\n setIsRatedByUser(false);\r\n }\r\n }, [cookiesData]);\r\n\r\n useEffect(() => {\r\n if (isTemporaryDisabled) {\r\n setTimeout(() => {\r\n setIsTemporaryDisabled(false);\r\n }, 5000);\r\n }\r\n }, [isTemporaryDisabled]);\r\n\r\n return (\r\n
    \r\n \r\n {lang.rateThisRecipeLabel}\r\n \r\n
    \r\n {items && (\r\n onItemsMouseLeave()}\r\n >\r\n {items.map((item, index) => {\r\n return (\r\n
  • \r\n {\r\n setSelectedItemByValue(item.value);\r\n setIsHintShown(true);\r\n setShowError(false);\r\n }}\r\n onFocus={() => {\r\n setSelectedItemByValue(item.value);\r\n setIsHintShown(true);\r\n setShowError(false);\r\n }}\r\n onBlur={() => setIsHintShown(false)}\r\n onMouseLeave={() => setIsHintShown(false)}\r\n onClick={onItemClick}\r\n isDisabled={isRatedByUser || isTemporaryDisabled}\r\n />\r\n
  • \r\n );\r\n })}\r\n \r\n )}\r\n\r\n
    \r\n {selectedItem && selectedItem.hint && isHintShown && !showError && (\r\n
    {selectedItem.hint}
    \r\n )}\r\n {rateConfirmation && !showError && (\r\n
    {rateConfirmation}
    \r\n )}\r\n {showError && (\r\n
    {lang.errorText}
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nRateRecipe.viewModelMeta = {\r\n className: 'ignore',\r\n};\r\n\r\nRateRecipe.propTypes = {\r\n className: PropTypes.string,\r\n recipeId: PropTypes.string.isRequired,\r\n currentRating: PropTypes.number.isRequired,\r\n submitUrl: PropTypes.string.isRequired,\r\n items: PropTypes.arrayOf(PropTypes.exact(RateRecipeItem.propTypes)),\r\n lang: PropTypes.shape({\r\n rateThisRecipeLabel: PropTypes.string.isRequired,\r\n errorText: PropTypes.string.isRequired,\r\n youHaveAlreadyRatedMessage: PropTypes.string.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nexport default RateRecipe;\r\n","import React, {\r\n forwardRef,\r\n useEffect,\r\n useImperativeHandle,\r\n useState,\r\n} from 'react';\r\nimport Filter from 'components/models/filter';\r\nimport Checkbox from 'components/checkbox';\r\nimport useToggle from 'hooks/use-toggle';\r\nimport cn from 'classnames';\r\nimport useBreakpoints from 'hooks/use-breakpoints';\r\nimport Icon from 'components/icon';\r\n\r\nconst recipeFilterPanelId = 'recipe-filter-panel';\r\n\r\nconst RecipeFilter = forwardRef(\r\n (\r\n {\r\n heading,\r\n allItemsLabel,\r\n items,\r\n name,\r\n // eslint-disable-next-line no-unused-vars\r\n onChange = ({ name, items }) => {},\r\n },\r\n ref\r\n ) => {\r\n const { isDesktop } = useBreakpoints(true);\r\n const { isActive: panelIsOpenedInMobile, toggle: togglePanel } =\r\n useToggle(false);\r\n\r\n const [currentItems, setCurrentItems] = useState([]);\r\n const [allItem, setAllItem] = useState(\r\n allItemsLabel ? { text: allItemsLabel, value: 'all' } : null\r\n );\r\n\r\n const updateItem = (targetItem, selected) => {\r\n setCurrentItems(currentItems =>\r\n currentItems.map(item =>\r\n targetItem === item ? { ...item, selected: selected } : item\r\n )\r\n );\r\n };\r\n\r\n const updateAllItems = selected => {\r\n setCurrentItems(currentItems =>\r\n currentItems.map(item =>\r\n item.selected !== selected ? { ...item, selected: selected } : item\r\n )\r\n );\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n unselectItem(item) {\r\n updateItem(item, false);\r\n },\r\n unselectAll() {\r\n updateAllItems(false);\r\n },\r\n }));\r\n\r\n useEffect(() => {\r\n setCurrentItems(items);\r\n }, [items]);\r\n\r\n useEffect(() => {\r\n setAllItem(allItem =>\r\n allItem\r\n ? {\r\n ...allItem,\r\n selected: !currentItems.find(i => !i.selected),\r\n }\r\n : null\r\n );\r\n if (currentItems !== items && currentItems.length > 0) {\r\n onChange({ name: name, items: currentItems });\r\n }\r\n }, [currentItems]);\r\n\r\n return (\r\n
    \r\n {isDesktop ? (\r\n heading && (\r\n {heading}\r\n )\r\n ) : (\r\n \r\n \r\n {heading && (\r\n {heading}\r\n )}\r\n \r\n )}\r\n \r\n {currentItems.length > 0 && allItem && (\r\n
    \r\n updateAllItems(checked)}\r\n />\r\n
    \r\n )}\r\n {currentItems.map(item => {\r\n return (\r\n \r\n updateItem(item, checked)}\r\n />\r\n
    \r\n );\r\n })}\r\n \r\n \r\n );\r\n }\r\n);\r\n\r\nRecipeFilter.propTypes = { ...Filter.propTypes };\r\n\r\nRecipeFilter.viewModelMeta = 'ignore';\r\n\r\nexport default RecipeFilter;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Icon from 'components/icon';\r\n\r\nconst RecipeFiltersRemoveFilterButton = ({ text, onclick = () => {} }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nRecipeFiltersRemoveFilterButton.propTypes = {\r\n text: PropTypes.string,\r\n onclick: PropTypes.func,\r\n};\r\n\r\nRecipeFiltersRemoveFilterButton.viewModelMeta = 'ignore';\r\n\r\nexport default RecipeFiltersRemoveFilterButton;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Icon from 'components/icon';\r\nimport cn from 'classnames';\r\n\r\nconst ToggleButton = ({\r\n hint,\r\n isActive,\r\n label,\r\n onClick = () => {},\r\n amount = 0,\r\n ariaControls,\r\n}) => {\r\n return (\r\n
    \r\n
    \r\n {hint}\r\n \r\n
    \r\n\r\n \r\n \r\n {label} {amount > 0 ? '(' + amount + ')' : null}\r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nToggleButton.propTypes = {\r\n hint: PropTypes.string,\r\n isActive: PropTypes.bool,\r\n onClick: PropTypes.func,\r\n label: PropTypes.string,\r\n amount: PropTypes.number,\r\n ariaControls: PropTypes.string,\r\n};\r\n\r\nToggleButton.viewModelMeta = 'ignore';\r\n\r\nexport default ToggleButton;\r\n","import React, { createRef, useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\nimport useToggle from 'hooks/use-toggle';\r\nimport useClickOutside from 'hooks/use-click-outside';\r\nimport useEscape from 'hooks/use-escape';\r\nimport RecipesFilter from 'components/recipe-filter';\r\nimport RecipeFiltersRemoveFilterButton from './recipe-filters-remove-filter-button';\r\nimport ToggleButton from 'components/toggle-button';\r\n\r\nconst recipeFiltersPanelId = 'recipe-filters-panel';\r\n\r\nconst RecipeFilters = ({\r\n filterHint,\r\n filterLabel,\r\n clearFiltersLabel,\r\n totalResultsLabel,\r\n totalCount,\r\n filters,\r\n // eslint-disable-next-line no-unused-vars\r\n onFilterChange = ({ name, items }) => {},\r\n}) => {\r\n const {\r\n isActive: isFiltersPanelOpen,\r\n toggle: toggleFiltersPanel,\r\n deactivate,\r\n } = useToggle(false);\r\n const [selectedItemsMap, setSelectedItemsMap] = useState([]);\r\n const [selectedItemsCount, setSelectedItemsCount] = useState(0);\r\n const [filterRefs, setFilterRefs] = useState(new Map());\r\n const ref = React.useRef();\r\n useEscape(deactivate);\r\n useClickOutside(ref, deactivate);\r\n\r\n useEffect(() => {\r\n setSelectedItemsMap(\r\n new Map(filters.map(x => [x, (x.items || []).filter(i => i.selected)]))\r\n );\r\n\r\n setFilterRefs(new Map(filters.map(f => [f, createRef()])));\r\n }, [filters]);\r\n\r\n useEffect(() => {\r\n setSelectedItemsCount(\r\n [...selectedItemsMap.values()].reduce(\r\n (sum, items) => sum + items.length,\r\n 0\r\n )\r\n );\r\n }, [selectedItemsMap]);\r\n\r\n const handleFilterChange = (filter, e) => {\r\n setSelectedItemsMap(map => {\r\n map.set(\r\n filter,\r\n e.items.filter(i => i.selected)\r\n );\r\n return new Map(map);\r\n });\r\n onFilterChange(e);\r\n };\r\n\r\n const unselectFilterItem = (filter, item) => {\r\n filterRefs.get(filter).current.unselectItem(item);\r\n };\r\n\r\n const unselectAll = () => {\r\n [...filterRefs.values()].forEach(fr => fr.current.unselectAll());\r\n };\r\n\r\n const getSelectedItemsMapAsFilterItemEntries = () => {\r\n return [...selectedItemsMap.entries()].flatMap(([filter, items]) =>\r\n items.map(item => ({ filter, item }))\r\n );\r\n };\r\n\r\n return (\r\n
    \r\n \r\n 0,\r\n 'recipe-filters__panel_opened': isFiltersPanelOpen,\r\n })}\r\n id={recipeFiltersPanelId}\r\n aria-hidden={!isFiltersPanelOpen}\r\n >\r\n
    \r\n {selectedItemsCount > 0 && (\r\n \r\n \r\n {clearFiltersLabel}\r\n \r\n \r\n {totalResultsLabel} {totalCount}\r\n \r\n
    \r\n {getSelectedItemsMapAsFilterItemEntries().map(\r\n (entry, index) => (\r\n \r\n unselectFilterItem(entry.filter, entry.item)\r\n }\r\n key={index}\r\n text={entry.item.text}\r\n />\r\n )\r\n )}\r\n
    \r\n
    \r\n )}\r\n\r\n {filters && (\r\n
    \r\n {filters.map((filter, index) => {\r\n return (\r\n
    \r\n handleFilterChange(filter, e)}\r\n />\r\n
    \r\n );\r\n })}\r\n
    \r\n )}\r\n\r\n {selectedItemsCount > 0 && (\r\n \r\n {clearFiltersLabel}\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nRecipeFilters.propTypes = {\r\n filterHint: PropTypes.string,\r\n filterLabel: PropTypes.string,\r\n clearFiltersLabel: PropTypes.string,\r\n totalResultsLabel: PropTypes.string,\r\n totalCount: PropTypes.number,\r\n selectedFilters: PropTypes.arrayOf(\r\n PropTypes.exact(RecipeFiltersRemoveFilterButton.propTypes)\r\n ),\r\n filters: PropTypes.arrayOf(PropTypes.exact(RecipesFilter.propTypes)),\r\n onFilterChange: PropTypes.func,\r\n};\r\n\r\nRecipeFilters.viewModelMeta = 'ignore';\r\n\r\nexport default RecipeFilters;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Icon from 'components/icon';\r\nimport cn from 'classnames';\r\n\r\nconst ViewSelectItem = ({ view, iconName, selected, onChange = () => {} }) => {\r\n return (\r\n onChange(view)}\r\n >\r\n \r\n \r\n );\r\n};\r\n\r\nViewSelectItem.propTypes = {\r\n view: PropTypes.string,\r\n iconName: PropTypes.string,\r\n selected: PropTypes.bool,\r\n onChange: PropTypes.func,\r\n};\r\n\r\nViewSelectItem.viewModelMeta = 'ignore';\r\n\r\nexport default ViewSelectItem;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ViewSelectItem from './view-select-item';\r\nimport cn from 'classnames';\r\n\r\nconst ViewSelect = ({\r\n hint,\r\n items = [\r\n {\r\n view: 'one-column',\r\n iconName: 'list-view-one-column',\r\n },\r\n {\r\n view: 'two-columns',\r\n iconName: 'list-view-two-columns',\r\n },\r\n ],\r\n selectedView,\r\n onChange = () => {},\r\n className,\r\n}) => {\r\n return (\r\n
    \r\n {hint && {hint}}\r\n {items &&\r\n items.map((item, index) => (\r\n onChange(view)}\r\n selected={item.view === selectedView}\r\n />\r\n ))}\r\n
    \r\n );\r\n};\r\n\r\nViewSelect.propTypes = {\r\n hint: PropTypes.string,\r\n selectedView: PropTypes.string,\r\n items: PropTypes.arrayOf(PropTypes.exact(ViewSelectItem.propTypes)),\r\n onChange: PropTypes.func,\r\n className: PropTypes.string,\r\n};\r\n\r\nViewSelect.viewModelMeta = 'ignore';\r\n\r\nexport default ViewSelect;\r\n","import fromQueryString from '@creuna/utils/from-query-string';\r\nimport replaceQueryParameters from '@creuna/utils/replace-query-parameters';\r\n\r\nconst _inQueryStringArrayDelimiter = '~';\r\n\r\nconst _getUndefinedIfEmpty = value => {\r\n return !value || value === '' || value.length === 0 ? undefined : value;\r\n};\r\n\r\nconst _queryValueAsArray = value => {\r\n value = value || [];\r\n return Array.isArray(value) ? value : value.split(',');\r\n};\r\n\r\nconst createQuery = () => {\r\n return new Object();\r\n};\r\n\r\nconst setQueryValue = (query, name, value) => {\r\n query[name] = _getUndefinedIfEmpty(value);\r\n};\r\n\r\nconst setToQueryTextInputValue = (query, textInput, currentValue = null) => {\r\n if (!textInput) {\r\n return;\r\n }\r\n setQueryValue(query, textInput.name, currentValue ?? textInput.value);\r\n};\r\n\r\nconst updateFilterFromQuery = (query, fieldName, filterItems) => {\r\n var queryValues = _queryValueAsArray(query[fieldName]);\r\n filterItems.forEach(item => {\r\n item.selected = queryValues.includes(item.value);\r\n });\r\n};\r\n\r\nconst updateQueryFromFilter = (query, fieldName, filterItems) => {\r\n var filterValues = filterItems.map(x => x.value);\r\n var filterSelectedValues = filterItems\r\n .filter(x => x.selected)\r\n .map(x => x.value);\r\n var queryValues = _queryValueAsArray(query[fieldName]);\r\n var newValues = [\r\n ...new Set([...queryValues, ...filterSelectedValues]),\r\n ].filter(x => !filterValues.includes(x) || filterSelectedValues.includes(x));\r\n\r\n setQueryValue(query, fieldName, newValues);\r\n};\r\n\r\nconst updatePageQueryString = query => {\r\n query = { ...query };\r\n for (var key in query) {\r\n var value = query[key];\r\n if (Array.isArray(value))\r\n query[key] = value.join(_inQueryStringArrayDelimiter);\r\n }\r\n var newUrl = replaceQueryParameters(window.location.toString(), query);\r\n window.history.replaceState({}, document.title, newUrl);\r\n};\r\n\r\nconst fillQueryFromPageQueryString = query => {\r\n var parsedQuery = fromQueryString(window.location.search.replace(/\\+/g, ' '));\r\n for (var key in parsedQuery) {\r\n var value = parsedQuery[key];\r\n if (value.includes(_inQueryStringArrayDelimiter))\r\n parsedQuery[key] = value.split(_inQueryStringArrayDelimiter);\r\n }\r\n Object.assign(query, parsedQuery);\r\n};\r\n\r\nexport default {\r\n createQuery,\r\n setQueryValue,\r\n updateFilterFromQuery,\r\n updateQueryFromFilter,\r\n setToQueryTextInputValue,\r\n updatePageQueryString,\r\n fillQueryFromPageQueryString,\r\n};\r\n","import PageHeading from 'components/page-heading';\r\nimport React, { useEffect, useState } from 'react';\r\nimport apiHelper from 'js/api-helper';\r\nimport PropTypes from 'prop-types';\r\nimport TagsFilter from 'components/tags-filter/tags-filter';\r\nimport RecipeTeaser from 'components/recipe-teaser/recipe-teaser';\r\nimport Pager from 'components/pager';\r\nimport useBreakpoints from 'hooks/use-breakpoints';\r\nimport useDidUpdateEffect from 'hooks/use-did-update-effect';\r\nimport Masonry from 'react-responsive-masonry';\r\nimport RecipeFilters from 'components/recipe-filters';\r\nimport ViewSelect from 'components/view-select';\r\nimport formHelper from 'js/form-helper';\r\nimport LoadingIndicator from 'components/loading-indicator/loading-indicator';\r\nimport ErrorMessage from 'components/error-message/error-message';\r\nimport PagerLang from 'components/models/pager-lang/pager-lang';\r\n\r\nconst pageNumberQueryParamName = 'page';\r\nconst skipFiltersQueryParamName = 'skipFilters';\r\n\r\nconst RecipesOverviewPage = ({ heading, lang, searchEndpoint }) => {\r\n const { isMobile } = useBreakpoints(true);\r\n const [results, setResults] = useState(null);\r\n const [query, setQuery] = useState(formHelper.createQuery());\r\n const [showError, setShowError] = useState(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [initDone, setInitDone] = useState(false);\r\n const [listView, setListView] = useState('one-column');\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n const updateQuery = (updateFunc = q => {}) => {\r\n setQuery(q => {\r\n q = Object.assign({}, q);\r\n updateFunc(q);\r\n return q;\r\n });\r\n };\r\n\r\n const initLoadedFilter = filter => {\r\n formHelper.updateFilterFromQuery(query, filter.name, filter.items);\r\n };\r\n\r\n const onFilterChange = e => {\r\n updateQuery(q => {\r\n q[pageNumberQueryParamName] = 1;\r\n\r\n return formHelper.updateQueryFromFilter(q, e.name, e.items);\r\n });\r\n };\r\n\r\n const search = () => {\r\n setShowError(false);\r\n setIsLoading(true);\r\n\r\n const requestQuery = { ...query };\r\n\r\n if (results?.filters && results?.pager && query.page !== 1) {\r\n requestQuery[skipFiltersQueryParamName] = true;\r\n }\r\n\r\n apiHelper\r\n .execute(searchEndpoint, requestQuery)\r\n .then(results => {\r\n if (results) {\r\n if (results.categoriesFilter) {\r\n initLoadedFilter(results.categoriesFilter);\r\n }\r\n\r\n if (results.filters) {\r\n results.filters.forEach(initLoadedFilter);\r\n }\r\n\r\n const { filters: responseFilters, ...restResponseResults } = results;\r\n\r\n setResults(prevResults => ({\r\n ...prevResults,\r\n ...restResponseResults,\r\n ...(responseFilters && {\r\n filters: responseFilters,\r\n }),\r\n }));\r\n }\r\n })\r\n .catch(() => {\r\n setShowError(true);\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const init = () => {\r\n updateQuery(q => {\r\n formHelper.fillQueryFromPageQueryString(q);\r\n\r\n if (q[pageNumberQueryParamName]) {\r\n q[pageNumberQueryParamName] = +q[pageNumberQueryParamName];\r\n }\r\n\r\n return q;\r\n });\r\n };\r\n\r\n useDidUpdateEffect(() => {\r\n window.scrollTo({ top: 0, behavior: 'smooth' });\r\n }, [results?.pager?.page]);\r\n\r\n useEffect(() => {\r\n if (!initDone) {\r\n init();\r\n setInitDone(true);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (initDone) {\r\n formHelper.updatePageQueryString(query);\r\n search();\r\n }\r\n }, [query, initDone]);\r\n\r\n const onPageChange = page => {\r\n updateQuery(q => (q[pageNumberQueryParamName] = page));\r\n };\r\n\r\n return (\r\n
    \r\n {heading && (\r\n \r\n )}\r\n\r\n {results && (\r\n
    \r\n
    \r\n
    \r\n {results.categoriesFilter && (\r\n \r\n )}\r\n
    \r\n\r\n
    \r\n \r\n\r\n {isMobile && (\r\n \r\n )}\r\n
    \r\n
    \r\n\r\n {results.recipesList && results.recipesList.length > 0 ? (\r\n \r\n
    \r\n {isMobile && listView === 'two-columns' ? (\r\n
    \r\n \r\n {results.recipesList.map(recipe => (\r\n \r\n \r\n
    \r\n ))}\r\n \r\n
    \r\n ) : (\r\n
      \r\n {results.recipesList.map(recipe => (\r\n \r\n \r\n \r\n ))}\r\n
    \r\n )}\r\n
    \r\n {results.pager && (\r\n \r\n )}\r\n \r\n ) : (\r\n !isLoading && (\r\n \r\n

    \r\n {lang.noResultsHeading}\r\n

    \r\n
    \r\n {lang.noResultsText}\r\n
    \r\n
    \r\n )\r\n )}\r\n
    \r\n )}\r\n {isLoading && }\r\n {showError && }\r\n \r\n );\r\n};\r\n\r\nRecipesOverviewPage.propTypes = {\r\n heading: PropTypes.string,\r\n lang: PropTypes.shape({\r\n filterHint: PropTypes.string.isRequired,\r\n filterLabel: PropTypes.string.isRequired,\r\n mobileViewHint: PropTypes.string.isRequired,\r\n noResultsHeading: PropTypes.string.isRequired,\r\n noResultsText: PropTypes.string.isRequired,\r\n clearFiltersLabel: PropTypes.string.isRequired,\r\n totalResultsLabel: PropTypes.string.isRequired,\r\n errorMessage: PropTypes.string.isRequired,\r\n pager: PropTypes.shape(PagerLang.propTypes).isRequired,\r\n }),\r\n searchEndpoint: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default RecipesOverviewPage;\r\n","import React from 'react';\r\nimport Teaser, { TeaserWidths } from 'components/teaser';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\n\r\nconst getTeaserWidth = (rowIndex, teaserIndex, teasersLength) => {\r\n let teaserWidth = TeaserWidths.full;\r\n\r\n if (!teasersLength || teasersLength === 1) {\r\n return teaserWidth;\r\n }\r\n\r\n if (\r\n (teaserIndex % 2 === 0 && rowIndex % 2 === 0) ||\r\n (teaserIndex % 2 !== 0 && rowIndex % 2 !== 0)\r\n ) {\r\n teaserWidth = TeaserWidths.oneThird;\r\n } else {\r\n teaserWidth = TeaserWidths.twoThird;\r\n }\r\n return teaserWidth;\r\n};\r\n\r\nconst TeasersList = ({ teaserHeadingTagLevel = 2, items }) => {\r\n const allItems = [...items];\r\n const teaserRows = [];\r\n while (allItems.length) {\r\n teaserRows.push(allItems.splice(0, 2));\r\n }\r\n\r\n return teaserRows && teaserRows.length > 0 ? (\r\n
    \r\n {teaserRows.map((row, rowIndex) => (\r\n
    \r\n {row &&\r\n row.map((teaser, teaserIndex) => {\r\n const teaserWidth = getTeaserWidth(\r\n rowIndex,\r\n teaserIndex,\r\n row.length\r\n );\r\n return (\r\n \r\n \r\n
    \r\n );\r\n })}\r\n
    \r\n ))}\r\n \r\n ) : null;\r\n};\r\n\r\nTeasersList.propTypes = {\r\n teaserHeadingTagLevel: PropTypes.oneOf([2, 3]),\r\n items: PropTypes.arrayOf(PropTypes.exact(Teaser.propTypes)),\r\n};\r\n\r\nTeasersList.viewModelMeta = {\r\n teaserHeadingTagLevel: 'ignore',\r\n};\r\n\r\nexport default TeasersList;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport LinkButton from 'components/link-button/link-button';\r\nimport useBreakpoints from 'hooks/use-breakpoints';\r\n\r\nconst RelatedItemsHeader = ({ heading, seeAllLink }) => {\r\n const { isDesktop } = useBreakpoints(false);\r\n return (\r\n
    \r\n {heading &&

    {heading}

    }\r\n {isDesktop && seeAllLink && (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nRelatedItemsHeader.propTypes = {\r\n heading: PropTypes.string,\r\n seeAllLink: PropTypes.exact(LinkButton.propTypes),\r\n};\r\n\r\nRelatedItemsHeader.viewModelMeta = 'ignore';\r\n\r\nexport default RelatedItemsHeader;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport LinkButton from 'components/link-button/link-button';\r\nimport Teaser, { TeaserWidths } from 'components/teaser';\r\nimport TeasersList from 'components/teasers-list/teasers-list';\r\nimport useBreakpoints from 'hooks/use-breakpoints';\r\nimport Carousel from 'components/carousel';\r\nimport RelatedItemsHeader from 'components/related-items-header/related-items-header';\r\n\r\nconst RelatedArticlesBlock = ({ seeAllLink, heading, items }) => {\r\n const { isDesktop } = useBreakpoints(true);\r\n return (\r\n
    \r\n \r\n {isDesktop ? (\r\n \r\n ) : (\r\n
    \r\n ({\r\n ...item,\r\n teaserWidth: TeaserWidths.oneThird,\r\n }))}\r\n itemComponentName=\"Teaser\"\r\n />\r\n {seeAllLink && (\r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nRelatedArticlesBlock.propTypes = {\r\n seeAllLink: PropTypes.exact(LinkButton.propTypes),\r\n heading: PropTypes.string,\r\n items: PropTypes.arrayOf(PropTypes.exact(Teaser.propTypes)).isRequired,\r\n};\r\n\r\nexport default RelatedArticlesBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport RecipeTeaser from 'components/recipe-teaser/recipe-teaser';\r\nimport LinkButton from 'components/link-button/link-button';\r\nimport useBreakpoints from 'hooks/use-breakpoints';\r\nimport Carousel from 'components/carousel';\r\nimport RelatedItemsHeader from 'components/related-items-header/related-items-header';\r\n\r\nconst RelatedRecipesBlock = ({ seeAllLink, heading, items }) => {\r\n const { isDesktop } = useBreakpoints(true);\r\n return (\r\n
    \r\n \r\n {isDesktop ? (\r\n \r\n
    \r\n
      \r\n {items.map((teaser, index) => (\r\n
    • \r\n \r\n
    • \r\n ))}\r\n
    \r\n
    \r\n
    \r\n ) : (\r\n
    \r\n \r\n {seeAllLink && (\r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nRelatedRecipesBlock.propTypes = {\r\n seeAllLink: PropTypes.exact(LinkButton.propTypes),\r\n heading: PropTypes.string,\r\n items: PropTypes.arrayOf(PropTypes.exact(RecipeTeaser.propTypes)).isRequired,\r\n};\r\n\r\nexport default RelatedRecipesBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport RichText from 'components/rich-text';\r\nimport cn from 'classnames';\r\n\r\nconst RichTextBlock = ({ textHtml, place }) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nRichTextBlock.viewModelMeta = {\r\n place: 'ignore',\r\n};\r\n\r\nRichTextBlock.propTypes = {\r\n textHtml: PropTypes.string,\r\n place: PropTypes.string,\r\n};\r\n\r\nexport default RichTextBlock;\r\n","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport PageHeading from 'components/page-heading';\r\nimport apiHelper from 'js/api-helper';\r\nimport SearchSection from 'components/search-section/search-section';\r\nimport TagsFilter from 'components/tags-filter/tags-filter';\r\nimport SearchForm from 'components/search-form';\r\nimport LoadingIndicator from 'components/loading-indicator';\r\nimport ErrorMessage from 'components/error-message';\r\nimport formHelper from 'js/form-helper';\r\nimport stringHelper from 'js/string-helper';\r\n\r\nconst SearchPage = ({\r\n lang = {\r\n autocompleteSuggestionsAriaLabel: 'Foreslåtte søketermer for nettsidesøk',\r\n },\r\n heading,\r\n searchEndpoint,\r\n loadMoreEndpoint,\r\n autocompleteEndpoint,\r\n}) => {\r\n const [results, setResults] = useState(null);\r\n const [showError, setShowError] = useState(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [query, setQuery] = useState(formHelper.createQuery());\r\n const [initDone, setInitDone] = useState(false);\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n const updateQuery = (updateFunc = q => {}) => {\r\n setQuery(q => {\r\n q = Object.assign({}, q);\r\n updateFunc(q);\r\n return q;\r\n });\r\n };\r\n\r\n const clearResults = () => {\r\n setResults(results =>\r\n !results ? results : { ...results, sections: null }\r\n );\r\n };\r\n\r\n const refreshResults = () => {\r\n setResults(Object.assign({}, results));\r\n };\r\n\r\n const search = () => {\r\n clearResults();\r\n setShowError(false);\r\n setIsLoading(true);\r\n apiHelper\r\n .execute(searchEndpoint, query)\r\n .then(results => {\r\n formHelper.updateFilterFromQuery(\r\n query,\r\n 'type',\r\n results.pageTypeFilter.items\r\n );\r\n setResults(results);\r\n })\r\n .catch(() => {\r\n setShowError(true);\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const loadMore = section => {\r\n if (section.isLoading) {\r\n return;\r\n }\r\n const newPage = (section.page ?? 0) + 1;\r\n section.showError = false;\r\n section.isLoading = true;\r\n refreshResults();\r\n const sectionQuery = Object.assign({}, query);\r\n sectionQuery.type = section.pageType;\r\n sectionQuery.page = newPage;\r\n sectionQuery.queryTrackId = results.queryTrackId;\r\n apiHelper\r\n .execute(loadMoreEndpoint, sectionQuery)\r\n .then(loadMoreResults => {\r\n section.hits = [...section.hits, ...loadMoreResults.hits];\r\n section.hasMore = loadMoreResults.hasMore;\r\n section.page = newPage;\r\n })\r\n .catch(() => {\r\n section.showError = true;\r\n })\r\n .finally(() => {\r\n section.isLoading = false;\r\n refreshResults();\r\n });\r\n };\r\n\r\n const init = () => {\r\n updateQuery(q => formHelper.fillQueryFromPageQueryString(q));\r\n };\r\n\r\n useEffect(() => {\r\n if (!initDone) {\r\n init();\r\n setInitDone(true);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (initDone) {\r\n formHelper.updatePageQueryString(query);\r\n search();\r\n }\r\n }, [query, initDone]);\r\n\r\n const onPageTypeFilterChange = e => {\r\n updateQuery(q => formHelper.updateQueryFromFilter(q, 'type', e.items));\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n {results\r\n ? stringHelper.format(\r\n lang.searchHitsText,\r\n query.q,\r\n results.totalCount\r\n )\r\n : ''}\r\n
    \r\n \r\n updateQuery(q => formHelper.setQueryValue(q, 'q', e.query))\r\n }\r\n autocompleteEndpoint={autocompleteEndpoint}\r\n />\r\n
    \r\n
    \r\n {results && (\r\n \r\n {results.totalCount === 0 ? (\r\n \r\n

    \r\n {lang.noResultsHeading}\r\n

    \r\n
    \r\n {lang.noResultsText}\r\n
    \r\n
    \r\n ) : (\r\n \r\n {results.pageTypeFilter && (\r\n \r\n )}\r\n {results.sections &&\r\n results.sections.map(section => (\r\n loadMore(section)}\r\n />\r\n ))}\r\n \r\n )}\r\n
    \r\n )}\r\n {isLoading && }\r\n {showError && }\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nSearchPage.propTypes = {\r\n lang: PropTypes.shape({\r\n searchHitsText: PropTypes.string.isRequired,\r\n noResultsHeading: PropTypes.string.isRequired,\r\n noResultsText: PropTypes.string.isRequired,\r\n searchHint: PropTypes.string.isRequired,\r\n searchButtonText: PropTypes.string.isRequired,\r\n searchInputAriaLabel: PropTypes.string.isRequired,\r\n loadMoreButtonText: PropTypes.string.isRequired,\r\n errorMessage: PropTypes.string.isRequired,\r\n searchFormAriaLabel: PropTypes.string.isRequired,\r\n autocompleteSuggestionsAriaLabel: PropTypes.string.isRequired,\r\n }).isRequired,\r\n heading: PropTypes.string,\r\n searchEndpoint: PropTypes.string.isRequired,\r\n loadMoreEndpoint: PropTypes.string.isRequired,\r\n autocompleteEndpoint: PropTypes.string,\r\n};\r\n\r\nexport default SearchPage;\r\n","import React, { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ShareLink from 'components/models/share-link';\r\nimport Icon from 'components/icon';\r\nimport cn from 'classnames';\r\nimport isRunningOnClient from '@creuna/utils/is-running-on-client';\r\n\r\nconst SharePanel = ({ heading, shareLinks, lang, className }) => {\r\n const [linkCopiedMessageVisible, setlinkCopiedMessageVisible] =\r\n useState(false);\r\n const printPage = () => {\r\n isRunningOnClient && window.print();\r\n };\r\n\r\n useEffect(() => {\r\n if (linkCopiedMessageVisible) {\r\n setTimeout(() => {\r\n setlinkCopiedMessageVisible(false);\r\n }, 4000);\r\n }\r\n }, [linkCopiedMessageVisible]);\r\n\r\n const copyLinkToClipboard = () => {\r\n if (isRunningOnClient) {\r\n try {\r\n const link = window.location.href;\r\n const el = document.createElement('textarea');\r\n el.value = link;\r\n el.setAttribute('readonly', '');\r\n el.style.position = 'absolute';\r\n el.style.left = '-9999px';\r\n document.body.appendChild(el);\r\n el.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(el);\r\n\r\n if (!linkCopiedMessageVisible) {\r\n setlinkCopiedMessageVisible(true);\r\n }\r\n } catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.log('link copying failed');\r\n }\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n {heading && {heading}}\r\n
    \r\n
      \r\n {shareLinks &&\r\n shareLinks.map((item, index) => {\r\n return (\r\n
    • \r\n \r\n \r\n \r\n
    • \r\n );\r\n })}\r\n
    • \r\n \r\n \r\n \r\n
    • \r\n
    • \r\n \r\n \r\n \r\n
    • \r\n
    \r\n \r\n {lang.linkCopiedMessage}\r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nSharePanel.propTypes = {\r\n heading: PropTypes.string,\r\n shareLinks: PropTypes.arrayOf(PropTypes.exact(ShareLink.propTypes)),\r\n lang: PropTypes.shape({\r\n linkCopiedMessage: PropTypes.string.isRequired,\r\n copyLinkToClipboardLabel: PropTypes.string.isRequired,\r\n printPageLabel: PropTypes.string.isRequired,\r\n }).isRequired,\r\n className: PropTypes.string,\r\n};\r\n\r\nexport default SharePanel;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport SharePanel from 'components/share-panel';\r\nimport RateRecipe from 'components/rate-recipe';\r\nimport cn from 'classnames';\r\n\r\nconst ShareAndRateRecipePanel = ({\r\n heading,\r\n shareRecipe,\r\n rateRecipe,\r\n className,\r\n}) => {\r\n return (\r\n
    \r\n {heading && (\r\n

    {heading}

    \r\n )}\r\n
    \r\n {shareRecipe && (\r\n \r\n )}\r\n {rateRecipe && (\r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nShareAndRateRecipePanel.propTypes = {\r\n heading: PropTypes.string,\r\n shareRecipe: PropTypes.exact(SharePanel.propTypes),\r\n rateRecipe: PropTypes.exact(RateRecipe.propTypes),\r\n className: PropTypes.string,\r\n};\r\n\r\nexport default ShareAndRateRecipePanel;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst SkipToMain = ({ text }) => (\r\n \r\n {text}\r\n \r\n);\r\n\r\nSkipToMain.propTypes = {\r\n text: PropTypes.string,\r\n};\r\n\r\nexport default SkipToMain;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport RichText from 'components/rich-text';\r\nimport cn from 'classnames';\r\n\r\nconst SourcesAndLinksBlock = ({ heading, className, textHtml }) => {\r\n return (\r\n \r\n
    \r\n {heading && (\r\n {heading}\r\n )}\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nSourcesAndLinksBlock.propTypes = {\r\n heading: PropTypes.string,\r\n className: PropTypes.string,\r\n textHtml: PropTypes.string,\r\n};\r\n\r\nSourcesAndLinksBlock.viewModelMeta = {\r\n className: 'ignore',\r\n};\r\n\r\nexport default SourcesAndLinksBlock;\r\n","import PropTypes from 'prop-types';\r\n\r\nconst Tab = {};\r\n\r\nTab.propTypes = {\r\n name: PropTypes.string,\r\n contentId: PropTypes.string,\r\n};\r\n\r\nexport default Tab;\r\n","import React, { useState, useEffect, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\nimport Tab from './tab';\r\n\r\nconst tabContentClassName = 'tab-content';\r\nconst tabContentActiveClassName = 'tab-content_active';\r\n\r\nconst TabsPanel = ({ tabs, activeTabIndex = 0 }) => {\r\n const [activeIndex, setActiveIndex] = useState(activeTabIndex);\r\n const [hashChecked, setHashChecked] = useState(false);\r\n\r\n const displayActiveTabContent = contentId => {\r\n const allTabsContent = document.querySelectorAll(`.${tabContentClassName}`);\r\n const activeTabId = `#${contentId}`;\r\n const activeTabContent = document.querySelector(activeTabId);\r\n const activeTabIndex = tabs.findIndex(tab => tab.contentId === contentId);\r\n\r\n if (activeTabIndex > -1) {\r\n setActiveIndex(activeTabIndex);\r\n }\r\n\r\n for (let i = 0; i < allTabsContent.length; i++) {\r\n allTabsContent[i].classList.remove(tabContentActiveClassName);\r\n }\r\n\r\n if (activeTabContent) {\r\n activeTabContent.classList.add(tabContentActiveClassName);\r\n }\r\n };\r\n\r\n const onTabItemClick = (e, contentId) => {\r\n e.preventDefault();\r\n window.location.hash = contentId;\r\n };\r\n\r\n const displayTabContentBasedOnHash = useCallback(() => {\r\n displayActiveTabContent(window.location.hash.substring(1));\r\n });\r\n\r\n useEffect(() => {\r\n const hash = window.location.hash;\r\n\r\n if (hash) {\r\n displayActiveTabContent(hash.substring(1));\r\n } else {\r\n const activeTab = tabs[activeIndex];\r\n if (activeTab && activeTab.contentId) {\r\n displayActiveTabContent(activeTab.contentId);\r\n }\r\n }\r\n\r\n setHashChecked(true);\r\n\r\n window.addEventListener('hashchange', displayTabContentBasedOnHash, false);\r\n\r\n return () =>\r\n window.removeEventListener(\r\n 'hashchange',\r\n displayTabContentBasedOnHash,\r\n false\r\n );\r\n }, []);\r\n\r\n return !tabs || tabs.length <= 0 ? null : (\r\n
    \r\n
      \r\n {tabs.map((item, index) => (\r\n \r\n onTabItemClick(e, item.contentId)}\r\n >\r\n {item.name}\r\n \r\n \r\n ))}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nTabsPanel.propTypes = {\r\n tabs: PropTypes.arrayOf(PropTypes.exact(Tab.propTypes)).isRequired,\r\n activeTabIndex: PropTypes.number,\r\n};\r\n\r\nexport default TabsPanel;\r\n","/* eslint-disable react/prop-types */\r\nimport React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport TeasersList from 'components/teasers-list/teasers-list';\r\nimport ViewSelect from 'components/view-select';\r\nimport useBreakpoints from 'hooks/use-breakpoints';\r\nimport Masonry from 'react-responsive-masonry';\r\nimport LoadMoreButton from 'components/load-more-button/load-more-button';\r\nimport Teaser from 'components/teaser';\r\nimport LoadingIndicator from 'components/loading-indicator/loading-indicator';\r\nimport apiHelper from 'js/api-helper';\r\nimport replaceQueryParameters from '@creuna/utils/replace-query-parameters';\r\n\r\nconst TeasersListAdvanced = ({\r\n hasMore,\r\n viewSelectLabel,\r\n items,\r\n loadMoreButtonText,\r\n loadMoreEndpoint,\r\n}) => {\r\n const { isMobile } = useBreakpoints(false);\r\n const [listView, setListView] = useState('one-column');\r\n const [currentItems, setCurrentItems] = useState(items);\r\n const [currentHasMore, setCurrentHasMore] = useState(hasMore);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [page, setPage] = useState(0);\r\n\r\n const onViewChange = view => {\r\n setListView(view);\r\n };\r\n\r\n const onLoadMoreClick = () => {\r\n if (isLoading) {\r\n return;\r\n }\r\n\r\n const newPage = page + 1;\r\n setIsLoading(true);\r\n apiHelper\r\n .get(replaceQueryParameters(loadMoreEndpoint, { page: newPage }))\r\n .then(results => {\r\n setCurrentItems(currentItems => [...currentItems, ...results.items]);\r\n setCurrentHasMore(results.hasMore);\r\n setPage(newPage);\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n return (\r\n
    \r\n {isMobile && (\r\n onViewChange(view)}\r\n className=\"teasers-list-advanced__view-select\"\r\n />\r\n )}\r\n\r\n {isMobile && listView === 'two-columns' ? (\r\n
    \r\n \r\n {currentItems &&\r\n currentItems.map((recipe, index) => (\r\n \r\n \r\n
    \r\n ))}\r\n \r\n
    \r\n ) : (\r\n \r\n {currentItems && }\r\n \r\n )}\r\n {currentHasMore && (\r\n \r\n )}\r\n {isLoading && }\r\n \r\n );\r\n};\r\n\r\nTeasersListAdvanced.propTypes = Object.assign({}, TeasersList.propTypes, {\r\n viewSelectLabel: PropTypes.string,\r\n hasMore: PropTypes.bool,\r\n loadMoreEndpoint: PropTypes.string,\r\n loadMoreButtonText: PropTypes.string,\r\n});\r\n\r\nexport default TeasersListAdvanced;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Link from 'components/link';\r\nimport cn from 'classnames';\r\n\r\nimport MenuLink from 'components/models/menu-link';\r\n\r\nconst TechniqueNavigation = ({ links }) => {\r\n return links ? (\r\n
      \r\n {links &&\r\n links.map((link, index) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n
    \r\n ) : null;\r\n};\r\n\r\nTechniqueNavigation.propTypes = {\r\n links: PropTypes.arrayOf(PropTypes.exact(MenuLink.propTypes)),\r\n};\r\n\r\nexport default TechniqueNavigation;\r\n","import React, { useRef, useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport useDidUpdateEffect from 'hooks/use-did-update-effect';\r\nimport TechniqueStep from 'components/models/technique-step';\r\nimport Slider from 'react-slick';\r\nimport Image from 'components/image';\r\nimport Video from 'components/video';\r\nimport Icon from 'components/icon';\r\nimport PoorText from 'components/poor-text/poor-text';\r\nimport stringHelper from 'js/string-helper';\r\n\r\nconst TechniqueStepsCarousel = ({\r\n steps,\r\n prevButtonText,\r\n nextButtonText,\r\n carouselAriaLabel,\r\n lang = {\r\n carouselAriaRoleDescription: 'karusell',\r\n browseSlidesAriaLabel: 'Bla i lysbilder',\r\n stepLabel: 'Steg',\r\n currentStepAriaLabel: 'Steg {0} av {1}',\r\n },\r\n}) => {\r\n const sliderRef = useRef();\r\n const sliderStepsRef = useRef([]);\r\n\r\n const [currentSlideIndex, setCurrentSlideIndex] = useState(0);\r\n const handlePrevClick = () => {\r\n sliderRef.current.slickPrev();\r\n };\r\n const handleNextClick = () => {\r\n sliderRef.current.slickNext();\r\n };\r\n\r\n useEffect(() => {\r\n sliderStepsRef.current = sliderStepsRef.current.slice(0, steps.length);\r\n }, [steps]);\r\n\r\n useDidUpdateEffect(() => {\r\n if (sliderStepsRef?.current) {\r\n const currentSlideNode = sliderStepsRef?.current[currentSlideIndex];\r\n\r\n if (currentSlideNode) {\r\n currentSlideNode.focus();\r\n }\r\n }\r\n }, [currentSlideIndex, sliderStepsRef]);\r\n\r\n const settings = {\r\n dots: false,\r\n arrows: false,\r\n infinite: false,\r\n speed: 500,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n };\r\n\r\n const onAfterChange = index => {\r\n setCurrentSlideIndex(index);\r\n };\r\n\r\n return steps ? (\r\n \r\n \r\n {steps.map((item, index) => {\r\n const slideHeadingId = `technique-step-${index + 1}-title`;\r\n return (\r\n (sliderStepsRef.current[index] = el)}\r\n role=\"group\"\r\n aria-roledescription={lang.stepLabel}\r\n aria-labelledby={slideHeadingId}\r\n >\r\n
    \r\n {item.heading && (\r\n \r\n {item.heading}\r\n \r\n )}\r\n {item.introHtml && (\r\n \r\n )}\r\n \r\n
    \r\n
    \r\n {lang.stepLabel}\r\n
    \r\n
    \r\n \r\n {index + 1}\r\n \r\n \r\n {steps.length}\r\n \r\n
    \r\n
    \r\n \r\n {index !== 0 && (\r\n \r\n \r\n \r\n )}\r\n {index !== steps.length - 1 && (\r\n \r\n \r\n \r\n )}\r\n
    \r\n \r\n \r\n
    \r\n {item.video ? (\r\n \r\n ) : (\r\n item.image && \r\n )}\r\n
    \r\n \r\n );\r\n })}\r\n
    \r\n \r\n ) : null;\r\n};\r\n\r\nTechniqueStepsCarousel.propTypes = {\r\n steps: PropTypes.arrayOf(PropTypes.exact(TechniqueStep.propTypes)),\r\n prevButtonText: PropTypes.string.isRequired,\r\n nextButtonText: PropTypes.string.isRequired,\r\n carouselAriaLabel: PropTypes.string.isRequired,\r\n lang: PropTypes.shape({\r\n carouselAriaRoleDescription: PropTypes.string.isRequired,\r\n browseSlidesAriaLabel: PropTypes.string.isRequired,\r\n stepLabel: PropTypes.string.isRequired,\r\n currentStepAriaLabel: PropTypes.string.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nexport default TechniqueStepsCarousel;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Image from 'components/image';\r\nimport RichText from 'components/rich-text';\r\nimport cn from 'classnames';\r\n\r\n// eslint-disable-next-line view-models/no-errors\r\nexport const position = {\r\n left: 'left',\r\n right: 'right',\r\n};\r\n\r\nconst TextWithImageBlock = ({ heading, textHtml, image, imagePosition }) => {\r\n return (\r\n \r\n
    \r\n {image && (\r\n \r\n )}\r\n
    \r\n
    \r\n

    {heading}

    \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nTextWithImageBlock.propTypes = {\r\n heading: PropTypes.string,\r\n textHtml: PropTypes.string,\r\n image: PropTypes.exact(Image.propTypes),\r\n imagePosition: PropTypes.oneOf(Object.values(position)).isRequired,\r\n};\r\n\r\n// eslint-disable-next-line view-models/no-errors\r\nexport default TextWithImageBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport RichText from 'components/rich-text';\r\nimport PoorText from 'components/poor-text';\r\nimport FloatingTags from 'components/floating-tags';\r\n\r\nconst TextWithSidePanel = ({\r\n heading,\r\n textHtml,\r\n sidePanelHeading,\r\n sidePanelTextHtml,\r\n sidePanelBackgroundColor,\r\n sidePanelTags,\r\n}) => {\r\n var panelStyle = {\r\n backgroundColor: sidePanelBackgroundColor,\r\n };\r\n return (\r\n
    \r\n
    \r\n {heading && (\r\n

    {heading}

    \r\n )}\r\n \r\n
    \r\n
    \r\n \r\n

    \r\n {sidePanelHeading}\r\n

    \r\n \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nTextWithSidePanel.propTypes = {\r\n heading: PropTypes.string,\r\n textHtml: PropTypes.string,\r\n sidePanelHeading: PropTypes.string,\r\n sidePanelTextHtml: PropTypes.string,\r\n sidePanelBackgroundColor: PropTypes.string,\r\n sidePanelTags: PropTypes.exact(FloatingTags.propTypes),\r\n};\r\n\r\nexport default TextWithSidePanel;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport PoorText from 'components/poor-text';\r\nimport cn from 'classnames';\r\n\r\nconst TipBlock = ({ heading, tipsHtml, place }) => {\r\n return (\r\n \r\n
    \r\n {heading && {heading}}\r\n {tipsHtml && (\r\n \r\n )}\r\n
    \r\n \r\n );\r\n};\r\n\r\nTipBlock.viewModelMeta = {\r\n place: 'ignore',\r\n};\r\n\r\nTipBlock.propTypes = {\r\n heading: PropTypes.string,\r\n tipsHtml: PropTypes.string,\r\n place: PropTypes.string,\r\n};\r\n\r\nexport default TipBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Image from 'components/image';\r\nimport LinkButton from 'components/link-button';\r\nimport FloatingTags from 'components/floating-tags';\r\nimport FloatingTag from 'components/floating-tag';\r\nimport Video from 'components/video';\r\nimport ScrollButton from 'components/scroll-button';\r\nimport cn from 'classnames';\r\n\r\nconst TopBannerBlock = ({\r\n image,\r\n video,\r\n tags,\r\n textLine1,\r\n textLine2,\r\n seeAllButtonLink,\r\n backgroundColor,\r\n lang = {\r\n scrollButtonAriaLabel: 'Snarvei til hovedinnholdet på siden',\r\n },\r\n}) => {\r\n const RootElement = seeAllButtonLink && seeAllButtonLink.url ? 'a' : 'div';\r\n\r\n const rootElementProps = {\r\n ...(seeAllButtonLink && {\r\n href: seeAllButtonLink.url,\r\n target: seeAllButtonLink.openInNewTab ? '_blank' : null,\r\n }),\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n {video ? (\r\n \r\n ) : (\r\n image && (\r\n \r\n )\r\n )}\r\n
    \r\n
    \r\n {(textLine1 || textLine2) && (\r\n \r\n

    \r\n {textLine1 && (\r\n \r\n {textLine1}\r\n \r\n )}\r\n {textLine2 && (\r\n \r\n {textLine2}\r\n \r\n )}\r\n

    \r\n \r\n )}\r\n\r\n {seeAllButtonLink && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nTopBannerBlock.propTypes = {\r\n tags: PropTypes.arrayOf(PropTypes.exact(FloatingTag.propTypes)),\r\n image: PropTypes.exact(Image.propTypes),\r\n video: PropTypes.exact(Video.propTypes),\r\n textLine1: PropTypes.string,\r\n textLine2: PropTypes.string,\r\n seeAllButtonLink: PropTypes.exact(LinkButton.propTypes),\r\n backgroundColor: PropTypes.string,\r\n lang: PropTypes.shape({\r\n scrollButtonAriaLabel: PropTypes.string.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nexport default TopBannerBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Image from 'components/image';\r\nimport Link from 'components/link';\r\nimport cn from 'classnames';\r\n\r\nconst topImageSizeBaseClass = 'image_size_top-image';\r\n\r\nconst TopImageBlock = ({\r\n image1,\r\n image2,\r\n place,\r\n imageCaption,\r\n highResPhotoDownloadLink,\r\n}) => {\r\n const isDoubleImage = image1 && image2 ? true : false;\r\n const imageSizeClass = isDoubleImage\r\n ? place\r\n ? `${topImageSizeBaseClass}-half-${place}`\r\n : `${topImageSizeBaseClass}-half`\r\n : place\r\n ? `${topImageSizeBaseClass}-${place}`\r\n : topImageSizeBaseClass;\r\n\r\n return (\r\n \r\n \r\n
    \r\n {image1 && (\r\n
    \r\n \r\n
    \r\n )}\r\n {image2 && (\r\n
    \r\n \r\n
    \r\n )}\r\n {highResPhotoDownloadLink && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n {imageCaption && (\r\n
    {imageCaption}
    \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nTopImageBlock.propTypes = {\r\n place: PropTypes.string,\r\n image1: PropTypes.exact(Image.propTypes),\r\n image2: PropTypes.exact(Image.propTypes),\r\n imageCaption: PropTypes.string,\r\n highResPhotoDownloadLink: PropTypes.exact(Link.propTypes),\r\n};\r\n\r\nexport default TopImageBlock;\r\n","import React from 'react';\r\nimport Video from 'components/video';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\n\r\nconst VideoBlock = ({ video, place }) => {\r\n return video && video.src ? (\r\n \r\n
    \r\n \r\n
    \r\n \r\n ) : null;\r\n};\r\n\r\nVideoBlock.viewModelMeta = {\r\n place: 'ignore',\r\n};\r\n\r\nVideoBlock.propTypes = {\r\n video: PropTypes.exact(Video.propTypes),\r\n place: PropTypes.string,\r\n};\r\n\r\nexport default VideoBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport PoorText from 'components/poor-text';\r\nimport Image from 'components/image';\r\nimport LinkButton from 'components/link-button';\r\nimport FloatingTags from 'components/floating-tags';\r\nimport FloatingTag from 'components/floating-tag';\r\nimport RecipeTeaser from 'components/recipe-teaser';\r\nimport useBreakpoints from 'hooks/use-breakpoints';\r\nimport cn from 'classnames';\r\nimport Carousel from 'components/carousel';\r\n\r\nconst WeeklyMenuBlock = ({\r\n heading,\r\n headingTags,\r\n introHtml,\r\n recipesList,\r\n sidePanel,\r\n seeAllButton,\r\n}) => {\r\n const { isDesktopLargerThanIpad } = useBreakpoints(true);\r\n return (\r\n
    \r\n
    \r\n
    \r\n {heading && (\r\n \r\n

    {heading}

    \r\n \r\n )}\r\n {introHtml && (\r\n
    \r\n \r\n
    \r\n )}\r\n {isDesktopLargerThanIpad && seeAllButton && (\r\n \r\n )}\r\n
    \r\n\r\n
    \r\n {recipesList && (\r\n \r\n {isDesktopLargerThanIpad ? (\r\n \r\n {recipesList.map((teaser, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n\r\n {sidePanel && (\r\n \r\n {sidePanel.logo && (\r\n \r\n )}\r\n {sidePanel.heading && (\r\n

    \r\n {sidePanel.heading}\r\n

    \r\n )}\r\n {sidePanel.textHtml && (\r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n\r\n {!isDesktopLargerThanIpad && seeAllButton && (\r\n \r\n )}\r\n
    \r\n \r\n );\r\n};\r\n\r\nWeeklyMenuBlock.propTypes = {\r\n heading: PropTypes.string,\r\n headingTags: PropTypes.arrayOf(PropTypes.exact(FloatingTag.propTypes)),\r\n introHtml: PropTypes.string,\r\n recipesList: PropTypes.arrayOf(PropTypes.exact(RecipeTeaser.propTypes)),\r\n sidePanel: PropTypes.shape({\r\n heading: PropTypes.string,\r\n textHtml: PropTypes.string,\r\n logo: PropTypes.exact(Image.propTypes),\r\n }),\r\n seeAllButton: PropTypes.exact(LinkButton.propTypes),\r\n};\r\n\r\nexport default WeeklyMenuBlock;\r\n","const req = require.context('./', true, /\\.svg$/);\r\n\r\nconst icons = req.keys().reduce((icons, filename) => {\r\n const id = filename.replace('./', '').replace('.svg', '');\r\n const component = req(filename);\r\n\r\n // After updating the React version we get this warning (Support for defaultProps will be removed from function components in a future major release.\r\n // Use JavaScript default parameters instead), because the module https://www.npmjs.com/package/svg-react-loader which was updated long time ago\r\n // generates React components where default svg params used as defaultProps. The solution is to avoid using defaultProps by passing a custom object instead\r\n if (component.defaultProps) {\r\n component.customDefaultProps = component.defaultProps;\r\n delete component.defaultProps;\r\n }\r\n\r\n return { ...icons, [id]: component };\r\n}, {});\r\n\r\nexport default icons;\r\n","/*\r\n * Minimal classList shim for IE 9\r\n * By Devon Govett\r\n * MIT LICENSE\r\n */\r\n\r\n// NOTE: https://gist.github.com/devongovett/1381839\r\n\r\nfunction activate() {\r\n if (\r\n !('classList' in document.documentElement) &&\r\n Object.defineProperty &&\r\n typeof HTMLElement !== 'undefined'\r\n ) {\r\n Object.defineProperty(HTMLElement.prototype, 'classList', {\r\n get: function () {\r\n var self = this;\r\n function update(fn) {\r\n return function (value) {\r\n var classes = self.className.split(/\\s+/),\r\n index = classes.indexOf(value);\r\n\r\n fn(classes, index, value);\r\n self.className = classes.join(' ');\r\n };\r\n }\r\n\r\n var ret = {\r\n add: update(function (classes, index, value) {\r\n ~index || classes.push(value);\r\n }),\r\n\r\n remove: update(function (classes, index) {\r\n ~index && classes.splice(index, 1);\r\n }),\r\n\r\n toggle: update(function (classes, index, value) {\r\n ~index ? classes.splice(index, 1) : classes.push(value);\r\n }),\r\n\r\n contains: function (value) {\r\n return !!~self.className.split(/\\s+/).indexOf(value);\r\n },\r\n\r\n item: function (i) {\r\n return self.className.split(/\\s+/)[i] || null;\r\n },\r\n };\r\n\r\n Object.defineProperty(ret, 'length', {\r\n get: function () {\r\n return self.className.split(/\\s+/).length;\r\n },\r\n });\r\n\r\n return ret;\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport default {\r\n activate,\r\n};\r\n","import classListPolyfill from './polyfills/class-list';\r\n\r\n/* NOTE: https://www.html5rocks.com/en/mobile/touchandmouse/\r\n First, you have to be careful when designing more advanced touch interactions:\r\n when the user uses a mouse it will respond via a click event, but when the user\r\n touches the screen both touch and click events will occur.\r\n\r\n For a single click the order of events is:\r\n\r\n 1. touchstart\r\n 2. touchmove\r\n 3. touchend\r\n 4. mouseover\r\n 5. mousemove\r\n 6. mousedown\r\n 7. mouseup\r\n 8. click\r\n*/\r\n\r\nfunction activate() {\r\n let touchEndHappened = false;\r\n\r\n classListPolyfill.activate();\r\n\r\n const onMouseDown = () => {\r\n if (touchEndHappened) {\r\n return;\r\n }\r\n\r\n document.documentElement.classList.add('mouse-user');\r\n document.documentElement.classList.add('no-touchevents');\r\n document.documentElement.classList.remove('touchevents');\r\n };\r\n\r\n const onTouchEnd = () => {\r\n touchEndHappened = true;\r\n setTimeout(() => {\r\n touchEndHappened = false;\r\n }, 100);\r\n };\r\n\r\n const onTouchStart = () => {\r\n document.documentElement.classList.add('mouse-user');\r\n document.documentElement.classList.add('touchevents');\r\n document.documentElement.classList.remove('no-touchevents');\r\n };\r\n\r\n document.addEventListener('touchstart', onTouchStart);\r\n document.addEventListener('touchend', onTouchEnd);\r\n document.addEventListener('mousedown', onMouseDown);\r\n\r\n const keyCodeWhiteList = [9, 33, 34, 35, 36, 37, 38, 39, 40];\r\n\r\n document.addEventListener('keydown', e => {\r\n if (keyCodeWhiteList.indexOf(e.which) !== -1) {\r\n document.documentElement.classList.remove('mouse-user');\r\n }\r\n });\r\n}\r\n\r\nexport default {\r\n activate,\r\n};\r\n","import inputDetection from './input-detection';\r\n\r\ninputDetection.activate();\r\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!../node_modules/babel-loader/lib/index.js!./app.components.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../node_modules/expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"AppComponents\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"AppComponents\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","var React = require('react');\n\nfunction ArrowLeftLarge (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":\"2.5\"},React.createElement(\"path\",{\"d\":\"m8.5 1.25-7.25 7.5 7.25 7.5M23.5 8.75H1.25\"})));\n}\n\nArrowLeftLarge.defaultProps = {\"width\":\"24.75\",\"height\":\"17.5\",\"data-name\":\"Layer 1\",\"viewBox\":\"0 0 24.75 17.5\"};\n\nmodule.exports = ArrowLeftLarge;\n\nArrowLeftLarge.default = ArrowLeftLarge;\n","var React = require('react');\n\nfunction ArrowRightLarge (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":\"2.5\"},React.createElement(\"path\",{\"d\":\"m16.25 16.25 7.25-7.5-7.25-7.5M1.25 8.75H23.5\"})));\n}\n\nArrowRightLarge.defaultProps = {\"width\":\"24.75\",\"height\":\"17.5\",\"data-name\":\"Layer 1\",\"viewBox\":\"0 0 24.75 17.5\"};\n\nmodule.exports = ArrowRightLarge;\n\nArrowRightLarge.default = ArrowRightLarge;\n","var React = require('react');\n\nfunction ArrowRight (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":\"2\"},React.createElement(\"path\",{\"d\":\"M1 8h14M8 1l7 7-7 7\"})));\n}\n\nArrowRight.defaultProps = {\"width\":\"16\",\"height\":\"16\",\"data-name\":\"Layer 1\",\"viewBox\":\"0 0 16 16\"};\n\nmodule.exports = ArrowRight;\n\nArrowRight.default = ArrowRight;\n","var React = require('react');\n\nfunction ArrowTop (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":\"2.5\"},React.createElement(\"path\",{\"d\":\"m1.25 8.5 7.5-7.25 7.5 7.25M8.75 23.5V1.25\"})));\n}\n\nArrowTop.defaultProps = {\"width\":\"17.5\",\"height\":\"24.75\",\"data-name\":\"Layer 1\",\"viewBox\":\"0 0 17.5 24.75\"};\n\nmodule.exports = ArrowTop;\n\nArrowTop.default = ArrowTop;\n","var React = require('react');\n\nfunction Check (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":\"2.5\",\"d\":\"m17.25 1.25-11 11-5-5\"}));\n}\n\nCheck.defaultProps = {\"width\":\"18.5\",\"height\":\"13.5\",\"data-name\":\"Layer 1\",\"viewBox\":\"0 0 18.5 13.5\"};\n\nmodule.exports = Check;\n\nCheck.default = Check;\n","var React = require('react');\n\nfunction Clock (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"fill\":\"none\",\"strokeWidth\":\"2.5\"},[React.createElement(\"path\",{\"stroke\":\"#000\",\"strokeMiterlimit\":\"10\",\"d\":\"M1.59 8.61a9.95 9.95 0 1 1 1 7.55 9.95 9.95 0 0 1-1-7.55Z\",\"key\":0}),React.createElement(\"path\",{\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M11.19 5.65v5.84l3.6 2.22\",\"key\":1})]));\n}\n\nClock.defaultProps = {\"width\":\"22.38\",\"height\":\"22.38\",\"data-name\":\"Layer 1\",\"viewBox\":\"0 0 22.38 22.38\"};\n\nmodule.exports = Clock;\n\nClock.default = Clock;\n","var React = require('react');\n\nfunction Close (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeMiterlimit\":\"10\",\"strokeWidth\":\"2.5\",\"d\":\"M13.81 26.25v-25M1.25 13.28h25\"}));\n}\n\nClose.defaultProps = {\"width\":\"27.5\",\"height\":\"27.5\",\"data-name\":\"Layer 1\",\"viewBox\":\"0 0 27.5 27.5\"};\n\nmodule.exports = Close;\n\nClose.default = Close;\n","var React = require('react');\n\nfunction CopyLink (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"d\":\"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 1 1 5.66 5.66l-9.2 9.19a2 2 0 1 1-2.83-2.83l8.49-8.48\",\"style\":{\"fill\":\"none\",\"stroke\":\"#000\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":\"2px\"},\"transform\":\"translate(-1.002 -.388)\"}));\n}\n\nCopyLink.defaultProps = {\"width\":\"21.852\",\"height\":\"22.611\",\"viewBox\":\"0 0 21.852 22.611\"};\n\nmodule.exports = CopyLink;\n\nCopyLink.default = CopyLink;\n","var React = require('react');\n\nfunction DifficultyLevel (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"fill\":\"currentColor\",\"d\":\"M18 3c-2.297 0-4.477.494-6.451 1.367A11.94 11.94 0 0 0 6 3C2.686 3 0 5.684 0 9c0 2.903 1.718 5.324 4 5.879v5.12C4 20.55 4.45 21 5 21h14c.55 0 1-.45 1-1V14.19c2.39-1.038 4-2.972 4-5.191 0-3.316-2.685-6-6-6m-2 10H9v2h7c.691 0 1.359-.073 2-.197V19H6v-5.691l-1.528-.373C3.062 12.592 2 10.9 2 8.999c0-2.205 1.794-4 4-4 1.149 0 2.264.204 3.317.574a16 16 0 0 0-2.63 2.114L8.1 9.1A13.9 13.9 0 0 1 18 4.999c2.207 0 4 1.795 4 4 0 2.17-2.747 4-6 4z\"}));\n}\n\nDifficultyLevel.defaultProps = {\"width\":\"24\",\"height\":\"24\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\"};\n\nmodule.exports = DifficultyLevel;\n\nDifficultyLevel.default = DifficultyLevel;\n","var React = require('react');\n\nfunction ListViewOneColumn (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"path\",{\"fill\":\"transparent\",\"d\":\"M47 47H1V1h46Z\",\"key\":0}),React.createElement(\"path\",{\"fill\":\"currentColor\",\"d\":\"M2 2v44h44V2zM0 0h48v48H0Z\",\"key\":1}),React.createElement(\"path\",{\"fill\":\"none\",\"d\":\"M14 14h21v21H14Z\",\"key\":2}),React.createElement(\"path\",{\"fill\":\"currentColor\",\"d\":\"M16 16v17h17V16zm-2-2h21v21H14Z\",\"key\":3})]);\n}\n\nListViewOneColumn.defaultProps = {\"width\":\"48\",\"height\":\"48\",\"data-name\":\"Layer 1\",\"viewBox\":\"0 0 48 48\"};\n\nmodule.exports = ListViewOneColumn;\n\nListViewOneColumn.default = ListViewOneColumn;\n","var React = require('react');\n\nfunction ListViewTwoColumns (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"path\",{\"fill\":\"transparent\",\"d\":\"M0 0h48v48H0Z\",\"key\":0}),React.createElement(\"path\",{\"fill\":\"currentColor\",\"d\":\"M2 2v44h44V2zM0 0h48v48H0Z\",\"key\":1}),React.createElement(\"path\",{\"fill\":\"transparent\",\"d\":\"M13.23 13h10.08v10.08H13.23Z\",\"key\":2}),React.createElement(\"path\",{\"fill\":\"currentColor\",\"d\":\"M15.23 15v6.08h6.08V15zm-2-2h10.08v10.08H13.23Z\",\"key\":3}),React.createElement(\"path\",{\"fill\":\"transparent\",\"d\":\"M13.23 24.69h10.08v10.08H13.23Z\",\"key\":4}),React.createElement(\"path\",{\"fill\":\"currentColor\",\"d\":\"M15.23 26.69v6.08h6.08v-6.08zm-2-2h10.08v10.08H13.23Z\",\"key\":5}),React.createElement(\"path\",{\"fill\":\"transparent\",\"d\":\"M24.69 13h10.08v10.08H24.69Z\",\"key\":6}),React.createElement(\"path\",{\"fill\":\"currentColor\",\"d\":\"M26.69 15v6.08h6.08V15zm-2-2h10.08v10.08H24.69Z\",\"key\":7}),React.createElement(\"path\",{\"fill\":\"transparent\",\"d\":\"M24.69 24.69h10.08v10.08H24.69Z\",\"key\":8}),React.createElement(\"path\",{\"fill\":\"currentColor\",\"d\":\"M26.69 26.69v6.08h6.08v-6.08zm-2-2h10.08v10.08H24.69Z\",\"key\":9})]);\n}\n\nListViewTwoColumns.defaultProps = {\"width\":\"48\",\"height\":\"48\",\"data-name\":\"Layer 1\",\"viewBox\":\"0 0 48 48\"};\n\nmodule.exports = ListViewTwoColumns;\n\nListViewTwoColumns.default = ListViewTwoColumns;\n","var React = require('react');\n\nfunction MenuClose (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeMiterlimit\":\"10\",\"strokeWidth\":\"2.5\"},React.createElement(\"path\",{\"d\":\"m1.25 1.25 18 17M1.25 18.25l18-17\"})));\n}\n\nMenuClose.defaultProps = {\"width\":\"20.5\",\"height\":\"19.5\",\"data-name\":\"Layer 1\",\"viewBox\":\"0 0 20.5 19.5\"};\n\nmodule.exports = MenuClose;\n\nMenuClose.default = MenuClose;\n","var React = require('react');\n\nfunction Menu (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeMiterlimit\":\"10\",\"strokeWidth\":\"2.5\"},React.createElement(\"path\",{\"d\":\"M1.25 1.25h20M1.25 9.25h20M1.25 17.25h20\"})));\n}\n\nMenu.defaultProps = {\"width\":\"22.5\",\"height\":\"18.5\",\"data-name\":\"Layer 1\",\"viewBox\":\"0 0 22.5 18.5\"};\n\nmodule.exports = Menu;\n\nMenu.default = Menu;\n","var React = require('react');\n\nfunction Print (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"fill\":\"none\",\"stroke\":\"#000\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":\"2\"},[React.createElement(\"path\",{\"d\":\"M5 8V1h12v7M5 17H3a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M17 13H5v8h12Z\",\"key\":1})]));\n}\n\nPrint.defaultProps = {\"width\":\"22\",\"height\":\"22\",\"viewBox\":\"0 0 22 22\"};\n\nmodule.exports = Print;\n\nPrint.default = Print;\n","var React = require('react');\n\nfunction Search (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeMiterlimit\":\"10\",\"strokeWidth\":\"2.5\"},[React.createElement(\"path\",{\"d\":\"M1.54 7.36a8.25 8.25 0 1 1 .82 6.25 8.13 8.13 0 0 1-.82-6.25Z\",\"key\":0}),React.createElement(\"path\",{\"strokeLinecap\":\"round\",\"d\":\"m13.73 16.74 4.36 7.35\",\"key\":1})]));\n}\n\nSearch.defaultProps = {\"width\":\"19.34\",\"height\":\"25.34\",\"data-name\":\"Layer 1\",\"viewBox\":\"0 0 19.34 25.34\"};\n\nmodule.exports = Search;\n\nSearch.default = Search;\n","var React = require('react');\n\nfunction StarEmpty (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"stroke\":\"#000\",\"strokeLinejoin\":\"round\",\"strokeWidth\":\"2\",\"d\":\"m12.78 1.5 2.583 7.946h8.355l-6.76 4.911 2.582 7.947-6.76-4.911-6.759 4.91 2.582-7.946-6.76-4.91H10.2z\"}));\n}\n\nStarEmpty.defaultProps = {\"width\":\"25\",\"height\":\"24\",\"fill\":\"none\",\"viewBox\":\"0 0 25 24\"};\n\nmodule.exports = StarEmpty;\n\nStarEmpty.default = StarEmpty;\n","var React = require('react');\n\nfunction StarFull (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"fill\":\"#000\",\"stroke\":\"#000\",\"strokeLinejoin\":\"round\",\"strokeWidth\":\"2\",\"d\":\"m12.78 1.5 2.583 7.946h8.355l-6.76 4.911 2.582 7.947-6.76-4.911-6.759 4.91 2.582-7.946-6.76-4.91H10.2z\"}));\n}\n\nStarFull.defaultProps = {\"width\":\"25\",\"height\":\"24\",\"fill\":\"none\",\"viewBox\":\"0 0 25 24\"};\n\nmodule.exports = StarFull;\n\nStarFull.default = StarFull;\n","var React = require('react');\n\nfunction Toggle (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"fill\":\"currentColor\",\"d\":\"M6 7 0 0h12Z\"}));\n}\n\nToggle.defaultProps = {\"width\":\"12\",\"height\":\"7\",\"data-name\":\"Layer 1\",\"viewBox\":\"0 0 12 7\"};\n\nmodule.exports = Toggle;\n\nToggle.default = Toggle;\n","var map = {\n\t\"./arrow-left-large.svg\": 4511,\n\t\"./arrow-right-large.svg\": 6330,\n\t\"./arrow-right.svg\": 2748,\n\t\"./arrow-top.svg\": 7019,\n\t\"./check.svg\": 2782,\n\t\"./clock.svg\": 4876,\n\t\"./close.svg\": 7066,\n\t\"./copy-link.svg\": 6986,\n\t\"./difficulty-level.svg\": 4028,\n\t\"./list-view-one-column.svg\": 1594,\n\t\"./list-view-two-columns.svg\": 7643,\n\t\"./menu-close.svg\": 2924,\n\t\"./menu.svg\": 5775,\n\t\"./print.svg\": 8527,\n\t\"./search.svg\": 7286,\n\t\"./star-empty.svg\": 3818,\n\t\"./star-full.svg\": 3964,\n\t\"./toggle.svg\": 2374\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 9477;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + {\"42\":\"reactPlayerTwitch\",\"173\":\"reactPlayerVimeo\",\"328\":\"reactPlayerDailyMotion\",\"340\":\"reactPlayerWistia\",\"353\":\"reactPlayerPreview\",\"392\":\"reactPlayerVidyard\",\"446\":\"reactPlayerYouTube\",\"458\":\"reactPlayerFilePlayer\",\"463\":\"reactPlayerKaltura\",\"570\":\"reactPlayerMixcloud\",\"627\":\"reactPlayerStreamable\",\"723\":\"reactPlayerMux\",\"887\":\"reactPlayerFacebook\",\"979\":\"reactPlayerSoundCloud\"}[chunkId] + \".\" + {\"42\":\"848c5e2b2d083b5319ad\",\"173\":\"172ec8d40bf953abb4f1\",\"328\":\"5542f92e9b8709419456\",\"340\":\"544ce1175757819c2553\",\"353\":\"5cf1b35ddbfef0223691\",\"392\":\"303d69cc9cdb8a9631f6\",\"446\":\"b47ad88f670dfca2454b\",\"458\":\"20504ef50a565af9923f\",\"463\":\"51e83102b92d4613375c\",\"570\":\"4e17308700cde1b5bede\",\"627\":\"66b5f9488810a35c37b2\",\"723\":\"66737ab244b40add64fd\",\"887\":\"f40acb551c5787948d11\",\"979\":\"d0120694f24524c08669\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/Godfisk/Frontend/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t818: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunkB2C_Godfisk\"] = globalThis[\"webpackChunkB2C_Godfisk\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(8624)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(6472)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(5348)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(4709)))\nvar __webpack_exports__ = __webpack_require__.O(undefined, [121], () => (__webpack_require__(273)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","LinkBase","propTypes","url","PropTypes","text","openInNewTab","Link","_ref","className","tabindex","inlineStyle","onFocus","onBlur","React","href","cn","target","rel","tabIndex","style","Object","assign","icons","require","Icon","name","useFill","defaultProps","customDefaultProps","_objectSpread","focusable","keys","isRequired","ColoredTag","color","linkTabIndex","isActive","tagStyle","backgroundColor","Component","position","topLeft","topCenter","topRight","bottomLeft","bottomCenter","bottomRight","FloatingTag","props","values","FloatingTags","items","children","length","map","item","index","isTopTag","concat","key","ReactComponent","componentName","AccordionBlockItem","heading","content","AccordionBlock","autoCollapse","headingTags","AccordionComponent","allowMultipleExpanded","allowZeroExpanded","AccordionItem","AccordionItemState","_ref2","expanded","Fragment","AccordionItemHeading","AccordionItemButton","AccordionItemPanel","block","Block","Components","_extends","place","RichText","dangerouslySetInnerHTML","__html","AreaBlock","textHtml","BreadcrumbsLink","ariaCurrent","Breadcrumbs","links","lang","ariaLabel","link","i","Carousel","itemComponentName","Item","Scrollbar","width","translateContentSizeYToHolder","noScrollY","trackXProps","thumbXProps","console","error","Checkbox","checked","value","label","id","onChange","disabled","isChecked","setisChecked","checkbox_disabled","type","e","defaultChecked","defaultValue","checkbox__checkmark_checked","ColoredTagsList","linksTabIndex","hasActiveItem","filter","x","ContentArea","blocks","DictionaryBlock","hintText","ErrorMessage","useToggle","initiallyActive","setIsActive","toggle","useCallback","activate","deactivate","ExpandablePanel","toggleTextShow","toggleTextHide","toggleElement","panelIsOpenedInMobile","togglePanel","ToggleElement","onClick","transforms","downFit","downFill","skipForResizeExtensions","queryParameters","undefined","height","transform","center","checkImageCanBeResized","extension","split","pop","trim","toLowerCase","some","serializeCenter","y","buildResizeUrl","centerX","centerY","resizeUrl","replaceQueryParameters","resizeQuery","queryHash","CryptoJs","replace","hash","calcImageWidth","containerWidth","resolution","Math","ceil","window","devicePixelRatio","calcImageHeight","containerHeight","Transforms","createHtmlImage","Image","constructor","arguments","_defineProperty","imageResizer","this","src","fill","canBeResized","autoTransform","defaultSrc","ratio","containerOffsetWidth","containerOffsetHeight","container","offsetWidth","offsetHeight","fit","autoCalcWidthOnly","autoCalcHeightOnly","skipByWidth","state","skipByHeight","resolutionByWidth","widthResolution","heightResolution","newWidth","newHeight","newRatio","setState","previousState","newSrc","focusPoint","firstPreloadImage","firstLoadWidth","firstLoadHeight","firstLoadSrc","preloadImage","debounce","handleResize","onFirstSrcPreloaded","onSrcPreloaded","checkElementIsHidden","element","offsetParent","isHidden","getHiddenRoot","parent","parentElement","onObservedChange","debouncedHandleResize","componentDidMount","self","onload","addEventListener","observer","MutationObserver","call","observe","attributes","getSnapshotBeforeUpdate","prevProps","componentWillUnmount","removeEventListener","disconnect","componentDidUpdate","render","fluid","backgroundImage","backgroundPosition","ref","c","alt","_Image","Logo","image","imageClass","ScrollButton","speed","targetElement","iconName","scrollToEl","scrollToElement","offset","ease","duration","PoorText","MenuLink","MenuSection","FooterMenu","mainMenu","aboutUs","followUs","Footer","logo","toTopButtonText","contactInfo","footerMenu","FormInputText","placeholder","useEvent","eventName","eventHandler","dependencies","callback","current","contains","useEscape","event","which","events","OPEN_QUICK_SEARCH","headerMenuPanelId","HeaderMenu","main","menuAriaLabel","tagLinks","onMenuToggle","isOpened","mainSectionLinkFocuses","setMinSectionLinkFocuses","useState","useEffect","useClickOutside","toggleText","closeLabel","toggleIconName","bodyClass","document","body","classList","add","remove","role","showQuickSearchLabel","onOpenSearch","eventData","indexOf","CustomEvent","detail","err","createEvent","initEvent","dispatchEvent","emitEvent","searchButtonText","errorMessageTopic","messageTopic","onTopic","topic","func","PubSub","message","send","onErrorMessage","onMessage","sendErrorMessage","_ref3","sendMessage","_ref4","defaultFetchOptions","headers","Accept","credentials","parseResponse","response","json","then","handleUserMessages","messageToUser","success","messenger","handleNotOk","ok","Error","statusText","status","handleResponse","payload","handleFetchError","getData","Promise","reject","request","options","fetch","catch","endpoint","data","resolve","setTimeout","method","post","JSON","stringify","SearchForm","forwardRef","searchPageUrl","searchInputAriaLabel","searchButtonTextHidden","searchHint","query","onInputChange","onInputFocus","onEscPress","onSearch","autocompleteEndpoint","autocompleteSuggestionsAriaLabel","searchFormAriaLabel","setValue","suggestions","setSuggestions","form","useRef","searchInput","getSuggestionsCacheMap","globalContext","global","suggestionsDictionary","Map","useImperativeHandle","resetSearchValue","toggleInputFocus","focus","blur","inputProps","onSearchTextChange","newValue","action","onSubmit","preventDefault","Autosuggest","onSuggestionsFetchRequested","inputValue","inputLength","q","suggestionsFromCache","get","tryGetSuggestionsFromCache","apiHelper","results","putSuggestionsToCache","set","log","onSuggestionsClearRequested","getSuggestionValue","suggestion","renderSuggestion","renderSuggestionsContainer","containerProps","onSuggestionSelected","submit","quickSearchFormId","QuickSearch","hideQuickSearchLabel","searchForm","searchFormRef","resetSearchState","renderIcon","onSearchInputFocus","Header","headerMenu","quickSearch","isHeaderMenuActive","setIsHeaderMenuActive","FocusTrap","active","minWidth","size","isRunningOnClient","matchMedia","matches","s","m","l","ipadPro","useBreakpoints","initiallyDesktop","initiallyTablet","initiallyMobile","initiallyDesktopLargerThanIpad","isDesktop","isTablet","isMobile","isDesktopLargerThanIpad","brekpointsStarted","onResize","breakpoints","ResponsiveEllipsis","responsiveHOC","LinesEllipsis","HeadingCropper","maxLinesMobile","maxLinesDesktop","component","maxLine","ellipsis","trimRight","basedOn","sizes","normal","small","IconLabel","icon","iconAriaLabel","amount","plural","singular","IngredientName","pluralOrSingularText","IngredientUnit","unitText","IngredientAmount","number","aui","iau","iua","prefixesDictionary","prefix","Ingredient","printOrder","unit","uniqueIngredientId","useMemo","idHelper","htmlFor","PrintOrder","Ingredients","increaseNumberOfServingsAriaLabel","decreaseNumberOfServingsAriaLabel","sections","servingsDefaultNumber","servingNumber","currentSections","setCurrentSections","currentServings","setCurrentServings","updateSections","newSections","parse","forEach","section","ingredients","ingredient","calcAmount","tmpSrt","toFixed","parseFloat","mobileShowLabel","mobileHideLabel","servingsLabel","min","isNaN","handleServingsInputChange","v","parseInt","onKeyDown","onPaste","sanitizedText","clipboardData","updatedText","slice","selectionStart","selectionEnd","increaseServings","decreaseServings","sectionIndex","ingredientIndex","itemProp","LinkButton","LoadMoreButton","handleClick","LoadingIndicator","MODAL_ROOT_CLASS","ModalComponent","titleAriaLabel","onClose","Modal","open","classNames","root","modal","closeButton","ariaLabelledby","modalId","closeOnEsc","closeOnOverlayClick","FilterItem","selected","noHits","Filter","allItemsLabel","ratingTopic","newRating","token","RecipeDetails","cookingTime","difficultyLevel","rating","cookingTimeIconAriaLabel","difficultyLevelIconAriaLabel","ratingIconAriaLabel","useFocusableDetails","isRecipePage","currentRating","setCurrentRating","recipeMessageBus","msg","commonIconLabelProps","SearchTeaser","trackUrl","recipeDetails","teaserStyle","defaultBehaviour","ctrlKey","_response","location","recipeDetailsSizes","LoadMoreSearchResults","hits","hasMore","TeaserWidths","oneThird","twoThird","full","Teaser","categories","teaserWidth","headingTagLevel","introHtml","horizontalMode","fullWidthMode","imageProps","RootElement","hideIntro","HeadingTag","teaser_horizontal","teaser_vertical","teaser__heading_large","LoadMoreTeasersResults","PagerLang","nextLabel","prevLabel","pageLabel","jumpBackwardAriaLabel","jumpForwardAriaLabel","TagsFilterItem","buttonStyle","TagsFilter","selectedItem","setSelectedItem","find","clickedItem","newSelectedItem","currentItems","handleItemClick","RecipeTeaser","RecipesOverviewResults","categoriesFilter","filters","recipesList","totalCount","pager","page","totalPages","SearchSection","loadMoreButtonText","onLoadMoreClick","isLoading","showError","errorMessage","teaser","ResponsiveMasonry","columnsCountBreakPoints","Masonry","gutter","pageType","SearchResults","pageTypeFilter","queryTrackId","ShareLink","Video","autoplay","previewImage","imageSettings","playButtonTabIndex","modalTitleAriaLabel","uniqueVideoModalId","playing","setPlaying","playerContainerRef","onPlayerReady","youtubeIframe","querySelector","setAttribute","video_fluid","stopPropagation","ReactPlayer","controls","onReady","TechniqueStep","video","NotFoundPage","tag1Text","tag2Text","homePageButton","PageHeading","useDidUpdateEffect","fn","inputs","didMountRef","string","_len","args","Array","_key","match","Pager","pageRangeDisplayed","onPageChange","pagerSelectRef","pagerWrapperRef","pagerRef","currentPage","setCurrentPage","pagerSelectOptions","from","_","firstPagerItem","parentNode","insertBefore","nextSibling","newPage","handlePageChange","option","stringHelper","ReactPaginate","pageCount","forcePage","previousLabel","ariaLabelBuilder","pageIndex","breakAriaLabels","forward","backward","hrefAllControls","breakClassName","disableInitialCallback","marginPagesDisplayed","containerClassName","pageClassName","pageLinkClassName","previousClassName","nextClassName","QAItem","contentHtml","QABlock","RateRecipeItem","hint","onMouseEnter","onMouseLeave","isDisabled","COOKIE_DATA_NAME","RateRecipe","recipeId","submitUrl","isRatedByUser","setIsRatedByUser","setShowError","cookiesData","setCookiesData","isHintShown","setIsHintShown","rateConfirmation","setRateConfirmation","isTemporaryDisabled","setIsTemporaryDisabled","setSelectedItemByValue","isItemActive","itemRating","onItemClick","rateValue","ratingValue","confirmation","newRecipeId","currentCookieData","addCookieData","newCookieData","Cookies","expires","recipeCookiesString","recipeCookies","youHaveAlreadyRatedMessage","rateThisRecipeLabel","errorText","recipeFilterPanelId","RecipeFilter","setCurrentItems","allItem","setAllItem","updateItem","targetItem","updateAllItems","unselectItem","unselectAll","RecipeFiltersRemoveFilterButton","onclick","ToggleButton","ariaControls","title","recipeFiltersPanelId","RecipeFilters","filterHint","filterLabel","clearFiltersLabel","totalResultsLabel","onFilterChange","isFiltersPanelOpen","toggleFiltersPanel","selectedItemsMap","setSelectedItemsMap","selectedItemsCount","setSelectedItemsCount","filterRefs","setFilterRefs","f","createRef","reduce","sum","fr","entries","flatMap","entry","unselectFilterItem","RecipesFilter","handleFilterChange","selectedFilters","ViewSelectItem","view","ViewSelect","selectedView","_queryValueAsArray","isArray","setQueryValue","_getUndefinedIfEmpty","createQuery","updateFilterFromQuery","fieldName","filterItems","queryValues","includes","updateQueryFromFilter","filterValues","filterSelectedValues","newValues","Set","join","newUrl","toString","history","replaceState","parsedQuery","fromQueryString","search","pageNumberQueryParamName","RecipesOverviewPage","_results$pager","searchEndpoint","setResults","setQuery","formHelper","setIsLoading","initDone","setInitDone","listView","setListView","updateQuery","updateFunc","initLoadedFilter","scrollTo","top","behavior","requestQuery","responseFilters","restResponseResults","_objectWithoutProperties","_excluded","prevResults","finally","mobileViewHint","columnsCount","recipe","noResultsHeading","noResultsText","TeasersList","teaserHeadingTagLevel","allItems","teaserRows","push","splice","row","rowIndex","teaserIndex","getTeaserWidth","teasersLength","RelatedItemsHeader","seeAllLink","RelatedArticlesBlock","RelatedRecipesBlock","RichTextBlock","SearchPage","loadMoreEndpoint","refreshResults","searchHitsText","_section$page","sectionQuery","loadMoreResults","loadMore","SharePanel","shareLinks","linkCopiedMessageVisible","setlinkCopiedMessageVisible","copyLinkToClipboard","el","createElement","left","appendChild","select","execCommand","removeChild","copyLinkToClipboardLabel","printPage","print","printPageLabel","linkCopiedMessage","ShareAndRateRecipePanel","shareRecipe","rateRecipe","SkipToMain","SourcesAndLinksBlock","Tab","contentId","tabContentActiveClassName","TabsPanel","tabs","activeTabIndex","activeIndex","setActiveIndex","hashChecked","setHashChecked","displayActiveTabContent","allTabsContent","querySelectorAll","activeTabId","activeTabContent","findIndex","tab","displayTabContentBasedOnHash","substring","activeTab","onTabItemClick","TeasersListAdvanced","viewSelectLabel","currentHasMore","setCurrentHasMore","setPage","onViewChange","TechniqueNavigation","TechniqueStepsCarousel","steps","prevButtonText","nextButtonText","carouselAriaLabel","carouselAriaRoleDescription","browseSlidesAriaLabel","stepLabel","currentStepAriaLabel","sliderRef","sliderStepsRef","currentSlideIndex","setCurrentSlideIndex","handlePrevClick","slickPrev","handleNextClick","slickNext","currentSlideNode","Slider","dots","arrows","infinite","slidesToShow","slidesToScroll","afterChange","slideHeadingId","TextWithImageBlock","imagePosition","right","TextWithSidePanel","sidePanelHeading","sidePanelTextHtml","sidePanelBackgroundColor","sidePanelTags","panelStyle","TipBlock","tipsHtml","TopBannerBlock","tags","textLine1","textLine2","seeAllButtonLink","scrollButtonAriaLabel","rootElementProps","topImageSizeBaseClass","TopImageBlock","image1","image2","imageCaption","highResPhotoDownloadLink","isDoubleImage","imageSizeClass","VideoBlock","WeeklyMenuBlock","sidePanel","seeAllButton","req","filename","documentElement","defineProperty","HTMLElement","prototype","update","classes","ret","touchEndHappened","classListPolyfill","onTouchStart","onTouchEnd","onMouseDown","keyCodeWhiteList","inputDetection","___EXPOSE_LOADER_IMPORT___","___EXPOSE_LOADER_GLOBAL_THIS___","module","exports","ArrowLeftLarge","default","ArrowRightLarge","ArrowRight","ArrowTop","Check","Clock","Close","CopyLink","DifficultyLevel","ListViewOneColumn","ListViewTwoColumns","MenuClose","Menu","Print","Search","StarEmpty","StarFull","Toggle","webpackContext","webpackContextResolve","__webpack_require__","o","code","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","r","n","getter","__esModule","d","a","getPrototypeOf","obj","t","mode","ns","create","def","getOwnPropertyNames","definition","enumerable","chunkId","all","promises","u","miniCssF","g","globalThis","Function","prop","hasOwnProperty","done","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","prev","onerror","clearTimeout","doneFns","bind","head","Symbol","toStringTag","nmd","paths","p","installedChunks","installedChunkData","promise","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}