{"version":3,"sources":["webpack:///./Scripts/Components/NavigationMobileToggleButton.js","webpack:///./Scripts/Components/NavigationSearchButton.js","webpack:///./Scripts/Components/Navigation.js","webpack:///./Scripts/Components/NavigationMobile.js","webpack:///./Scripts/Containers/Navigation.container.js","webpack:///./Scripts/Hooks/useScroll.js","webpack:///./Scripts/Components/MiniCartProduct.js","webpack:///./Scripts/Components/MiniCart.js","webpack:///./Scripts/Containers/MiniCart.container.js","webpack:///./Scripts/Hooks/useWindowSize.js","webpack:///./Styles/Fondprodukter/variables/_foundation.scss","webpack:///./Scripts/Hooks/useOutsideClick.js","webpack:///./Scripts/Hooks/useIsMobile.js","webpack:///./Scripts/Hooks/useParseCssList.js"],"names":["NavigationMobileToggleButton","dispatch","useDispatch","className","onClick","setIsMobileOpen","NavigationSearchButton","isMobile","buttonText","setSearchWindowOpen","Navigation","React","forwardRef","props","ref","logoUrl","logoLightUrl","startPageUrl","active","isLoggedIn","myPageUrl","loginPageUrl","contentLinks","rightContentLinks","showMiniCart","useState","activeMenu","setActiveMenu","mouseOverLink","setMouseOverLink","mouseOverMenu","setMouseOverMenu","bottomOfNavbar","setBottomOfNavbar","getLinkElement","link","i","join","href","url","onMouseEnter","handleMouseEnterLink","onMouseLeave","handleMouseLeaveLink","key","name","icon","extraInfo","getLinkElementFromComponent","component","useEffect","undefined","current","boundingRect","getBoundingClientRect","y","height","linkElements","isActive","push","src","alt","width","translate","aria-label","getRightLinks","links","length","node","document","querySelector","style","top","megaMenuImageLinkBlocks","category","categoryChild","block","imageUrl","loading","preTitle","title","NavigationMobile","_links","open","topMenu","leftLinks","rightLinks","currentLink","setCurrentLink","createRef","hasChildren","showChildLinks","e","preventDefault","linkCopy","parent","body","classList","add","remove","connect","state","navigation","cart","miniCartOpen","showInfo","useIsMobile","scrollObserver","IntersectionObserver","setIsActive","isIntersecting","threshold","observe","header","margin","mobileOpen","useScroll","shouldDebounce","window","scrollY","scroll","setScroll","storeScroll","addEventListener","fn","params","frame","cancelAnimationFrame","requestAnimationFrame","passive","MiniCartProduct","product","onCartItemIncrement","onCartItemDecrement","onCartItemRemove","image","campaignPrice","price","quantity","MiniCart","orderRows","includeVAT","orderTotal","checkoutUrl","toggle","update","miniCartRef","useRef","miniCartInfoRef","useOutsideClick","right","innerWidth","x","getMiniCartRightPos","orderRow","rowSystemId","size","useWindowSize","initialWidth","initialHeight","innerHeight","setSize","useLayoutEffect","updateSize","removeEventListener","module","exports","callback","handleClickOutside","event","contains","target","breakpoints","useParseCssList","FoundationVariables","mediumBreakpoint","medium","replace","windowWidth","setIsMobile","cssList","splitted","split","result","str"],"mappings":"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","file":"3.f57211e913e96d47af10.js","sourcesContent":["import React from \"react\"\r\nimport { useDispatch } from 'react-redux';\r\nimport { setIsOpen as setIsMobileOpen } from '../Actions/Navigation.action';\r\n\r\nexport default function NavigationMobileToggleButton() {\r\n const dispatch = useDispatch()\r\n\r\n const show = () => {\r\n dispatch(setIsMobileOpen(true))\r\n }\r\n\r\n return \r\n}","import React from \"react\"\r\nimport { useDispatch } from 'react-redux';\r\nimport { setSearchWindowOpen } from \"../Actions/SearchWindow.action\";\r\n\r\nexport default function NavigationSearchButton({ isMobile, buttonText }) {\r\n const dispatch = useDispatch()\r\n\r\n return
dispatch(setSearchWindowOpen(true))}>\r\n \r\n {!isMobile ? buttonText : \"\"}\r\n
\r\n}","import React from 'react'\r\nimport { Portal } from 'react-portal'\r\nimport { useDispatch } from \"react-redux\"\r\nimport { setIsOpen } from \"../Actions/Navigation.action\"\r\nimport MiniCartContainer from '../Containers/MiniCart.container'\r\nimport { translate } from '../Services/translation'\r\nimport NavigationMobileToggleButton from './NavigationMobileToggleButton'\r\nimport NavigationSearchButton from './NavigationSearchButton'\r\n\r\nconst Navigation = React.forwardRef((props, ref) => {\r\n const { logoUrl, logoLightUrl, startPageUrl, active, isMobile, isLoggedIn, myPageUrl, loginPageUrl, contentLinks, rightContentLinks, showMiniCart } = props\r\n\r\n const [activeMenu, setActiveMenu] = React.useState()\r\n const [mouseOverLink, setMouseOverLink] = React.useState(false)\r\n const [mouseOverMenu, setMouseOverMenu] = React.useState(false)\r\n const [bottomOfNavbar, setBottomOfNavbar] = React.useState(0)\r\n\r\n const getLinkElement = (link, i) => {\r\n return handleMouseEnterLink(link)} \r\n onMouseLeave={() => handleMouseLeaveLink()}\r\n key={link.url+i+link.name}>\r\n {link.icon && }\r\n {link.extraInfo != \"myPagesLink\" && link.extraInfo != \"cartLink\" ? link.name : \"\"}\r\n \r\n }\r\n\r\n const getLinkElementFromComponent = (component, key) => {\r\n return
handleMouseEnterLink(component)} \r\n onMouseLeave={() => handleMouseLeaveLink()}\r\n key={key}>\r\n {component}\r\n
\r\n }\r\n\r\n const handleMouseEnterLink = link => {\r\n if(!isMobile) {\r\n setMouseOverLink(true)\r\n setActiveMenu(link)\r\n }\r\n }\r\n\r\n const handleMouseLeaveLink = () => {\r\n setMouseOverLink(false)\r\n }\r\n\r\n const getLeftLinks = () => {\r\n var linkElements = []\r\n if(!isMobile) {\r\n contentLinks.map((link, i) => linkElements.push(getLinkElement(link, i)))\r\n }else{\r\n linkElements.push(\r\n getLinkElementFromComponent(, \"mobile-toggle-btn\"),\r\n getLinkElementFromComponent(, \"mobile-search-btn\")\r\n )\r\n }\r\n return linkElements\r\n }\r\n\r\n const getRightLinks = () => {\r\n var linkElements = []\r\n if(!isMobile) {\r\n rightContentLinks.map((link, i) => linkElements.push(getLinkElement(link, i)))\r\n linkElements.push(\r\n getLinkElementFromComponent(, \"search-btn\")\r\n )\r\n }\r\n\r\n linkElements.push(\r\n handleMouseEnterLink(\"myPageLink\")} \r\n onMouseLeave={() => handleMouseLeaveLink()}\r\n key={\"myPageLink\"}\r\n aria-label={isLoggedIn ? \"My pages\" : \"Sign in\"}>\r\n \r\n \r\n )\r\n\r\n if(showMiniCart) {\r\n linkElements.push(getLinkElementFromComponent(, \"mini-cart\"))\r\n }\r\n\r\n return linkElements\r\n }\r\n\r\n React.useEffect(() => {\r\n if(!mouseOverLink && !mouseOverMenu) {\r\n setActiveMenu(undefined)\r\n }\r\n }, [mouseOverLink, mouseOverMenu])\r\n\r\n React.useEffect(() => {\r\n if(!ref || !ref.current) return\r\n\r\n var boundingRect = ref.current.getBoundingClientRect()\r\n setBottomOfNavbar(boundingRect.y + boundingRect.height)\r\n }, [ref])\r\n\r\n const generateMegaMenus = () => contentLinks.map((link, i) => link.links && link.links.length > 0 &&\r\n \r\n
setMouseOverMenu(true)}\r\n onMouseLeave={() => setMouseOverMenu(false)}\r\n style={{top: bottomOfNavbar}}>\r\n
\r\n
0 ? \" medium-large-8\" : \"\")}>\r\n {link.links.map((category, i) => \r\n
\r\n {category.name} \r\n
\r\n {category.links && category.links.map((categoryChild, i) => \r\n {categoryChild.name} \r\n )}\r\n
\r\n
\r\n )}\r\n
\r\n {link.megaMenuImageLinkBlocks && link.megaMenuImageLinkBlocks.length > 0 && \r\n
\r\n {link.megaMenuImageLinkBlocks && link.megaMenuImageLinkBlocks.map((block, i) => \r\n \r\n \r\n
\r\n
{block.preTitle}
\r\n
{block.title}
\r\n
\r\n
\r\n )}\r\n
\r\n }\r\n
\r\n
\r\n
\r\n )\r\n\r\n const isActive = () => {\r\n return typeof activeMenu != 'undefined' || active\r\n }\r\n\r\n return
\r\n
\r\n
\r\n {contentLinks && getLeftLinks()}\r\n
\r\n \r\n
\r\n {contentLinks && getRightLinks()}\r\n
\r\n
\r\n {contentLinks && !isMobile && generateMegaMenus()}\r\n
\r\n})\r\n\r\nexport default Navigation;","import React, { Fragment } from 'react';\r\nimport { Portal } from 'react-portal';\r\nimport { useDispatch } from \"react-redux\"\r\nimport { setIsOpen as setIsMobileOpen } from '../Actions/Navigation.action'\r\nimport { translate } from \"../Services/translation\"\r\n\r\nconst NavigationMobile = props => {\r\n const { logoUrl, startPageUrl, open } = props\r\n const links = [...props.contentLinks, ...props.rightContentLinks, ...props.topMenu.leftLinks, ...props.topMenu.rightLinks]\r\n\r\n const [currentLink, setCurrentLink] = React.useState()\r\n const ref = React.createRef()\r\n const dispatch = useDispatch()\r\n\r\n const close = () => {\r\n dispatch(setIsMobileOpen(false))\r\n }\r\n\r\n const hasChildren = link => link.links && link.links.length > 0\r\n\r\n const getLinks = () => {\r\n let _links = currentLink ? currentLink.links : links\r\n return _links.map(link => \r\n
\r\n
{link.name || link.title}
\r\n {hasChildren(link) &&\r\n
showChildLinks(e, link)}>\r\n \r\n
\r\n }\r\n
\r\n )\r\n }\r\n\r\n const showChildLinks = (e, link) => {\r\n e.preventDefault()\r\n var linkCopy = link\r\n if(currentLink)\r\n linkCopy.parent = currentLink\r\n setCurrentLink(linkCopy)\r\n }\r\n\r\n const goToParentLink = () => {\r\n if(currentLink && currentLink.parent)\r\n setCurrentLink(currentLink.parent)\r\n else\r\n setCurrentLink(undefined)\r\n }\r\n\r\n React.useEffect(() => {\r\n if(open) {\r\n document.body.classList.add(\"dark-overlay\", \"no-scroll\")\r\n }else{\r\n document.body.classList.remove(\"dark-overlay\", \"no-scroll\")\r\n }\r\n }, [open])\r\n\r\n return \r\n
\r\n \r\n
\r\n
\r\n {!currentLink &&

{translate(\"navbar.menu\")}

}\r\n {currentLink && {translate(\"navbar.back\")}}\r\n
\r\n
\r\n {getLinks()}\r\n
\r\n
\r\n
\r\n
\r\n}\r\n\r\nexport default NavigationMobile;","import React from 'react';\r\nimport { connect, useDispatch } from 'react-redux';\r\nimport { setIsActive, setIsOpen as setIsMobileOpen } from '../Actions/Navigation.action';\r\nimport Navigation from '../Components/Navigation';\r\nimport NavigationMobile from '../Components/NavigationMobile';\r\nimport useIsMobile from '../Hooks/useIsMobile';\r\nimport { useScroll } from '../Hooks/useScroll';\r\n \r\nconst NavigationContainer = props => {\r\n const { active, miniCartOpen } = props\r\n const isMobile = useIsMobile()\r\n const dispatch = useDispatch()\r\n const ref = React.createRef()\r\n // const scroll = useScroll(true)\r\n\r\n // React.useEffect(() => {\r\n // if(ref.current) {\r\n // if(ref.current.getBoundingClientRect().top <= 0 && scroll != 0) {\r\n // // stuck to top\r\n // if(!active)\r\n // dispatch(setIsActive(true))\r\n // }else if(active) {\r\n // dispatch(setIsActive(false))\r\n // }\r\n // }\r\n // }, [scroll])\r\n\r\n const scrollObserver = new IntersectionObserver( \r\n ([e]) => {\r\n dispatch(setIsActive(!e.isIntersecting))\r\n },\r\n { threshold: [1] }\r\n )\r\n\r\n React.useEffect(() => {\r\n if(ref && ref.current) {\r\n // Observe header, not the navbar element\r\n scrollObserver.observe(document.querySelector(\"header\"))\r\n }\r\n }, [ref])\r\n\r\n React.useEffect(() => {\r\n var header = document.querySelector(\"header\")\r\n if(header && typeof props.margin !== 'undefined') {\r\n header.style.top = props.margin + \"px\"\r\n }\r\n }, [props.margin])\r\n\r\n React.useEffect(() => {\r\n if(!isMobile) {\r\n dispatch(setIsMobileOpen(false))\r\n document.querySelector(\"#navbar\").classList.remove(\"overlay\")\r\n }\r\n }, [isMobile])\r\n \r\n return <>\r\n \r\n {isMobile && }\r\n \r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { navigation, cart } = state\r\n return {\r\n ...navigation,\r\n showMiniCart: cart.showMiniCart,\r\n miniCartOpen: cart.showInfo\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(NavigationContainer);","import React from 'react';\r\n\r\nexport function useScroll(shouldDebounce) {\r\n const [scroll, setScroll] = React.useState(window.scrollY)\r\n // The debounce function receives our function as a parameter\r\n const debounce = (fn) => {\r\n\r\n // This holds the requestAnimationFrame reference, so we can cancel it if we wish\r\n let frame;\r\n \r\n // The debounce function returns a new function that can receive a variable number of arguments\r\n return (...params) => {\r\n \r\n // If the frame variable has been defined, clear it now, and queue for next frame\r\n if (frame) { \r\n cancelAnimationFrame(frame);\r\n }\r\n \r\n // Queue our function call for the next frame\r\n frame = requestAnimationFrame(() => {\r\n \r\n // Call our function and pass any params we received\r\n fn(...params);\r\n });\r\n \r\n } \r\n };\r\n \r\n // Reads out the scroll position and stores it in the data attribute\r\n // so we can use it in our stylesheets\r\n const storeScroll = () => {\r\n setScroll(window.scrollY)\r\n }\r\n\r\n React.useEffect(() => {\r\n // Update scroll position for first time\r\n storeScroll();\r\n\r\n // Listen for new scroll events, here we debounce our `storeScroll` function\r\n return document.addEventListener('scroll', shouldDebounce ? debounce(storeScroll) : storeScroll, { passive: true })\r\n })\r\n\r\n return scroll\r\n}","import React, { Fragment } from 'react';\r\n\r\nconst MiniCartProduct = ({ product, onCartItemIncrement, onCartItemDecrement, onCartItemRemove }) => (\r\n\r\n
\r\n
\r\n {product.name}\r\n
\r\n
\r\n
\r\n

{product.name}

\r\n \r\n
\r\n
\r\n {product.campaignPrice ? (\r\n \r\n {product.campaignPrice} {product.price}\r\n \r\n ) : product.price}\r\n
\r\n
\r\n \r\n
\r\n {product.quantity}\r\n
\r\n \r\n
\r\n
\r\n
\r\n);\r\n\r\nexport default MiniCartProduct;","import React from 'react';\r\nimport { useOutsideClick } from '../Hooks/useOutsideClick';\r\nimport { translate } from '../Services/translation';\r\nimport MiniCartProduct from './MiniCartProduct';\r\nimport { Portal } from 'react-portal';\r\n\r\nconst MiniCart = ({ bottomOfNavbar, quantity, orderRows, includeVAT, orderTotal, checkoutUrl, showInfo, toggle, update }) => {\r\n const miniCartRef = React.useRef()\r\n const miniCartInfoRef = React.useRef()\r\n \r\n // TODO FIX! Does not work :)))\r\n useOutsideClick(miniCartInfoRef, showInfo && toggle)\r\n \r\n\r\n const getMiniCartRightPos = () => {\r\n if(!miniCartRef || !miniCartRef.current) return 0\r\n var boundingRect = miniCartRef.current.getBoundingClientRect()\r\n return window.innerWidth - boundingRect.x - (boundingRect.width*2)\r\n }\r\n\r\n return
\r\n
toggle()}>\r\n \r\n { quantity }\r\n \r\n
\r\n {showInfo && \r\n
\r\n {orderRows.length > 0\r\n ?
\r\n
\r\n
\r\n
{translate('checkout.cart.title')}
\r\n
\r\n
\r\n {orderRows.map(orderRow => {\r\n const { rowSystemId, quantity, size } = orderRow;\r\n return (\r\n update(rowSystemId, quantity + 1)}\r\n onCartItemDecrement={() => update(rowSystemId, quantity - 1)}\r\n onCartItemRemove={() => update(rowSystemId, 0)}\r\n />\r\n );\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {includeVAT ? translate('minicart.taxesincluded') : translate('minicart.total')}\r\n {orderTotal}\r\n
\r\n
\r\n
\r\n {translate('minicart.checkout')}\r\n
\r\n
\r\n :
\r\n
\r\n
\r\n {translate('checkout.cart.empty')}\r\n
\r\n
\r\n }\r\n
\r\n
}\r\n
\r\n}\r\n\r\nexport default MiniCart;","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport MiniCart from '../Components/MiniCart';\r\nimport { toggle, update } from '../Actions/Cart.action';\r\n\r\nconst MiniCartContainer = props => (\r\n \r\n)\r\n\r\nconst mapStateToProps = state => {\r\n const { cart } = state;\r\n return {\r\n ...cart,\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n toggle: () => dispatch(toggle()),\r\n update: (rowSystemId, quantity) => dispatch(update(rowSystemId, quantity)),\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MiniCartContainer);","import { useState, useLayoutEffect } from 'react';\r\n\r\nexport default function useWindowSize() {\r\n var initialWidth = window && window.innerWidth ? window.innerWidth : 0\r\n var initialHeight = window && window.innerHeight ? window.innerHeight : 0\r\n const [size, setSize] = useState([initialWidth, initialHeight]);\r\n useLayoutEffect(() => {\r\n function updateSize() {\r\n setSize([window.innerWidth, window.innerHeight]);\r\n }\r\n window.addEventListener('resize', updateSize);\r\n updateSize();\r\n return () => window.removeEventListener('resize', updateSize);\r\n }, []);\r\n return size;\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"breakpoints\":\"(small: 0, medium: 768px, medium-large: 1080px, large: 1440px, xlarge: 1920px)\"};","import React from \"react\"\r\n\r\nexport const useOutsideClick = (ref, callback) => {\r\n React.useEffect(() => {\r\n if(!ref)\r\n return\r\n \r\n /**\r\n * Called if clicked outside of element\r\n */\r\n function handleClickOutside(event) {\r\n if (ref && ref.current && !ref.current.contains(event.target)) {\r\n if(callback)\r\n callback()\r\n }\r\n }\r\n\r\n // Bind the event listener\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => {\r\n // Unbind the event listener on clean up\r\n document.removeEventListener(\"mousedown\", handleClickOutside);\r\n };\r\n }, [ref]);\r\n}","import useWindowSize from \"./useWindowSize\"\r\nimport FoundationVariables from \"../../Styles/Fondprodukter/variables/_foundation.scss\"\r\nimport useParseCssList from \"./useParseCssList\"\r\nimport React from \"react\";\r\n\r\nconst breakpoints = useParseCssList(FoundationVariables.breakpoints);\r\nconst mediumBreakpoint = parseInt(breakpoints.medium.replace(\"px\", \"\"))\r\n\r\nexport default function useIsMobile() {\r\n const [windowWidth] = useWindowSize()\r\n const [isMobile, setIsMobile] = React.useState(windowWidth <= mediumBreakpoint-1)\r\n React.useEffect(() => {\r\n setIsMobile(windowWidth <= mediumBreakpoint-1)\r\n }, [windowWidth])\r\n return isMobile\r\n}","export default function useParseCssList(cssList) {\r\n var splitted = cssList.replace(\"(\", \"\").replace(\")\", \"\").split(\",\")\r\n var result = {}\r\n splitted.map(str => {\r\n var split = str.split(\":\")\r\n result[split[0].trim()] = split[1].trim()\r\n })\r\n return result\r\n}"],"sourceRoot":""}