{"version":3,"file":"static/js/703.8af4d11a.chunk.js","mappings":"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","sources":["helpers/components/OutsideClickTrigger.jsx","helpers/currencyHelper.js","modules/typeahead/component/searchBar.jsx","modules/typeahead/component/openOverlayButton.jsx","../node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js","helpers/userManager.js","modules/typeahead/component/typeaheadOverlay.jsx","modules/typeahead/services/httpService.js","modules/typeahead/services/searchService.js","constants/urls.js","modules/typeahead/TypeaheadModule.js"],"sourcesContent":["import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\n\n/**\n * Component that alerts if you click outside of it\n */\nexport default class OutsideClickTrigger extends Component {\n  constructor(props) {\n    super(props)\n\n    this.setWrapperRef = this.setWrapperRef.bind(this)\n    this.handleClickOutside = this.handleClickOutside.bind(this)\n  }\n\n  componentDidMount() {\n    document.addEventListener(\"mousedown\", this.handleClickOutside)\n  }\n\n  componentWillUnmount() {\n    document.removeEventListener(\"mousedown\", this.handleClickOutside)\n  }\n\n  /**\n   * Set the wrapper ref\n   */\n  setWrapperRef(node) {\n    this.wrapperRef = node\n  }\n\n  /**\n   * Alert if clicked on outside of element\n   */\n  handleClickOutside(event) {\n    if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {\n      if (this.props.onOutsideClick) this.props.onOutsideClick()\n    }\n  }\n\n  render() {\n    return (\n      <div className={this.props.className} ref={this.setWrapperRef}>\n        {this.props.children}\n      </div>\n    )\n  }\n}\n\nOutsideClickTrigger.propTypes = {\n  children: PropTypes.element.isRequired,\n}\n","const formatCurrency = (val) => {\n  let showFraction = 0\n  if (val % 1 > 0) {\n    showFraction = 2\n  }\n\n  return new Intl.NumberFormat(\"da-DK\", {\n    minimumFractionDigits: showFraction,\n    maximumFractionDigits: showFraction,\n  }).format(val)\n}\n\nexport default formatCurrency\n","import React from \"react\"\n\nconst SearchBar = (props) => {\n  const onFocus = (target) => props.onFocus && props.onFocus(target)\n  const handleInput = (target) => props.handleInput && props.handleInput(target)\n  const onKeyUp = (target) => props.onKeyUp && props.onKeyUp(target)\n\n  return (\n    <React.Fragment>\n      <input\n        autoComplete=\"off\"\n        autoFocus={props.autoFocus}\n        id=\"searchForm_TextBox\"\n        type=\"text\"\n        className=\"search-input react-elem\"\n        placeholder={props.placeholderText ?? \"Søg...\"}\n        onFocus={(e) => onFocus(e.currentTarget)}\n        onInput={(e) => handleInput(e.currentTarget)}\n        onKeyUp={(e) => onKeyUp(e)}\n      ></input>\n      <div id=\"searchForm_Icon\" className=\"search-icon\"></div>\n    </React.Fragment>\n  )\n}\n\nexport default SearchBar\n","import React, { Component } from \"react\"\n\nclass OpenOverlayButton extends Component {\n  constructor(props) {\n    super(props)\n    this.type = props.type\n  }\n\n  render() {\n    switch (this.type) {\n      case \"topmenu\":\n        return (\n          <React.Fragment>\n            <i id=\"searchFormTopMenu_Icon\" onClick={(e) => this.props.onClick(e.currentTarget)} className=\"search-icon\"></i>\n          </React.Fragment>\n        )\n      case \"mobile\":\n        return (\n          <div id=\"search-link\" className=\"hidden js-typeahead-module-topmenu\">\n            <i className=\"search-icon\" onClick={(e) => this.props.onClick(e.currentTarget)}>\n              <span></span>\n            </i>\n          </div>\n        )\n      default:\n        return \"\"\n    }\n  }\n}\n\nexport default OpenOverlayButton\n","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// Older browsers don't support event options, feature detect it.\n\n// Adopted and modified solution from Bohdan Didukh (2017)\n// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\n\nvar hasPassiveEvents = false;\nif (typeof window !== 'undefined') {\n  var passiveTestOptions = {\n    get passive() {\n      hasPassiveEvents = true;\n      return undefined;\n    }\n  };\n  window.addEventListener('testPassive', null, passiveTestOptions);\n  window.removeEventListener('testPassive', null, passiveTestOptions);\n}\n\nvar isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1);\n\n\nvar locks = [];\nvar documentListenerAdded = false;\nvar initialClientY = -1;\nvar previousBodyOverflowSetting = void 0;\nvar previousBodyPosition = void 0;\nvar previousBodyPaddingRight = void 0;\n\n// returns true if `el` should be allowed to receive touchmove events.\nvar allowTouchMove = function allowTouchMove(el) {\n  return locks.some(function (lock) {\n    if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n      return true;\n    }\n\n    return false;\n  });\n};\n\nvar preventDefault = function preventDefault(rawEvent) {\n  var e = rawEvent || window.event;\n\n  // For the case whereby consumers adds a touchmove event listener to document.\n  // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n  // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n  // the touchmove event on document will break.\n  if (allowTouchMove(e.target)) {\n    return true;\n  }\n\n  // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n  if (e.touches.length > 1) return true;\n\n  if (e.preventDefault) e.preventDefault();\n\n  return false;\n};\n\nvar setOverflowHidden = function setOverflowHidden(options) {\n  // If previousBodyPaddingRight is already set, don't set it again.\n  if (previousBodyPaddingRight === undefined) {\n    var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n    var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n\n    if (_reserveScrollBarGap && scrollBarGap > 0) {\n      var computedBodyPaddingRight = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'), 10);\n      previousBodyPaddingRight = document.body.style.paddingRight;\n      document.body.style.paddingRight = computedBodyPaddingRight + scrollBarGap + 'px';\n    }\n  }\n\n  // If previousBodyOverflowSetting is already set, don't set it again.\n  if (previousBodyOverflowSetting === undefined) {\n    previousBodyOverflowSetting = document.body.style.overflow;\n    document.body.style.overflow = 'hidden';\n  }\n};\n\nvar restoreOverflowSetting = function restoreOverflowSetting() {\n  if (previousBodyPaddingRight !== undefined) {\n    document.body.style.paddingRight = previousBodyPaddingRight;\n\n    // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n    // can be set again.\n    previousBodyPaddingRight = undefined;\n  }\n\n  if (previousBodyOverflowSetting !== undefined) {\n    document.body.style.overflow = previousBodyOverflowSetting;\n\n    // Restore previousBodyOverflowSetting to undefined\n    // so setOverflowHidden knows it can be set again.\n    previousBodyOverflowSetting = undefined;\n  }\n};\n\nvar setPositionFixed = function setPositionFixed() {\n  return window.requestAnimationFrame(function () {\n    // If previousBodyPosition is already set, don't set it again.\n    if (previousBodyPosition === undefined) {\n      previousBodyPosition = {\n        position: document.body.style.position,\n        top: document.body.style.top,\n        left: document.body.style.left\n      };\n\n      // Update the dom inside an animation frame \n      var _window = window,\n          scrollY = _window.scrollY,\n          scrollX = _window.scrollX,\n          innerHeight = _window.innerHeight;\n\n      document.body.style.position = 'fixed';\n      document.body.style.top = -scrollY;\n      document.body.style.left = -scrollX;\n\n      setTimeout(function () {\n        return window.requestAnimationFrame(function () {\n          // Attempt to check if the bottom bar appeared due to the position change\n          var bottomBarHeight = innerHeight - window.innerHeight;\n          if (bottomBarHeight && scrollY >= innerHeight) {\n            // Move the content further up so that the bottom bar doesn't hide it\n            document.body.style.top = -(scrollY + bottomBarHeight);\n          }\n        });\n      }, 300);\n    }\n  });\n};\n\nvar restorePositionSetting = function restorePositionSetting() {\n  if (previousBodyPosition !== undefined) {\n    // Convert the position from \"px\" to Int\n    var y = -parseInt(document.body.style.top, 10);\n    var x = -parseInt(document.body.style.left, 10);\n\n    // Restore styles\n    document.body.style.position = previousBodyPosition.position;\n    document.body.style.top = previousBodyPosition.top;\n    document.body.style.left = previousBodyPosition.left;\n\n    // Restore scroll\n    window.scrollTo(x, y);\n\n    previousBodyPosition = undefined;\n  }\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nvar isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\n  return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n};\n\nvar handleScroll = function handleScroll(event, targetElement) {\n  var clientY = event.targetTouches[0].clientY - initialClientY;\n\n  if (allowTouchMove(event.target)) {\n    return false;\n  }\n\n  if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n    // element is at the top of its scroll.\n    return preventDefault(event);\n  }\n\n  if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n    // element is at the bottom of its scroll.\n    return preventDefault(event);\n  }\n\n  event.stopPropagation();\n  return true;\n};\n\nexport var disableBodyScroll = function disableBodyScroll(targetElement, options) {\n  // targetElement must be provided\n  if (!targetElement) {\n    // eslint-disable-next-line no-console\n    console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\n    return;\n  }\n\n  // disableBodyScroll must not have been called on this targetElement before\n  if (locks.some(function (lock) {\n    return lock.targetElement === targetElement;\n  })) {\n    return;\n  }\n\n  var lock = {\n    targetElement: targetElement,\n    options: options || {}\n  };\n\n  locks = [].concat(_toConsumableArray(locks), [lock]);\n\n  if (isIosDevice) {\n    setPositionFixed();\n  } else {\n    setOverflowHidden(options);\n  }\n\n  if (isIosDevice) {\n    targetElement.ontouchstart = function (event) {\n      if (event.targetTouches.length === 1) {\n        // detect single touch.\n        initialClientY = event.targetTouches[0].clientY;\n      }\n    };\n    targetElement.ontouchmove = function (event) {\n      if (event.targetTouches.length === 1) {\n        // detect single touch.\n        handleScroll(event, targetElement);\n      }\n    };\n\n    if (!documentListenerAdded) {\n      document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n      documentListenerAdded = true;\n    }\n  }\n};\n\nexport var clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\n  if (isIosDevice) {\n    // Clear all locks ontouchstart/ontouchmove handlers, and the references.\n    locks.forEach(function (lock) {\n      lock.targetElement.ontouchstart = null;\n      lock.targetElement.ontouchmove = null;\n    });\n\n    if (documentListenerAdded) {\n      document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n      documentListenerAdded = false;\n    }\n\n    // Reset initial clientY.\n    initialClientY = -1;\n  }\n\n  if (isIosDevice) {\n    restorePositionSetting();\n  } else {\n    restoreOverflowSetting();\n  }\n\n  locks = [];\n};\n\nexport var enableBodyScroll = function enableBodyScroll(targetElement) {\n  if (!targetElement) {\n    // eslint-disable-next-line no-console\n    console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\n    return;\n  }\n\n  locks = locks.filter(function (lock) {\n    return lock.targetElement !== targetElement;\n  });\n\n  if (isIosDevice) {\n    targetElement.ontouchstart = null;\n    targetElement.ontouchmove = null;\n\n    if (documentListenerAdded && locks.length === 0) {\n      document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n      documentListenerAdded = false;\n    }\n  }\n\n  if (isIosDevice) {\n    restorePositionSetting();\n  } else {\n    restoreOverflowSetting();\n  }\n};\n\n","const userManager = {\n  getCookieValue(cookieName) {\n    const name = cookieName + \"=\"\n    const decodedCookie = decodeURIComponent(document.cookie)\n    const cookieArray = decodedCookie.split(\";\")\n    for (let cookie of cookieArray) {\n      const trimmedCookie = cookie.trim()\n      if (trimmedCookie.startsWith(name)) {\n        return trimmedCookie.substring(name.length)\n      }\n    }\n    return null\n  },\n\n  hasRole(roleName) {\n    const rolesCookie = this.getCookieValue(\"neyeuser\")\n    if (rolesCookie) {\n      const rolesArray = rolesCookie.split(\",\").map((role) => role.trim())\n      return rolesArray.includes(roleName)\n    }\n    return false\n  },\n\n  isClubNeyeLoggedIn() {\n    return this.hasRole(\"clubmember\")\n  },\n\n  isAuthenticated() {\n    return this.hasRole(\"anonymous\")\n  },\n\n  isClerk() {\n    return this.hasRole(\"clerk\")\n  },\n\n  isEmployee() {\n    return this.hasRole(\"employee\")\n  },\n\n  canSearchCustomer() {\n    return this.hasRole(\"customersearch\")\n  },\n\n  isClubNeyeAdmin() {\n    return this.hasRole(\"shop\")\n  },\n\n  isPickupInStoreAdmin() {\n    return this.hasRole(\"pickup\")\n  },\n}\n\nexport default userManager\n","import React, { Component } from \"react\"\nimport OutsideClickTrigger from \"../../../helpers/components/OutsideClickTrigger\"\nimport formatCurrency from \"../../../helpers/currencyHelper\"\nimport { disableBodyScroll, clearAllBodyScrollLocks } from \"body-scroll-lock\"\nimport { isMobile } from \"react-device-detect\"\nimport userManager from \"../../../helpers/userManager\"\nexport default class TypeaheadOverlay extends Component {\n  constructor(props) {\n    super(props)\n    const { filteredData, displayGroupNames, totalCount, config } = this.props.data\n    this.state = {\n      searchQuery: this.props.query ?? \"\",\n      totalCount: totalCount ?? 0,\n      filteredData: filteredData ?? {},\n      displayGroupNames: displayGroupNames ?? [],\n      queryBlocks: config?.queryBlocks ?? {},\n      isSearchActive: false,\n      searchBar: this.props.searchBar,\n      onFinalizedSearch: this.props.onFinalSearch,\n      overlayElem: this.props.elem,\n    }\n  }\n\n  getCookieValue(cookieName) {\n    const name = cookieName + \"=\"\n    const decodedCookie = decodeURIComponent(document.cookie)\n    const cookieArray = decodedCookie.split(\";\")\n    for (let cookie of cookieArray) {\n      const trimmedCookie = cookie.trim()\n      if (trimmedCookie.startsWith(name)) {\n        return trimmedCookie.substring(name.length)\n      }\n    }\n    return null\n  }\n\n  closeOverlay() {\n    this.setState({ isSearchActive: false })\n  }\n\n  getSections(data, queryBlocks) {\n    return this.state.totalCount > 0 ? (\n      <div className=\"typeahead-overlay-content-inner\">\n        <Section\n          key=\"resultCategories\"\n          data={data}\n          queryBlocks={queryBlocks}\n          sectionGroups={[\"brands\", \"categories\"]}\n          sectionName={\"searchSectionTop\"}\n          className={\"top\"}\n        />\n        <Section\n          key=\"resultProducts\"\n          data={data}\n          queryBlocks={queryBlocks}\n          onFinalSearch={this.state.onFinalizedSearch}\n          sectionGroups={[\"products\"]}\n          sectionName={\"searchSectionMiddle\"}\n          className={\"middle\"}\n          searchQuery={this.state.searchQuery}\n        />\n        <Section\n          key=\"resultBlogs\"\n          data={data}\n          queryBlocks={queryBlocks}\n          sectionGroups={[\"blogpages\"]}\n          sectionName={\"searchSectionBottom\"}\n          className={\"bottom\"}\n        />\n      </div>\n    ) : (\n      \"\"\n    )\n  }\n\n  render() {\n    let data = this.state.filteredData\n    let queryBlocks = this.state.queryBlocks\n    if (this.state.isSearchActive) {\n      return (\n        <div className=\"typeahead-overlay-background\">\n          <OutsideClickTrigger onOutsideClick={() => this.closeOverlay()}>\n            <div className=\"typeahead-overlay-content\">\n              <div onClick={() => this.closeOverlay()} className=\"close-typeahead-overlay cross\"></div>\n              <div id=\"overlaySearchForm\">{this.state.searchBar}</div>\n              {this.getSections(data, queryBlocks)}\n            </div>\n          </OutsideClickTrigger>\n        </div>\n      )\n    } else {\n      clearAllBodyScrollLocks()\n      return \"\"\n    }\n  }\n\n  componentDidUpdate(prevProps) {\n    if (prevProps !== this.props && this.props.data.filteredData !== undefined) {\n      let scrollElem = document.getElementsByClassName(\"typeahead-overlay-content\")[0]\n\n      disableBodyScroll(scrollElem)\n      const { filteredData, displayGroupNames, totalCount, config } = this.props.data\n      this.setState({\n        isSearchActive: true,\n        filteredData: filteredData,\n        displayGroupNames: displayGroupNames,\n        totalCount: totalCount,\n        queryBlocks: config.queryBlocks,\n        searchQuery: this.props.query,\n      })\n    } else if (prevProps !== this.props) {\n      this.setState({ isSearchActive: true, totalCount: 0 })\n      let scrollElem = document.getElementsByClassName(\"typeahead-overlay-content\")[0]\n      disableBodyScroll(scrollElem)\n    }\n  }\n}\n\nclass Section extends Component {\n  constructor(props) {\n    super(props)\n    this.state = {\n      searchQuery: this.props.searchQuery,\n      onFinalizedSearch: this.props.onFinalSearch,\n    }\n  }\n\n  componentDidUpdate(prevProps) {\n    if (prevProps !== this.props) {\n      this.setState({\n        searchQuery: this.props.searchQuery,\n        onFinalizedSearch: this.props.onFinalSearch,\n      })\n    }\n  }\n\n  getProductPriceDom = (product) => {\n    if (product.OnSale) {\n      const listPrice = product.splash?.price?.listPrice?.amount || product.Price\n      const effectivePrice = product.splash?.price?.effectivePrice?.amount || product.SpecialPrice\n      const isClubDiscount = product.splash?.price?.isClubDiscountPriceType\n      const clubPrice = product.PotentialClubPrice > 0 ? product.PotentialClubPrice : product.SpecialPrice\n      if (effectivePrice < listPrice && !isClubDiscount) {\n        return (\n          <React.Fragment>\n            <div id=\"onSalePrice\" className=\"product-price discount\">\n              {formatCurrency(effectivePrice)} kr\n            </div>\n            <div id=\"onSalePriceOriginal\" className=\"product-price-original\">\n              {formatCurrency(listPrice)} kr\n            </div>\n          </React.Fragment>\n        )\n      }\n      // show the club price\n      const clubPriceTeaser = userManager.isClubNeyeLoggedIn() ? \"\" : \" club-teaser\"\n      return (\n        <React.Fragment>\n          <div id=\"onSalePrice\" className=\"product-price discount\" style={{ color: \"#5BBAB7\" }}>\n            {formatCurrency(clubPrice)} kr\n          </div>\n          <div id=\"onSalePriceOriginal\" className={\"product-price-original\" + clubPriceTeaser}>\n            {formatCurrency(listPrice)} kr\n          </div>\n        </React.Fragment>\n      )\n    } else {\n      return <div className=\"product-price\">{formatCurrency(product.Price)} kr</div>\n    }\n  }\n\n  getProductImageDom = (product) => {\n    let firstImage\n    let secondImage\n\n    if (product.Images && product.Images.length > 0) {\n      firstImage = product.Images[0]\n      secondImage = product.Images[1]\n    }\n\n    if (!secondImage && firstImage) secondImage = firstImage\n    return (\n      <div className=\"product-image\">\n        <picture className=\"first-image\">\n          <source\n            media=\"(max-width: 420px)\"\n            width=\"200\"\n            height=\"200\"\n            sizes=\"(max-width: 420px) 40vw\"\n            type=\"image/webp\"\n            data-srcset={firstImage + \"?width=200&format=webp&height=200&bgcolor=fff 200w\"}\n          ></source>\n\n          <source\n            media=\"(max-width: 420px)\"\n            width=\"200\"\n            height=\"200\"\n            sizes=\"(max-width: 420px) 40vw\"\n            type=\"image/jpg\"\n            data-srcset={firstImage + \"?width=200&height=200&bgcolor=fff 200w\"}\n          ></source>\n          <source\n            media=\"(min-wiby ldth: 421px)\"\n            width=\"300\"\n            height=\"300\"\n            sizes=\"(max-width: 766px) 50vw, (max-width: 768px) 33vw, (min-width: 988px) 20vw\"\n            type=\"image/webp\"\n            data-srcset={\n              firstImage + \"?width=300&format=webp&height=300&bgcolor=fff 430w,\" + firstImage + \"?width=800&format=webp&height=800&bgcolor=fff 800w\"\n            }\n          ></source>\n\n          <source\n            media=\"(min-width: 421px)\"\n            width=\"300\"\n            height=\"300\"\n            sizes=\"(max-width: 766px) 50vw, (max-width: 768px) 33vw, (min-width: 988px) 20vw\"\n            type=\"image/jpg\"\n            data-srcset={firstImage + \"?width=300&height=300&bgcolor=fff 430w,\" + firstImage + \"?width=800&height=800&bgcolor=fff 800w\"}\n          ></source>\n\n          <img\n            className=\"product-image\"\n            width=\"300\"\n            height=\"300\"\n            src={firstImage + \"?=fff\"}\n            alt={\"image of \" + product.Name}\n            title={\"image of \" + product.Name}\n          ></img>\n        </picture>\n        <picture className=\"alt-image\">\n          <source\n            media=\"(max-width: 420px)\"\n            width=\"200\"\n            height=\"200\"\n            sizes=\"(max-width: 420px) 40vw\"\n            type=\"image/webp\"\n            data-srcset={secondImage + \"?width=200&format=webp&height=200&bgcolor=fff 200w\"}\n          ></source>\n\n          <source\n            media=\"(max-width: 420px)\"\n            width=\"200\"\n            height=\"200\"\n            sizes=\"(max-width: 420px) 40vw\"\n            type=\"image/jpg\"\n            data-srcset={secondImage + \"?width=200&height=200&bgcolor=fff 200w\"}\n          ></source>\n          <source\n            media=\"(min-width: 421px)\"\n            width=\"300\"\n            height=\"300\"\n            sizes=\"(max-width: 766px) 50vw, (max-width: 768px) 33vw, (min-width: 988px) 20vw\"\n            type=\"image/webp\"\n            data-srcset={\n              secondImage + \"?width=300&format=webp&height=300&bgcolor=fff 430w,\" + secondImage + \"?width=800&format=webp&height=800&bgcolor=fff 800w\"\n            }\n          ></source>\n\n          <source\n            media=\"(min-width: 421px)\"\n            width=\"300\"\n            height=\"300\"\n            sizes=\"(max-width: 766px) 50vw, (max-width: 768px) 33vw, (min-width: 988px) 20vw\"\n            type=\"image/jpg\"\n            data-srcset={secondImage + \"?width=300&height=300&bgcolor=fff 430w,\" + secondImage + \"?width=800&height=800&bgcolor=fff 800w\"}\n          ></source>\n\n          <img\n            className=\"alt-image\"\n            loading=\"lazy\"\n            width=\"300\"\n            height=\"300\"\n            src={secondImage + \"?width=300&height=300&bgcolor=fff\"}\n            alt={\"second image of \" + product.Name}\n            title={\"second image of \" + product.Name}\n          ></img>\n        </picture>\n      </div>\n    )\n  }\n\n  renderResults = (sectionData, queryBlocks) => {\n    let sectionClasses = !isMobile\n      ? sectionData.length > 1 && sectionData.every((s) => s.docs !== undefined && s.docs.length > 0)\n        ? \"contentsection halfcolumn\"\n        : \"contentsection\"\n      : \"contentsection\"\n    let brandCount, categoriesCount\n    const dom = sectionData.map((section) => {\n      const docs = section.docs\n      var brandSection = sectionData.filter((section) => section.displayGroupName === \"brands\")[0]\n      var categoriesSection = sectionData.filter((section) => section.displayGroupName === \"categories\")[0]\n      if (docs !== undefined && docs.length > 0) {\n        var headerLabel = <h4>{queryBlocks[section.displayGroupName]?.headerLabel}</h4>\n        switch (section.displayGroupName) {\n          case \"brands\":\n            brandCount = (brandSection && brandSection.count) || 0\n            categoriesCount = (categoriesSection && categoriesSection.count) || 0\n\n            if (!isMobile || (isMobile && brandCount > categoriesCount)) {\n              return (\n                <div className={sectionClasses}>\n                  {headerLabel}\n                  {docs.map((item) => {\n                    return (\n                      <a key={item.id} href={item.PageUrl}>\n                        {item.Title}\n                      </a>\n                    )\n                  })}\n                </div>\n              )\n            } else {\n              return \"\"\n            }\n          case \"categories\":\n            brandCount = (brandSection && brandSection.count) || 0\n            categoriesCount = (categoriesSection && categoriesSection.count) || 0\n\n            if (!isMobile || (isMobile && categoriesCount >= brandCount)) {\n              return (\n                <div className={sectionClasses}>\n                  {headerLabel}\n                  {docs.map((item) => {\n                    let catPath = item.CategoryPath.join(\" > \")\n                    catPath += ` (${item.ProductCount})`\n                    return (\n                      <a key={item.id} href={item.PageUrl}>\n                        {catPath}\n                      </a>\n                    )\n                  })}\n                </div>\n              )\n            } else {\n              return \"\"\n            }\n          case \"blogpages\":\n            return (\n              <div className={sectionClasses}>\n                {headerLabel}\n                {docs.map((item) => {\n                  return (\n                    <a key={item.id} href={item.PageUrl}>\n                      {item.Title}\n                    </a>\n                  )\n                })}\n              </div>\n            )\n          case \"products\":\n            return (\n              <div className={sectionClasses}>\n                {headerLabel}\n                <div className=\"search-results row align-items-start product-grid\">\n                  {docs.map((item) => {\n                    const splashHtml = item.splashHtml\n                    return (\n                      <div key={item.id} className=\"item product-tile col-12 col-sm-4\">\n                        {splashHtml && <div className=\"splash-html\" dangerouslySetInnerHTML={{ __html: splashHtml }}></div>}\n                        <a href={item.url}>{this.getProductImageDom(item)}</a>\n                        <div className=\"product-text\">\n                          <div className=\"brand\">{item.Brand}</div>\n                          <div className=\"description\">{item.Name}</div>\n                          {this.getProductPriceDom(item)}\n                        </div>\n                      </div>\n                    )\n                  })}\n                </div>\n                <div className=\"show-all-button col-12\">\n                  <button\n                    onClick={() => this.state.onFinalizedSearch(this.state.searchQuery)}\n                    id=\"searchShowAllButton\"\n                    className=\"grey col-lg-4 push-lg-4\"\n                  >\n                    Vis alle (<span id=\"searchResultCount\">{section.count}</span>)\n                  </button>\n                </div>\n              </div>\n            )\n          default:\n            return \"\"\n        }\n      }\n      return \"\"\n    })\n    return dom\n  }\n\n  render() {\n    const { data, sectionGroups, className, queryBlocks } = this.props\n    const sectionData = sectionGroups.map((group) => data[group])\n\n    // render no results\n    if (sectionData.every((s) => s.docs.length === 0)) {\n      return (\n        <div className={className}>\n          <div className={\"item\"}>\n            <div className={\"text\"}></div>\n          </div>\n        </div>\n      )\n    }\n\n    return this.renderResults(sectionData, queryBlocks)\n  }\n}\n","import axios from \"axios\"\n\naxios.defaults.headers.common[\"Content-Type\"] = \"application/json\"\n//axios.defaults.headers.common['Access-Control-Allow-Origin'] = '*';\n\nconst makeRequestCreator = () => {\n  let call\n  return (url) => {\n    if (call) {\n      call.cancel(\"Only one request allowed at a time.\")\n    }\n    call = axios.CancelToken.source()\n    return axios.get(url, {\n      cancelToken: call.token,\n    })\n  }\n}\n\nconst getRequest = makeRequestCreator()\n\nconst get = async (url) => {\n  try {\n    return await getRequest(url)\n  } catch (err) {\n    if (axios.isCancel(err)) {\n      console.error(`Cancelling previous request: ${err.message}`)\n      return err\n    }\n  }\n}\n\nexport default {\n  get: get,\n}\n","import http from \"./httpService\"\nimport * as URL from \"../../../constants/urls\"\n\nconst performSearch = (searchTerm) =>\n  new Promise((resolve) => {\n    if (!searchTerm || searchTerm === \"*\") {\n      searchTerm = \"\"\n    }\n    const result = http.get(URL.SITE_PREFIX + URL.TYPEAHEAD + searchTerm)\n    resolve(result)\n  })\n\nconst redirectToSearchpage = (searchTerm) => {\n  if (searchTerm === \"*\") {\n    searchTerm = \"\"\n  }\n  const url = URL.SEARCHPAGE + searchTerm + \"/\"\n  window.location.href = url\n}\n\nexport default {\n  performSearch: performSearch,\n  redirectToSearchpage: redirectToSearchpage,\n}\n","export const TYPEAHEAD = \"/api/TypeaheadSearch/TypeaheadSearch?&query=\"\nexport const SEARCHPAGE = \"/search/\"\nexport const SITE_PREFIX = \"\"\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport SearchBar from \"./component/searchBar\"\nimport OpenOverlayButton from \"./component/openOverlayButton\"\nimport TypeaheadOverlay from \"./component/typeaheadOverlay\"\nimport searchService from \"./services/searchService\"\n\nexport default class TypeaheadModule {\n  constructor(elem) {\n    this.elem = elem\n    this.headerSearchBar = document.querySelector(\".js-typeahead-module-header\")\n    this.topmenuSearchBar = document.querySelector(\".js-typeahead-module-topmenu\")\n    this.mobileSearchBar = document.querySelector(\".js-typeahead-module-mobile\")\n    this.config = elem.dataset\n    this.typeaheadConfig = JSON.parse(this.config.typeaheadConfig)\n    this.timer = undefined\n    this.searchBar = (\n      <SearchBar autoFocus={true} onKeyUp={this.handleKeyUp} handleInput={(e) => this.handleInput(e)} placeholderText={this.config.placeholderText} />\n    )\n    this.init()\n    return this\n  }\n\n  createPageData(data) {\n    const displayGroupNames = {}\n    var count = 0\n    if (data) {\n      for (var propName in data) {\n        displayGroupNames[propName] = data[propName].displayGroupName\n        if (data[propName].count === 0) {\n          data[propName].docs = {}\n        } else {\n          count += data[propName].count\n        }\n      }\n\n      return {\n        filteredData: data,\n        displayGroupNames: displayGroupNames,\n        totalCount: count,\n        config: this.typeaheadConfig,\n      }\n    }\n    return this.createZeroState()\n  }\n\n  createZeroState() {\n    return {\n      filteredData: undefined,\n      displayGroupNames: undefined,\n      totalCount: 0,\n      config: undefined,\n    }\n  }\n\n  handleResults(results, searchTerm) {\n    const data = this.createPageData(results)\n    ReactDOM.render(<TypeaheadOverlay data={data} query={searchTerm} />, this.elem)\n  }\n\n  openEmptyOverlay() {\n    this.handleResults()\n  }\n\n  handleInput(e) {\n    let searchTerm = e.value\n\n    if (this.timer) {\n      window.clearTimeout(this.timer)\n    }\n\n    this.timer = setTimeout(\n      () => searchService.performSearch(searchTerm, this.config.queryConfig).then((results) => this.handleResults(results?.data, searchTerm)),\n      1000,\n    )\n  }\n\n  finalizeSearch(searchTerm) {\n    searchService.redirectToSearchpage(searchTerm)\n  }\n\n  handleKeyUp(e) {\n    if (e.key === \"Enter\") {\n      searchService.redirectToSearchpage(e.currentTarget.value)\n    }\n  }\n\n  init() {\n    ReactDOM.unmountComponentAtNode(this.elem)\n    ReactDOM.unmountComponentAtNode(this.headerSearchBar)\n    ReactDOM.unmountComponentAtNode(this.topmenuSearchBar)\n    ReactDOM.unmountComponentAtNode(this.mobileSearchBar)\n    ReactDOM.render(<SearchBar onFocus={(e) => this.openEmptyOverlay(e)} placeholderText={this.config.placeholderText} />, this.headerSearchBar)\n    ReactDOM.render(<OpenOverlayButton onClick={(e) => this.openEmptyOverlay(e)} type={\"topmenu\"} />, this.topmenuSearchBar)\n    ReactDOM.render(<OpenOverlayButton onClick={(e) => this.openEmptyOverlay(e)} type={\"mobile\"} />, this.mobileSearchBar)\n    ReactDOM.render(\n      <TypeaheadOverlay data={this.createZeroState()} searchBar={this.searchBar} onFinalSearch={(searchTerm) => this.finalizeSearch(searchTerm)} />,\n      this.elem,\n    )\n  }\n}\n"],"names":["OutsideClickTrigger","_Component","props","_this","_classCallCheck","_callSuper","setWrapperRef","bind","handleClickOutside","_inherits","_createClass","key","value","document","addEventListener","this","removeEventListener","node","wrapperRef","event","contains","target","onOutsideClick","_jsx","className","ref","children","Component","val","showFraction","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","format","_props$placeholderTex","_jsxs","React","autoComplete","autoFocus","id","type","placeholder","placeholderText","onFocus","e","currentTarget","onInput","handleInput","onKeyUp","OpenOverlayButton","_this2","onClick","hasPassiveEvents","window","passiveTestOptions","passive","isIosDevice","navigator","platform","test","maxTouchPoints","locks","documentListenerAdded","initialClientY","previousBodyOverflowSetting","previousBodyPosition","previousBodyPaddingRight","allowTouchMove","el","some","lock","options","preventDefault","rawEvent","touches","length","restoreOverflowSetting","undefined","body","style","paddingRight","overflow","restorePositionSetting","y","parseInt","top","x","left","position","scrollTo","disableBodyScroll","targetElement","concat","arr","Array","isArray","i","arr2","from","_toConsumableArray","requestAnimationFrame","_window","scrollY","scrollX","innerHeight","setTimeout","bottomBarHeight","_reserveScrollBarGap","reserveScrollBarGap","scrollBarGap","innerWidth","documentElement","clientWidth","computedBodyPaddingRight","getComputedStyle","getPropertyValue","setOverflowHidden","ontouchstart","targetTouches","clientY","ontouchmove","scrollTop","scrollHeight","clientHeight","isTargetElementTotallyScrolled","stopPropagation","handleScroll","console","error","getCookieValue","cookieName","_step","name","cookieArray","decodeURIComponent","cookie","split","_iterator","_createForOfIteratorHelper","s","n","done","trimmedCookie","trim","startsWith","substring","err","f","hasRole","roleName","rolesCookie","map","role","includes","isClubNeyeLoggedIn","isAuthenticated","isClerk","isEmployee","canSearchCustomer","isClubNeyeAdmin","isPickupInStoreAdmin","TypeaheadOverlay","_this$props$query","_config$queryBlocks","_this$props$data","data","filteredData","displayGroupNames","totalCount","config","state","searchQuery","query","queryBlocks","isSearchActive","searchBar","onFinalizedSearch","onFinalSearch","overlayElem","elem","setState","Section","sectionGroups","sectionName","closeOverlay","getSections","forEach","prevProps","scrollElem","getElementsByClassName","_this$props$data2","_Component2","_this3","getProductPriceDom","product","OnSale","_product$splash","_product$splash$price","_product$splash$price2","_product$splash2","_product$splash2$pric","_product$splash2$pric2","_product$splash3","_product$splash3$pric","listPrice","splash","price","amount","Price","effectivePrice","SpecialPrice","isClubDiscount","isClubDiscountPriceType","clubPrice","PotentialClubPrice","formatCurrency","clubPriceTeaser","userManager","color","getProductImageDom","firstImage","secondImage","Images","media","width","height","sizes","src","alt","Name","title","loading","renderResults","sectionData","brandCount","categoriesCount","sectionClasses","isMobile","every","docs","section","brandSection","filter","displayGroupName","categoriesSection","_queryBlocks$section$","headerLabel","count","item","href","PageUrl","Title","catPath","CategoryPath","join","ProductCount","splashHtml","dangerouslySetInnerHTML","__html","url","Brand","_this$props","group","axios","headers","common","getRequest","call","cancel","source","cancelToken","token","makeRequestCreator","get","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","abrupt","sent","t0","message","stop","_x","apply","arguments","searchTerm","Promise","resolve","http","location","TypeaheadModule","headerSearchBar","querySelector","topmenuSearchBar","mobileSearchBar","dataset","typeaheadConfig","JSON","parse","timer","SearchBar","handleKeyUp","init","propName","createZeroState","results","createPageData","ReactDOM","handleResults","clearTimeout","searchService","queryConfig","then","openEmptyOverlay","finalizeSearch"],"sourceRoot":""}