{"version":3,"file":"static/js/1498.fa2b5fe6.chunk.js","mappings":"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","sources":["helpers/accessibilityHelper.js","hooks/useKeyboardNavigation.jsx","shared/merchant/list-page/locations.jsx","shared/merchant/list-page/video-card.jsx","shared/merchant/list-page/merchant-list.jsx","shared/merchant/list-page/merchant-types.js","shared/merchant/list-page/categories.jsx","../node_modules/react-error-boundary/dist/react-error-boundary.esm.js","helpers/contentAreaRender.js","shared/merchant/list-page/merchant-list-page.jsx","shared/merchant/list-page/merchant-list-module.js","shared/teaser-card/teaser-message-card.jsx"],"sourcesContent":["export function accessibilityEnterCheck(e, cb) {\n  if (e.key === \" \" || e.key === \"32\" || e.key === \"Enter\" || e.key === \"13\" || e.type === \"click\" || e.type === \"change\") {\n    cb()\n  }\n}\n","import { useState, useEffect } from \"react\"\n\nfunction useKeyboardNavigation() {\n  const [isKeyboardNavigation, setIsKeyboardNavigation] = useState(false)\n\n  useEffect(() => {\n    const handleKeyDown = () => setIsKeyboardNavigation(true)\n    const handleMouseDown = () => setIsKeyboardNavigation(false)\n\n    window.addEventListener(\"keydown\", handleKeyDown)\n    window.addEventListener(\"mousedown\", handleMouseDown)\n\n    // Cleanup event listeners on unmount\n    return () => {\n      window.removeEventListener(\"keydown\", handleKeyDown)\n      window.removeEventListener(\"mousedown\", handleMouseDown)\n    }\n  }, [])\n\n  return isKeyboardNavigation\n}\n\nexport default useKeyboardNavigation\n","import React, { useState, useEffect } from \"react\"\nimport Svg from \"../../_svgs/svg\"\n\nexport default function Locations({\n  locations,\n  selectLocations,\n  selectedLocations,\n  clearFilteringLabel,\n  filters,\n  clearFilters,\n  merchants,\n  isKeyboardNavigating,\n  locationsOpen,\n  dropDownRef,\n  handleBlur,\n}) {\n  const getClearedLocations = () => {\n    return locations.reduce(\n      (acc, location) => ({\n        ...acc,\n        [location]: false,\n      }),\n      {},\n    )\n  }\n\n  const [disableInput, setDisableInput] = useState(false)\n  const [beforeSecurityChecked, setBeforeSecurityChecked] = useState(false)\n  const [afterSecurityChecked, setAfterSecurityChecked] = useState(false)\n  const [locationsChecked, setLocationsChecked] = useState(getClearedLocations())\n\n  useEffect(() => {\n    if (selectedLocations !== \"\") {\n      if (selectedLocations === \"before-security\") {\n        setBeforeSecurityChecked(true)\n        setDisableInput(true)\n      } else if (selectedLocations === \"after-security\") {\n        setAfterSecurityChecked(true)\n        setDisableInput(true)\n      } else {\n        const locationsSelected = selectedLocations.split(\",\")\n        const checkedLocations = locationsSelected.reduce((obj, item) => {\n          obj[item] = true\n          return obj\n        }, {})\n        setLocationsChecked(checkedLocations)\n      }\n    }\n  }, [selectedLocations])\n\n  useEffect(() => {\n    if (beforeSecurityChecked || afterSecurityChecked) {\n      const resetLocations = Object.keys(locationsChecked).reduce(\n        (acc, key) => ({\n          ...acc,\n          [key]: false,\n        }),\n        {},\n      )\n      setLocationsChecked(resetLocations)\n    }\n  }, [beforeSecurityChecked, afterSecurityChecked])\n\n  useEffect(() => {\n    setDisableInput(beforeSecurityChecked || afterSecurityChecked)\n  }, [beforeSecurityChecked, afterSecurityChecked])\n\n  useEffect(() => {\n    if (beforeSecurityChecked) {\n      selectLocations(\"before-security\")\n    } else if (afterSecurityChecked) {\n      selectLocations(\"after-security\")\n    } else {\n      const checkedLocations = Object.entries(locationsChecked)\n        .filter(([key, value]) => value)\n        .map(([key]) => key)\n      selectLocations(checkedLocations.length > 0 ? checkedLocations.join(\",\") : \"\")\n    }\n  }, [locationsChecked, beforeSecurityChecked, afterSecurityChecked])\n\n  const handleBeforeSecurityChange = (e) => {\n    setBeforeSecurityChecked(e.target.checked)\n    if (e.target.checked) {\n      setAfterSecurityChecked(false)\n    }\n  }\n\n  const handleAfterSecurityChange = (e) => {\n    setAfterSecurityChecked(e.target.checked)\n    if (e.target.checked) {\n      setBeforeSecurityChecked(false)\n    }\n  }\n\n  const handleLocationChange = (location, checked) => {\n    setLocationsChecked((prev) => ({\n      ...prev,\n      [location]: checked,\n    }))\n  }\n\n  const resetFilters = () => {\n    setDisableInput(false)\n    setBeforeSecurityChecked(false)\n    setAfterSecurityChecked(false)\n    setLocationsChecked(getClearedLocations())\n    clearFilters()\n  }\n\n  return (\n    <div className={`locations${locationsOpen ? \" open\" : \" closed\"}`}>\n      <div className={`options${isKeyboardNavigating ? \" focus-visible\" : \"\"}`} role=\"listbox\" ref={dropDownRef} onBlur={handleBlur}>\n        {locations &&\n          locations.map((location, index) => {\n            const inputId = index === 0 ? \"before-security-input\" : index === 1 ? \"after-security-input\" : `location-${location}`\n            return (\n              <span key={location} className={`option${filters.length > 0 && index == 0 ? \" show-clear-filters\" : \"\"}`}>\n                <input\n                  type=\"checkbox\"\n                  tabIndex={locationsOpen ? 0 : -1}\n                  id={inputId}\n                  aria-label={inputId}\n                  name={location}\n                  value={location}\n                  checked={index === 0 ? beforeSecurityChecked : index === 1 ? afterSecurityChecked : locationsChecked[location]}\n                  aria-selected={index === 0 ? beforeSecurityChecked : index === 1 ? afterSecurityChecked : locationsChecked[location] || false}\n                  role=\"option\"\n                  onChange={\n                    index === 0\n                      ? handleBeforeSecurityChange\n                      : index === 1\n                        ? handleAfterSecurityChange\n                        : (e) => handleLocationChange(location, e.target.checked)\n                  }\n                  disabled={\n                    index == 0 && !merchants.some((m) => m.isAirSide == false)\n                      ? true\n                      : index < 2\n                        ? false\n                        : !merchants.some((m) => m.shopLocation === location) || disableInput\n                  }\n                />\n                <label htmlFor={inputId}>{location}</label>\n              </span>\n            )\n          })}\n        {filters.length > 0 && (\n          <button className=\"remove-filters\" onClick={resetFilters} tabIndex={locationsOpen ? 0 : -1}>\n            <p>{clearFilteringLabel}</p>\n            <span>\n              <Svg iconName={\"clear-button\"} />\n            </span>\n          </button>\n        )}\n      </div>\n    </div>\n  )\n}\n","import React from \"react\"\n\nexport default function VideoCard({ url }) {\n  if (!url) return \"\"\n  return (\n    <div className=\"store-item video-shop-list__item\">\n      <video className=\"video-card\" autoPlay loop muted controls={false} playsInline preload={\"auto\"} loading=\"eager\" fetchPriority=\"high\">\n        <source src={url} />\n      </video>\n    </div>\n  )\n}\n","import React, { Fragment, useState, useRef } from \"react\"\nimport TeaserMessageCard from \"../../teaser-card/teaser-message-card\"\nimport Locations from \"./locations\"\nimport VideoCard from \"./video-card\"\nimport MerchantItem from \"../merchant-item/merchant-item\"\nimport OutsideClickTrigger from \"../../../booking/components/common/OutsideClickTrigger\"\n\nexport default function MerchantList({\n  messageCards,\n  videoCards,\n  amountShown,\n  page,\n  merchants,\n  numFound,\n  noneFoundHeader,\n  noneFoundText,\n  loadMore,\n  loadMoreLabel,\n  activeTabLabel,\n  locations,\n  beforeSecurityLabel,\n  afterSecurityLabel,\n  selectLocations,\n  selectedLocations,\n  clearFilteringLabel,\n  selectFilteringLabel,\n  filters,\n  clearFilters,\n  currentAllMerchants,\n  hideVideoCards,\n  locationLabel,\n  isKeyboardNavigating,\n  shopListRef,\n  hideLocations,\n}) {\n  const [locationsOpen, setLocationsOpen] = useState(false)\n\n  const [areLocationsFocused, setAreLocationsFocused] = useState(false)\n\n  const handleLocationFocus = () => {\n    setAreLocationsFocused(isKeyboardNavigating && true)\n  }\n\n  const handleLocationBlur = () => {\n    setAreLocationsFocused(false)\n  }\n\n  const getSpecialCardAtIndexPosition = (cards, index) => {\n    if (cards && cards.length > 0) {\n      return cards.filter((el) => el.position === index + 1)\n    }\n    return undefined\n  }\n\n  const dropDownRef = useRef(null)\n\n  const handlePointerDown = (event) => {\n    if (dropDownRef.current?.contains(event.target)) {\n      // Prevent closing if clicking inside the dropdown\n      return\n    }\n    setLocationsOpen((prev) => !prev)\n  }\n\n  const handleKeyDown = (e) => {\n    if (e.key === \"Enter\" || e.key === \" \") {\n      e.preventDefault() // Prevents scrolling when space is pressed\n      handlePointerDown(e) // Handle keyboard events (Enter or Space key)\n    }\n  }\n\n  const handleBlur = (event) => {\n    if (dropDownRef.current && !dropDownRef.current.contains(event.relatedTarget) && !event.currentTarget.contains(event.relatedTarget)) {\n      setLocationsOpen(false)\n    }\n  }\n\n  let displayAmount = amountShown * (page + 1)\n  let cards = []\n\n  if (merchants && merchants.length > 0) {\n    for (let i = 0; i < displayAmount; i++) {\n      const card = merchants[i]\n      const messageCardsAtIndex = getSpecialCardAtIndexPosition(messageCards, i)\n      if (messageCards?.length > 0) {\n        cards.push(\n          messageCardsAtIndex.map((messageCard, index) => {\n            displayAmount-- // Adjusting to ensure the total count matches amountShown after adding message cards.\n            return <TeaserMessageCard key={`messageCard${i}_${index}`} {...messageCard} />\n          }),\n        )\n      }\n      if (!hideVideoCards) {\n        const videoCardsAtIndex = getSpecialCardAtIndexPosition(videoCards, i)\n        if (videoCards?.length > 0) {\n          cards.push(\n            videoCardsAtIndex.map((videoCard, index) => {\n              displayAmount -= 2 // Adjust by 2 because video card fills 2 tiles\n              return <VideoCard key={`videoCard${i}_${index}`} {...videoCard} />\n            }),\n          )\n        }\n      }\n      if (card) {\n        cards.push(\n          <MerchantItem\n            key={`${card.name}${i}`}\n            cssClass={\"store-item\"}\n            link={card.merchantUrl}\n            splashLabel={card.ribbonText}\n            ribbonColor={card.ribbonColor}\n            isRibbonValid={card.isRibbonValid}\n            image={card.teaserImage}\n            name={card.name}\n            shopLocation={card.shopLocation}\n            opening={card.opening}\n            alwaysOpen={card.alwaysOpen}\n            alwaysOpenLabel={card.alwaysOpenLabel}\n          />,\n        )\n      }\n      if (i === numFound - 1) {\n        break\n      }\n    }\n  }\n\n  return (\n    <React.Fragment>\n      <div className=\"shop-list\">\n        <div className=\"w--wider\">\n          {numFound == 0 ? (\n            <div id=\"search-results\" aria-live=\"polite\" role=\"status\" className=\"none-found-container\">\n              <svg className={`svg-icon svg-icon--Store none-found-svg`}>\n                <use xmlnsXlink=\"http://www.w3.org/1999/xlink\" xlinkHref={`/dist/svg/symbols.svg#svg-Store`}>\n                  &nbsp;\n                </use>\n              </svg>\n              <h2 className=\"none-found-header\">{noneFoundHeader || \"Desværre\"}</h2>\n              <p className=\"none-found-text\">{noneFoundText || \"Din søgning gav ingen resultater\"}</p>\n            </div>\n          ) : (\n            <Fragment>\n              <div className=\"rich-text shop-list__results\">\n                <p id=\"search-results\" aria-live=\"polite\" role=\"status\" className=\"result-text\">{`${numFound || 0} ${activeTabLabel}`}</p>\n                {!hideLocations ? (\n                  <OutsideClickTrigger\n                    onOutsideClick={() => setLocationsOpen(false)}\n                    modifier={`placering${areLocationsFocused && isKeyboardNavigating ? \" focus-visible\" : \"\"}`}\n                  >\n                    <>\n                      <button\n                        onPointerDown={handlePointerDown}\n                        onKeyDown={(e) => handleKeyDown(e)}\n                        onFocus={handleLocationFocus}\n                        onBlur={handleLocationBlur}\n                        className=\"locations-toggler\"\n                        aria-expanded={locationsOpen}\n                      >\n                        {locationLabel}\n                        <svg className={`svg-icon svg-icon--arrowdownangle${locationsOpen ? \" open\" : \"\"}`}>\n                          <use xmlnsXlink=\"http://www.w3.org/1999/xlink\" xlinkHref=\"/dist/svg/symbols.svg#svg-arrowdownangle\">\n                            &nbsp;\n                          </use>\n                        </svg>\n                      </button>\n                      <Locations\n                        dropDownRef={dropDownRef}\n                        handleBlur={handleBlur}\n                        locations={locations}\n                        beforeSecurityLabel={beforeSecurityLabel}\n                        afterSecurityLabel={afterSecurityLabel}\n                        selectLocations={selectLocations}\n                        selectedLocations={selectedLocations}\n                        clearFilteringLabel={clearFilteringLabel}\n                        selectFilteringLabel={selectFilteringLabel}\n                        filters={filters}\n                        clearFilters={clearFilters}\n                        merchants={currentAllMerchants}\n                        locationLabel={locationLabel}\n                        isKeyboardNavigating={isKeyboardNavigating}\n                        locationsOpen={locationsOpen}\n                      />\n                    </>\n                  </OutsideClickTrigger>\n                ) : (\n                  \"\"\n                )}\n              </div>\n              <div ref={shopListRef} className=\"shop-list__list grid\">\n                {cards}\n              </div>\n            </Fragment>\n          )}\n        </div>\n      </div>\n      {displayAmount < numFound && (\n        <section className=\"deck deck--white deck--margin-bottom shop-list-progress\">\n          <div className=\"w--wider\">\n            <div className=\"show-more-button-container\">\n              <button className=\"show-more-button\" onClick={loadMore}>\n                {loadMoreLabel}\n              </button>\n            </div>\n          </div>\n        </section>\n      )}\n    </React.Fragment>\n  )\n}\n","export const TAX_FREE = \"taxfree\"\nexport const SHOPS = \"shops\"\nexport const DINERS = \"diners\"\nexport const BOTH = \"both\"\n","import React from \"react\"\nimport Svg from \"../../_svgs/svg\"\nimport { accessibilityEnterCheck } from \"../../../helpers/accessibilityHelper\"\n\nexport default function Categories({ categories, toggleCategory, merchants, numFound, selectedCategories, searchQuery, windowWidth, merchantType }) {\n  if (!categories) return \"\"\n  let mobileShowCategoryCheck = windowWidth >= 950 || searchQuery.length === 0\n\n  return (\n    <div className=\"checkmarktags\">\n      {categories.length > 0 &&\n        mobileShowCategoryCheck &&\n        categories.map((category, index) => {\n          let disable = merchants.some((m) => m.categories?.includes(category)) ? false : true\n          // disable = numFound == 0 && !selectedCategories.includes(category)\n          return (\n            <span key={`${merchantType}_${category}`}>\n              <input\n                id={category}\n                disabled={disable}\n                checked={selectedCategories.includes(category)}\n                type=\"checkbox\"\n                onChange={() => toggleCategory(category)}\n              />\n              <label\n                htmlFor={category}\n                tabIndex={disable ? -1 : 0}\n                onKeyDown={(e) => accessibilityEnterCheck(e, () => toggleCategory(category))}\n                aria-describedby=\"search-results\"\n              >\n                <Svg iconName={\"tagcheck\"} />\n                {category}\n              </label>\n            </span>\n          )\n        })}\n    </div>\n  )\n}\n","'use client';\nimport { createContext, Component, createElement, isValidElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n  didCatch: false,\n  error: null\n};\nclass ErrorBoundary extends Component {\n  constructor(props) {\n    super(props);\n    this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n    this.state = initialState;\n  }\n  static getDerivedStateFromError(error) {\n    return {\n      didCatch: true,\n      error\n    };\n  }\n  resetErrorBoundary() {\n    const {\n      error\n    } = this.state;\n    if (error !== null) {\n      var _this$props$onReset, _this$props;\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n        args,\n        reason: \"imperative-api\"\n      });\n      this.setState(initialState);\n    }\n  }\n  componentDidCatch(error, info) {\n    var _this$props$onError, _this$props2;\n    (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n  }\n  componentDidUpdate(prevProps, prevState) {\n    const {\n      didCatch\n    } = this.state;\n    const {\n      resetKeys\n    } = this.props;\n\n    // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n    // we'd end up resetting the error boundary immediately.\n    // This would likely trigger a second error to be thrown.\n    // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n    if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n      var _this$props$onReset2, _this$props3;\n      (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n        next: resetKeys,\n        prev: prevProps.resetKeys,\n        reason: \"keys\"\n      });\n      this.setState(initialState);\n    }\n  }\n  render() {\n    const {\n      children,\n      fallbackRender,\n      FallbackComponent,\n      fallback\n    } = this.props;\n    const {\n      didCatch,\n      error\n    } = this.state;\n    let childToRender = children;\n    if (didCatch) {\n      const props = {\n        error,\n        resetErrorBoundary: this.resetErrorBoundary\n      };\n      if (typeof fallbackRender === \"function\") {\n        childToRender = fallbackRender(props);\n      } else if (FallbackComponent) {\n        childToRender = createElement(FallbackComponent, props);\n      } else if (fallback === null || isValidElement(fallback)) {\n        childToRender = fallback;\n      } else {\n        throw error;\n      }\n    }\n    return createElement(ErrorBoundaryContext.Provider, {\n      value: {\n        didCatch,\n        error,\n        resetErrorBoundary: this.resetErrorBoundary\n      }\n    }, childToRender);\n  }\n}\nfunction hasArrayChanged() {\n  let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n  if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n    throw new Error(\"ErrorBoundaryContext not found\");\n  }\n}\n\nfunction useErrorBoundary() {\n  const context = useContext(ErrorBoundaryContext);\n  assertErrorBoundaryContext(context);\n  const [state, setState] = useState({\n    error: null,\n    hasError: false\n  });\n  const memoized = useMemo(() => ({\n    resetBoundary: () => {\n      context.resetErrorBoundary();\n      setState({\n        error: null,\n        hasError: false\n      });\n    },\n    showBoundary: error => setState({\n      error,\n      hasError: true\n    })\n  }), [context.resetErrorBoundary]);\n  if (state.hasError) {\n    throw state.error;\n  }\n  return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n  const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n    ...props,\n    ref\n  })));\n\n  // Format for display in DevTools\n  const name = component.displayName || component.name || \"Unknown\";\n  Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n  return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n","import React, { lazy, Suspense } from \"react\"\nimport { ErrorBoundary } from \"react-error-boundary\"\nimport { Modules } from \"./domFactory\"\n\nconst RenderComponents = ({ contentArea }) => {\n  return contentArea.map((block, index) => {\n    const module = Modules.find((m) => m.blockName === block.__type__)\n    if (module && module.importComponent) {\n      const LazyComponent = lazy(module.importComponent)\n\n      return (\n        <ErrorBoundary key={index} FallbackComponent={() => null}>\n          <Suspense fallback={\"\"}>\n            <LazyComponent {...block} />\n          </Suspense>\n        </ErrorBoundary>\n      )\n    }\n\n    return null\n  })\n}\n\nconst areEqual = (prevProps, nextProps) => {\n  return prevProps.contentArea === nextProps.contentArea\n}\n\nexport const MemoizedRenderComponents = React.memo(RenderComponents, areEqual)\n","import React, { useRef, useState, useEffect } from \"react\"\nimport MerchantList from \"./merchant-list\"\nimport axios from \"axios\"\nimport Spinner from \"../../../booking/components/spinner\"\nimport { setQueryStringValue, setQueryStringWithoutPageReload, clearQueryParameters } from \"../../../api/queryStringHelper\"\nimport * as types from \"./merchant-types\"\nimport Categories from \"./categories\"\nimport { MemoizedRenderComponents } from \"../../../helpers/contentAreaRender\"\nimport useWindowWidth from \"../../../hooks/useWindowWidth\"\nimport useKeyboardNavigation from \"../../../hooks/useKeyboardNavigation\"\n\nexport default function MerchantListPage({\n  title,\n  headline,\n  subtitle,\n  heroImage,\n  heroVideo,\n  heroVideoDescription,\n  categoriesField,\n  locationsField,\n  resultsLabel,\n  searchBoxPlaceholder,\n  groupMerchants,\n  allShops,\n  merchantGroupShops,\n  allDiners,\n  merchantGroupDiners,\n  taxFreeShops,\n  allMerchants,\n  kind,\n  hideShoppingTab,\n  shoppingTabLabel,\n  hideDiningTab,\n  diningTabLabel,\n  hideTaxFreeTab,\n  taxFreeTabLabel,\n  shopsMessageCards,\n  shopsVideoCards,\n  diningMessageCards,\n  diningVideoCards,\n  taxFreeMessageCards,\n  taxFreeVideoCards,\n  noneFoundHeader,\n  noneFoundText,\n  openTodayLabel,\n  alwaysOpen,\n  closedText,\n  showMoreLabel,\n  filterListLabel,\n  isTaxFree,\n  dataUrl,\n  shopsContentId,\n  shopsUrl,\n  diningContentId,\n  diningUrl,\n  taxfreeContentId,\n  taxfreeUrl,\n  showingAmountLabel,\n  loadMoreLabel,\n  shopCategories,\n  shopCategoriesMobile,\n  dinerCategories,\n  dinerCategoriesMobile,\n  locations,\n  clearFilteringLabel,\n  selectFilteringLabel,\n  clearSearchBoxAriaLabel,\n  locationLabel,\n  taxfreePage,\n  shopsPage,\n  diningPage,\n}) {\n  const [merchants, setMerchants] = useState([])\n  const [currentAllMerchants, setCurrentAllMerchants] = useState([])\n  const [numFound, setNumFound] = useState([])\n  const [pageNumber, setPageNumber] = useState(0)\n  const [amountShown, setAmountShown] = useState(24)\n  const [ajaxSpinnerActive, setAjaxSpinnerActive] = useState(false)\n  const [ajaxSpinnerTransparent, setAjaxSpinnerTransparent] = useState(false)\n  const [searchQuery, setSearchQuery] = useState(\"\")\n  const [timeout, setTimeoutState] = useState(undefined)\n  const [filters, setFilters] = useState([])\n  const [selectedCategories, setSelectedCategories] = useState([])\n  const [selectedLocations, setSelectedLocations] = useState(\"\")\n  const windowWidth = useWindowWidth()\n  const isKeyboardNavigating = useKeyboardNavigation()\n\n  const shopListRef = useRef(null)\n\n  const getCategories = () => {\n    if (windowWidth < 950) {\n      return isTaxFree === true ? [] : kind === \"Kind_s:Shops\" ? shopCategoriesMobile : dinerCategoriesMobile\n    } else {\n      return isTaxFree === true ? [] : kind === \"Kind_s:Shops\" ? shopCategories : dinerCategories\n    }\n  }\n\n  const [activeTabLabel, setActiveTabLabel] = useState(\n    isTaxFree === true ? taxFreeTabLabel : kind === \"Kind_s:Shops\" ? shoppingTabLabel : diningTabLabel,\n  )\n  const [categories, setCategories] = useState(getCategories())\n  const [merchantType, setMerchantType] = useState(\n    kind === \"Kind_s:*\" ? types.BOTH : isTaxFree ? types.TAX_FREE : kind === \"Kind_s:Shops\" ? types.SHOPS : types.DINERS,\n  )\n  const [contentArea, setContentArea] = useState(\n    isTaxFree === true ? taxfreePage?.contentArea : kind === \"Kind_s:Shops\" ? shopsPage?.contentArea : diningPage?.contentArea,\n  )\n  const [hideSearch, setHideSearch] = useState(\n    isTaxFree === true ? taxfreePage?.hideSearchField : kind === \"Kind_s:Shops\" ? shopsPage?.hideSearchField : diningPage?.hideSearchField,\n  )\n  const [hideLocations, setHideLocations] = useState(\n    isTaxFree === true ? taxfreePage?.hideLocations : kind === \"Kind_s:Shops\" ? shopsPage?.hideLocations : diningPage?.hideLocations,\n  )\n\n  useEffect(() => {\n    const searchParams = new URLSearchParams(window.location.search)\n    const distinctKeys = [...new Set(searchParams.keys())]\n    const filters = []\n    let searchQuery = \"\"\n    let locationFilters = \"\"\n    let categoryFilters = []\n\n    distinctKeys.forEach((key) => {\n      switch (key) {\n        case \"CategoriesText\":\n          categoryFilters = searchParams.getAll(key)\n          filters.push({ key: \"categories\", value: categoryFilters })\n          break\n        case \"ShopLocation\":\n          locationFilters = searchParams.get(key)\n          filters.push({ key: \"locations\", value: locationFilters })\n          break\n        case \"query\":\n          searchQuery = searchParams.get(key)\n          filters.push({ key: \"name\", value: searchQuery })\n          break\n      }\n    })\n\n    fetchDataBasedOnType(merchantType, filters, locationFilters, searchQuery, categoryFilters)\n  }, [merchantType, kind, isTaxFree])\n\n  useEffect(() => {\n    let currentAllMerchants = []\n    let merchants = []\n\n    switch (merchantType) {\n      case types.BOTH:\n        currentAllMerchants = allMerchants\n        merchants = applyFilters(allMerchants, filters)\n        break\n      case types.TAX_FREE:\n        currentAllMerchants = taxFreeShops\n        merchants = applyFilters(taxFreeShops, filters)\n        break\n      case types.SHOPS:\n        currentAllMerchants = !groupMerchants ? allShops : merchantGroupShops\n        merchants = applyFilters(!groupMerchants ? allShops : merchantGroupShops, filters)\n        break\n      case types.DINERS:\n        currentAllMerchants = !groupMerchants ? allDiners : merchantGroupDiners\n        merchants = applyFilters(!groupMerchants ? allDiners : merchantGroupDiners, filters)\n        break\n    }\n    setCurrentAllMerchants(currentAllMerchants)\n    setMerchants(merchants)\n    setNumFound(merchants.length)\n  }, [filters, merchantType, groupMerchants, allMerchants, taxFreeShops, allShops, merchantGroupShops, allDiners, merchantGroupDiners])\n\n  useEffect(() => {\n    setCategories(getCategories())\n  }, [windowWidth])\n\n  const fetchDataBasedOnType = (type, filters, locationFilters, searchQuery, categoryFilters) => {\n    let dataSets = {\n      [types.TAX_FREE]: () => setMerchantData(taxFreeShops, taxFreeShops, filters, locationFilters, searchQuery, categoryFilters),\n      [types.SHOPS]: () => setMerchantData(merchantGroupShops, allShops, filters, locationFilters, searchQuery, categoryFilters),\n      [types.DINERS]: () => setMerchantData(merchantGroupDiners, allDiners, filters, locationFilters, searchQuery, categoryFilters),\n      [types.BOTH]: () => setMerchantData(allMerchants, allMerchants, filters, locationFilters, searchQuery, categoryFilters),\n    }\n\n    dataSets[type] && dataSets[type]()\n  }\n\n  const setMerchantData = (shops, allShops, filters, locationFilters, searchQuery, categoryFilters) => {\n    let merchants = []\n\n    if (filters.length > 0) {\n      merchants = applyFilters(allShops, filters)\n    } else {\n      merchants = shops\n    }\n\n    setMerchants(merchants)\n    setNumFound(merchants.length)\n    setFilters(filters)\n    setSelectedLocations(locationFilters)\n    setSearchQuery(searchQuery)\n    setSelectedCategories(categoryFilters)\n  }\n\n  const applyFilters = (shops, filters) => {\n    return shops.filter((item) => {\n      for (const filter of filters) {\n        const filterKey = filter.key\n        const filterValue = filter.value\n\n        switch (filterKey) {\n          case \"locations\":\n            if (filterValue === \"before-security\" && !item.isAirSide) {\n              continue\n            } else if (filterValue === \"after-security\" && item.isAirSide) {\n              continue\n            } else {\n              const locations = filterValue.split(\",\")\n              if (!locations.includes(item.shopLocation)) {\n                return false\n              }\n            }\n            break\n          case \"categories\":\n            if (!item.categories?.some((c) => filterValue.includes(c))) {\n              return false\n            }\n            break\n          case \"name\":\n            {\n              let found = false\n              if (item.name?.toLowerCase().includes(filterValue.toLowerCase())) {\n                found = true\n              }\n              if (item.description?.toLowerCase().includes(filterValue.toLowerCase())) {\n                found = true\n              }\n              if (item?.metaKeywords?.some((m) => m.toLowerCase().includes(filterValue.toLowerCase()))) {\n                found = true\n              }\n              if (item?.categories?.some((c) => c.toLowerCase().includes(filterValue.toLowerCase()))) {\n                found = true\n              }\n              if (!found) {\n                return false\n              }\n            }\n            break\n\n          default:\n            break\n        }\n      }\n      return true\n    })\n  }\n\n  const writeFilterToState = (filter) => {\n    setFilters((currentFilters) => {\n      let updatedFilters = currentFilters ? currentFilters?.filter((f) => f.key !== filter.key) : []\n      switch (filter.key) {\n        case \"name\":\n          if (filter.value) {\n            setQueryStringValue(\"query\", filter.value)\n            updatedFilters = [...updatedFilters, filter]\n          } else {\n            const params = new URLSearchParams(window.location.search)\n            params.delete(\"query\")\n            if (params.size > 0) {\n              setQueryStringWithoutPageReload(`?${params.toString()}`)\n            } else {\n              clearQueryParameters()\n            }\n          }\n          break\n        case \"locations\":\n          if (filter.value) {\n            setQueryStringValue(locationsField, filter.value)\n            updatedFilters = [...updatedFilters, filter]\n          } else {\n            const params = new URLSearchParams(window.location.search)\n            params.delete(locationsField)\n            if (params.size > 0) {\n              setQueryStringWithoutPageReload(`?${params.toString()}`)\n            } else {\n              clearQueryParameters()\n            }\n          }\n          break\n        case \"categories\":\n          if (filter.value.length > 0) {\n            updatedFilters = [...updatedFilters, filter]\n          }\n          break\n        default:\n          updatedFilters = [...updatedFilters, filter]\n          break\n      }\n      return updatedFilters\n    })\n  }\n\n  const loadMore = () => {\n    // when loading more shops, we focus on the last focusable shop in the list, before adding additional shops to the list.\n    // such that the user doesn't have to go through the list twice.\n    var shoplist = shopListRef.current\n    if (shoplist && shoplist.childElementCount > 0) {\n      var searchIndex = 1\n      var shopListLength = shoplist.childElementCount - searchIndex\n      var targetShop = shoplist.childNodes[shopListLength - searchIndex]\n\n      // if a shop is deactivated, we make sure that it cannot be focused when loading more.\n      // so we go one step back in the list until we find a shop that isnt deactivated.\n      while (targetShop.classList.contains(\"deactivated\")) {\n        searchIndex += 1\n        targetShop = shoplist.childNodes[shopListLength - searchIndex]\n      }\n      targetShop.focus()\n    }\n\n    setPageNumber((prev) => prev + 1)\n  }\n\n  const handleKeyPressSwitchTabs = (keypress, type) => {\n    if (keypress == \" \" || keypress == \"32\" || keypress == \"Enter\" || keypress == \"13\") {\n      switchTabs(type)\n    }\n    return\n  }\n\n  const switchTabs = (type) => {\n    if (type !== merchantType) {\n      setAjaxSpinnerActive(true)\n      let contentId = \"\"\n      switch (type) {\n        case types.TAX_FREE:\n          contentId = taxfreeContentId\n          setTabSwitchData(\n            type,\n            taxFreeShops,\n            taxFreeTabLabel,\n            [],\n            taxfreePage?.contentArea,\n            taxfreePage?.hideSearchField,\n            taxfreePage?.hideLocations,\n          )\n          break\n        case types.SHOPS:\n          contentId = shopsContentId\n          setTabSwitchData(\n            type,\n            merchantGroupShops,\n            shoppingTabLabel,\n            windowWidth < 950 ? shopCategoriesMobile : shopCategories,\n            shopsPage?.contentArea,\n            shopsPage?.hideSearchField,\n            shopsPage?.hideLocations,\n          )\n          break\n        case types.DINERS:\n          contentId = diningContentId\n          setTabSwitchData(\n            type,\n            merchantGroupDiners,\n            diningTabLabel,\n            windowWidth < 950 ? dinerCategoriesMobile : dinerCategories,\n            diningPage?.contentArea,\n            diningPage?.hideSearchField,\n            diningPage?.hideLocations,\n          )\n          break\n      }\n      // Side effects to update URL and page title after state updates\n      updateUrl(type)\n      updatePageTitle(contentId)\n    }\n  }\n\n  const setTabSwitchData = (type, merchants, tabLabel, categories, contentArea, hideSearch, hideLocations) => {\n    setMerchants(merchants)\n    setCategories(categories)\n    setFilters([])\n    setSelectedCategories([])\n    setSelectedLocations(\"\")\n    setSearchQuery(\"\")\n    setMerchantType(type)\n    setPageNumber(0)\n    setNumFound(merchants.length)\n    setActiveTabLabel(tabLabel)\n    setContentArea(contentArea)\n    setHideSearch(hideSearch)\n    setHideLocations(hideLocations)\n    setAjaxSpinnerActive(false)\n  }\n\n  const selectCategory = (categoryValue) => {\n    updateFilterQueryString(categoriesField, categoryValue)\n\n    setSelectedCategories((currentSelectedCategories) => {\n      let newSelectedCategories = [...currentSelectedCategories]\n\n      if (currentSelectedCategories.includes(categoryValue)) {\n        newSelectedCategories = currentSelectedCategories.filter((cat) => cat !== categoryValue)\n      } else {\n        newSelectedCategories.push(categoryValue)\n      }\n\n      // Post-update side effect\n      writeFilterToState({ key: \"categories\", value: newSelectedCategories })\n\n      return newSelectedCategories\n    })\n  }\n\n  const selectLocations = (locationValue) => {\n    setSelectedLocations(locationValue)\n    writeFilterToState({ key: \"locations\", value: locationValue })\n  }\n\n  const searchInputHandler = (e) => {\n    const query = e?.target?.value || \"\"\n    if (timeout) {\n      clearTimeout(timeout)\n      setTimeoutState(undefined)\n    }\n    setTimeoutState(\n      setTimeout(() => {\n        writeFilterToState({ key: \"name\", value: query })\n      }, 250),\n    )\n    setSearchQuery(query)\n  }\n\n  const updateFilterQueryString = (key, value) => {\n    const params = new URLSearchParams(window.location.search)\n    const filters = params.getAll(key)\n\n    if (filters.includes(value)) {\n      // Remove value if it exists\n      const newFilters = filters.filter((item) => item !== value)\n      params.delete(key)\n      newFilters.forEach((item) => params.append(key, item))\n    } else {\n      // Add value if it doesn't exist\n      params.append(key, value)\n    }\n\n    setQueryStringWithoutPageReload(`?${params.toString()}`)\n  }\n\n  const updatePageTitle = (contentLink) => {\n    axios\n      .get(`${dataUrl}/GetPageTitle?contentLink=${contentLink}`)\n      .then((res) => {\n        if (res.data) {\n          document.title = res.data\n        }\n      })\n      .catch((error) => console.log(error))\n      .finally(() => setAjaxSpinnerActive(false))\n  }\n\n  const updateUrl = (type) => {\n    let path = \"\"\n    switch (type) {\n      case types.TAX_FREE:\n        path = taxfreeUrl\n        break\n      case types.SHOPS:\n        path = shopsUrl\n        break\n      case types.DINERS:\n        path = diningUrl\n        break\n    }\n    const newUrl = `${window.location.protocol}//${window.location.host}${path}`\n    window.history.replaceState({ path: newUrl }, \"\", newUrl)\n  }\n\n  const clearFilters = () => {\n    clearQueryParameters()\n    setFilters([])\n    setSelectedCategories([])\n    setSelectedLocations(\"\")\n    setSearchQuery(\"\")\n  }\n\n  let searchBoxPlaceholderFinal\n  let loadMoreLabelFinal = loadMoreLabel ?? \"Vis flere {name}\"\n  let messageCards\n  let videoCards\n  switch (merchantType) {\n    case types.TAX_FREE:\n      searchBoxPlaceholderFinal = searchBoxPlaceholder?.replace(\"{name}\", taxFreeTabLabel)\n      loadMoreLabelFinal = loadMoreLabelFinal?.replace(\"{name}\", taxFreeTabLabel)\n      messageCards = taxFreeMessageCards\n      videoCards = taxFreeVideoCards\n      break\n    case types.SHOPS:\n      searchBoxPlaceholderFinal = searchBoxPlaceholder?.replace(\"{name}\", shoppingTabLabel?.toLowerCase())\n      loadMoreLabelFinal = loadMoreLabelFinal?.replace(\"{name}\", shoppingTabLabel?.toLowerCase())\n      messageCards = shopsMessageCards\n      videoCards = shopsVideoCards\n      break\n    case types.DINERS:\n      searchBoxPlaceholderFinal = searchBoxPlaceholder?.replace(\"{name}\", diningTabLabel?.toLowerCase())\n      loadMoreLabelFinal = loadMoreLabelFinal?.replace(\"{name}\", diningTabLabel?.toLowerCase())\n      messageCards = diningMessageCards\n      videoCards = diningVideoCards\n      break\n  }\n\n  return (\n    <React.Fragment>\n      <Spinner isActive={ajaxSpinnerActive} isTransparent={ajaxSpinnerTransparent} />\n      <div className=\"merchant-list-page\">\n        <section className=\"merchant-list-page--hero\">\n          <div className=\"w--wider\">\n            <div className=\"tabs-section\">\n              <div className=\"head\">\n                <span className=\"infohead\">{title}</span>\n                <h1>{headline}</h1>\n                <p>{subtitle}</p>\n              </div>\n              <div className=\"tabs\" role=\"tablist\">\n                {!hideShoppingTab && (\n                  <a\n                    tabIndex={0}\n                    className={`button${merchantType == types.SHOPS ? \" is-active\" : \"\"}`}\n                    aria-selected={merchantType == types.SHOPS}\n                    onClick={() => switchTabs(types.SHOPS)}\n                    onKeyDown={(e) => handleKeyPressSwitchTabs(e.key, types.SHOPS)}\n                    role=\"tab\"\n                    aria-controls=\"element 1\"\n                  >\n                    <span className=\"text\" data-epi-edit=\"ShoppingTabTitle\">\n                      {shoppingTabLabel || \"Butikker\"}\n                    </span>\n                  </a>\n                )}\n                {!hideDiningTab && (\n                  <a\n                    tabIndex={0}\n                    className={`button${merchantType == types.DINERS ? \" is-active\" : \"\"}`}\n                    aria-selected={merchantType == types.DINERS}\n                    onClick={() => switchTabs(types.DINERS)}\n                    onKeyDown={(e) => handleKeyPressSwitchTabs(e.key, types.DINERS)}\n                    role=\"tab\"\n                    aria-controls=\"element 2\"\n                  >\n                    <span className=\"text\" data-epi-edit=\"DiningTabTitle\">\n                      {diningTabLabel || \"Spisesteder\"}\n                    </span>\n                  </a>\n                )}\n                {!hideTaxFreeTab && (\n                  <a\n                    tabIndex={0}\n                    className={`button${merchantType == types.TAX_FREE ? \" is-active\" : \"\"}`}\n                    aria-selected={merchantType == types.TAX_FREE}\n                    onClick={() => switchTabs(types.TAX_FREE)}\n                    onKeyDown={(e) => handleKeyPressSwitchTabs(e.key, types.TAX_FREE)}\n                    role=\"tab\"\n                    aria-controls=\"element 3\"\n                  >\n                    <span className=\"text\" data-epi-edit=\"TaxFreeTabTitle\">\n                      {taxFreeTabLabel || \"TAX FREE\"}\n                    </span>\n                  </a>\n                )}\n              </div>\n            </div>\n            <div className=\"image-wrapper\">\n              {heroVideo ? (\n                <video\n                  tabIndex={heroVideoDescription ? 0 : -1}\n                  aria-label={heroVideoDescription}\n                  autoPlay\n                  loop\n                  muted\n                  controls={false}\n                  playsInline\n                  preload={\"auto\"}\n                  loading=\"eager\"\n                  fetchPriority=\"high\"\n                >\n                  <source src={heroVideo} />\n                </video>\n              ) : heroImage ? (\n                <img src={heroImage} />\n              ) : (\n                \"\"\n              )}\n            </div>\n          </div>\n        </section>\n        {!hideSearch ? (\n          <section className=\"filtering w--wider\">\n            <div className=\"search-field\">\n              <input\n                className=\"search-input\"\n                value={searchQuery}\n                onChange={(e) => searchInputHandler(e)}\n                type=\"text\"\n                placeholder={searchBoxPlaceholderFinal}\n              />\n              <button\n                tabIndex={searchQuery.length == 0 ? -1 : 0}\n                onClick={() => {\n                  searchInputHandler(\"\")\n                }}\n                aria-label={clearSearchBoxAriaLabel}\n                className={`search-button ${searchQuery.length >= 1 ? \"active\" : \"\"}`}\n              >\n                <div className=\"search-icon\"></div>\n              </button>\n            </div>\n            <Categories\n              categories={categories}\n              toggleCategory={selectCategory}\n              merchants={currentAllMerchants}\n              numFound={numFound}\n              selectedCategories={selectedCategories}\n              searchQuery={searchQuery}\n              windowWidth={windowWidth}\n              merchantType={merchantType}\n            />\n          </section>\n        ) : (\n          \"\"\n        )}\n        <section className=\"deck deck--white deck--remove-z-index\">\n          <MerchantList\n            shopListRef={shopListRef}\n            merchants={merchants}\n            messageCards={messageCards}\n            videoCards={videoCards}\n            numFound={numFound}\n            noneFoundHeader={noneFoundHeader || \"\"}\n            noneFoundText={noneFoundText || \"\"}\n            page={pageNumber}\n            amountShown={amountShown}\n            resultsLabel={resultsLabel}\n            loadMore={loadMore}\n            loadMoreLabel={loadMoreLabelFinal}\n            showingAmountLabel={showingAmountLabel}\n            activeTabLabel={activeTabLabel}\n            locations={locations}\n            selectLocations={selectLocations}\n            selectedLocations={selectedLocations}\n            clearFilteringLabel={clearFilteringLabel || \"Ryd filtrering\"}\n            selectFilteringLabel={selectFilteringLabel || \"Vælg\"}\n            filters={filters}\n            clearFilters={clearFilters}\n            currentAllMerchants={currentAllMerchants}\n            hideVideoCards={filters?.length > 0}\n            locationLabel={locationLabel || \"Placering\"}\n            isKeyboardNavigating={isKeyboardNavigating}\n            hideLocations={hideLocations}\n          />\n        </section>\n      </div>\n      {contentArea && contentArea.length > 0 ? <MemoizedRenderComponents contentArea={contentArea} /> : \"\"}\n    </React.Fragment>\n  )\n}\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport MerchantListPage from \"./merchant-list-page\"\n\nexport default class MerchantListModule {\n  constructor(elem) {\n    this.elem = elem\n    this.modelJson = elem.dataset.modelJson && JSON.parse(elem.dataset.modelJson)\n    this.shopsPage = elem.dataset.shopsPage && JSON.parse(elem.dataset.shopsPage)\n    this.diningPage = elem.dataset.diningPage && JSON.parse(elem.dataset.diningPage)\n    this.taxfreePage = elem.dataset.taxfreePage && JSON.parse(elem.dataset.taxfreePage)\n    this.init()\n  }\n\n  init() {\n    const self = this\n\n    const data = {\n      shopsPage: self.shopsPage,\n      diningPage: self.diningPage,\n      taxfreePage: self.taxfreePage,\n      dataUrl: self.elem.dataset.dataUrl,\n      contentId: self.elem.dataset.contentId,\n      shopsContentId: self.elem.dataset.shopsContentId,\n      shopsUrl: self.elem.dataset.shopsUrl,\n      diningContentId: self.elem.dataset.diningContentId,\n      diningUrl: self.elem.dataset.diningUrl,\n      taxfreeContentId: self.elem.dataset.taxfreeContentId,\n      taxfreeUrl: self.elem.dataset.taxfreeUrl,\n    }\n\n    ReactDOM.unmountComponentAtNode(self.elem)\n    ReactDOM.render(<MerchantListPage {...self.modelJson} {...data} />, self.elem)\n  }\n}\n","import React from \"react\"\nimport Svg from \"../_svgs/svg\"\n\nconst TeaserMessageCard = ({ link, linkText, icon, heading, invertedCard }) => {\n  return (\n    <a className={`store-item message-card${invertedCard ? \" inverted\" : \"\"}`} href={link ? link : undefined}>\n      <div className=\"content\">\n        {icon ? (\n          <div className={`icon`}>\n            <Svg iconName={icon} fillColor={\"transparent\"} />\n          </div>\n        ) : (\n          \"\"\n        )}\n        <div className=\"imgtext\">\n          <h3 className=\"header\" data-epi-edit=\"Heading\">\n            {heading || \"Heading\"}\n          </h3>\n          <span className=\"linktext\" data-epi-edit=\"LinkText\">\n            {linkText || \"Link Text\"}\n          </span>\n        </div>\n      </div>\n    </a>\n  )\n}\n\nexport default TeaserMessageCard\n"],"names":["accessibilityEnterCheck","e","cb","key","type","_useState","useState","_useState2","_slicedToArray","isKeyboardNavigation","setIsKeyboardNavigation","useEffect","handleKeyDown","handleMouseDown","window","addEventListener","removeEventListener","Locations","_ref","locations","selectLocations","selectedLocations","clearFilteringLabel","filters","clearFilters","merchants","isKeyboardNavigating","locationsOpen","dropDownRef","handleBlur","getClearedLocations","reduce","acc","location","_objectSpread","_defineProperty","disableInput","setDisableInput","_useState3","_useState4","beforeSecurityChecked","setBeforeSecurityChecked","_useState5","_useState6","afterSecurityChecked","setAfterSecurityChecked","_useState7","_useState8","locationsChecked","setLocationsChecked","checkedLocations","split","obj","item","resetLocations","Object","keys","entries","filter","_ref2","_ref3","map","_ref4","length","join","handleBeforeSecurityChange","target","checked","handleAfterSecurityChange","_jsx","className","concat","children","_jsxs","role","ref","onBlur","index","inputId","tabIndex","id","name","value","onChange","prev","handleLocationChange","disabled","some","m","isAirSide","shopLocation","htmlFor","onClick","Svg","iconName","VideoCard","url","autoPlay","loop","muted","controls","playsInline","preload","loading","fetchPriority","src","MerchantList","messageCards","videoCards","amountShown","page","numFound","noneFoundHeader","noneFoundText","loadMore","loadMoreLabel","activeTabLabel","beforeSecurityLabel","afterSecurityLabel","selectFilteringLabel","currentAllMerchants","hideVideoCards","locationLabel","shopListRef","hideLocations","setLocationsOpen","areLocationsFocused","setAreLocationsFocused","getSpecialCardAtIndexPosition","cards","el","position","useRef","handlePointerDown","event","_dropDownRef$current","current","contains","displayAmount","_loop","i","card","messageCardsAtIndex","push","messageCard","TeaserMessageCard","videoCardsAtIndex","videoCard","MerchantItem","cssClass","link","merchantUrl","splashLabel","ribbonText","ribbonColor","isRibbonValid","image","teaserImage","opening","alwaysOpen","alwaysOpenLabel","React","xmlnsXlink","xlinkHref","Fragment","OutsideClickTrigger","onOutsideClick","modifier","_Fragment","onPointerDown","onKeyDown","preventDefault","onFocus","relatedTarget","currentTarget","TAX_FREE","SHOPS","DINERS","BOTH","Categories","categories","toggleCategory","selectedCategories","searchQuery","windowWidth","merchantType","mobileShowCategoryCheck","category","disable","_m$categories","includes","ErrorBoundaryContext","createContext","initialState","didCatch","error","ErrorBoundary","_Component","props","_this","_classCallCheck","_callSuper","resetErrorBoundary","bind","state","_inherits","_createClass","this","_this$props$onReset","_this$props","_len","arguments","args","Array","_key","onReset","call","reason","setState","info","_this$props$onError","_this$props2","onError","prevProps","prevState","_this$props$onReset2","_this$props3","resetKeys","a","undefined","b","is","hasArrayChanged","next","_this$props4","fallbackRender","FallbackComponent","fallback","_this$state","childToRender","createElement","isValidElement","Provider","Component","RenderComponents","contentArea","block","module","Modules","find","blockName","__type__","importComponent","LazyComponent","lazy","Suspense","areEqual","nextProps","MemoizedRenderComponents","MerchantListPage","_loadMoreLabelFinal","_loadMoreLabelFinal2","_loadMoreLabelFinal3","title","headline","subtitle","heroImage","heroVideo","heroVideoDescription","categoriesField","locationsField","resultsLabel","searchBoxPlaceholder","groupMerchants","allShops","merchantGroupShops","allDiners","merchantGroupDiners","taxFreeShops","allMerchants","kind","hideShoppingTab","shoppingTabLabel","hideDiningTab","diningTabLabel","hideTaxFreeTab","taxFreeTabLabel","shopsMessageCards","shopsVideoCards","diningMessageCards","diningVideoCards","taxFreeMessageCards","taxFreeVideoCards","isTaxFree","openTodayLabel","closedText","showMoreLabel","filterListLabel","dataUrl","shopsContentId","shopsUrl","diningContentId","diningUrl","taxfreeContentId","taxfreeUrl","showingAmountLabel","shopCategories","shopCategoriesMobile","dinerCategories","dinerCategoriesMobile","clearSearchBoxAriaLabel","taxfreePage","shopsPage","diningPage","setMerchants","setCurrentAllMerchants","setNumFound","pageNumber","setPageNumber","_useState9","_useState10","_useState11","_useState12","ajaxSpinnerActive","setAjaxSpinnerActive","_useState13","_useState14","ajaxSpinnerTransparent","_useState15","_useState16","setSearchQuery","_useState17","_useState18","timeout","setTimeoutState","_useState19","_useState20","setFilters","_useState21","_useState22","setSelectedCategories","_useState23","_useState24","setSelectedLocations","useWindowWidth","useKeyboardNavigation","getCategories","_useState25","_useState26","setActiveTabLabel","_useState27","_useState28","setCategories","_useState29","types","_useState30","setMerchantType","_useState31","_useState32","setContentArea","_useState33","hideSearchField","_useState34","hideSearch","setHideSearch","_useState35","_useState36","setHideLocations","searchParams","URLSearchParams","search","distinctKeys","_toConsumableArray","Set","locationFilters","categoryFilters","forEach","getAll","get","fetchDataBasedOnType","applyFilters","searchBoxPlaceholderFinal","dataSets","setMerchantData","shops","_step","_iterator","_createForOfIteratorHelper","_ret","_item$categories","filterKey","filterValue","v","c","_item$name","_item$description","_item$metaKeywords","_item$categories2","found","toLowerCase","description","metaKeywords","s","n","done","err","f","writeFilterToState","currentFilters","updatedFilters","setQueryStringValue","params","delete","size","setQueryStringWithoutPageReload","toString","clearQueryParameters","handleKeyPressSwitchTabs","keypress","switchTabs","contentId","setTabSwitchData","updateUrl","updatePageTitle","tabLabel","searchInputHandler","_e$target","query","clearTimeout","setTimeout","updateFilterQueryString","newFilters","append","contentLink","axios","then","res","data","document","catch","console","log","finally","path","newUrl","protocol","host","history","replaceState","loadMoreLabelFinal","replace","Spinner","isActive","isTransparent","placeholder","categoryValue","currentSelectedCategories","newSelectedCategories","cat","shoplist","childElementCount","searchIndex","shopListLength","targetShop","childNodes","classList","focus","locationValue","MerchantListModule","elem","modelJson","dataset","JSON","parse","init","self","ReactDOM","linkText","icon","heading","invertedCard","href","fillColor"],"sourceRoot":""}