{"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 \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 \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":""}