{"version":3,"file":"component---src-templates-recipe-page-template-index-js-744bda9f4792ba84d301.js","mappings":"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","sources":["webpack://anora-lifestyle-gatsby/./node_modules/@material-ui/icons/Print.js","webpack://anora-lifestyle-gatsby/./src/components/page/BrandPages/viinimaa/BrandPage.js","webpack://anora-lifestyle-gatsby/./src/components/page/BrandPages/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/BrandPages/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/RelatedPages/viinimaa/RelatedPage.js","webpack://anora-lifestyle-gatsby/./src/components/page/RelatedPages/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/RelatedPages/index.js","webpack://anora-lifestyle-gatsby/./src/components/shared/PrintButton/index.js","webpack://anora-lifestyle-gatsby/./src/components/shared/Products/ProductMonopolyNumber/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/shared/Products/ProductMonopolyNumber/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/FeaturedProductsCarousel/viinimaa/FeaturedProduct.js","webpack://anora-lifestyle-gatsby/./src/components/page/FeaturedProductsCarousel/Carousel.js","webpack://anora-lifestyle-gatsby/./src/components/page/FeaturedProductsCarousel/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/FeaturedProductsCarousel/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/PreparationNumberOfPeople/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/images/viinimaa/icon-for-how-many.svg","webpack://anora-lifestyle-gatsby/./src/components/page/PreparationNumberOfPeople/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/PreparationTime/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/images/viinimaa/icon-preparation-time.svg","webpack://anora-lifestyle-gatsby/./src/components/page/PreparationTime/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/Alcoholicity/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/images/viinimaa/alcohole.svg","webpack://anora-lifestyle-gatsby/./src/components/page/Alcoholicity/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/PreparationInformation/viinimaa/FoodType.js","webpack://anora-lifestyle-gatsby/./src/components/page/CategoryIcon/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/CategoryIcon/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/PreparationInformation/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/PreparationInformation/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/PreparationSections/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/PreparationSections/index.js","webpack://anora-lifestyle-gatsby/./src/utils/richTextUtils.js","webpack://anora-lifestyle-gatsby/./src/components/page/RecipeStructuredData/viinimaa/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/RecipeStructuredData/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/RecipeAuthor/folkofolk/index.js","webpack://anora-lifestyle-gatsby/./src/components/page/RecipeAuthor/index.js","webpack://anora-lifestyle-gatsby/./src/templates/RecipePageTemplate/RecipePageTemplate.js","webpack://anora-lifestyle-gatsby/./src/templates/RecipePageTemplate/anoraPro/index.js","webpack://anora-lifestyle-gatsby/./src/templates/RecipePageTemplate/index.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/flatten.js","webpack://anora-lifestyle-gatsby/./node_modules/lodash/floor.js"],"sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z\"\n}), 'Print');\n\nexports.default = _default;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { withStyles } from '@material-ui/core';\nimport { get } from 'lodash';\nimport ListElementCard from '../../../shared/ListElementCard';\nimport { contentfulContentTypes } from '../../../../constants';\nimport RichText from '../../../shared/RichText';\n\nconst styles = () => ({\n root: {},\n});\n\nfunction BrandPage({ classes, className, data }) {\n const image = get(data, 'heroImage');\n const title = get(data, 'title');\n const fullPath = get(data, 'fullPath');\n const shortDescription = get(data, 'shortDescription');\n const categories = get(data, 'categories');\n const pageType = contentfulContentTypes.Brand;\n return (\n \n );\n}\n\nBrandPage.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n};\n\nBrandPage.defaultProps = {\n classes: {},\n className: null,\n data: null,\n};\nexport default withStyles(styles)(BrandPage);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { get, map } from 'lodash';\nimport { graphql } from 'gatsby';\nimport { Container, withStyles } from '@material-ui/core';\nimport { useContentfulInspectorMode } from '@contentful/live-preview/react';\n\nimport BrandPage from './BrandPage';\n\nconst styles = theme => ({\n root: {\n padding: theme.spacing(4, 0),\n display: 'flex',\n flexWrap: 'wrap',\n '@media print': {\n display: 'none',\n },\n },\n});\n\nfunction BrandPages({ classes, className, pageData }) {\n const inspectorProps = useContentfulInspectorMode();\n const brands = get(pageData, 'brands');\n if (brands) {\n return (\n \n {map(brands, (brand, index) => {\n return ;\n })}\n \n );\n }\n\n return null;\n}\n\nBrandPages.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n pageData: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n};\n\nBrandPages.defaultProps = {\n classes: {},\n className: null,\n pageData: null,\n};\n\nexport default withStyles(styles)(BrandPages);\n\nexport const query = graphql`\n fragment BrandPageFragment on ContentfulBrand {\n id\n title\n menuTitle\n shortDescription\n fullPath\n languageCode\n internal {\n type\n }\n heroImage {\n ...HeroImageFragment\n }\n categories {\n ...CategoryFragment\n }\n }\n`;\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId } from '../../../sites';\n\nimport ViinimaaBrandPages from './viinimaa';\n\nfunction BrandPages(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return ;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return ;\n }\n if (isEqual(siteId, siteIds.AnoraPro)) {\n return ;\n }\n\n return null;\n}\n\nexport default BrandPages;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { withStyles } from '@material-ui/core';\nimport { get, isEmpty } from 'lodash';\n\nimport ProductCard from '../../../shared/Products/ProductCard';\nimport ListElementCard from '../../../shared/ListElementCard';\nimport RichText from '../../../shared/RichText';\n\nconst styles = () => ({\n root: {},\n});\n\nfunction RelatedPage({ classes, className, data, ...otherProps }) {\n const image = get(data, 'heroImage');\n const fullPath = get(data, 'fullPath');\n const shortDescription = get(data, 'shortDescription');\n const categories = get(data, 'categories');\n const relatedProduct = get(data, 'relatedProduct');\n const pageType = get(data, '__typename');\n\n let title = get(data, 'title');\n if (isEmpty(title)) {\n title = get(data, 'menuTitle');\n }\n if (!isEmpty(relatedProduct)) {\n return ;\n }\n if (isEmpty(fullPath) && isEmpty(title)) {\n return null;\n }\n\n return (\n \n );\n}\n\nRelatedPage.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n};\n\nRelatedPage.defaultProps = {\n classes: {},\n className: null,\n data: null,\n};\nexport default withStyles(styles)(RelatedPage);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { get, map, isEmpty, filter, includes } from 'lodash';\nimport { graphql } from 'gatsby';\nimport { Container, withStyles } from '@material-ui/core';\nimport { useContentfulInspectorMode } from '@contentful/live-preview/react';\n\nimport Visible from '../../../shared/Visible';\nimport RelatedPage from './RelatedPage';\nimport { contentfulContentTypes } from '../../../../constants';\n\nimport '../../Content';\n\nconst styles = theme => ({\n root: {\n backgroundColor: theme.palette.common.lighterGray,\n padding: theme.spacing(4, 0),\n '@media print': {\n display: 'none',\n },\n },\n relatedpages: {\n display: 'flex',\n flexFlow: 'row wrap',\n gap: ({ gap }) => {\n if (gap) {\n return `${gap}px`;\n }\n return '0';\n },\n },\n});\n\nfunction RelatedPages({ classes, className, pageData }) {\n const inspectorProps = useContentfulInspectorMode();\n const relatedPages = get(pageData, 'relatedPages');\n\n const hasSearchModule = !isEmpty(\n filter(get(pageData, 'content.references'), reference => {\n return includes(reference, contentfulContentTypes.SearchModule);\n }),\n );\n if (hasSearchModule) {\n return null;\n }\n\n return (\n \n );\n}\n\nRelatedPages.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n pageData: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n};\n\nRelatedPages.defaultProps = {\n classes: {},\n className: null,\n pageData: null,\n};\n\nexport default withStyles(styles)(RelatedPages);\n\nexport const query = graphql`\n fragment RelatedPageFragment on PageUnion {\n ...ContentLandingPageFragment\n ...ContentAdvancedPageFragment\n ...ContentArticlePageFragment\n ...ContentRecipePageFragment\n ...ContentBrandFragment\n ...ContentCategoryFragment\n ...ContentProductReferenceFragment\n }\n`;\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { brandSite, siteId } from '../../../sites';\n\nimport ViinimaaRelatedPages from './viinimaa';\n\nfunction RelatedPages(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return ;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return ;\n }\n if (isEqual(siteId, siteIds.Wennerco)) {\n return ;\n }\n if (brandSite) {\n return ;\n }\n\n return null;\n}\n\nexport default RelatedPages;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { withStyles } from '@material-ui/core';\n\nimport PrintIcon from '@material-ui/icons/Print';\nimport { useTranslation } from 'react-i18next';\nimport { clickPrintButton } from '../../../utils/analyticUtils';\n\nimport Button from '../Button';\n\nconst styles = () => ({\n root: {\n '@media print': {\n display: 'none !important',\n },\n },\n});\n\nfunction PrintButton({ classes, className }) {\n const { t } = useTranslation();\n\n const handleClick = () => {\n clickPrintButton();\n window.print();\n };\n\n return (\n }>\n {t('PrintButton.label')}\n \n );\n}\n\nPrintButton.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n children: PropTypes.node,\n to: PropTypes.string,\n};\n\nPrintButton.defaultProps = {\n classes: {},\n className: null,\n children: null,\n to: null,\n};\n\nexport default withStyles(styles)(PrintButton);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { useTranslation } from 'react-i18next';\nimport { get, isEmpty } from 'lodash';\nimport { Typography, withStyles } from '@material-ui/core';\n\nconst styles = () => ({\n root: { display: 'flex' },\n text: { fontFamily: '\"Montserrat\", serif', fontWeight: 'bold', fontSize: '12px' },\n label: { paddingRight: '16px' },\n});\n\nfunction ProductMonopolyNumber({ className, classes, productData, ...otherProps }) {\n const { t } = useTranslation();\n const monopolyNumber = get(productData, 'attributes.monopoly_number.value');\n\n if (isEmpty(monopolyNumber)) {\n return null;\n }\n let label = get(productData, 'attributes.monopoly_number.label');\n if (isEmpty(label)) {\n label = t('ProductPage.ProductInfo.MonopolyNumber');\n }\n return (\n
\n {`${label}:`}\n \n {monopolyNumber}\n \n
\n );\n}\n\nProductMonopolyNumber.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n productData: PropTypes.object,\n};\n\nProductMonopolyNumber.defaultProps = {\n classes: {},\n className: null,\n productData: null,\n};\n\nexport default withStyles(styles)(ProductMonopolyNumber);\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../../constants';\nimport { siteId } from '../../../../sites';\n\nimport ViinimaaProductMonopolyNumber from './viinimaa';\n\nfunction ProductMonopolyNumber(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return ;\n }\n if (isEqual(siteId, siteIds.AnoraPro)) {\n return ;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return ;\n }\n\n return null;\n}\n\nexport default ProductMonopolyNumber;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { get, isEmpty } from 'lodash';\n\nimport { withStyles, Typography, Divider } from '@material-ui/core';\nimport { useWindowSize } from '../../../hooks/useWindowSize';\nimport { breakPoints } from '../../../../constants';\nimport ThumbnailImage from '../../../shared/ThumbnailImage';\nimport ProductMonopolyPrice from '../../../shared/Products/ProductMonopolyPrice';\nimport ProductMonopolyNumber from '../../../shared/Products/ProductMonopolyNumber';\nimport ProductMonopolyLink from '../../../shared/Products/ProductMonopolyLink';\n\nimport Categories from '../../Categories';\nimport Link from '../../../navigation/Link';\n\nconst styles = theme => ({\n root: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n padding: theme.spacing(0, 0, 3, 0),\n [theme.breakpoints.up('md')]: {\n padding: theme.spacing(0, 3, 3, 3),\n },\n },\n productImage: {\n borderRadius: '0',\n paddingRight: theme.spacing(3),\n width: 'auto',\n maxHeight: '285px',\n [theme.breakpoints.up('md')]: {\n width: 'auto',\n maxHeight: 'none',\n paddingRight: theme.spacing(6),\n },\n },\n image: { minWidth: '90px' },\n\n category: {\n marginBottom: '8px',\n },\n link: { color: 'inherit' },\n name: {\n marginBottom: '12px',\n color: 'inherit',\n fontSize: '1.1rem',\n [theme.breakpoints.up('md')]: { fontSize: '1.375rem' },\n },\n country: {\n color: theme.palette.common.mediumGray2,\n marginBottom: theme.spacing(2),\n },\n productInfo: {\n display: 'flex',\n flexDirection: 'column',\n wordBreak: 'break-word',\n hyphens: 'auto',\n justifyContent: 'center',\n flexBasis: '60%',\n maxWidth: '60%',\n [theme.breakpoints.up('md')]: {\n flexBasis: 'auto',\n maxWidth: 'none',\n justifyContent: 'flex-start',\n marginTop: theme.spacing(18),\n },\n },\n price: { marginBottom: '12px', fontWeight: 'bold' },\n\n imageWrapper: {\n display: 'flex',\n alignContent: 'center',\n alignItems: 'center',\n justifyContent: 'center',\n flexBasis: '40%',\n maxWidth: '40%',\n [theme.breakpoints.up('md')]: {\n display: 'inline',\n flexBasis: 'auto',\n maxWidth: 'none',\n alignContent: 'stretch',\n alignItems: 'stretch',\n },\n },\n\n divider: {\n zIndex: '-1',\n width: '100%',\n position: 'absolute',\n bottom: '0px',\n backgroundColor: theme.palette.common.lightGray,\n },\n monopolyNr: {\n color: theme.palette.common.mediumGray,\n padding: theme.spacing(0, 0, 2, 0),\n },\n});\n\nfunction FeaturedProduct({\n classes,\n className,\n data,\n defaultImage,\n showProductMonopolyNumber,\n showProductMonopolyLink,\n}) {\n let featuredProduct = get(data, 'featuredProduct');\n\n const [isMobile, setIsMobile] = useState(true);\n const { width } = useWindowSize();\n\n useEffect(() => {\n // if (!isUndefined(width)) {\n if (width > breakPoints.md) {\n setIsMobile(false);\n }\n if (width < breakPoints.md) {\n setIsMobile(true);\n }\n // }\n }, [width]);\n\n if (isEmpty(featuredProduct)) {\n featuredProduct = data;\n }\n let description = get(featuredProduct, 'description');\n if (isEmpty(description)) {\n description = get(featuredProduct, 'featuredProduct.description');\n }\n\n const fullPath = get(featuredProduct, 'relatedProduct.fullPath');\n const name = get(featuredProduct, 'relatedProduct.name');\n\n let image = get(featuredProduct, 'relatedProduct.heroImage');\n if (isEmpty(get(image, 'cloudinaryImage.0.public_id'))) {\n image = {\n cloudinaryImage: [{ public_id: defaultImage }],\n imageAltText: name,\n imageTitleText: name,\n };\n }\n const categories = get(featuredProduct, 'relatedProduct.categories');\n const attributes = get(featuredProduct, 'relatedProduct.attributes');\n\n return (\n <>\n
\n
\n \n \n \n
\n\n
\n \n \n \n {name}\n \n \n \n {get(attributes, 'country_of_origin.value')}\n \n {showProductMonopolyNumber && (\n \n )}\n \n\n {showProductMonopolyLink && }\n
\n
\n \n \n );\n}\n\nFeaturedProduct.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n defaultImage: PropTypes.string,\n showProductMonopolyNumber: PropTypes.bool,\n showProductMonopolyLink: PropTypes.bool,\n};\n\nFeaturedProduct.defaultProps = {\n classes: {},\n className: null,\n data: null,\n defaultImage: false,\n showProductMonopolyNumber: false,\n showProductMonopolyLink: false,\n};\n\nexport default withStyles(styles)(FeaturedProduct);\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { withStyles } from '@material-ui/core';\n\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\nimport { isEmpty, filter } from 'lodash';\nimport Button from '../../shared/Button';\n\nconst styles = theme => ({\n root: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n },\n\n carouselWrapper: {\n display: 'flex',\n width: '100%',\n position: 'relative',\n },\n\n carouselContentWrapper: {\n overflow: 'hidden',\n width: '100%',\n height: '100%',\n },\n\n carouselContent: {\n display: 'flex',\n transition: 'all 1.5s ease',\n\n msOverflowStyle: 'none',\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n '& > *': {\n width: '100%',\n flexShrink: '0',\n flexGrow: '1',\n },\n },\n arrowIcon: {\n position: 'absolute',\n zIndex: '1',\n top: '60%',\n transform: 'translateY(-100%)',\n width: '36px',\n minWidth: '36px',\n height: '36px',\n borderRadius: '0px',\n '&:hover': {\n borderColor: theme.palette.common.gray,\n '&:disabled': {\n backgroundColor: theme.palette.common.gray,\n },\n },\n '&:disabled': {\n backgroundColor: theme.palette.common.gray,\n },\n },\n\n leftArrow: {\n left: '0px',\n marginLeft: '-16px',\n [theme.breakpoints.up('sm')]: {},\n [theme.breakpoints.up('md')]: { marginLeft: '-20px' },\n },\n\n rightArrow: {\n right: '0px',\n marginRight: '-16px',\n [theme.breakpoints.up('sm')]: {},\n [theme.breakpoints.up('md')]: { marginRight: '-20px' },\n },\n stepper: {\n width: '100%',\n flexGrow: 1,\n justifyContent: 'center',\n },\n});\n\nfunction Carousel({ classes, className, children }) {\n children = filter(children, child => {\n return !isEmpty(child);\n });\n\n const [show, setShow] = useState(1);\n const [currentIndex, setCurrentIndex] = useState(0);\n const [length, setLength] = useState(children.length);\n const [touchPosition, setTouchPosition] = useState(null);\n const [transformPercentage, setTransformPercentage] = useState(100);\n\n useEffect(() => {\n setLength(children.length);\n setShow(1);\n setTransformPercentage(100);\n }, [children, length]);\n\n if (isEmpty(children)) {\n return null;\n }\n const handleNext = () => {\n if (currentIndex < length - show) {\n setCurrentIndex(prevState => prevState + 1);\n }\n };\n\n const handelPrev = () => {\n if (currentIndex > 0) {\n setCurrentIndex(prevState => prevState - 1);\n }\n };\n\n const handleTouchStart = e => {\n const touchDown = e.touches[0].clientX;\n setTouchPosition(touchDown);\n };\n\n const handleTouchMove = e => {\n const touchDown = touchPosition;\n if (touchDown === null) {\n return;\n }\n const currentTouch = e.touches[0].clientX;\n const diff = touchDown - currentTouch;\n\n if (diff > 5) {\n handleNext();\n }\n if (diff < -5) {\n handelPrev();\n }\n setTouchPosition(null);\n };\n\n return (\n
\n
\n \n \n \n\n
\n \n {children}\n
\n
\n\n \n \n \n
\n \n );\n}\n\nCarousel.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n children: PropTypes.arrayOf(PropTypes.element),\n};\n\nCarousel.defaultProps = {\n classes: {},\n className: null,\n children: null,\n};\n\nexport default withStyles(styles)(Carousel);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { get, map, isEmpty } from 'lodash';\nimport { Container, withStyles } from '@material-ui/core';\nimport { useContentfulInspectorMode } from '@contentful/live-preview/react';\n\nimport FeaturedProduct from './FeaturedProduct';\nimport Carousel from '../Carousel';\n\nconst styles = theme => ({\n root: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n minHeight: '0px',\n flexGrow: 1,\n justifyContent: 'space-between ',\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(1),\n [theme.breakpoints.up('md')]: {\n marginTop: theme.spacing(-20),\n marginBottom: theme.spacing(9),\n minHeight: '80px',\n },\n '@media print': {\n display: 'none',\n },\n },\n carousel: { position: 'relative', width: '100%', marginBottom: theme.spacing(2) },\n contentCard: {\n display: 'flex',\n justifyContent: 'center',\n flexDirection: 'column',\n [theme.breakpoints.up('md')]: {\n flexDirection: 'row',\n },\n },\n featuredProduct: {},\n divider: {\n marginTop: theme.spacing(3),\n backgroundColor: theme.palette.common.lightGray,\n marginBottom: '6px',\n [theme.breakpoints.up('md')]: {\n marginTop: theme.spacing(-5),\n },\n },\n});\n\nfunction FeaturedProductsCarousel({ classes, className, pageData, ...otherProps }) {\n const inspectorProps = useContentfulInspectorMode();\n const featuredProducts = get(pageData, 'featuredProducts');\n\n if (isEmpty(featuredProducts)) {\n return null;\n }\n\n return (\n \n \n {map(featuredProducts, (featuredProduct, index) => {\n if (isEmpty(get(featuredProduct, 'relatedProduct'))) {\n return null;\n }\n return (\n
\n \n
\n );\n })}\n
\n \n );\n}\n\nFeaturedProductsCarousel.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n pageData: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n};\n\nFeaturedProductsCarousel.defaultProps = {\n classes: {},\n className: null,\n pageData: null,\n};\n\nexport default withStyles(styles)(FeaturedProductsCarousel);\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds, productDefaultImage } from '../../../constants';\nimport { siteId } from '../../../sites';\n\nimport ViinimaaFeaturedProductsCarousel from './viinimaa';\n\nfunction FeaturedProductsCarousel(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return (\n \n );\n }\n if (isEqual(siteId, siteIds.AnoraPro)) {\n return ;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return (\n \n );\n }\n\n return null;\n}\n\nexport default FeaturedProductsCarousel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { isNull, isUndefined } from 'lodash';\nimport { Typography, withStyles } from '@material-ui/core';\nimport personLogo from '../../../../images/viinimaa/icon-for-how-many.svg';\n\nconst styles = theme => ({\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignContent: 'center',\n alignItems: 'center',\n margin: theme.spacing(1, 4, 1, 0),\n },\n svg: {},\n numberOfPeople: { paddingLeft: theme.spacing(1.5) },\n});\n\nfunction PreparationNumberOfPeople({ classes, className, data, ...otherProps }) {\n if (isNull(data) || isUndefined(data)) {\n return null;\n }\n return (\n
\n \"logo\"\n \n {`${data} `}\n \n
\n );\n}\n\nPreparationNumberOfPeople.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n\nPreparationNumberOfPeople.defaultProps = {\n classes: {},\n className: null,\n data: null,\n};\n\nexport default withStyles(styles)(PreparationNumberOfPeople);\n","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE4LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA1MCA1MCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNTAgNTAiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzNDM0MzQiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJNMTUuNCwyMC4xYzQuOCwwLjksOC40LDUuMSw4LjQsMTAuMVY0OEgzLjFWMzAuMgoJCWMwLTUuMyw0LTkuNyw5LjItMTAuM2wwLTIuNGMtMy44LTAuMy02LjgtMy40LTcuMS03LjNjLTAuMy00LjMsMy04LDcuMy04LjNzOCwzLDguMyw3LjNjMC4yLDMuOC0yLjIsNy4xLTUuNyw4Ii8+Cgk8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMzQzNDM0IiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTQwLjUsMjYuN2MzLjYsMC43LDYuNCwzLjksNi40LDcuN1Y0OEgzMS4xVjM0LjVjMC00LDMuMS03LjQsNy03LjgKCQlsMC0xLjhjLTIuOS0wLjMtNS4yLTIuNi01LjQtNS41Yy0wLjItMy4zLDIuMy02LjEsNS42LTYuM2MzLjMtMC4yLDYuMSwyLjMsNi4zLDUuNmMwLjIsMi45LTEuNyw1LjQtNC4zLDYuMSIvPgo8L2c+Cjwvc3ZnPgo=\"","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId, brandSite } from '../../../sites';\n\nimport ViinimaaPreparationNumberOfPeople from './viinimaa';\n\nfunction PreparationNumberOfPeople(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return ;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return ;\n }\n if (brandSite) {\n return ;\n }\n\n return null;\n}\n\nexport default PreparationNumberOfPeople;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { floor, isNull, isUndefined } from 'lodash';\n\nimport { Typography, withStyles } from '@material-ui/core';\nimport personLogo from '../../../../images/viinimaa/icon-preparation-time.svg';\n\nconst styles = theme => ({\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignContent: 'center',\n alignItems: 'center',\n margin: theme.spacing(1, 4, 1, 0),\n },\n svg: {},\n time: { paddingLeft: theme.spacing(1.5) },\n});\n\nfunction PreparationTime({ classes, className, data, ...otherProps }) {\n if (isNull(data) || isUndefined(data)) {\n return null;\n }\n const hours = floor(data / 60);\n const min = data - hours * 60;\n\n return (\n
\n \"logo\"\n \n {`${hours} h ${min} min`}\n \n
\n );\n}\n\nPreparationTime.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n\nPreparationTime.defaultProps = {\n classes: {},\n className: null,\n data: null,\n};\n\nexport default withStyles(styles)(PreparationTime);\n","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE4LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA1MCA1MCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNTAgNTAiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzNDM0MzQiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJNMjUsNC43djQuNGMtMTAuNywwLTE5LjQsOC43LTE5LjQsMTkuNFMxNC4zLDQ4LDI1LDQ4CgkJczE5LjQtOC43LDE5LjQtMTkuNGMwLTkuNi02LjktMTcuNS0xNi0xOS4xIi8+Cgk8bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiMzQzNDM0IiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgeDE9IjMxLjgiIHkxPSIyIiB4Mj0iMTguMiIgeTI9IjIiLz4KCTxwb2x5bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiMzQzNDM0IiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRzPSIzNi43LDI4LjYgMjUsMjguNiAyNSwzOS4yIAkiLz4KPC9nPgo8L3N2Zz4K\"","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId, brandSite } from '../../../sites';\n\nimport ViinimaaPreparationTime from './viinimaa';\n\nfunction PreparationTime(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return ;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return ;\n }\n if (brandSite) {\n return ;\n }\n\n return null;\n}\n\nexport default PreparationTime;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { isNull, isUndefined } from 'lodash';\nimport { withStyles, Typography } from '@material-ui/core';\nimport AlcoholicityIcon from '../../../../images/viinimaa/alcohole.svg';\n\nconst styles = theme => ({\n root: {\n display: 'flex',\n alignContent: 'center',\n alignItems: 'center',\n margin: theme.spacing(1, 4, 1, 0),\n },\n alcoholicity: {},\n});\n\nfunction Alcoholicity({ classes, className, data, ...otherProps }) {\n if (isNull(data) || isUndefined(data)) {\n return null;\n }\n\n return (\n
\n \"logo\"\n {`${data} %`}\n
\n );\n}\n\nAlcoholicity.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n\nAlcoholicity.defaultProps = {\n classes: {},\n className: null,\n data: null,\n};\n\nexport default withStyles(styles)(Alcoholicity);\n","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgYXJpYS1sYWJlbGxlZGJ5PSJ0aXRsZSIKYXJpYS1kZXNjcmliZWRieT0iZGVzYyIgcm9sZT0iaW1nIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgPHRpdGxlPkh1bWlkaXR5PC90aXRsZT4KICA8ZGVzYz5BIGxpbmUgc3R5bGVkIGljb24gZnJvbSBPcmlvbiBJY29uIExpYnJhcnkuPC9kZXNjPgogIDxwYXRoIGRhdGEtbmFtZT0ibGF5ZXIyIgogIGQ9Ik01MS45IDQwLjFhMjAuNiAyMC42IDAgMCAwLTEtNC45QzQ2LjkgMjAuOCAzMiAyIDMyIDJTMTcuMSAyMC44IDEzIDM1LjJhMjAuNiAyMC42IDAgMCAwLTEgNC45YzAgLjUtLjEgMS0uMSAxLjVBMjAuMiAyMC4yIDAgMCAwIDMyIDYyYTIwLjIgMjAuMiAwIDAgMCAyMC0yMC40YzAtLjUgMC0xLS4xLTEuNXoiCiAgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMjAyMDIwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS13aWR0aD0iMSI+PC9wYXRoPgogIDxwYXRoIGRhdGEtbmFtZT0ibGF5ZXIxIiBmaWxsPSJub25lIiBzdHJva2U9IiMyMDIwMjAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIKICBzdHJva2Utd2lkdGg9IjIiIGQ9Ik0zOCAzMEwyNiA1MCI+PC9wYXRoPgogIDxjaXJjbGUgZGF0YS1uYW1lPSJsYXllcjEiIGN4PSIyNiIgY3k9IjMyIiByPSI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMyMDIwMjAiCiAgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9IjIiPjwvY2lyY2xlPgogIDxjaXJjbGUgZGF0YS1uYW1lPSJsYXllcjEiIGN4PSIzOCIgY3k9IjQ4IiByPSI0IiBmaWxsPSJub25lIgogIHN0cm9rZT0iIzIwMjAyMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9IjIiPjwvY2lyY2xlPgo8L3N2Zz4K\"","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId, brandSite } from '../../../sites';\n\nimport ViinimaaAlcoholicity from './viinimaa';\n\nfunction Alcoholicity(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return ;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return ;\n }\n if (brandSite) {\n return ;\n }\n\n return null;\n}\n\nexport default Alcoholicity;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { get, isNull, isUndefined } from 'lodash';\nimport { withStyles, Typography } from '@material-ui/core';\n\nconst styles = theme => ({\n root: {\n display: 'block',\n margin: theme.spacing(2, 4, 2, 0),\n },\n foodType: {},\n});\n\nfunction FoodType({ classes, className, pageData }) {\n const foodType = get(pageData, 'foodType.0.foodType');\n if (isNull(foodType) || isUndefined(foodType)) {\n return null;\n }\n\n return (\n
\n {`${foodType}`}\n
\n );\n}\n\nFoodType.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n pageData: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n};\n\nFoodType.defaultProps = {\n classes: {},\n className: null,\n pageData: null,\n};\n\nexport default withStyles(styles)(FoodType);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { get, map, isEmpty, concat, compact } from 'lodash';\n\nimport { withStyles } from '@material-ui/core';\nimport Visible from '../../../shared/Visible';\nimport ThumbnailImage from '../../../shared/ThumbnailImage';\nimport Link from '../../../navigation/Link';\n\nimport Button from '../../../shared/Button';\n\nconst styles = theme => ({\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignContent: 'center',\n alignItems: 'center',\n },\n icon: { margin: theme.spacing(1, 4, 1, 0) },\n image: { borderRadius: '0' },\n category: {\n backgroundColor: ({ outlined }) => {\n if (outlined) {\n return theme.palette.category.outlined.background;\n }\n return 'transparent';\n },\n color: ({ outlined }) => {\n if (outlined) {\n return theme.palette.category.outlined.text;\n }\n return theme.palette.category.text;\n },\n\n fontSize: '12px',\n marginRight: theme.spacing(2),\n marginBottom: '4px',\n fontWeight: 'bold',\n textTransform: 'uppercase',\n background: 'none',\n padding: ({ outlined }) => {\n if (outlined) {\n return theme.spacing(1);\n }\n return '0';\n },\n border: '0px',\n '&:hover': {\n color: theme.palette.category.hoverText,\n border: '0px',\n boxShadow: 'none',\n\n backgroundColor: 'transparent',\n },\n },\n});\n\nfunction CategoryIcon({ classes, className, data, showText, ...otherProps }) {\n if (isEmpty(data)) {\n return null;\n }\n const iconCategories = [];\n const textCategories = [];\n\n map(data, category => {\n if (isEmpty(get(category, 'categoryIcon'))) {\n textCategories.push(category);\n } else {\n iconCategories.push(category);\n }\n });\n const categories = compact(concat(iconCategories, textCategories));\n return (\n
\n {map(categories, (category, index) => {\n const categoryId = get(category, 'contentful_id');\n const categoryKey = `${categoryId}-${index}`;\n const fullPath = get(category, 'fullPath');\n const title = get(category, 'title');\n const categoryIcon = get(category, 'categoryIcon.[0]');\n\n return (\n
\n \n \n \n \n \n \n
\n \n
\n
\n
\n );\n })}\n
\n );\n}\n\nCategoryIcon.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n outlined: PropTypes.bool,\n showText: PropTypes.bool,\n data: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n};\n\nCategoryIcon.defaultProps = {\n classes: {},\n className: null,\n data: null,\n outlined: false,\n showText: false,\n};\n\nexport default withStyles(styles)(CategoryIcon);\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId, brandSite } from '../../../sites';\n\nimport ViinimaaCategoryIcon from './viinimaa';\n\nfunction CategoryIcon(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return ;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return ;\n }\n if (brandSite) {\n return ;\n }\n\n return null;\n}\n\nexport default CategoryIcon;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { get } from 'lodash';\n\nimport { Container, withStyles } from '@material-ui/core';\nimport { useContentfulInspectorMode } from '@contentful/live-preview/react';\nimport PreparationNumberOfPeople from '../../PreparationNumberOfPeople';\nimport PreparationTime from '../../PreparationTime';\nimport Alcoholicity from '../../Alcoholicity';\nimport FoodType from './FoodType';\nimport CategoryIcon from '../../CategoryIcon';\nimport ShareButtons from '../../ShareButtons';\nimport PrintButton from '../../../shared/PrintButton';\n\nconst styles = theme => ({\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignContent: 'center',\n alignItems: 'center',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n marginBottom: theme.spacing(6),\n [theme.breakpoints.up('sm')]: { marginBottom: theme.spacing(6) },\n '@media print': {\n marginBottom: theme.spacing(2),\n },\n },\n time: {},\n foodType: {},\n numberOfPeople: {},\n categories: {},\n buttonGroup: {\n display: 'flex',\n flexGrow: 2,\n justifyContent: 'flex-end',\n '@media print': {\n display: 'none',\n },\n },\n printButton: {\n display: 'none',\n marginRight: theme.spacing(1),\n [theme.breakpoints.up('md')]: {\n display: 'flex',\n },\n },\n shareButtons: {},\n});\n\nfunction PreparationInformation({ classes, className, pageData }) {\n const inspectorProps = useContentfulInspectorMode();\n const contentfulId = get(pageData, 'contentful_id');\n const categories = get(pageData, 'categories');\n const alcoholicity = get(pageData, 'alcoholicity');\n const totalTime = get(pageData, 'totalTime');\n const preparationQuantity = get(pageData, 'preparationQuantity');\n\n return (\n \n \n \n \n \n \n\n
\n \n \n
\n
\n );\n}\n\nPreparationInformation.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n pageData: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n};\n\nPreparationInformation.defaultProps = {\n classes: {},\n className: null,\n pageData: null,\n};\n\nexport default withStyles(styles)(PreparationInformation);\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId, brandSite } from '../../../sites';\n\nimport ViinimaaPreparationInformation from './viinimaa';\n\nfunction PreparationIngredients(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return ;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return ;\n }\n if (brandSite) {\n return ;\n }\n\n return null;\n}\n\nexport default PreparationIngredients;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { get } from 'lodash';\nimport { graphql } from 'gatsby';\nimport { Container, withStyles } from '@material-ui/core';\nimport { useContentfulInspectorMode } from '@contentful/live-preview/react';\n\nimport '../../Content';\n\nimport RichText from '../../../shared/RichText';\n\nconst styles = () => ({\n root: {\n display: 'block',\n },\n});\n\nfunction PreparationSections({ classes, className, pageData }) {\n const inspectorProps = useContentfulInspectorMode();\n const preparationSections = get(pageData, 'preparationSections');\n\n return (\n \n \n \n );\n}\n\nPreparationSections.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n pageData: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n};\n\nPreparationSections.defaultProps = {\n classes: {},\n className: null,\n pageData: null,\n};\n\nexport default withStyles(styles)(PreparationSections);\n\nexport const query = graphql`\n fragment PreparationSectionsFragment on ContentfulRichText {\n raw\n references {\n ... on Node {\n ...ContentBrandFragment\n ...ContentCategoryFragment\n ...ContentAdvancedPageFragment\n ...ContentArticlePageFragment\n ...ContentLandingPageFragment\n ...ContentRecipePageFragment\n ...ContentAssetFragment\n ...ContentPreparationSectionFragment\n ...ContentPreparationStepFragment\n ...ContentContentListModuleFragment\n ...ContentButtonLinkModuleFragment\n ...ContentContactPersonModuleFragment\n ...ContentLatestArticlesModuleFragment\n ...ContentHeroImageModuleFragment\n ...ContentLeadTextModuleFragment\n ...ContentLinkBlockModuleFragment\n ...ContentAccordionModuleFragment\n ...ContentImageModuleFragment\n ...ContentMediaGalleryModuleFragment\n ...ContentFormModuleFragment\n ...ContentTableModuleFragment\n ...ContentVideoModuleFragment\n ...ContentFeaturedProductModuleFragment\n ...ContentProductListModuleFragment\n }\n }\n }\n`;\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId, brandSite } from '../../../sites';\n\nimport ViinimaaPreparationSections from './viinimaa';\n\nfunction PreparationSections(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return ;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return ;\n }\n if (brandSite) {\n return ;\n }\n\n return null;\n}\n\nexport default PreparationSections;\n","import { each, concat, isEqual, get, isEmpty } from 'lodash';\n\n/**\n *\n * @param {{ raw: string }} richText\n * @returns {[{ nodeType: string, content: [] }]}\n */\nexport const getRichTextNodes = richText => {\n return [JSON.parse(get(richText, 'raw', '{}'))];\n};\n\nexport const getRichTextNodeValues = (nodes, nodeType) => {\n let values = [];\n each(nodes, node => {\n if (isEqual(get(node, 'nodeType'), nodeType)) {\n values.push(get(node, 'value'));\n }\n if (!isEmpty(get(node, 'content'))) {\n values = concat([], values, getRichTextNodeValues(get(node, 'content'), nodeType));\n }\n });\n return values;\n};\n","/* eslint-disable react/no-danger */\n\nimport React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { get, isEmpty, isNil, filter, map, concat, compact, flatten } from 'lodash';\nimport { graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\n\nimport { contentfulContentTypes } from '../../../../constants';\n\nimport { createCloudinaryImageUrl } from '../../../../utils/cloudinaryUtils';\nimport { getRichTextNodeValues, getRichTextNodes } from '../../../../utils/richTextUtils';\n\nconst getTitle = pageData => {\n let title = get(pageData, 'title');\n if (isEmpty(title)) {\n title = get(pageData, 'menuTitle');\n }\n return title;\n};\nconst getPreparationSectionTitle = (preparationSection, pageData) => {\n let preparationSectionTitle = get(preparationSection, 'title');\n if (isEmpty(preparationSectionTitle)) {\n preparationSectionTitle = getTitle(pageData);\n }\n return preparationSectionTitle;\n};\n\nconst getRecipeCategory = pageData => {\n let category = get(pageData, 'recipeCategory.0.title');\n if (isEmpty(category)) {\n category = get(pageData, 'recipeCategory.0.menuTitle');\n }\n return category;\n};\n\nconst getCuisine = pageData => {\n let category = get(pageData, 'cuisine.title');\n if (isEmpty(category)) {\n category = get(pageData, 'cuisine.menuTitle');\n }\n return category;\n};\nconst getAuthor = pageData => {\n const author = get(pageData, 'author', null);\n const type = get(pageData, 'authorType.0', 'Person');\n if (author) {\n return {\n '@type': type,\n name: author,\n };\n }\n return '';\n};\n\nconst getHeroImageUrl = pageData => {\n const publicId = get(pageData, 'heroImage.cloudinaryImage.0.public_id');\n if (isEmpty(publicId)) {\n return undefined;\n }\n return createCloudinaryImageUrl('OgImage-MD-MD', publicId);\n};\n\nconst getPreparationTime = pageData => {\n const preparationTime = get(pageData, 'preparationTime');\n if (isNil(preparationTime)) {\n return undefined;\n }\n const hours = preparationTime >= 60 ? Math.round(preparationTime / 60) : 0;\n const minutes = preparationTime % 60 || 0;\n return `PT${hours}H${minutes}M`;\n};\n\nconst getCookTime = pageData => {\n const cookTime = get(pageData, 'cookTime');\n if (isNil(cookTime)) {\n return undefined;\n }\n const hours = cookTime >= 60 ? Math.round(cookTime / 60) : 0;\n const minutes = cookTime % 60 || 0;\n return `PT${hours}H${minutes}M`;\n};\n\nconst getTotalTime = pageData => {\n const totalTime = get(pageData, 'totalTime');\n if (isNil(totalTime)) {\n return undefined;\n }\n const hours = totalTime >= 60 ? Math.round(totalTime / 60) : 0;\n const minutes = totalTime % 60 || 0;\n return `PT${hours}H${minutes}M`;\n};\n\nconst getPreparationSteps = preparationSection => {\n const preparationSteps = filter(get(preparationSection, 'preparationSteps.references'), {\n internal: { type: contentfulContentTypes.PreparationStep },\n });\n const preparationStepNodes = getRichTextNodes(get(preparationSection, 'preparationSteps'));\n const preparationStepNodeTexts = compact(getRichTextNodeValues(preparationStepNodes, 'text'));\n const preparationStepsFromTexts = map(preparationStepNodeTexts, preparationStepNodeText => ({\n preparationStep: preparationStepNodeText,\n }));\n return concat([], preparationSteps, preparationStepsFromTexts);\n};\n\nconst getPreparationSections = pageData => {\n const preparationSections = filter(get(pageData, 'preparationSections.references'), {\n internal: { type: contentfulContentTypes.PreparationSection },\n });\n return preparationSections;\n};\n\nconst getPreparationIngredients = pageData => {\n const preparationSections = getPreparationSections(pageData);\n\n let preparationIngredients = [];\n\n map(preparationSections, preparationSection => {\n const ingredients = get(preparationSection, 'ingredients');\n\n if (!isNil(ingredients)) {\n const ingredientNodes = getRichTextNodes(ingredients);\n\n const ingredientNodeTexts = compact(getRichTextNodeValues(ingredientNodes, 'text'));\n preparationIngredients = concat(preparationIngredients, ingredientNodeTexts);\n } else {\n preparationIngredients = concat(\n preparationIngredients,\n map(flatten(get(preparationSection, 'preparationIngredients')), 'ingredient'),\n );\n }\n });\n return preparationIngredients;\n};\n\nfunction RecipeStructuredData({ pageData }) {\n const structuredData = useMemo(() => {\n return JSON.stringify({\n '@context': 'https://schema.org/',\n '@type': 'Recipe',\n description: get(pageData, 'shortDescription'),\n datePublished: get(pageData, 'createdAt'),\n recipeYield: get(pageData, 'preparationQuantity'),\n name: getTitle(pageData),\n author: getAuthor(pageData),\n recipeCategory: getRecipeCategory(pageData),\n recipeCuisine: getCuisine(pageData),\n image: getHeroImageUrl(pageData),\n prepTime: getPreparationTime(pageData),\n cookTime: getCookTime(pageData),\n totalTime: getTotalTime(pageData),\n recipeIngredient: getPreparationIngredients(pageData),\n recipeInstructions: map(getPreparationSections(pageData), preparationSection => ({\n '@type': 'HowToSection',\n name: getPreparationSectionTitle(preparationSection, pageData),\n itemListElement: map(getPreparationSteps(preparationSection), preparationStep => ({\n '@type': 'HowToStep',\n text: get(preparationStep, 'preparationStep'),\n })),\n })),\n });\n }, [pageData]);\n\n return (\n \n \n \n );\n}\n\nRecipeStructuredData.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n pageData: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n};\n\nRecipeStructuredData.defaultProps = {\n classes: {},\n className: null,\n pageData: null,\n};\n\nexport default RecipeStructuredData;\n\nexport const query = graphql`\n fragment RichDataFragment on ContentfulRichData {\n pageTitle\n preparationTimeHours\n preparationTimeMinutes\n }\n`;\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId, brandSite } from '../../../sites';\n\nimport ViinimaaRecipeStructuredData from './viinimaa';\n\nfunction RecipeStructuredData(props) {\n if (isEqual(siteId, siteIds.Viinimaa)) {\n return ;\n }\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return ;\n }\n if (brandSite) {\n return ;\n }\n\n return null;\n}\n\nexport default RecipeStructuredData;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport get from 'lodash/get';\nimport { withStyles, Typography, Container } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { useContentfulInspectorMode } from '@contentful/live-preview/react';\n\nconst styles = theme => ({\n root: {\n display: 'flex',\n justifyContent: 'flex-end',\n padding: theme.spacing(2),\n [theme.breakpoints.up('sm')]: {\n padding: theme.spacing(3),\n },\n },\n});\n\nfunction RecipeAuthor({ classes, className, pageData }) {\n const inspectorProps = useContentfulInspectorMode();\n const author = get(pageData, 'author');\n const { t } = useTranslation();\n if (!author) {\n return null;\n }\n\n return (\n \n \n {t('Recipe.author')}\n {`: ${author}`}\n \n \n );\n}\n\nRecipeAuthor.propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n pageData: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n};\n\nRecipeAuthor.defaultProps = {\n classes: {},\n className: null,\n pageData: null,\n};\n\nexport default withStyles(styles)(RecipeAuthor);\n","import React from 'react';\n\nimport { isEqual } from 'lodash';\n\nimport { siteIds } from '../../../constants';\nimport { siteId } from '../../../sites';\n\nimport FolkofolkRecipeAuthor from './folkofolk';\n\nfunction RecipeAuthor(props) {\n if (isEqual(siteId, siteIds.Folkofolk)) {\n return ;\n }\n\n return null;\n}\n\nexport default RecipeAuthor;\n","/* eslint-disable max-len */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { get } from 'lodash';\nimport isEqual from 'lodash/isEqual';\nimport { withStyles } from '@material-ui/core';\n\nimport Header from '../../components/layout/Header';\nimport Footer from '../../components/layout/Footer';\nimport SeoFields from '../../components/page/SeoFields';\nimport HeroImage from '../../components/page/HeroImage';\nimport Title from '../../components/page/Title';\nimport RelatedPages from '../../components/page/RelatedPages';\nimport BrandPages from '../../components/page/BrandPages';\nimport FeaturedProductsCarousel from '../../components/page/FeaturedProductsCarousel';\nimport ShortDescription from '../../components/page/ShortDescription';\nimport PreparationInformation from '../../components/page/PreparationInformation';\nimport PreparationSections from '../../components/page/PreparationSections';\nimport RecipeStructuredData from '../../components/page/RecipeStructuredData';\nimport SiteNotification from '../../components/page/SiteNotifications';\nimport AnalyticsModule from '../../components/module/AnalyticsModule';\nimport withSecondaryTheme from '../../components/shared/ThemeStyle/withSecondaryTheme';\nimport RecipeAuthor from '../../components/page/RecipeAuthor';\nimport PageBrowseTracker from '../../components/page/PageBrowseTracker';\n\nimport useInitI18next from '../../components/hooks/useInitI18next';\nimport useInitLuxon from '../../components/hooks/useInitLuxon';\n\nimport { siteIds, contentfulContentTypes } from '../../constants';\nimport { siteId } from '../../sites';\n\nconst styles = theme => ({\n root: {\n display: 'block',\n ...theme.palette.pageTemplates.otherPageTemplates,\n ...theme.palette.pageTemplates.recipePage,\n '@media print': {\n paddingTop: '60px',\n },\n },\n wrapper: {\n '@media print': {\n display: 'flex',\n alignContent: 'center',\n alignItems: 'flex-start',\n },\n },\n titleContainer: {\n '@media print': {\n flexBasis: '50%',\n },\n },\n title: {\n '@media print': {\n marginTop: '-10px',\n },\n },\n heroImage: {\n '@media print': {\n flexBasis: '50%',\n },\n },\n});\n\nfunction RecipePageTemplate({ classes, data }) {\n const pageData = get(data, 'contentfulRecipePage');\n const analytics = get(pageData, 'mainTheme.analytics');\n\n useInitI18next();\n useInitLuxon();\n\n let showTitle = true;\n\n // Don't show title if this is Skagerrak's recipe page\n if (isEqual(siteId, siteIds.Skagerrak)) {\n const pageType = get(pageData, 'internal.type');\n showTitle = pageType ? !isEqual(pageType, contentfulContentTypes.RecipePage) : true;\n }\n\n return (\n
\n \n \n \n
\n \n
\n \n
\n {showTitle && (\n
\n \n <ShortDescription pageData={pageData} />\n </div>\n )}\n <HeroImage pageData={pageData} className={classes.heroImage} />\n </div>\n <FeaturedProductsCarousel pageData={pageData} />\n <PreparationInformation pageData={pageData} />\n <PreparationSections pageData={pageData} />\n <RecipeAuthor pageData={pageData} />\n <RelatedPages pageData={pageData} />\n <BrandPages pageData={pageData} />\n </main>\n <Footer pageData={pageData} />\n </div>\n );\n}\n\nRecipePageTemplate.propTypes = {\n data: PropTypes.object,\n classes: PropTypes.object,\n};\n\nRecipePageTemplate.defaultProps = {\n data: null,\n classes: {},\n};\n\nexport default withSecondaryTheme(withStyles(styles)(RecipePageTemplate));\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { withAuthenticationRequired } from '@auth0/auth0-react';\n\nimport RecipePageTemplate from '../RecipePageTemplate';\n\nfunction AnoraProRecipePageTemplate({ ...props }) {\n return <RecipePageTemplate {...props} />;\n}\n\nAnoraProRecipePageTemplate.propTypes = {\n data: PropTypes.object,\n classes: PropTypes.object,\n};\n\nAnoraProRecipePageTemplate.defaultProps = {\n data: null,\n classes: {},\n};\n\nexport default withAuthenticationRequired(AnoraProRecipePageTemplate);\n","import React from 'react';\n\nimport { graphql } from 'gatsby';\n\nimport CommonRecipePageTemplate from './RecipePageTemplate';\nimport AnoraProRecipePageTemplate from './anoraPro';\nimport { siteId } from '../../sites';\nimport { siteIds } from '../../constants';\n\nfunction RecipePageTemplate({ ...props }) {\n if (siteId === siteIds.AnoraPro) {\n return <AnoraProRecipePageTemplate {...props} />;\n }\n return <CommonRecipePageTemplate {...props} />;\n}\n\nexport const pageQuery = graphql`\n query RecipePageTemplate($pageId: String!) {\n contentfulRecipePage(id: { eq: $pageId }) {\n id\n contentful_id\n createdAt\n title\n menuTitle\n author\n authorType\n shortDescription\n fullPath\n languageCode\n alcoholicity\n preparationQuantity\n preparationTime\n cookTime\n totalTime\n internal {\n type\n }\n languageVersions {\n ...LanguageVersionPageFragment\n }\n seoFields {\n ...SeoDataFragment\n }\n primaryChannel {\n ...PrimaryChannelFragment\n }\n searchPage {\n ...SearchPageFragment\n }\n breadcrumbs {\n ...BreadcrumbFragment\n }\n topNavigation {\n ...TopNavigationFragment\n }\n heroImage {\n ...HeroImageFragment\n }\n categories {\n ...CategoryFragment\n }\n recipeCategory {\n ...CategoryFragment\n }\n cuisine {\n ...CategoryFragment\n }\n preparationSections {\n ...PreparationSectionsFragment\n }\n relatedPages {\n ...RelatedPageFragment\n }\n brands {\n ...BrandPageFragment\n }\n featuredProducts {\n ...FeaturedProductFragment\n }\n mainTheme {\n ...themeFragment\n }\n }\n }\n`;\n\nexport default RecipePageTemplate;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var createRound = require('./_createRound');\n\n/**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\nvar floor = createRound('floor');\n\nmodule.exports = floor;\n"],"names":["_interopRequireDefault","_interopRequireWildcard","exports","React","_default","default","createElement","d","BrandPage","classes","className","data","image","title","fullPath","shortDescription","categories","pageType","contentfulContentTypes","ListElementCard","clsx","root","richText","RichText","description","defaultProps","withStyles","BrandPages","pageData","inspectorProps","useContentfulInspectorMode","brands","Container","disableGutters","entryId","fieldId","locale","brand","index","key","theme","padding","spacing","display","flexWrap","props","siteId","siteIds","RelatedPage","otherProps","relatedProduct","ProductCard","productData","RelatedPages","relatedPages","reference","Visible","hidden","relatedpages","relatedpage","backgroundColor","palette","common","lighterGray","flexFlow","gap","brandSite","PrintButton","t","useTranslation","variant","onClick","clickPrintButton","window","print","startIcon","children","to","ProductMonopolyNumber","monopolyNumber","label","Typography","text","fontFamily","fontWeight","fontSize","paddingRight","FeaturedProduct","defaultImage","showProductMonopolyNumber","showProductMonopolyLink","featuredProduct","isMobile","setIsMobile","useState","width","useWindowSize","useEffect","breakPoints","name","cloudinaryImage","public_id","imageAltText","imageTitleText","attributes","imageWrapper","Link","link","ThumbnailImage","productImage","transformation","height","productInfo","Categories","categoriesData","outlined","category","align","country","monopolyNr","ProductMonopolyPrice","price","ProductMonopolyLink","Divider","divider","flexDirection","justifyContent","breakpoints","up","borderRadius","maxHeight","minWidth","marginBottom","color","mediumGray2","wordBreak","hyphens","flexBasis","maxWidth","marginTop","alignContent","alignItems","zIndex","position","bottom","lightGray","mediumGray","Carousel","child","show","setShow","currentIndex","setCurrentIndex","length","setLength","touchPosition","setTouchPosition","transformPercentage","setTransformPercentage","handleNext","prevState","handelPrev","carouselWrapper","Button","arrowIcon","leftArrow","disabled","KeyboardArrowLeft","carouselContentWrapper","onTouchStart","e","touchDown","touches","clientX","onTouchMove","diff","carouselContent","style","transform","rightArrow","KeyboardArrowRight","overflow","transition","msOverflowStyle","scrollbarWidth","flexShrink","flexGrow","top","borderColor","gray","left","marginLeft","right","marginRight","stepper","FeaturedProductsCarousel","featuredProducts","carousel","contentCard","minHeight","productDefaultImage","PreparationNumberOfPeople","src","alt","svg","loading","numberOfPeople","margin","paddingLeft","PreparationTime","hours","min","time","Alcoholicity","alcoholicity","FoodType","foodType","CategoryIcon","showText","iconCategories","textCategories","push","categoryKey","categoryIcon","visible","icon","size","background","textTransform","border","hoverText","boxShadow","PreparationInformation","contentfulId","totalTime","preparationQuantity","buttonGroup","printButton","ShareButtons","shareButtons","PreparationSections","preparationSections","textData","getRichTextNodes","JSON","parse","getRichTextNodeValues","nodes","nodeType","values","node","getTitle","getPreparationSectionTitle","preparationSection","preparationSectionTitle","getRecipeCategory","getCuisine","getAuthor","author","type","getHeroImageUrl","publicId","createCloudinaryImageUrl","getPreparationTime","preparationTime","Math","round","getCookTime","cookTime","getTotalTime","getPreparationSteps","preparationSteps","internal","preparationStepNodes","preparationStepNodeTexts","preparationStepsFromTexts","preparationStepNodeText","preparationStep","getPreparationSections","getPreparationIngredients","preparationIngredients","ingredients","ingredientNodes","ingredientNodeTexts","RecipeStructuredData","structuredData","useMemo","stringify","datePublished","recipeYield","recipeCategory","recipeCuisine","prepTime","recipeIngredient","recipeInstructions","itemListElement","Helmet","RecipeAuthor","get","RecipePageTemplate","analytics","useInitI18next","useInitLuxon","showTitle","isEqual","PageBrowseTracker","SeoFields","Header","AnalyticsModule","main","wrapper","titleContainer","Title","ShortDescription","HeroImage","heroImage","Footer","withSecondaryTheme","pageTemplates","otherPageTemplates","recipePage","paddingTop","AnoraProRecipePageTemplate","withAuthenticationRequired","baseFlatten","module","array","floor","createRound"],"sourceRoot":""}