{"version":3,"sources":["webpack:///./node_modules/@tradera/blueprint/theme/icons2/pattern.svg","webpack:///./src/frontend/components/attributes/attribute-color.jsx","webpack:///./node_modules/@tradera/blueprint/theme/icons2/view-list.svg","webpack:///./node_modules/@tradera/blueprint/theme/icons-colored/multicolor.svg","webpack:///./src/EbaySweden.TouchWeb/static/script/components/shared/scroll-to-top-button.jsx","webpack:///./node_modules/@tradera/blueprint/theme/icons2/color.svg","webpack:///./src/frontend/hooks/use-is-tablet.js","webpack:///./src/frontend/components/tree-navigation/tree-item.module.scss","webpack:///./src/frontend/components/tree-navigation/tree-item.jsx","webpack:///./src/frontend/components/tree-navigation/show-more-button.jsx","webpack:///./src/frontend/components/tree-navigation/tree-navigation.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/pagination/pagination-helper.js","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/pagination/discover-pagination.jsx","webpack:///./src/frontend/components/accordion/accordion.jsx","webpack:///./src/frontend/components/accordion/accordion-item.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/filters/categories/filter-categories.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/filters/categories/filter-categories-modal.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/filters/filter-modal-footer.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/internal-search-form.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/intro-text-container.jsx","webpack:///./src/frontend/components/item-settings/discount-rates.js","webpack:///./src/frontend/components/item-settings/item-settings.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/save-search-button-api.js","webpack:///./node_modules/@tradera/blueprint/theme/icons2/bookmark-fill.svg","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/save-search-button.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/filters/attributes/attribute-filter.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/filters/radio-switch-filter.jsx","webpack:///./node_modules/@tradera/blueprint/theme/icons2/gender.svg","webpack:///./src/frontend/apps/tradera/components/discover/components/filters/icon-helper.js","webpack:///./src/frontend/components/form-controls/select.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/filters/select-filter.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/filters/filter-ship-to.jsx","webpack:///./node_modules/@tradera/blueprint/theme/icons2/bids.svg","webpack:///./node_modules/@tradera/blueprint/theme/icons2/price.svg","webpack:///./src/frontend/apps/tradera/components/discover/components/filters/search-filter.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/sort/sort-radio-buttons.jsx","webpack:///./node_modules/@tradera/blueprint/theme/icons2/view-md.svg","webpack:///./node_modules/@tradera/blueprint/theme/icons2/view-lg.svg","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/layout/item-layout-switch.jsx","webpack:///./src/frontend/apps/tradera/components/discover/helpers/filter.js","webpack:///./src/frontend/apps/tradera/components/discover/components/filters/search-filter-modal.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/zero-results.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/search-results.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/show-more/show-more.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/filters/categories/filter-categories-horizontal.jsx","webpack:///./node_modules/@tradera/blueprint/theme/icons2/max-width.svg","webpack:///./node_modules/@tradera/blueprint/theme/icons2/min-width.svg","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/layout/site-layout-switch.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/sort/sort-select.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/tag.jsx","webpack:///./node_modules/@tradera/blueprint/theme/icons/descending.svg","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/translation-strategy.jsx","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/search-results-header.jsx","webpack:///./src/frontend/components/side-menu/side-menu.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/almost-random.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ads/adsense-shopping.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ads/adsense.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/adsense-utils.js","webpack:///./src/frontend/apps/tradera/components/discover/containers/search-results-wrapper-logic.js","webpack:///./src/frontend/apps/tradera/components/discover/containers/search-results-wrapper.jsx","webpack:///./src/frontend/components/attributes/attribute-modal.jsx","webpack:///./node_modules/@tradera/blueprint/theme/icons2/condition.svg","webpack:///./src/frontend/apps/tradera/layout/layout-a/layout-a.module.scss","webpack:///./src/frontend/apps/tradera/layout/layout-a/index.jsx","webpack:///./src/frontend/components/attributes/attribute-helper.js","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/magnifier.svg","webpack:///./node_modules/@tradera/blueprint/theme/icons2/shape.svg","webpack:///./node_modules/@tradera/blueprint/theme/icons2/view-sm.svg","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/breakpoints.js","webpack:///./src/frontend/components/attributes/attribute-list.jsx","webpack:///./node_modules/@tradera/blueprint/theme/icons2/size.svg","webpack:///./src/EbaySweden.TouchWeb/static/script/components/price-range/price-range.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/rc-slider/geometric.js","webpack:///./src/frontend/apps/tradera/layout/layout.module.scss","webpack:///./node_modules/@tradera/blueprint/theme/icons/info.svg"],"names":["_extends","target","i","arguments","length","source","key","Object","prototype","hasOwnProperty","call","apply","this","styles","props","React","createElement","xmlns","viewBox","d","multiColorStyle","backgroundImage","MultiColorImage","AttributeColor","attribute","hideAttribute","handleClick","selected","isDisabled","size","className","t","useTranslator","value","toLowerCase","attributeValue","getTranslatedAttributeValue","type","onClick","title","style","clipRule","fillRule","ScrollToTopButton","window","scrollTo","propTypes","useIsTablet","isTablet","useBreakpoint","ItemContent","uniqueId","name","childrenCount","id","formatNumber","TreeItem","isNarrow","itemId","treeId","url","isActive","count","itemClasses","link","unbutton","href","useLink","Boolean","event","undefined","defaultProps","ShowMoreButton","children","theme","outline","fluid","iconFixed","TreeNavigation","tree","onShowMoreClick","path","onItemClick","showMoreText","useState","expanded","setExpanded","isTopLevel","role","item","index","isHidden","treeShape","PropTypes","oneOfType","string","number","isRequired","bool","arrayOf","shape","getCurrentPageByIndex","pageLinks","pageIndex","page","buildPagingArray","firstPage","lastPage","pageCount","linksBefore","linksAfter","totalPages","pageArray","pagination","active","currentPageByIndex","indexStart","linksCountLimit","push","dotted","indexMaxLimited","Math","min","itemsAfterCurrent","canShiftBack","max","DiscoverPagination","Component","location","queryParams","query","paging","spage","search","toSearchString","direction","currentIndex","linkIndex","getLinkValue","viewClass","to","onLinkClicked","trackingLabel","gtm","render","desktopPagination","mobilePagination","prevLink","getNavLink","nextLink","helmetLinks","rel","toAbsoluteUrlFromObject","Helmet","renderPageLinks","withRouter","withTranslator","Accordion","AccordionItem","collapsable","hideTitle","icon","defaultOpen","label","onChange","accordionOpen","setAccordionOpen","mapTree","searchString","category","status","FilterCategories","filterCategories","handleCategoryChange","handleSearchCategoryChange","pageType","categoryResultPage","PAGE_TYPES","CATEGORY_RESULT_PAGE","onCategoryClick","useCallback","strPath","join","preventDefault","categories","categoryTree","stripPaginationFromQueryParameters","FilterCategoriesModal","isUpdating","FilterModalFooter","handleModalClick","gaLabel","InternalSearchForm","internalSearch","handleInternalSearch","setSearchString","placeholder","onSubmit","e","IntroTextContainer","html","dangerouslySetInnerHTML","__html","discounRates","ItemSettings","constructor","super","state","itemSettings","onDisplay","price","priceBeforeDiscount","canHaveDiscount","ITEM_TYPES","PURE_BIN","SHOP_ITEM","itemType","hasDiscount","discountRate","onDisplayCount","maxOnDisplayCount","discountCount","maxDiscountCount","isFetching","getItemSettings","closeItemSettings","setState","getItemDiscountQuota","data","saveItemSettings","addItemOnDisplay","removeItemOnDisplay","updateItem","postItemSettings","handleOnDislayClick","handleDiscountChange","round","calculateDiscount","componentDidUpdate","prevProps","open","a","componentWillUnmount","onDisplayDisabled","setDiscountDisabled","mobileFullscreen","onDismiss","minWidth","height","checked","disabled","htmlFor","option","connect","ui","dispatch","uiActions","itemActions","discoverActions","ENDPOINTS","postWithCredentials","payload","touchWebClient","post","axiosConfigs","authenticated","saveSearch","savedSearchName","categoryId","payloadObject","savedQueryName","addQueryPrefix","removeSavedSearch","savedSearchId","ids","saveEmailNotificationEnabled","searchId","shouldSend","SearchId","SendMail","GA_CATEGORY","SaveSearchButton","PureComponent","localStore","setItem","STORAGE_KEYS","SAVE_SEARCH_HINT","STORAGE_VALUES","SAVE_SEARCH_HINT_CLICKED","showHintTooltip","showSavedTooltip","openSignIn","encodeURIComponent","pathname","removeSaved","getItem","emailNotificationEnabled","inProgress","debouncedSaveSearch","debounce","debouncedRemoveSaved","debouncedNotificationChange","componentDidMount","q","toggleEmailNotificationEnabled","enabled","requestedEnableStatus","onError","saveSearchApi","responseData","error","isLoggedIn","searchName","handleLogin","onSuccess","savedTooltipWasVisible","isSaved","shouldShowSavedTooltip","handleSaveSearchClick","isMobile","handleCloseSavedTooltip","handleCloseTooltip","width","AttributeFilter","attributeFilter","handleAttributeFilterChange","options","translateOptions","parameter","selectedValues","AttributeList","AttributeModalButton","defaultSelected","selectAction","isIndexable","presentation","AttributeLink","text","hoverIcon","modalOpen","openModal","getTranslatedAttributeName","onClose","RadioSwitchFilter","filter","optionClasses","handleFilterChange","selectedValue","handleOnChange","getAttributeIcon","AttributeIcon","otherProps","Select","handleChange","selectClassName","SelectFilter","FilterShipTo","allowedBuyerRegions","county","allowedBuyerRegionFilterEnabled","allowedBuyerRegionToggleOptions","selectedUI","setSelectedUI","buyerRegionElements","countyElements","handleToggleChange","SearchFilter","filters","filterPrice","attributeFilters","handlePriceFilterChange","attributeFiltersEnabled","itemCondition","sellerType","itemStatus","fromPrice","toPrice","rangeStart","rangeEnd","handleStart","handleEnd","SortRadioButtons","sortBy","ItemLayoutSwitch","itemLayout","updateItemLayout","showSmallOption","useIsMobile","trackItemLayoutChange","getTotalActiveFilterCount","activeFilters","userSetPriceFilter","totalAttributeFilters","getSelectedValue","activeFilter","CONSTANTS","ACTIVE_FILTER_STATES","SearchFilterModal","filterAccordionOpen","handleClearAllFilters","isLoading","totalItems","totalActiveFilters","itemsCount","STRINGS","DISCOVER","FILTERS","SORTING","ITEM_STATUS","ITEM_TYPE","CONDITION","SELLER_TYPE","COUNTY","ZeroResults","memo","SearchResults","fallbackItemsById","featureSwitches","handleOpenItemSettings","handleItemAttributesForFiltering","isShopOwnedByCurrentMember","itemCache","itemsById","itemsOnDisplayById","openQuickView","preferredCurrency","toggleWishlist","fallbackUrl","siteLayout","noItemsFallback","isLoaded","items","fallbackItems","itemsOnDisplay","searchTerm","adsEnabled","quickViewEnabled","showItemsOnDisplay","isLastChanceLiveUppdatesEnabled","useIsFeatureEnabled","useEffect","CUSTOM_RESULT_PAGE","registerLiveUpdates","initData","webLiveUrl","onConnect","socket","emit","onClientEvent","Type","Event","AuctionId","BidAmount","totalBids","NumberOfBids","handleQuickViewClick","handleAddToWishlist","GtmService","trackAction","handleRemoveFromWishlist","handleItemAttributesForFilterClick","values","ItemsOnDisplay","skipTopAd","FallbackItems","adContainerClass","autoscale","itemsOnDisplayCards","ItemCardComponent","ItemListCard","ItemCard","lazy","lazyLoadSettings","onAddToWishlist","onAttributeButtonClick","onQuickView","onRemoveFromWishlist","onSettings","ready","itemUrl","placeHolderCards","fallbackItemsCards","discover","environment","member","cache","multiCurrency","itemIds","openedFrom","wishlist","openItemSettings","ShowMore","isExpanded","fade","expand","FilterCategoriesHorizontal","categoryContainerRef","useRef","current","scrollLeft","activeCategory","trackCategoryClick","Category","topCategory","b","ref","SiteLayoutSwitch","updateSiteLayout","trackSiteLayoutChange","SortSelect","Tag","marginLeft","discoverTranslationResult","language","selectPreferredLanguage","handleTranslationStrategyClick","isInternationalSearchLightEnabled","translatedQuery","toLocaleLowerCase","flagAndText","countryCodeIso2","swedish","foreign","getCountryCodeFromLanguage","languageCodeIso2","SearchResultsHeader","headerCategory","searchFormOpen","searchResults","preferredLanguage","headerText","showBreadcrumb","SEARCH_RESULT_PAGE","showHeading","showIntroText","isSwedishOrUndefined","showSaveSearch","hasAttributeFilters","logger","mobile","scrollMarginTop","upTo","BREAKPOINTS","MD","top","inSPA","MODALS","FILTER_MODAL","CATEGORY_MODAL","AttributeFilterTagButtons","showSearchBar","ContentDescription","introText","SortingLink","downTo","LG","filterType","FilterTags","AttributeFilterTags","PriceFilterTag","desktop","selectedName","defaultParam","selectedSorting","sortLabel","priceText","right","breadcrumbs","allCategories","showSearchForm","redirectUrl","signIn","SideMenu","fromLeft","show","TransitionGroup","component","mountOnEnter","in","zIndex","closeModalCallback","from","forwardProps","seed","performance","now","random","Date","getMilliseconds","floor","AdSenseShopping","visible","containerId","AlmostRandom","gdpr","GdprSettings","document","getElementById","offsetWidth","loadAds","searchQuery","publisherId","_googCsa","pageOptions","pubId","adtest","hl","adsafe","personalizedAds","isMarketingEnabled","linkTarget","adLoadedCallback","containerName","adsLoaded","afshblock","container","backgroundColor","AdSense","channel","args","adPage","siteLinks","lines","formatChannelString","channels","replace","composeAdsenseChannel","additionalChannels","breakpoints","isVisible","xlarge","large","createAttributeFilter","currentTagFilter","tag","activeAttributeFilter","activeFilterTags","tags","activeFilterTagString","isTagNotInTagFilter","tagFilter","SearchResultsWrapper","adSenseQuery","adSenseShoppingPublisherId","match","params","displayAllowedBuyerRegionFilter","splitTestGroups","history","searchPath","setSingleFilterValue","endpoint","hasResult","mainText","loadStatus","setLoading","setLoaded","filtersLoading","categoryName","alternativeName","rootCategoryId","c","resolveHeaderCategory","gaModalLabel","modal","setModal","displayMainText","useDispatch","newQueryParams","stripItmFromQueryParameters","formatQueryParams","toQueryParameters","fe","isEqual","afterReceiveSearchResults","fetchSearchResults","scrollToElement","scrollIntoView","pushToHistory","updateHistory","param","stripSavedQueryNameFromQueryParameters","checkForGtmTrackingOfAttributeFilter","isActiveAttributeFilter","isTagNotInAttributeFilters","redirectEmptySearchToBrowse","gotoBrowseCategory","stripCategoryIdFromQueryParameters","priceFilters","attributeFilterParameters","isAdsenseEnabled","usePortal","subContent","mainContent","noTranslate","onLoadRender","aside","classes","SEARCH","ads","AttributeModal","singleSelect","setSearch","selectedAttribute","setSelectedAttribute","filteredAttributes","autoFocus","handleInputChange","input","substr","attributes","setSelected","LayoutA","heroContent","reversed","sharedStyle","layoutInner","layoutReversed","main","backingField","toBackingField","fill","breakpoint","$","css","getCurrent","sizes","small","medium","xxlarge","siteheader","siteheaderportrait","sidebarsearch","hideCheckbox","Row","itemCount","itemSize","PriceRange","el","formElement","setMin","isNaN","setMax","currentTarget","blur","inputMinValue","inputMaxValue","lastSearchMin","lastSearchMax","minInput","querySelector","maxInput","inputs","stateHasChangedSinceStart","activeElement","loading","formElements","elements","tagName","urlParamsAsObject","acc","cur","action","qs","stringify","trigger","navigateEvent","allUrlParams","parse","ignoreQueryPrefix","reservedParams","relevantUrlParams","paramName","toString","gotoNewURL","usedSlider","algorithm","isMax","limitedMax","method","setFormReference","renderUrlParamsAsElements","inputMinLength","handleMinChange","onBlur","handleInputBlur","autoComplete","inputMaxLength","handleMaxChange","defaultValue","geometric","handleValuesChanging","onAfterChange","handleSliderInteraction","getPosition","x","getValue"],"mappings":"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","file":"script/chunks/chunk.campaign-page~category-page~cause~profile-page~search-page.a8bb55bf50.js","sourcesContent":["function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 14 14\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.66 0L14 4.8v8.24c0 .53-.43.96-.96.96H.96a.96.96 0 01-.96-.96V.96C0 .43.43 0 .96 0h7.7zm4.38 5.24L8.29.96H.96v12.08h12.08v-7.8z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.49 4.5l.74.61-.88 1.09 1.77 1.84-1.75 1.66 1.7 1.94-2 2.29-.72-.63 1.45-1.66-1.76-2 1.72-1.63-1.7-1.75zM4.33.07l.72.64L3.3 2.66l1.72 1.58-1.74 1.97 1.75 1.83L3.3 9.7 5 11.64l-2 2.29-.73-.63 1.45-1.66-1.75-2 1.71-1.63-1.7-1.77 1.7-1.93-1.72-1.58zm3.5 0l.72.64L6.8 2.66l1.72 1.58-1.74 1.97 1.75 1.83L6.8 9.7l1.7 1.94-2 2.29-.73-.63 1.45-1.66-1.75-2 1.71-1.63-1.7-1.77 1.7-1.93-1.72-1.58z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.66 0L14 5.27H9.62a.96.96 0 01-.96-.96V0zm3 4.31L9.62 2.3v2h2.04z\"\n})));","import React from 'react';\nimport CheckIcon from '@tradera/blueprint/theme/icons2/check.svg?jsx';\nimport MultiColorImage from '@tradera/blueprint/theme/icons-colored/multicolor.svg';\nimport { useTranslator } from 'tradera-lang/translate';\nimport './attribute-color.scss';\nimport { getTranslatedAttributeValue } from 'tradera-components/attributes/attribute-helper';\n\nconst multiColorStyle = {\n backgroundImage: `url(${MultiColorImage})`\n};\n\nconst getStyle = value => (value === 'multi' ? multiColorStyle : null);\n\nconst AttributeColor = ({\n attribute,\n hideAttribute,\n handleClick,\n selected,\n isDisabled = false,\n size = 'xs',\n className = ''\n}) => {\n const { t } = useTranslator();\n attribute.value = attribute.value.toLowerCase();\n const attributeValue = getTranslatedAttributeValue(\n 'af-color',\n attribute.value,\n t\n );\n return (\n {\n handleClick();\n }}\n aria-label={attributeValue}\n title={attributeValue}>\n \n {selected && (\n
\n \n
\n )}\n \n {attributeValue}\n \n );\n};\n\nexport default AttributeColor;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M3 2.5c-.6 0-1 .4-1 1v1c0 .6.4 1 1 1h1c.6 0 1-.4 1-1v-1c0-.6-.4-1-1-1zm4.5 1c-.3 0-.5.2-.5.5s.2.5.5.5h6c.3 0 .5-.2.5-.5s-.2-.5-.5-.5zM2 7.5c0-.6.4-1 1-1h1c.6 0 1 .4 1 1v1c0 .6-.4 1-1 1H3c-.6 0-1-.4-1-1zm5.5 0c-.3 0-.5.2-.5.5s.2.5.5.5h6c.3 0 .5-.2.5-.5s-.2-.5-.5-.5zm-5.5 4c0-.6.4-1 1-1h1c.6 0 1 .4 1 1v1c0 .6-.4 1-1 1H3c-.6 0-1-.4-1-1zm5.5 0c-.3 0-.5.2-.5.5s.2.5.5.5h6c.3 0 .5-.2.5-.5s-.2-.5-.5-.5z\",\n fillRule: \"evenodd\"\n})));","export default \"//static.tradera.net/touchweb/static/output/images/multicolor.45085a87.svg\";","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ArrowUpIcon from '@tradera/blueprint/theme/icons2/arrow-up.svg?jsx';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst handleClick = () => {\n window.scrollTo(0, 0);\n};\n\nconst ScrollToTopButton = ({ onClick = null }) => {\n const { t } = useTranslator();\n return (\n
\n {\n if (onClick != null) onClick();\n handleClick();\n }}>\n \n \n {t('searchResults_backToTop')}\n \n \n
\n );\n};\n\nScrollToTopButton.propTypes = {\n onClick: PropTypes.func\n};\n\nexport default ScrollToTopButton;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M2 3c0-1.1.9-2 2-2h7c.9 0 1.8.6 2 1.5.6.2 1 .8 1 1.4v1.6c0 .7-.5 1.3-1.2 1.5l-4.4.6c-.2.1-.3.2-.4.4h.5c.3 0 .5.2.5.5v6c0 .3-.2.5-.5.5h-2c-.3 0-.5-.2-.5-.5v-6c0-.3.3-.5.5-.5H7c.1-.7.6-1.1 1.2-1.3l4.4-.8c.2 0 .4-.3.4-.5V3.8c0-.1 0-.2-.1-.2-.2.8-1 1.4-1.9 1.4H4a2 2 0 01-2-2zm5 6v5h1V9zM4 2a1 1 0 00-1 1c0 .6.4 1 1 1h7c.6 0 1-.4 1-1s-.4-1-1-1z\",\n fillRule: \"evenodd\"\n})));","import {\n useBreakpoint,\n isTablet\n} from 'tradera-components/breakpoint/breakpoint';\n\nconst useIsTablet = () => isTablet(useBreakpoint());\n\nexport { useIsTablet };\n","// extracted by mini-css-extract-plugin\nexport default {\"not-clickable\":\"not-clickable--1rCHO\",\"notClickable\":\"not-clickable--1rCHO\",\"tree-item\":\"tree-item--1Z88d\",\"treeItem\":\"tree-item--1Z88d\",\"item-name\":\"item-name--3qMBC\",\"itemName\":\"item-name--3qMBC\",\"active\":\"active--1VYdI\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { formatNumber } from 'packages';\nimport { Button } from 'tradera-components/atoms/button/button';\nimport styles from './tree-item.module.scss';\n\nconst ItemContent = ({ uniqueId, name, childrenCount }) => (\n <>\n
\n {name}\n
\n {childrenCount && (\n
\n {formatNumber(childrenCount)}\n
\n )}\n \n);\n\nexport const TreeItem = ({ onClick, isNarrow, ...props }) => {\n const { id: itemId, treeId, name, url, isActive, count } = props;\n const uniqueId = `tree-item-${treeId}-${itemId}`;\n const itemClasses = `${\n isNarrow ? 'pb-1' : 'py-1'\n } d-flex justify-content-between text-inter-medium`;\n const notClickable = !url;\n\n if (notClickable) {\n return (\n \n \n \n );\n }\n\n return (\n {\n onClick(props, event);\n }\n : undefined\n }\n data-test-category-link\n aria-labelledby={uniqueId}\n className={`${styles.treeItem} ${isActive &&\n `${styles.active} font-weight-bold`} ${itemClasses} text-dark`}>\n \n \n );\n};\n\nTreeItem.propTypes = {\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n name: PropTypes.string.isRequired,\n url: PropTypes.string,\n isActive: PropTypes.bool,\n onClick: PropTypes.func,\n count: PropTypes.number\n};\n\nTreeItem.defaultProps = {\n url: null,\n isActive: false,\n onClick: null,\n count: null\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslator } from 'tradera-lang/translate';\nimport ArrowIcon from '@tradera/blueprint/theme/icons2/arrow-down.svg?jsx';\nimport { Button } from 'tradera-components/atoms/button/button';\n\nexport const ShowMoreButton = ({ children, onClick }) => {\n const { t } = useTranslator();\n return (\n \n {children ? children : t('treeNavigation_showMore')}\n \n \n );\n};\n\nShowMoreButton.propTypes = {\n onClick: PropTypes.func.isRequired,\n children: PropTypes.node\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { TreeItem } from './tree-item';\nimport { ShowMoreButton } from './show-more-button';\n\nconst MAX_VISIBLE_ITEMS = 10;\n\nexport const TreeNavigation = ({\n id: treeId,\n tree,\n isNarrow,\n onShowMoreClick,\n path,\n onItemClick,\n showMoreText\n}) => {\n const [expanded, setExpanded] = useState(false);\n\n if (!tree || tree.length === 0) {\n return null;\n }\n\n const isTopLevel = !path || path.length === 0;\n\n return (\n \n {tree.map((item, index) => {\n const {\n id: itemId,\n name,\n url,\n isActive,\n count,\n children\n } = item;\n const isHidden = index >= MAX_VISIBLE_ITEMS && !expanded;\n return (\n \n 0 ? null : count}\n />\n {children?.length > 0 && (\n // Recursively render tree by calling self\n \n )}\n \n );\n })}\n
  • \n {tree?.length > MAX_VISIBLE_ITEMS && !expanded ? (\n {\n setExpanded(true);\n if (onShowMoreClick) {\n onShowMoreClick({ path });\n }\n }}>\n {showMoreText}\n \n ) : null}\n
  • \n \n );\n};\n\nconst treeShape = {\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n name: PropTypes.string.isRequired,\n url: PropTypes.string,\n isActive: PropTypes.bool\n};\ntreeShape.children = PropTypes.arrayOf(PropTypes.shape(treeShape));\n\nTreeNavigation.propTypes = {\n id: PropTypes.string.isRequired,\n tree: treeShape.children,\n isNarrow: PropTypes.bool,\n showMoreText: PropTypes.string,\n path: PropTypes.arrayOf(PropTypes.string),\n onItemClick: PropTypes.func,\n onShowMoreClick: PropTypes.func\n};\n\nTreeNavigation.defaultProps = {\n isNarrow: false,\n path: []\n};\n","export const getCurrentPageByIndex = (pageLinks, pageIndex) =>\n pageLinks.findIndex(page => page.pageIndex === pageIndex); // Set current page to actual index (position) in pageLinks array.\n\nexport const buildPagingArray = (\n { pageIndex, pageLinks, firstPage, lastPage, pageCount },\n linksBefore = 2,\n linksAfter = 3\n) => {\n const totalPages = pageLinks.length;\n const pageArray = [\n {\n pageIndex: 1,\n pagination: firstPage,\n active: 1 === pageIndex\n }\n ];\n\n const currentPageByIndex = getCurrentPageByIndex(pageLinks, pageIndex);\n let indexStart = 1;\n let linksCountLimit = linksBefore + linksAfter + 1; // + current + page 1 (always visible)\n\n if (currentPageByIndex > linksBefore + 2) {\n pageArray.push({\n dotted: true\n });\n\n indexStart = currentPageByIndex - linksBefore;\n linksCountLimit--;\n }\n\n const indexMaxLimited = Math.min(indexStart + linksCountLimit, totalPages);\n\n if (indexMaxLimited === totalPages) {\n let itemsAfterCurrent = totalPages - currentPageByIndex;\n let canShiftBack = Math.max(linksAfter - itemsAfterCurrent, 0);\n indexStart = Math.max(indexStart - canShiftBack, 1);\n }\n\n for (let i = indexStart; i < indexMaxLimited; i++) {\n if (i === 1 && pageLinks[i].pageIndex !== 2) {\n pageArray.push({\n dotted: true\n });\n }\n pageArray.push({\n pagination: pageLinks[i],\n pageIndex: pageLinks[i].pageIndex,\n active: pageLinks[i].pageIndex === pageIndex\n });\n }\n\n if (indexMaxLimited < totalPages) {\n pageArray.push({\n dotted: true\n });\n\n pageArray.push({\n pagination: lastPage,\n pageIndex: pageCount\n });\n }\n\n return pageArray;\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter, Link } from 'react-router-dom';\nimport { Helmet } from 'react-helmet';\nimport { getCurrentPageByIndex, buildPagingArray } from './pagination-helper';\nimport { toAbsoluteUrlFromObject, toSearchString } from 'tradera-utils/url';\nimport PrevIcon from '@tradera/blueprint/theme/icons2/arrow-left.svg?jsx';\nimport NextIcon from '@tradera/blueprint/theme/icons2/arrow-right.svg?jsx';\nimport * as gtm from '../../../helpers/search-gtm';\nimport { withTranslator } from 'tradera-lang/translate';\n\nclass DiscoverPagination extends Component {\n static propTypes = {\n pagination: PropTypes.object,\n location: PropTypes.object,\n queryParams: PropTypes.object\n };\n\n getLinkValue = page => {\n const { location, queryParams } = this.props;\n if (page && location && queryParams) {\n const query = {\n ...queryParams,\n paging: page.paging,\n spage: page.pageIndex == 1 ? undefined : page.pageIndex\n };\n const url = {\n ...location,\n search: toSearchString(query)\n };\n return url;\n }\n };\n\n onLinkClicked(trackingLabel) {\n gtm.trackNavigation(trackingLabel);\n }\n\n getNavLink = direction => {\n const {\n pagination: { pageLinks, pageIndex }\n } = this.props;\n\n const currentIndex = getCurrentPageByIndex(pageLinks, pageIndex);\n const linkIndex =\n direction === 'previous' ? currentIndex - 1 : currentIndex + 1;\n const hasLink = !!pageLinks[linkIndex];\n\n if (!hasLink) {\n return null;\n }\n\n return this.getLinkValue(pageLinks[linkIndex]);\n };\n\n renderPageLinks = (pageLinks, viewClass) => {\n return pageLinks.map((link, index) => {\n return (\n \n \n this.onLinkClicked(`Page ${link.pageIndex}`)\n }>\n {link.pagination ? link.pageIndex : '...'}\n \n \n );\n });\n };\n\n render() {\n const { pagination, t } = this.props;\n if (!pagination || (pagination && pagination.pageCount < 2)) {\n return null;\n }\n\n const { pageIndex, pageCount } = pagination;\n\n const desktopPagination = buildPagingArray(pagination);\n const mobilePagination = buildPagingArray(pagination, 1, 2);\n const prevLink = this.getNavLink('previous');\n const nextLink = this.getNavLink('next');\n\n const helmetLinks = [];\n\n if (prevLink) {\n helmetLinks.push({\n rel: 'prev',\n href: toAbsoluteUrlFromObject(prevLink)\n });\n }\n if (nextLink) {\n helmetLinks.push({\n rel: 'next',\n href: toAbsoluteUrlFromObject(nextLink)\n });\n }\n\n return (\n
    \n \n \n
    \n );\n }\n}\n\nexport const DiscoverPaginationWithRouter = withRouter(DiscoverPagination);\nexport default withTranslator(withRouter(DiscoverPagination));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './accordion.scss';\n\nconst Accordion = ({ children, title }) => (\n
    \n {title && (\n
    \n {title}\n
    \n )}\n {children}\n
    \n);\n\nAccordion.propTypes = {\n children: PropTypes.node.isRequired,\n title: PropTypes.string\n};\n\nexport default Accordion;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport ArrowIcon from '@tradera/blueprint/theme/icons2/arrow-down.svg?jsx';\nimport { Button } from 'tradera-components/atoms/button/button';\n\nconst AccordionItem = ({\n className = '',\n collapsable = true,\n hideTitle = false,\n icon,\n defaultOpen,\n label,\n onChange,\n render,\n title\n}) => {\n const [accordionOpen, setAccordionOpen] = useState(defaultOpen);\n\n return (\n
    \n {hideTitle ? (\n
    {render()}
    \n ) : (\n <>\n {\n setAccordionOpen(!accordionOpen);\n if (onChange) {\n onChange(!accordionOpen); // send in the new value\n }\n }\n : null\n }>\n {icon && (\n \n {icon}\n \n )}\n \n {title}\n \n \n {label && (\n \n {label}\n \n )}\n {collapsable && (\n \n \n \n )}\n \n \n \n
    {render()}
    \n
    \n \n )}\n \n );\n};\n\nAccordionItem.propTypes = {\n className: PropTypes.string,\n collapsable: PropTypes.bool,\n hideTitle: PropTypes.bool,\n icon: PropTypes.node,\n defaultOpen: PropTypes.bool,\n label: PropTypes.node,\n onChange: PropTypes.func,\n render: PropTypes.func.isRequired,\n title: PropTypes.string\n};\n\nexport default AccordionItem;\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport PAGE_TYPES from 'tradera-constants/page-types';\nimport {\n stripPaginationFromQueryParameters,\n toSearchString\n} from 'tradera-utils/url';\nimport * as gtm from 'tradera-apps/tradera/components/discover/helpers/search-gtm';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { TreeNavigation } from 'tradera-components/tree-navigation/tree-navigation';\n\nconst mapTree = (tree, searchString) =>\n tree.map(category => ({\n ...category,\n isActive: category.status === 'active',\n url: searchString ? `${category.url}?${searchString}` : category.url,\n children:\n category.children?.length > 0\n ? mapTree(category.children)\n : category.children\n }));\n\nexport const FilterCategories = ({\n filterCategories,\n handleCategoryChange,\n handleSearchCategoryChange,\n pageType,\n queryParams\n}) => {\n const { t } = useTranslator();\n const categoryResultPage = pageType === PAGE_TYPES.CATEGORY_RESULT_PAGE;\n const onCategoryClick = useCallback(\n (category, event) => {\n let strPath = [...category.path, category.name].join(' > ');\n gtm.trackFilter('categorySelected', strPath);\n\n if (categoryResultPage) {\n handleCategoryChange(category, event);\n } else {\n event.preventDefault();\n handleSearchCategoryChange(category);\n }\n },\n [categoryResultPage, handleCategoryChange, handleSearchCategoryChange]\n );\n const onShowMoreClick = () =>\n gtm.trackFilter('categorySelected', 'Button - View all');\n\n const categories = [filterCategories?.categoryTree];\n\n if (!categories) {\n return null;\n }\n\n const searchString = categoryResultPage\n ? toSearchString(stripPaginationFromQueryParameters(queryParams))\n : null;\n const tree = mapTree(categories, searchString);\n\n return (\n
    \n \n
    \n );\n};\n\nFilterCategories.propTypes = {\n filterCategories: PropTypes.shape({\n categoryTree: PropTypes.object,\n parameter: PropTypes.string,\n type: PropTypes.string\n }).isRequired,\n handleCategoryChange: PropTypes.func,\n handleSearchCategoryChange: PropTypes.func,\n pageType: PropTypes.string.isRequired,\n queryParams: PropTypes.object.isRequired\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LoadingIcon from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\nimport { Accordion, AccordionItem } from 'tradera-components/accordion';\n\nimport { FilterCategories } from './filter-categories';\n\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst FilterCategoriesModal = ({\n filterCategories,\n handleCategoryChange,\n handleSearchCategoryChange,\n pageType,\n isUpdating,\n queryParams\n}) => {\n const { t } = useTranslator();\n return (\n <>\n
    \n {t('categoryFilterModal_title')}\n
    \n {isUpdating && (\n
    \n \n
    \n )}\n \n (\n \n )}\n />\n \n \n );\n};\n\nFilterCategoriesModal.propTypes = {\n filterCategories: PropTypes.shape({\n categoryTree: PropTypes.object,\n parameter: PropTypes.string,\n type: PropTypes.string\n }).isRequired,\n handleCategoryChange: PropTypes.func,\n handleSearchCategoryChange: PropTypes.func,\n pageType: PropTypes.string.isRequired,\n isUpdating: PropTypes.bool,\n queryParams: PropTypes.object.isRequired\n};\n\nexport default FilterCategoriesModal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport CheckIcon from '@tradera/blueprint/theme/icons2/check.svg?jsx';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport * as gtm from '../../helpers/search-gtm';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst FilterModalFooter = ({ handleModalClick, gaLabel }) => {\n const { t } = useTranslator();\n return (\n
    \n {\n gtm.trackAction(gaLabel, 'Close');\n handleModalClick('');\n }}>\n \n {t('searchFilterModal_close')}\n \n {\n gtm.trackAction(gaLabel, 'View items');\n handleModalClick('');\n }}>\n \n {t('searchFilterModal_showItems')}\n \n
    \n );\n};\n\nFilterModalFooter.propTypes = {\n handleModalClick: PropTypes.func.isRequired,\n gaLabel: PropTypes.string.isRequired\n};\n\nexport default FilterModalFooter;\n","import React, { useState } from 'react';\nimport SearchIcon from '@tradera/blueprint/theme/icons2/search.svg?jsx';\n\nconst InternalSearchForm = ({ internalSearch, handleInternalSearch }) => {\n const [searchString, setSearchString] = useState('');\n const { placeholder } = internalSearch;\n return (\n
    \n {\n e.preventDefault();\n handleInternalSearch(searchString);\n }}>\n setSearchString(e.target.value)}\n />\n \n \n
    \n );\n};\n\nexport default InternalSearchForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/* eslint react/no-danger: 0 */\nconst IntroTextContainer = ({ html }) => (\n \n);\n\nIntroTextContainer.propTypes = {\n html: PropTypes.string\n};\n\nexport default IntroTextContainer;\n","export const discounRates = [\n {\n name: 'Välj rabattsats',\n value: 0\n },\n {\n name: '-5% rabatt',\n value: 5\n },\n {\n name: '-10% rabatt',\n value: 10\n },\n {\n name: '-20% rabatt',\n value: 20\n },\n {\n name: '-30% rabatt',\n value: 30\n },\n {\n name: '-40% rabatt',\n value: 40\n },\n {\n name: '-50% rabatt',\n value: 50\n },\n {\n name: '-60% rabatt',\n value: 60\n },\n {\n name: '-70% rabatt',\n value: 70\n }\n];\n","import React, { Component, Fragment } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport uiActions from 'tradera-state/ui/actions';\nimport itemActions from 'tradera-state/items/actions';\nimport discoverActions from 'tradera-state/discover/actions';\nimport { LocalLoader } from 'tradera-components/loader';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\nimport { discounRates } from './discount-rates';\nimport { getItemDiscountQuota, postItemSettings } from '../../state/items/api';\nimport CloseIcon from '@tradera/blueprint/theme/icons/close-narrow.svg?jsx';\nimport ITEM_TYPES from 'tradera-constants/item-types';\nimport './item-settings.scss';\n\nconst calculateDiscount = (priceBeforeDiscount, discountRate) => {\n let price = Math.round(priceBeforeDiscount * (1 - discountRate / 100.0));\n if (price < 1) {\n return 1;\n }\n return price;\n};\n\nclass ItemSettings extends Component {\n constructor(props) {\n super(props);\n const { item } = props;\n this.state = {\n itemSettings: {\n onDisplay: item.onDisplay,\n price: item.price,\n priceBeforeDiscount: item.priceBeforeDiscount,\n canHaveDiscount: [\n ITEM_TYPES.PURE_BIN,\n ITEM_TYPES.SHOP_ITEM\n ].includes(item.itemType),\n hasDiscount: item.discountRate > 0,\n discountRate: item.discountRate,\n onDisplayCount: 0,\n maxOnDisplayCount: 0,\n discountCount: 0,\n maxDiscountCount: 0\n },\n isFetching: false\n };\n }\n\n async getItemSettings() {\n const { closeItemSettings, item } = this.props;\n try {\n this.setState({\n isFetching: true\n });\n const itemSettings = await getItemDiscountQuota();\n const { data } = itemSettings;\n this.setState({\n itemSettings: {\n ...this.state.itemSettings,\n onDisplay: item.onDisplay,\n price: item.price,\n priceBeforeDiscount: item.priceBeforeDiscount,\n canHaveDiscount: [\n ITEM_TYPES.PURE_BIN,\n ITEM_TYPES.SHOP_ITEM\n ].includes(item.itemType),\n hasDiscount: item.discountRate > 0,\n discountRate: item.discountRate,\n ...data\n },\n isFetching: false\n });\n } catch (error) {\n closeItemSettings();\n }\n }\n\n async saveItemSettings() {\n const {\n addItemOnDisplay,\n removeItemOnDisplay,\n item: { itemId },\n closeItemSettings,\n updateItem\n } = this.props;\n const {\n itemSettings: { onDisplay, discountRate, price }\n } = this.state;\n\n this.setState({\n isFetching: true\n });\n try {\n await postItemSettings(itemId, onDisplay, discountRate);\n\n updateItem(itemId, {\n onDisplay,\n discountRate,\n price\n });\n if (onDisplay) {\n addItemOnDisplay(itemId);\n } else {\n removeItemOnDisplay(itemId);\n }\n closeItemSettings();\n } catch (e) {\n closeItemSettings();\n }\n }\n\n handleOnDislayClick() {\n const {\n itemSettings: { onDisplayCount, onDisplay }\n } = this.state;\n const count = onDisplay ? onDisplayCount - 1 : onDisplayCount + 1;\n this.setState({\n itemSettings: {\n ...this.state.itemSettings,\n onDisplay: !onDisplay,\n onDisplayCount: count\n }\n });\n }\n\n handleDiscountChange(discountRate) {\n const {\n itemSettings: { discountCount, priceBeforeDiscount, hasDiscount }\n } = this.state;\n let count = discountCount;\n if (!hasDiscount && discountRate > 0) {\n count = count + 1;\n } else if (hasDiscount && discountRate === 0) {\n count = count - 1;\n }\n const price = calculateDiscount(priceBeforeDiscount, discountRate);\n this.setState({\n itemSettings: {\n ...this.state.itemSettings,\n price: price,\n discountRate: discountRate,\n hasDiscount: discountRate > 0 && priceBeforeDiscount !== price,\n discountCount: count\n }\n });\n }\n\n componentDidUpdate(prevProps) {\n if (\n this.props.open &&\n this.props.item &&\n this.props.item !== prevProps.item\n ) {\n const getItemSettings = async () => {\n await this.getItemSettings();\n };\n getItemSettings();\n }\n }\n\n componentWillUnmount() {\n this.props.closeItemSettings();\n }\n\n render() {\n const { open, closeItemSettings } = this.props;\n\n const { isFetching, item = {}, itemSettings } = this.state;\n\n if (open !== 'open' || !item) {\n return null;\n }\n\n const {\n onDisplay,\n price,\n canHaveDiscount,\n hasDiscount,\n discountRate,\n onDisplayCount,\n maxOnDisplayCount,\n discountCount,\n maxDiscountCount\n } = itemSettings;\n\n const onDisplayDisabled =\n onDisplayCount === maxOnDisplayCount && !onDisplay;\n\n const setDiscountDisabled =\n discountCount === maxDiscountCount && !hasDiscount;\n\n return (\n closeItemSettings()}>\n
    \n
    \n

    Verktyg för din Traderabutik

    \n closeItemSettings()}\n />\n
    \n \n {isFetching ? (\n \n \n
    \n ) : (\n \n
    \n
    \n
    \n {\n this.handleOnDislayClick();\n }}\n />\n \n {onDisplayDisabled ? (\n \n {`Max antal utvalda object uppnått (${maxOnDisplayCount})`}\n \n ) : (\n `Flytta produkten längst upp i listan (${maxOnDisplayCount -\n onDisplayCount} av ${maxOnDisplayCount}\n kvar)`\n )}\n \n
    \n
    \n
    \n {canHaveDiscount && (\n
    \n
    \n
    \n

    \n Vill du lägga till rabatt\n för denna produkt?\n

    \n \n {`(${maxDiscountCount -\n discountCount} av ${maxDiscountCount} kvar)`}\n
    \n
    \n
    \n
    \n
    \n {\n const discountRate =\n e.target\n .value;\n this.handleDiscountChange(\n parseInt(\n discountRate\n )\n );\n }}>\n {discounRates.map(\n (\n option,\n index\n ) => {\n return (\n \n {\n option.name\n }\n \n );\n }\n )}\n \n
    \n
    \n
    \n
    \n \n {price} kr\n \n
    \n {hasDiscount\n ? 'Rabatterat pris'\n : 'Nuvarande pris'}\n
    \n
    \n
    \n \n )}\n
    \n
    \n closeItemSettings()}>\n Avbryt\n \n \n this.saveItemSettings()\n }>\n Spara\n \n
    \n
    \n
    \n )}\n \n \n \n );\n }\n}\n\nItemSettings.propTypes = {\n open: PropTypes.string,\n item: PropTypes.object\n};\n\nconst mapDispatchToProps = dispatch => ({\n closeItemSettings: () => dispatch(uiActions.closeItemSettings()),\n updateItem: (itemId, item) =>\n dispatch(itemActions.updateItem({ itemId, item })),\n addItemOnDisplay: itemId =>\n dispatch(discoverActions.addItemOnDisplay({ itemId })),\n removeItemOnDisplay: itemId =>\n dispatch(discoverActions.removeItemOnDisplay({ itemId }))\n});\n\nconst mapStateToProps = state => ({\n open: state.ui.itemSettings.open,\n item: state.ui.itemSettings.item\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ItemSettings);\n","import { toSearchString } from 'tradera-utils/url';\nimport { touchWebClient } from 'tradera-utils/http';\nimport { axiosConfigs } from 'tradera-utils/api';\n\nconst ENDPOINTS = {\n SAVED_SEARCH_ADD: 'my/savedsearches/add',\n SAVED_SEARCH_NOTIFICATION: 'my/savedsearches/notification',\n SAVED_SEARCH_REMOVE: 'my/savedsearches/remove'\n};\n\nconst postWithCredentials = async (url, payload) => {\n const { data } = await touchWebClient.post(url, payload, {\n ...axiosConfigs.authenticated\n });\n return data;\n};\n\nconst saveSearch = async (savedSearchName, categoryId, queryParams) => {\n const payloadObject = {\n savedQueryName: savedSearchName,\n categoryId,\n ...queryParams\n };\n\n const payload = toSearchString(payloadObject, {\n addQueryPrefix: false\n });\n const url = ENDPOINTS.SAVED_SEARCH_ADD;\n return await postWithCredentials(url, payload);\n};\n\nconst removeSavedSearch = async savedSearchId => {\n const url = ENDPOINTS.SAVED_SEARCH_REMOVE;\n const payload = toSearchString(\n { ids: savedSearchId },\n { addQueryPrefix: false }\n );\n return await postWithCredentials(url, payload);\n};\n\nconst saveEmailNotificationEnabled = async (searchId, shouldSend) => {\n const url = ENDPOINTS.SAVED_SEARCH_NOTIFICATION;\n const payload = toSearchString(\n {\n SearchId: searchId,\n SendMail: shouldSend\n },\n {\n addQueryPrefix: false\n }\n );\n return await postWithCredentials(url, payload);\n};\n\nexport default {\n saveSearch,\n removeSavedSearch,\n saveEmailNotificationEnabled\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M3.1 1.1c.1 0 .3-.1.4-.1h9c.3 0 .5.2.5.5v13c0 .2-.1.4-.3.4-.2.1-.4.1-.5 0L8 12l-4.2 3h-.5c-.2-.1-.3-.3-.3-.5v-13c0-.1 0-.3.1-.4z\",\n fillRule: \"evenodd\"\n})));","import React, { PureComponent, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { debounce } from 'packages';\nimport { toSearchString } from 'tradera-utils/url';\nimport { isMobile } from 'tradera-utils/breakpoints';\nimport { STORAGE_KEYS, STORAGE_VALUES } from 'tradera-constants/storage';\nimport { localStore } from 'utils/storage';\nimport { withTranslator } from 'tradera-lang/translate';\nimport * as gtm from 'tradera-apps/tradera/components/discover/helpers/search-gtm';\nimport saveSearchApi from './save-search-button-api';\n\nimport BookmarkFillIcon from '@tradera/blueprint/theme/icons2/bookmark-fill.svg?jsx';\nimport BookmarkIcon from '@tradera/blueprint/theme/icons2/bookmark.svg?jsx';\nimport CloseIcon from '@tradera/blueprint/theme/icons/close-narrow.svg?jsx';\nimport InfoIcon from '@tradera/blueprint/theme/icons/info.svg?jsx';\nimport './save-search-button.scss';\n\nconst GA_CATEGORY = 'Saved Search';\n\nclass SaveSearchButton extends PureComponent {\n static propTypes = {\n queryParams: PropTypes.object.isRequired,\n searchName: PropTypes.string,\n categoryId: PropTypes.number\n };\n\n constructor(props) {\n super(props);\n this.state = {\n showSavedTooltip: false,\n showHintTooltip:\n localStore &&\n localStore.getItem(STORAGE_KEYS.SAVE_SEARCH_HINT) !==\n STORAGE_VALUES.SAVE_SEARCH_HINT_CLICKED,\n categoryId: props.queryParams.categoryId,\n emailNotificationEnabled: false,\n savedSearchId: 0,\n inProgress: false\n };\n const debounceTimeout = 600;\n this.debouncedSaveSearch = debounce(\n this.debouncedSaveSearch,\n debounceTimeout\n );\n this.debouncedRemoveSaved = debounce(\n this.debouncedRemoveSaved,\n debounceTimeout\n );\n this.debouncedNotificationChange = debounce(\n this.debouncedNotificationChange,\n debounceTimeout\n );\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.queryParams !== this.props.queryParams) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ savedSearchId: 0 });\n }\n }\n\n componentDidMount() {\n const { queryParams } = this.props;\n if (queryParams.saveSearch) {\n this.saveSearch(queryParams.q);\n }\n }\n\n handleCloseTooltip = () => {\n localStore.setItem(\n STORAGE_KEYS.SAVE_SEARCH_HINT,\n STORAGE_VALUES.SAVE_SEARCH_HINT_CLICKED\n );\n this.setState({ showHintTooltip: false });\n gtm.trackAction(`Tooltip: ${GA_CATEGORY}`, 'Closed');\n };\n\n handleCloseSavedTooltip = () => {\n this.setState({ showSavedTooltip: false });\n };\n\n async toggleEmailNotificationEnabled() {\n const { savedSearchId, emailNotificationEnabled } = this.state;\n if (savedSearchId < 1) return;\n const enabled = !emailNotificationEnabled;\n this.setState({ emailNotificationEnabled: enabled });\n this.debouncedNotificationChange(\n savedSearchId,\n enabled,\n requestedEnableStatus => {\n this.setState({\n emailNotificationEnabled: !requestedEnableStatus\n });\n }\n );\n gtm.trackAction(GA_CATEGORY, enabled ? 'Email removed' : 'Email added');\n }\n\n async debouncedNotificationChange(savedSearchId, enabled, onError) {\n const responseData = await saveSearchApi.saveEmailNotificationEnabled(\n savedSearchId,\n enabled\n );\n if (!responseData || responseData.error) {\n onError(enabled);\n }\n }\n\n handleLogin = () => {\n const { queryParams, openSignIn } = this.props;\n const query = {\n ...queryParams,\n saveSearch: 'true'\n };\n const redirectUrl = encodeURIComponent(\n `${window.location.pathname}${toSearchString(query)}`\n );\n openSignIn(redirectUrl);\n };\n\n async saveSearch() {\n const { isLoggedIn, searchName, queryParams, categoryId } = this.props;\n if (!isLoggedIn) {\n this.handleLogin();\n return;\n }\n\n this.setState({\n showSavedTooltip: true,\n showHintTooltip: false,\n emailNotificationEnabled: true,\n inProgress: true\n });\n\n this.debouncedSaveSearch(\n searchName,\n queryParams,\n categoryId,\n savedSearchId => {\n this.setState({ savedSearchId, inProgress: false });\n },\n () => {\n this.setState({ showSavedTooltip: false, inProgress: false });\n }\n );\n\n gtm.trackAction('Saved Search', 'Saved');\n }\n\n async debouncedSaveSearch(\n savedSearchName,\n queryParams,\n categoryId,\n onSuccess,\n onError\n ) {\n const responseData = await saveSearchApi.saveSearch(\n savedSearchName,\n categoryId,\n queryParams\n );\n\n if (!responseData || responseData.error) {\n onError();\n } else {\n const id =\n (responseData.ids && responseData.ids[0]) || responseData.id;\n onSuccess(id);\n }\n }\n\n async removeSaved(savedSearchId) {\n const { isLoggedIn } = this.props;\n\n if (!isLoggedIn) {\n this.handleLogin();\n return;\n }\n\n if (savedSearchId < 1) return;\n\n const savedTooltipWasVisible = this.state.showSavedTooltip;\n\n this.setState({\n showSavedTooltip: false,\n inProgress: true\n });\n\n this.debouncedRemoveSaved(\n savedSearchId,\n () => this.setState({ savedSearchId: 0, inProgress: false }),\n () => {\n this.setState({\n savedSearchId,\n showSavedTooltip: savedTooltipWasVisible,\n inProgress: false\n });\n }\n );\n\n gtm.trackAction('Saved Search', 'Removed');\n }\n\n async debouncedRemoveSaved(savedSearchId, onSuccess, onError) {\n const responseData = await saveSearchApi.removeSavedSearch(\n savedSearchId\n );\n if (!responseData || responseData.error) {\n onError();\n } else {\n onSuccess();\n }\n }\n\n handleSaveSearchClick = () => {\n const { savedSearchId } = this.state;\n\n if (savedSearchId > 0) {\n this.removeSaved(savedSearchId);\n } else {\n this.saveSearch();\n }\n };\n\n render() {\n const {\n showSavedTooltip,\n showHintTooltip,\n savedSearchId,\n emailNotificationEnabled,\n inProgress\n } = this.state;\n const { searchName, t } = this.props;\n const isSaved =\n (savedSearchId > 0 && !inProgress) ||\n (savedSearchId === 0 && inProgress);\n const shouldShowSavedTooltip = showSavedTooltip && isSaved;\n if (!searchName) return null;\n return (\n \n this.handleSaveSearchClick()}>\n {isSaved ? (\n \n \n {t('searchResults_saveSearch_saved')}\n \n ) : (\n \n \n {t('searchResults_saveSearch_save')}\n \n )}\n \n {shouldShowSavedTooltip && (\n \n
    \n \n \n \n {t(\n 'searchResults_saveSearch_savedTooltip',\n {\n searchName\n }\n )}\n \n \n {\n this.toggleEmailNotificationEnabled();\n }}\n checked={emailNotificationEnabled}\n />\n \n {t(\n 'searchResults_saveSearch_savedTooltipNotify'\n )}\n \n \n \n this.handleCloseSavedTooltip()}>\n \n \n
    \n \n )}\n {showHintTooltip && (\n this.handleCloseTooltip()}>\n
    \n \n \n

    \n {t(\n 'searchResults_saveSearch_tooltip_title'\n )}\n

    \n \n {t('searchResults_saveSearch_tooltip')}\n \n \n \n \n \n
    \n \n )}\n \n );\n }\n}\n\nexport { SaveSearchButton };\nexport default withTranslator(SaveSearchButton);\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link, withRouter } from 'react-router-dom';\nimport {\n stripPaginationFromQueryParameters,\n toSearchString\n} from 'tradera-utils/url';\nimport { useTranslator } from 'tradera-lang/translate';\nimport AttributeButton from 'tradera-components/item-card/item-card-parts/attribute-button';\nimport AttributeColor from 'tradera-components/attributes/attribute-color';\nimport AttributeModal from 'tradera-components/attributes/attribute-modal';\nimport {\n getTranslatedAttributeName,\n getTranslatedAttributeValue\n} from 'tradera-components/attributes/attribute-helper';\n\nconst numberToShow = 17;\n\nexport const AttributeFilter = ({\n attributeFilter,\n handleAttributeFilterChange,\n queryParams\n}) => {\n if (!attributeFilter) {\n return null;\n }\n\n const {\n options,\n translateOptions,\n parameter,\n selectedValues\n } = attributeFilter;\n\n return (\n
    \n \n
    \n {options.length > numberToShow && (\n \n )}\n
    \n
    \n );\n};\n\nconst AttributeList = ({\n attributeFilter,\n handleAttributeFilterChange,\n queryParams\n}) => {\n const { t } = useTranslator();\n const {\n isIndexable,\n options,\n parameter,\n presentation,\n selectedValues,\n translateOptions\n } = attributeFilter;\n return options.map((attribute, index) => {\n const selected = selectedValues.includes(attribute.value);\n const hideAttribute = index > numberToShow && !selected;\n if (presentation === 'color') {\n return (\n {\n handleAttributeFilterChange(parameter, attribute.value);\n }}\n selected={selected}\n />\n );\n } else {\n if (isIndexable && selectedValues.length < 1) {\n return (\n \n );\n } else {\n return (\n {\n handleAttributeFilterChange(\n parameter,\n attribute.value\n );\n }}\n selected={selected}\n hoverIcon={false}\n />\n );\n }\n }\n });\n};\n\nconst AttributeButtonLink = ({\n attribute,\n attributeFilter,\n hideAttribute,\n location,\n selected,\n queryParams\n}) => {\n const getLinkValue = attribute => {\n if (attribute && queryParams && location) {\n const query = {\n ...stripPaginationFromQueryParameters(queryParams),\n [attributeFilter.parameter]: attribute.value\n };\n return { ...location, search: toSearchString(query) };\n }\n };\n\n return (\n \n {attribute.name}\n \n );\n};\n\nconst AttributeLink = withRouter(AttributeButtonLink);\n\nAttributeFilter.propTypes = {\n attributeFilter: PropTypes.shape({\n name: PropTypes.string,\n options: PropTypes.array,\n parameter: PropTypes.string,\n selectedValues: PropTypes.array,\n type: PropTypes.string\n }).isRequired,\n handleAttributeFilterChange: PropTypes.func,\n queryParams: PropTypes.object.isRequired\n};\n\nconst AttributeModalButton = ({\n options,\n defaultSelected,\n parameter,\n selectAction,\n translateOptions\n}) => {\n const { t } = useTranslator();\n const [modalOpen, openModal] = useState(false);\n return (\n <>\n openModal(true)}>\n {t('searchResults_attributesFilter_showMore')}\n \n\n {modalOpen && (\n {\n selectAction(parameter, value);\n }}\n onClose={() => openModal(false)}\n translateOptions={translateOptions}\n parameter={parameter}\n />\n )}\n \n );\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport RadioSwitch from 'tradera-components/form-controls/radio-switch';\n\nexport const RadioSwitchFilter = ({\n filter = {},\n optionClasses = {},\n handleFilterChange,\n id,\n className\n}) => {\n const { parameter, selectedValue, options } = filter;\n if (!options) {\n return null;\n }\n\n return (\n
    \n {\n handleFilterChange(parameter, e);\n }}\n className={className}\n />\n
    \n );\n};\n\nRadioSwitchFilter.propTypes = {\n filter: PropTypes.object,\n optionClasses: PropTypes.object,\n handleFilterChange: PropTypes.func,\n id: PropTypes.string.isRequired\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M12.2 1h-3v1H11L9.4 3.7C8.8 3.2 8.1 3 7.2 3a4.01 4.01 0 00-.5 8v1H5.2v1h1.5v1.5h1V13h1.5v-1H7.8v-1c2-.3 3.5-2 3.5-4 0-1-.4-2-1.1-2.7l1.6-1.6v1.8h1V1zm-5 9c1.7 0 3-1.3 3-3s-1.3-3-3-3-3 1.3-3 3 1.4 3 3 3z\",\n fillRule: \"evenodd\"\n})));","import React from 'react';\nimport SaleIcon from '@tradera/blueprint/theme/icons2/sale.svg?jsx';\nimport SizeIcon from '@tradera/blueprint/theme/icons2/size.svg?jsx';\nimport ColorIcon from '@tradera/blueprint/theme/icons2/color.svg?jsx';\nimport GenderIcon from '@tradera/blueprint/theme/icons2/gender.svg?jsx';\nimport PatternIcon from '@tradera/blueprint/theme/icons2/pattern.svg?jsx';\nimport ShapeIcon from '@tradera/blueprint/theme/icons2/shape.svg?jsx';\n\nexport const getAttributeIcon = (attribute, props) => (\n \n);\n\nconst AttributeIcon = ({ attribute, className, ...otherProps }) => {\n switch (attribute) {\n case 'af-clothes_size':\n case 'af-shoe_size':\n return (\n \n );\n case 'af-color':\n case 'random_color':\n return (\n \n );\n case 'af-shoe_model':\n return (\n \n );\n case 'random_gender':\n return (\n \n );\n case 'af-pattern':\n return (\n \n );\n case 'brand':\n default:\n return (\n \n );\n }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Select = ({\n className = '',\n handleChange,\n id,\n label,\n options,\n selectClassName = '',\n selectedValue\n}) => {\n if (!options) {\n return null;\n }\n return (\n
    \n {label ? (\n \n ) : null}\n
    \n {\n handleChange(e.target.value);\n }}>\n {options.map((option, index) => (\n \n ))}\n \n
    \n
    \n );\n};\n\nSelect.propTypes = {\n className: PropTypes.string,\n handleChange: PropTypes.func,\n id: PropTypes.string,\n label: PropTypes.string,\n options: PropTypes.array,\n selectClassName: PropTypes.string,\n selectedValue: PropTypes.string\n};\n\nexport default Select;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Select from 'tradera-components/form-controls/select';\n\nexport const SelectFilter = ({\n filter = {},\n handleFilterChange,\n id,\n label,\n selectClassName\n}) => {\n const { parameter, selectedValue, options } = filter;\n if (!options) {\n return null;\n }\n\n return (\n {\n handleFilterChange(parameter, e);\n }}\n className=\"d-flex\"\n selectClassName={selectClassName}\n />\n );\n};\n\nSelectFilter.propTypes = {\n filter: PropTypes.object,\n handleFilterChange: PropTypes.func,\n id: PropTypes.string.isRequired,\n label: PropTypes.string,\n selectClassName: PropTypes.string\n};\n","import React, { Fragment, useState } from 'react';\nimport { SelectFilter } from 'tradera-apps/tradera/components/discover/components/filters/select-filter';\nimport RadioSwitch from 'tradera-components/form-controls/radio-switch';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst FilterShipTo = ({\n allowedBuyerRegions,\n county,\n handleFilterChange,\n queryParams,\n allowedBuyerRegionFilterEnabled\n}) => {\n const { t } = useTranslator();\n const allowedBuyerRegionToggleOptions = [\n { name: t('searchFilters_shipTo_buyerRegion'), value: 'buyerRegion' },\n { name: t('searchFilters_shipTo_pickUp'), value: 'pickUp' }\n ];\n const [selectedUI, setSelectedUI] = useState(queryParams.county ? 1 : 0);\n const buyerRegionElements = (\n \n );\n const countyElements = (\n \n );\n const handleToggleChange = () => {\n const currentFilter = selectedUI === 0 ? allowedBuyerRegions : county;\n handleFilterChange(currentFilter.parameter, null);\n setSelectedUI((selectedUI + 1) % 2);\n };\n const combinedUI = () => (\n \n
    \n \n
    \n
    \n {selectedUI === 0 ? buyerRegionElements : countyElements}\n
    \n );\n return allowedBuyerRegionFilterEnabled ? combinedUI() : countyElements;\n};\n\nexport default FilterShipTo;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M1.5 1c-.3 0-.5.2-.5.5v8c0 .1.1.3.1.4.2.1.3.1.4.1h6v4.5c0 .3.2.5.5.5s.5-.2.5-.5V10h6c.1 0 .3-.1.4-.1.1-.1.1-.3.1-.4v-8c0-.3-.2-.5-.5-.5zM2 9V2h12v7H8zm7.9-4.2c.2-.2.2-.5 0-.7-.3-.2-.6-.1-.8.1L7.6 5.7l-.7-.8c-.2-.2-.5-.2-.7 0s-.2.5 0 .7l1.1 1.2c.1.1.2.2.4.2.1 0 .3-.1.4-.2z\",\n fillRule: \"evenodd\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M1 8c0-3.9 3.1-7 7-7s7 3.1 7 7-3.1 7-7 7-7-3.1-7-7zm7-8C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8z\",\n fillRule: \"evenodd\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.9 10.2c.2.2.2.5 0 .7l-2.1 2c-.2.2-.5.2-.7 0l-1.9-2c-.2-.2-.2-.5 0-.7s.5-.2.7 0L6 11.3V7.6c0-.3.2-.6.5-.6s.5.3.5.6v3.7l1.2-1.1c.1-.2.4-.2.7 0zM7.1 5.8c-.2-.2-.1-.5.1-.7l2.1-2c.2-.2.5-.2.7 0l1.9 2c.2.2.2.5 0 .7s-.5.2-.7 0L10 4.7v3.8c0 .2-.2.5-.5.5S9 8.7 9 8.4V4.7L7.8 5.9c-.1.1-.4.1-.7-.1z\"\n})));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport PriceRange from 'components/price-range/price-range';\nimport { Accordion, AccordionItem } from 'tradera-components/accordion';\nimport { FilterCategories } from './categories/filter-categories';\nimport { AttributeFilter } from './attributes/attribute-filter';\nimport { RadioSwitchFilter } from './radio-switch-filter';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { getTranslatedAttributeName } from 'tradera-components/attributes/attribute-helper';\nimport * as gtm from '../../helpers/search-gtm';\nimport { getAttributeIcon } from './icon-helper';\nimport FilterShipTo from 'tradera-apps/tradera/components/discover/components/filters/filter-ship-to';\nimport ItemTypeIcon from '@tradera/blueprint/theme/icons2/auction.svg?jsx';\nimport ItemStatusIcon from '@tradera/blueprint/theme/icons2/bids.svg?jsx';\nimport SellerTypeIcon from '@tradera/blueprint/theme/icons2/user.svg?jsx';\nimport ItemConditionIcon from '@tradera/blueprint/theme/icons2/condition.svg?jsx';\nimport PriceIcon from '@tradera/blueprint/theme/icons2/price.svg?jsx';\nimport ShippingIcon from '@tradera/blueprint/theme/icons2/shipping.svg?jsx';\n\nconst SearchFilter = ({\n filters,\n filterCategories,\n filterPrice = {},\n attributeFilters = [],\n handleCategoryChange,\n handleSearchCategoryChange,\n handleFilterChange,\n handlePriceFilterChange,\n handleAttributeFilterChange,\n pageType,\n queryParams,\n attributeFiltersEnabled,\n allowedBuyerRegionFilterEnabled\n}) => {\n const { t } = useTranslator();\n const {\n itemCondition,\n sellerType,\n itemStatus,\n county,\n itemType,\n allowedBuyerRegions\n } = filters;\n const { fromPrice = {}, toPrice = {} } = filterPrice;\n return (\n <>\n \n {!filterCategories || !filterCategories.categoryTree ? null : (\n (\n \n )}\n />\n )}\n {attributeFiltersEnabled &&\n attributeFilters.map(attributeFilter => (\n \n gtm.trackAccordion(attributeFilter.parameter)\n }\n icon={getAttributeIcon(attributeFilter.parameter)}\n defaultOpen\n render={() => (\n \n )}\n />\n ))}\n gtm.trackAccordion('itemStatus')}\n icon={}\n render={() => (\n \n )}\n />\n gtm.trackAccordion('price')}\n icon={}\n render={() => (\n \n )}\n />\n gtm.trackAccordion('itemType')}\n icon={}\n render={() => (\n \n )}\n />\n gtm.trackAccordion('itemCondition')}\n icon={}\n render={() => (\n \n )}\n />\n gtm.trackAccordion('sellerType')}\n icon={}\n render={() => (\n \n )}\n />\n gtm.trackAccordion('shipTo')}\n icon={}\n render={() => (\n \n )}\n />\n \n \n );\n};\n\nSearchFilter.propTypes = {\n filterCategories: PropTypes.object,\n filterPrice: PropTypes.object,\n filters: PropTypes.object,\n handleCategoryChange: PropTypes.func,\n handleFilterChange: PropTypes.func,\n handlePriceFilterChange: PropTypes.func,\n handleSearchCategoryChange: PropTypes.func,\n pageType: PropTypes.string,\n queryParams: PropTypes.object\n};\n\nexport default SearchFilter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport RadioGroup from 'tradera-components/form-controls/radio-group';\n\nexport const SortRadioButtons = ({\n title,\n sortBy = {},\n handleFilterChange,\n id\n}) => {\n const { parameter, selectedValue, options } = sortBy;\n if (!options) {\n return null;\n }\n return (\n
    \n {title && title}\n {\n handleFilterChange(parameter, e);\n }}\n />\n
    \n );\n};\n\nSortRadioButtons.propTypes = {\n title: PropTypes.string,\n sortBy: PropTypes.object,\n handleFilterChange: PropTypes.func,\n id: PropTypes.string.isRequired\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M3 2c-.6 0-1 .4-1 1v3c0 .5.4 1 1 1h3c.5 0 1-.4 1-1V3c0-.5-.4-1-1-1zm0 7c-.6 0-1 .4-1 1v3c0 .5.4 1 1 1h3c.5 0 1-.4 1-1v-3c0-.5-.4-1-1-1zm6-6c0-.5.4-1 1-1h3c.5 0 1 .4 1 1v3c0 .5-.4 1-1 1h-3c-.6 0-1-.4-1-1zm1 6c-.6 0-1 .4-1 1v3c0 .5.4 1 1 1h3c.5 0 1-.4 1-1v-3c0-.5-.4-1-1-1z\",\n fillRule: \"evenodd\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M2 3c0-.6.4-1 1-1h10c.6 0 1 .4 1 1v10c0 .6-.4 1-1 1H3c-.6 0-1-.4-1-1z\",\n fillRule: \"evenodd\"\n})));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport uiActions from 'tradera-state/ui/actions';\nimport RadioSwitch from 'tradera-components/form-controls/radio-switch';\nimport useIsMobile from 'tradera-hooks/use-is-mobile';\n\nimport * as gtm from 'tradera-apps/tradera/components/discover/helpers/search-gtm';\nimport ListViewIcon from '@tradera/blueprint/theme/icons2/view-list.svg?jsx';\nimport GridSmallIcon from '@tradera/blueprint/theme/icons2/view-sm.svg?jsx';\nimport GridMediumIcon from '@tradera/blueprint/theme/icons2/view-md.svg?jsx';\nimport GridLargeIcon from '@tradera/blueprint/theme/icons2/view-lg.svg?jsx';\n\nconst trackItemLayoutChange = itemLayout => {\n gtm.trackFilter('Layout', itemLayout);\n};\n\nconst ItemLayoutSwitch = ({ itemLayout, className, id, updateItemLayout }) => {\n const showSmallOption = !useIsMobile();\n\n const options = [\n {\n value: 'layout-list',\n name: (\n \n \n \n )\n },\n showSmallOption\n ? {\n value: 'layout-grid',\n name: (\n \n \n \n )\n }\n : {},\n {\n value: 'layout-grid-medium',\n name: (\n \n \n \n )\n },\n {\n value: 'layout-grid-large',\n name: (\n \n \n \n )\n }\n ];\n\n return (\n {\n updateItemLayout(e);\n trackItemLayoutChange(e);\n }}\n className={className}\n />\n );\n};\n\nItemLayoutSwitch.propTypes = {\n itemLayout: PropTypes.string,\n className: PropTypes.string,\n id: PropTypes.string.isRequired\n};\n\nconst mapStateToProps = state => {\n return {\n itemLayout: state.ui.itemLayout\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n updateItemLayout: itemLayout =>\n dispatch(uiActions.updateItemLayout(itemLayout))\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ItemLayoutSwitch);\n","export const getTotalActiveFilterCount = (\n fromPrice,\n toPrice,\n attributeFilters,\n activeFilters\n) => {\n const getAttributeFilterCount = () => {\n let count = 0;\n attributeFilters.map(\n attributeFilter =>\n (count = count + attributeFilter.selectedValues.length)\n );\n return count;\n };\n\n const userSetPriceFilter =\n fromPrice && (fromPrice.value > 1 || toPrice.value < 5000);\n const totalAttributeFilters = getAttributeFilterCount();\n const totalActiveFilters =\n activeFilters.length + totalAttributeFilters + userSetPriceFilter;\n return totalActiveFilters;\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport STRINGS from 'constants/strings';\nimport PriceRange from 'components/price-range/price-range';\nimport { Accordion, AccordionItem } from 'tradera-components/accordion';\nimport LoadingIcon from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\nimport { SortRadioButtons } from '../search-results/sort/sort-radio-buttons';\nimport { AttributeFilter } from './attributes/attribute-filter';\nimport { getTranslatedAttributeName } from 'tradera-components/attributes/attribute-helper';\nimport { formatNumber } from 'packages';\nimport CONSTANTS from '../../constants/constants';\nimport ItemLayoutSwitch from '../search-results/layout/item-layout-switch';\nimport { RadioSwitchFilter } from './radio-switch-filter';\nimport { SelectFilter } from './select-filter';\nimport { useTranslator } from 'tradera-lang/translate';\nimport * as gtm from '../../helpers/search-gtm';\nimport { getTotalActiveFilterCount } from '../../helpers/filter';\nimport { getAttributeIcon } from './icon-helper';\nimport ItemTypeIcon from '@tradera/blueprint/theme/icons2/auction.svg?jsx';\nimport ItemStatusIcon from '@tradera/blueprint/theme/icons2/bids.svg?jsx';\nimport SellerTypeIcon from '@tradera/blueprint/theme/icons2/user.svg?jsx';\nimport CountyIcon from '@tradera/blueprint/theme/icons2/location.svg?jsx';\nimport ItemConditionIcon from '@tradera/blueprint/theme/icons2/condition.svg?jsx';\nimport PriceIcon from '@tradera/blueprint/theme/icons2/price.svg?jsx';\n\nconst getSelectedValue = (filter = {}) => {\n const { selectedValue } = filter;\n if (!selectedValue) {\n return '';\n }\n const selected = filter.options.find(option => {\n return option.value === selectedValue;\n });\n const activeFilter = CONSTANTS.ACTIVE_FILTER_STATES.includes(\n selected.value\n );\n return (\n \n {selected.name}\n \n );\n};\n\nconst SearchFilterModal = ({\n activeFilters,\n attributeFilters = [],\n attributeFiltersEnabled,\n filterAccordionOpen,\n filterPrice = {},\n filters,\n handleAttributeFilterChange,\n handleClearAllFilters,\n handleFilterChange,\n handlePriceFilterChange,\n isLoading,\n pageType,\n queryParams,\n totalItems\n}) => {\n const { t } = useTranslator();\n const {\n itemCondition,\n sellerType,\n itemStatus,\n county,\n itemType,\n sortBy\n } = filters;\n const { fromPrice, toPrice } = filterPrice;\n\n const totalActiveFilters = getTotalActiveFilterCount(\n fromPrice,\n toPrice,\n attributeFilters,\n activeFilters\n );\n\n return (\n <>\n
    \n {t('searchFiltersModal_title')}\n {\n gtm.trackAction('Filter menu', 'Reset');\n handleClearAllFilters();\n }}>\n {t('searchFilters_clear')}\n {totalActiveFilters > 0 && (\n \n ({totalActiveFilters})\n \n )}\n \n
    \n
    \n \n {t('searchFilters_itemsFound', {\n itemsCount: formatNumber(totalItems),\n count: totalItems\n })}\n \n
    \n {isLoading && (\n
    \n \n
    \n )}\n \n (\n
    \n \n {t('searchFilters_layout')}:\n \n \n
    \n )}\n />\n gtm.trackAccordion('sortBy')}\n defaultOpen={\n filterAccordionOpen === STRINGS.DISCOVER.FILTERS.SORTING\n }\n label={getSelectedValue(sortBy)}\n render={() => (\n \n )}\n />\n {attributeFiltersEnabled &&\n attributeFilters.map(attributeFilter => (\n \n gtm.trackAccordion(attributeFilter.parameter)\n }\n defaultOpen={\n filterAccordionOpen ===\n attributeFilter.parameter\n }\n label={\n attributeFilter.selectedValues.length > 0 && (\n \n {attributeFilter.selectedValues.length}\n \n )\n }\n icon={getAttributeIcon(attributeFilter.parameter)}\n render={() => (\n \n )}\n />\n ))}\n\n gtm.trackAccordion('itemStatus')}\n defaultOpen={\n filterAccordionOpen ===\n STRINGS.DISCOVER.FILTERS.ITEM_STATUS\n }\n label={getSelectedValue(itemStatus)}\n icon={}\n render={() => (\n \n )}\n />\n gtm.trackAccordion('price')}\n collapsable={false}\n defaultOpen\n icon={}\n render={() => (\n \n )}\n />\n gtm.trackAccordion('itemType')}\n defaultOpen={\n filterAccordionOpen ===\n STRINGS.DISCOVER.FILTERS.ITEM_TYPE\n }\n label={getSelectedValue(itemType)}\n icon={}\n render={() => (\n \n )}\n />\n gtm.trackAccordion('itemCondition')}\n defaultOpen={\n filterAccordionOpen ===\n STRINGS.DISCOVER.FILTERS.CONDITION\n }\n label={getSelectedValue(itemCondition)}\n icon={}\n render={() => (\n \n )}\n />\n gtm.trackAccordion('sellerType')}\n defaultOpen={\n filterAccordionOpen ===\n STRINGS.DISCOVER.FILTERS.SELLER_TYPE\n }\n label={getSelectedValue(sellerType)}\n icon={}\n render={() => (\n \n )}\n />\n gtm.trackAccordion('county')}\n defaultOpen={\n filterAccordionOpen === STRINGS.DISCOVER.FILTERS.COUNTY\n }\n label={getSelectedValue(county)}\n icon={}\n render={() => (\n \n )}\n />\n
    \n \n );\n};\n\nSearchFilterModal.propTypes = {\n attributeFiltersEnabled: PropTypes.bool,\n filterAccordionOpen: PropTypes.string,\n handleAttributeFilterChange: PropTypes.func,\n handleClearAllFilters: PropTypes.func,\n handleFilterChange: PropTypes.func,\n handlePriceFilterChange: PropTypes.func,\n isLoading: PropTypes.bool,\n pageType: PropTypes.string,\n queryParams: PropTypes.object\n};\n\nexport default SearchFilterModal;\n","import React from 'react';\nimport MagnifierIcon from './magnifier.svg?jsx';\n\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst ZeroResults = () => {\n const { t } = useTranslator();\n\n return (\n \n \n

    \n {t('searchResults_zeroResults_title')}\n

    \n
    \n
    \n {t('searchResults_zeroResults_hint')}\n
    \n
      \n
    • {t('searchResults_zeroResults_bullets_1')}
    • \n
    • {t('searchResults_zeroResults_bullets_2')}
    • \n
    • {t('searchResults_zeroResults_bullets_3')}
    • \n
    • {t('searchResults_zeroResults_bullets_4')}
    • \n
    \n
    \n \n );\n};\n\nexport default React.memo(ZeroResults);\n","import React, { useEffect, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { withTranslator } from 'tradera-lang/translate';\n\nimport PAGE_TYPES from 'tradera-constants/page-types';\nimport ItemCard from 'tradera-components/item-card/item-card';\nimport ItemListCard from 'tradera-components/item-card/item-list-card';\nimport { lazyLoadSettings } from 'tradera-components/item-card/config';\nimport ZeroResults from './zero-results';\nimport { DesktopAd, TabletAd, MobileAd } from './ads/search-results-ads';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport ItemsWithStitchedAds from './items-with-stiched-ads';\n\nimport itemActions from 'tradera-state/items/actions';\nimport uiActions from 'tradera-state/ui/actions';\n\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\n\nimport 'tradera-components/item-card/layout.scss';\nimport initData from 'packages/init-data';\nimport { registerLiveUpdates } from 'tradera-utils/register-live-updates';\nimport './search-results.scss';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\n\nconst SearchResults = ({\n fallbackItemsById,\n featureSwitches,\n handleOpenItemSettings,\n handleItemAttributesForFiltering,\n isShopOwnedByCurrentMember,\n itemCache,\n itemLayout,\n itemsById,\n itemsOnDisplayById,\n openQuickView,\n pageIndex,\n pageType,\n preferredCurrency,\n queryParams,\n t,\n toggleWishlist,\n updateItem,\n fallbackUrl,\n siteLayout,\n noItemsFallback,\n isLoaded\n}) => {\n const items = itemsById.map(id => itemCache[id]);\n const fallbackItems = fallbackItemsById.map(id => itemCache[id]);\n const itemsOnDisplay = itemsOnDisplayById.map(id => itemCache[id]);\n\n const { q: searchTerm } = queryParams;\n\n const adsEnabled = featureSwitches['google-ads'] === true;\n const quickViewEnabled = featureSwitches['quick-view'];\n\n const showItemsOnDisplay =\n (itemsOnDisplay && itemsOnDisplay.length > 0) ||\n isShopOwnedByCurrentMember;\n\n const isLastChanceLiveUppdatesEnabled = useIsFeatureEnabled(\n 'last-chance-live-updates'\n );\n useEffect(() => {\n if (\n pageType === PAGE_TYPES.CUSTOM_RESULT_PAGE &&\n isLastChanceLiveUppdatesEnabled\n ) {\n return registerLiveUpdates({\n url: initData.webLiveUrl,\n onConnect: socket => {\n for (let { itemId } of items) {\n socket.emit('join', `item:${itemId}`);\n }\n },\n onClientEvent: data => {\n switch (data.Type) {\n case 'ItemSold':\n case 'ItemUnSold':\n break;\n case 'AuctionLeadingBidUpdated':\n case 'IAuctionLeadingBidUpdated':\n updateItem({\n itemId: data.Event.AuctionId,\n item: {\n price: data.Event.BidAmount,\n totalBids: data.Event.NumberOfBids\n }\n });\n break;\n }\n }\n });\n }\n }, [pageType, items, updateItem, isLastChanceLiveUppdatesEnabled]);\n\n const handleQuickViewClick = useCallback(\n itemId => {\n openQuickView(itemId, itemsById);\n },\n [itemsById, openQuickView]\n );\n const handleAddToWishlist = useCallback(\n itemId => {\n GtmService.trackAction('Wishlist Item', `Add From ${pageType}`);\n toggleWishlist(itemId);\n },\n [pageType, toggleWishlist]\n );\n const handleRemoveFromWishlist = useCallback(\n itemId => {\n GtmService.trackAction('Wishlist Item', `Remove From ${pageType}`);\n toggleWishlist(itemId);\n },\n [pageType, toggleWishlist]\n );\n const handleItemAttributesForFilterClick = attribute => {\n const { name, values } = attribute;\n GtmService.trackAction('Search', 'ItemCard filter', `${name}`);\n handleItemAttributesForFiltering(name, values);\n };\n\n return (\n 20 ? 'search-results' : 'few-results'\n }`}>\n {showItemsOnDisplay && (\n
    \n
    \n
    \n

    \n Utvalda objekt\n

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n )}\n\n {items?.length > 0 || fallbackItems?.length > 0 ? (\n <>\n
    \n \n
    \n {fallbackItems?.length > 0 && (\n
    \n

    \n {t('searchResults_fallback_label', {\n searchTerm: searchTerm || ''\n })}\n

    \n \n {fallbackUrl && (\n
    \n \n {t('searchResults_fallback_link')}\n \n
    \n )}\n
    \n )}\n \n ) : (\n
    \n {noItemsFallback ? (\n noItemsFallback\n ) : (\n \n )}\n {isLoaded && (\n <>\n \n \n \n \n )}\n
    \n )}\n \n );\n};\n\nSearchResults.propTypes = {\n fallbackItemsById: PropTypes.array,\n isShopOwnedByCurrentMember: PropTypes.bool,\n itemCache: PropTypes.object.isRequired,\n itemLayout: PropTypes.string.isRequired,\n itemsById: PropTypes.array.isRequired,\n itemsOnDisplayById: PropTypes.array.isRequired,\n openQuickView: PropTypes.func.isRequired,\n pageIndex: PropTypes.number,\n pageType: PropTypes.string,\n preferredCurrency: PropTypes.object,\n queryParams: PropTypes.object,\n toggleWishlist: PropTypes.func.isRequired,\n updateItem: PropTypes.func.isRequired,\n fallbackUrl: PropTypes.string,\n noItemsFallback: PropTypes.node\n};\n\nSearchResults.defaultProps = {\n adsEnabled: false,\n noItemsFallback: null\n};\n\nconst ItemsOnDisplay = ({\n isShopOwnedByCurrentMember,\n itemsOnDisplay,\n itemLayout,\n quickViewEnabled,\n handleQuickViewClick,\n handleRemoveFromWishlist,\n handleAddToWishlist,\n handleOpenItemSettings,\n handleItemAttributesForFilterClick,\n preferredCurrency\n}) => {\n const itemsOnDisplayCards = [];\n\n const ItemCardComponent =\n itemLayout === 'layout-list' ? ItemListCard : ItemCard;\n itemsOnDisplay.map(item => {\n itemsOnDisplayCards.push(\n \n \n \n );\n });\n if (isShopOwnedByCurrentMember && itemsOnDisplayCards.length < 4) {\n for (\n let placeHolderCards = itemsOnDisplayCards.length;\n placeHolderCards < 4;\n placeHolderCards++\n ) {\n itemsOnDisplayCards.push(\n \n
    \n \n Ledig plats\n \n {placeHolderCards + 1} av 4\n \n
    \n \n );\n }\n }\n\n return itemsOnDisplayCards;\n};\n\nconst FallbackItems = ({\n fallbackItems,\n itemLayout,\n quickViewEnabled,\n handleQuickViewClick,\n handleRemoveFromWishlist,\n handleAddToWishlist,\n handleItemAttributesForFilterClick,\n preferredCurrency\n}) => {\n const fallbackItemsCards = [];\n\n const ItemCardComponent =\n itemLayout === 'layout-list' ? ItemListCard : ItemCard;\n\n fallbackItems.map(item => {\n fallbackItemsCards.push(\n \n \n \n );\n });\n\n return fallbackItemsCards;\n};\n\nconst mapStateToProps = state => {\n return {\n fallbackItemsById: state.discover.fallbackItemsById,\n featureSwitches: state.environment.featureSwitches,\n isLoggedIn: state.member.isLoggedIn,\n itemCache: state.items.cache,\n itemLayout: state.ui.itemLayout,\n siteLayout: state.ui.siteLayout,\n itemsById: state.discover.itemsById,\n itemsOnDisplayById: state.discover.itemsOnDisplayById,\n pageIndex: state.discover.pagination\n ? state.discover.pagination.pageIndex\n : null,\n preferredCurrency: state.multiCurrency.preferredCurrency,\n queryParams: state.discover.queryParams,\n fallbackUrl: state.discover.fallbackUrl\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n openQuickView: (itemId, itemIds) =>\n dispatch(\n uiActions.openQuickView({\n itemIds,\n itemId,\n openedFrom: 'Search Results'\n })\n ),\n toggleWishlist: itemId => dispatch(itemActions.wishlist(itemId)),\n updateItemLayout: itemLayout =>\n dispatch(uiActions.updateItemLayout(itemLayout)),\n updateItem: payload => dispatch(itemActions.updateItem(payload)),\n handleOpenItemSettings: item =>\n dispatch(uiActions.openItemSettings(item))\n };\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withTranslator(SearchResults));\n","import React from 'react';\nimport './show-more.scss';\n\nexport default class ShowMore extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isExpanded: false,\n fade: 'show-more--fade'\n };\n }\n\n expand = () => {\n this.setState({\n isExpanded: true,\n fade: ''\n });\n };\n\n render() {\n const { isExpanded, fade } = this.state;\n const { children } = this.props;\n\n return (\n
    \n {children}\n {!isExpanded && (\n
    \n
    \n Visa mer\n \n \n \n
    \n
    \n )}\n
    \n );\n }\n}\n","import React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\n\nimport PAGE_TYPES from 'tradera-constants/page-types';\nimport * as gtm from 'tradera-apps/tradera/components/discover/helpers/search-gtm';\nimport {\n stripPaginationFromQueryParameters,\n toSearchString\n} from 'tradera-utils/url';\n\nconst FilterCategoriesHorizontal = ({\n filterCategories,\n handleCategoryChange,\n handleSearchCategoryChange,\n pageType,\n queryParams\n}) => {\n const categoryContainerRef = useRef(null);\n useEffect(() => {\n if (categoryContainerRef.current)\n categoryContainerRef.current.scrollLeft = 0;\n }, [filterCategories]);\n\n if (!filterCategories || !filterCategories.categoryTree) {\n return null;\n }\n\n const { categoryTree, activeCategory } = filterCategories;\n const categoryResultPage = pageType === PAGE_TYPES.CATEGORY_RESULT_PAGE;\n\n const trackCategoryClick = (category, path) => {\n let strPath = [...path, category.name].join(' > ');\n gtm.trackFilter('categoryHorizontalSelected', strPath);\n };\n\n const Category = ({ categories, path, topCategory = true }) =>\n categories && categories.length > 0\n ? [...categories]\n .sort((a, b) => {\n if (a.name > b.name) {\n return 1;\n } else if (a.name < b.name) {\n return -1;\n } else {\n return 0;\n }\n })\n .map(category => (\n
    \n {categoryResultPage ? (\n {\n trackCategoryClick(category, path);\n handleCategoryChange(category, e);\n }}\n className={`btn btn-tag btn-outline-dark text-nowrap mx-1 px-2 ${topCategory &&\n 'active'}`}>\n {category.name}\n \n ) : (\n {\n trackCategoryClick(category, path);\n handleSearchCategoryChange(category);\n }}\n className={`btn btn-tag btn-outline-dark text-nowrap mr-1 px-1 ${topCategory &&\n 'active'}`}>\n {category.name}\n \n )}\n {category.children && (\n \n )}\n
    \n ))\n : null;\n\n return (\n \n \n \n );\n};\n\nexport default React.memo(FilterCategoriesHorizontal);\n\nFilterCategoriesHorizontal.propTypes = {\n filterCategories: PropTypes.shape({\n categoryTree: PropTypes.object,\n parameter: PropTypes.string,\n type: PropTypes.string\n }).isRequired,\n handleCategoryChange: PropTypes.func,\n handleSearchCategoryChange: PropTypes.func,\n pageType: PropTypes.string.isRequired,\n queryParams: PropTypes.object.isRequired\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5 3.5V7h6V3.6L15.3 8 11 12.5V9H5v3.5L.8 8z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 2c.6 0 1 .4 1 1v10c0 .6-.4 1-1 1s-1-.4-1-1V3c0-.6.4-1 1-1zm6 1.6V7h2v2h-2v3.5L9.6 8zM2 3.7L6.5 8 2 12.4V9H0V7h2z\"\n})));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport uiActions from 'tradera-state/ui/actions';\nimport RadioSwitch from 'tradera-components/form-controls/radio-switch';\nimport * as gtm from 'tradera-apps/tradera/components/discover/helpers/search-gtm';\nimport MaxWidthIcon from '@tradera/blueprint/theme/icons2/max-width.svg?jsx';\nimport MinWidthIcon from '@tradera/blueprint/theme/icons2/min-width.svg?jsx';\n\nconst trackSiteLayoutChange = siteLayout => {\n gtm.trackFilter('Site width layout', siteLayout);\n};\n\nconst SiteLayoutSwitch = ({ siteLayout, className, id, updateSiteLayout }) => {\n const options = [\n {\n value: 'site-width-default',\n name: (\n \n \n \n )\n },\n {\n value: 'site-width-full',\n name: (\n \n \n \n )\n }\n ];\n\n return (\n {\n updateSiteLayout(e);\n trackSiteLayoutChange(e);\n }}\n className={className}\n />\n );\n};\n\nSiteLayoutSwitch.propTypes = {\n siteLayout: PropTypes.string,\n className: PropTypes.string,\n id: PropTypes.string.isRequired\n};\n\nconst mapStateToProps = state => {\n return {\n siteLayout: state.ui.siteLayout\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n updateSiteLayout: siteLayout =>\n dispatch(uiActions.updateSiteLayout(siteLayout))\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SiteLayoutSwitch);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Select from 'tradera-components/form-controls/select';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst SortSelect = ({ sortBy = {}, handleFilterChange }) => {\n const { t } = useTranslator();\n const { parameter, selectedValue, options } = sortBy;\n if (!options) {\n return null;\n }\n\n return (\n {\n handleFilterChange(parameter, e);\n }}\n className=\"d-flex\"\n selectClassName=\"form-control-sm\"\n />\n );\n};\n\nSortSelect.propTypes = {\n sortBy: PropTypes.object,\n handleFilterChange: PropTypes.func\n};\n\nexport default SortSelect;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\n\nconst Tag = ({ text, onClick }) => {\n const iconStyle = {\n marginLeft: '0.5rem'\n };\n return (\n onClick()}>\n {text}\n \n \n );\n};\n\nTag.propTypes = {\n text: PropTypes.string,\n onClick: PropTypes.func\n};\n\nexport default Tag;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 17 13\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.6 9.1V3.5h1.7v5.7l1.8-1.8 1.2 1.2-3.9 3.8-3.9-3.8 1.2-1.2zM0 0h11.6v2H0zm0 4h8v2H0zm0 4h6.2v2H0z\"\n})));","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport Flag from 'tradera-components/flag/flag';\nimport { selectPreferredLanguage } from 'tradera-state/language/selectors';\nimport { getCountryCodeFromLanguage } from 'tradera-utils/languagecode';\nimport './translation-strategy.scss';\nimport { useTranslator } from 'tradera-lang/translate';\n\nexport const TranslationStrategy = ({\n discoverTranslationResult,\n language,\n handleTranslationStrategyClick\n}) => {\n const { t } = useTranslator();\n const {\n isInternationalSearchLightEnabled,\n query,\n translatedQuery\n } = discoverTranslationResult;\n const isDisabled =\n !isInternationalSearchLightEnabled ||\n !query ||\n !translatedQuery ||\n query.toLocaleLowerCase() === translatedQuery.toLocaleLowerCase();\n\n useEffect(() => {\n if (!isDisabled) {\n GtmService.trackAction('Search', 'Search Light Load', query);\n }\n }, [isDisabled, query]);\n\n if (isDisabled) {\n return null;\n }\n\n const onClick = q => {\n GtmService.trackAction(\n 'Search',\n 'Search Light Click',\n language.languageCodeIso2\n );\n handleTranslationStrategyClick(q);\n };\n\n const flagAndText = (countryCodeIso2, text) => (\n <>\n \n {text}\n \n );\n\n const swedish = flagAndText('se', translatedQuery);\n const foreign = flagAndText(\n getCountryCodeFromLanguage(language.languageCodeIso2),\n query\n );\n\n return (\n <>\n
    \n {\n onClick(translatedQuery);\n }}>\n {t('discover_searchLight_translateOnclick_new_a')} {foreign}{' '}\n {t('discover_searchLight_translateOnclick_new_b')} {swedish}\n {t('discover_searchLight_translateOnclick_new_c')}\n \n
    \n \n {t('discover_searchLight_autoTranslated')}\n \n \n );\n};\n\nexport default connect(state => ({\n discoverTranslationResult: state.discover.discoverTranslationResult,\n language: selectPreferredLanguage(state)\n}))(TranslationStrategy);\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport Sticky from 'react-stickynode';\nimport CONSTANTS from 'tradera-apps/tradera/components/discover/constants/constants';\nimport PAGE_TYPES from 'tradera-constants/page-types';\nimport STRINGS from 'constants/strings';\nimport * as gtm from 'tradera-apps/tradera/components/discover/helpers/search-gtm';\nimport { formatNumber } from 'packages';\nimport { getTotalActiveFilterCount } from '../../helpers/filter';\nimport { getAttributeIcon } from '../filters/icon-helper';\nimport {\n getTranslatedAttributeName,\n getTranslatedAttributeValue\n} from 'tradera-components/attributes/attribute-helper';\n\nimport { useTranslator, withTranslator } from 'tradera-lang/translate';\nimport uiActions from 'tradera-state/ui/actions';\nimport { selectPreferredLanguage } from 'tradera-state/language/selectors';\nimport { isSwedishOrUndefined } from 'tradera-utils/languagecode';\nimport ShowMore from 'components/show-more/show-more';\nimport Breadcrumbs from 'tradera-components/breadcrumbs/breadcrumbs';\nimport Breakpoint, {\n BREAKPOINTS\n} from 'tradera-components/breakpoint/breakpoint';\nimport FilterCategoriesHorizontal from '../filters/categories/filter-categories-horizontal';\nimport InternalSearchForm from '../internal-search-form';\nimport IntroTextContainer from './intro-text-container';\nimport ItemLayoutSwitch from './layout/item-layout-switch';\nimport SaveSearchButton from './save-search-button';\nimport SiteLayoutSwitch from './layout/site-layout-switch';\nimport SortSelect from './sort/sort-select';\nimport Tag from './tag';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport DescendingIcon from '@tradera/blueprint/theme/icons/descending.svg?jsx';\nimport ArrowDownIcon from '@tradera/blueprint/theme/icons2/arrow-down.svg?jsx';\nimport FilterIcon from '@tradera/blueprint/theme/icons2/filter.svg?jsx';\nimport TranslationStrategy from 'tradera-apps/tradera/components/discover/components/search-results/translation-strategy';\nimport { useIsTablet } from 'tradera-hooks/use-is-tablet';\nimport logger from 'packages/logger';\n\nconst SearchResultsHeader = props => {\n const {\n featureSwitches,\n handleAttributeFilterChange,\n handleTranslationStrategyClick,\n handleCategoryChange,\n handleClearAllFilters,\n handleFilterChange,\n handleInternalSearch,\n handleModalClick,\n handlePriceFilterChange,\n handleSearchCategoryChange,\n headerCategory,\n internalSearch,\n isLoggedIn,\n openSignIn,\n pageType,\n queryParams,\n searchFormOpen,\n searchResults,\n preferredLanguage,\n t\n } = props;\n\n const {\n filters = {},\n filterPrice,\n attributeFilters = [],\n totalItems,\n activeFilters = []\n } = searchResults;\n const { sortBy } = filters;\n const { fromPrice, toPrice } = filterPrice;\n const { headerText } = headerCategory;\n const searchTerm = queryParams.q;\n const userSetPriceFilter =\n fromPrice && (fromPrice.value > 1 || toPrice.value < 5000);\n\n const totalActiveFilters = getTotalActiveFilterCount(\n fromPrice,\n toPrice,\n attributeFilters,\n activeFilters\n );\n\n const attributeFiltersEnabled =\n featureSwitches['search-with-attribute-filters'];\n const showBreadcrumb = [\n PAGE_TYPES.SEARCH_RESULT_PAGE,\n PAGE_TYPES.CATEGORY_RESULT_PAGE\n ].includes(pageType);\n const showHeading = pageType !== PAGE_TYPES.CUSTOM_RESULT_PAGE;\n const showIntroText =\n pageType === PAGE_TYPES.CATEGORY_RESULT_PAGE &&\n isSwedishOrUndefined(preferredLanguage?.languageCodeIso2);\n const showSaveSearch =\n !queryParams.savedQueryName || queryParams.savedQueryName === '';\n const isTablet = useIsTablet();\n const hasAttributeFilters =\n attributeFiltersEnabled &&\n attributeFilters &&\n attributeFilters.length > 0;\n\n useEffect(() => {\n if (sortBy === undefined) {\n // sortBy should not be undefined. Log this.\n logger(\n 'sortBy should not be undefined when rendering search-result-header'\n );\n }\n }, [sortBy]);\n\n return (\n
    \n \n \n \n\n \n \n
    \n
    \n {showBreadcrumb && (\n \n )}\n\n 0 ? 'pr-1' : ''\n }`}\n onClick={() => {\n gtm.trackAction('Filter menu', 'Open');\n handleModalClick(\n CONSTANTS.MODALS.FILTER_MODAL\n );\n }}>\n \n \n {t('searchResults_filter')}\n \n {totalActiveFilters > 0 && (\n \n {totalActiveFilters}\n \n )}\n \n
    \n
    \n {\n gtm.trackAction('Category menu', 'Open');\n handleModalClick(\n CONSTANTS.MODALS.CATEGORY_MODAL\n );\n }}>\n \n {t('searchResults_categories_more')}\n \n \n \n \n
    \n {hasAttributeFilters && (\n
    \n \n
    \n )}\n
    \n
    \n {internalSearch.showSearchBar && (\n
    \n \n
    \n )}\n
    \n\n \n {showHeading && (\n <>\n
    \n \n {headerText}\n \n
    \n
    \n \n
    \n\n {showSaveSearch && (\n \n
    \n \n
    \n
    \n )}\n {showIntroText && (\n \n )}\n \n )}\n\n \n
    \n
    \n \n {t('searchResults_itemsFound', {\n itemsCount: formatNumber(totalItems),\n count: totalItems\n })}\n \n \n
    \n \n {totalActiveFilters > 0\n ? `${t('searchResults_activeFilters')}:`\n : null}\n \n
    \n
    \n \n\n \n
    \n \n {totalItems\n ? t('searchResults_itemsFound', {\n itemsCount: formatNumber(totalItems),\n count: totalItems\n })\n : t('searchResults_noItemsFound')}\n {' - '}\n \n
    \n {\n gtm.trackFilter(filterType, value);\n handleFilterChange(filterType, value);\n }}\n />\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n\n {totalActiveFilters > 0 && (\n
    \n \n {`${t('searchResults_activeFilters')}: `}\n \n {\n \n }\n {\n \n }\n {\n \n }\n {\n gtm.trackButton('Remove all filters');\n handleClearAllFilters();\n }}>\n {t('searchResults_clear')}\n \n \n
    \n )}\n
    \n );\n};\n\nSearchResultsHeader.propTypes = {\n activeFilters: PropTypes.array,\n attributeFilters: PropTypes.array,\n filterPrice: PropTypes.object,\n filters: PropTypes.object,\n handleAttributeFilterChange: PropTypes.func.isRequired,\n handleClearAllFilters: PropTypes.func.isRequired,\n handleFilterChange: PropTypes.func.isRequired,\n handleModalClick: PropTypes.func.isRequired,\n handlePriceFilterChange: PropTypes.func.isRequired,\n headerCategory: PropTypes.object,\n isLoggedIn: PropTypes.bool,\n openSignIn: PropTypes.func,\n pageType: PropTypes.string.isRequired,\n queryParams: PropTypes.object\n};\n\nconst ContentDescription = ({ introText, ...otherProps }) => {\n return introText ? (\n
    \n \n \n \n \n \n \n \n \n
    \n ) : null;\n};\n\nconst FilterTags = ({ activeFilters, handleFilterChange }) => {\n if (!activeFilters) {\n return null;\n }\n return activeFilters.map((filter, index) => {\n const { parameter, options } = filter;\n const selectedName = options.find(\n option => option.value === filter.selectedValue\n ).name;\n const defaultParam = options[0].value;\n return (\n {\n gtm.trackButton('Remove filter');\n handleFilterChange(parameter, defaultParam);\n }}\n />\n );\n });\n};\n\nconst SortingLink = ({ sortBy, handleModalClick, t }) => {\n const selectedSorting = sortBy?.options?.find(\n option => option.value === sortBy.selectedValue\n )?.name;\n\n if (!selectedSorting) return null;\n\n const sortLabel = t('searchResults_sortLabel');\n\n return (\n {\n gtm.trackLink('Go to Sorting', 'From results page');\n handleModalClick(\n CONSTANTS.MODALS.FILTER_MODAL,\n STRINGS.DISCOVER.FILTERS.SORTING\n );\n }}>\n {`- ${sortLabel}:`}\n {selectedSorting}\n \n \n );\n};\n\nconst PriceFilterTag = ({\n userSetPriceFilter,\n filterPrice,\n handlePriceFilterChange,\n t\n}) => {\n const { fromPrice, toPrice } = filterPrice;\n if (userSetPriceFilter) {\n const priceText =\n toPrice.value < 5000\n ? t('searchResults_priceFilterLabel_interval', {\n fromPrice: fromPrice.value,\n toPrice: toPrice.value\n })\n : t('searchResults_priceFilterLabel_above', {\n fromPrice: fromPrice.value\n });\n return (\n handlePriceFilterChange()} />\n );\n } else {\n return null;\n }\n};\n\nconst AttributeFilterTags = ({\n attributeFilters,\n handleAttributeFilterChange\n}) => {\n const { t } = useTranslator();\n if (!attributeFilters) {\n return null;\n }\n return attributeFilters.map(attributeFilter => {\n const { parameter, selectedValues, options = [] } = attributeFilter;\n return options.map((attribute, index) => {\n const selected = selectedValues.includes(attribute.value);\n const text = attributeFilter.translateOptions\n ? getTranslatedAttributeValue(parameter, attribute.value, t)\n : attribute.name;\n return (\n selected && (\n {\n handleAttributeFilterChange(\n parameter,\n attribute.value\n );\n }}\n />\n )\n );\n });\n });\n};\n\nconst AttributeFilterTagButtons = ({ attributeFilters, handleModalClick }) => {\n const { t } = useTranslator();\n\n if (!attributeFilters) {\n return null;\n }\n\n return attributeFilters.map(attributeFilter => (\n 0 ? 'pl-1 pr-2' : 'px-1'\n }`}\n onClick={() => {\n handleModalClick(\n CONSTANTS.MODALS.FILTER_MODAL,\n attributeFilter.parameter\n );\n }}>\n {getAttributeIcon(attributeFilter.parameter, {\n className: 'icon-before'\n })}\n {getTranslatedAttributeName(attributeFilter.parameter, t)}\n {attributeFilter.selectedValues.length > 0 && (\n \n {attributeFilter.selectedValues.length}\n \n )}\n \n ));\n};\n\nconst mapStateToProps = state => {\n return {\n breadcrumbs: state.page.breadcrumbs,\n categories: state.page.allCategories,\n featureSwitches: state.environment.featureSwitches,\n isLoggedIn: state.member.isLoggedIn,\n searchResults: state.discover,\n searchFormOpen: state.ui.showSearchForm,\n internalSearch: state.discover.internalSearch,\n queryParams: state.discover.queryParams,\n preferredLanguage: selectPreferredLanguage(state)\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n openSignIn: redirectUrl => dispatch(uiActions.signIn({ redirectUrl }))\n };\n};\n\nexport { SearchResultsHeader };\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withTranslator(SearchResultsHeader));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport { RemoveScroll } from 'react-remove-scroll';\nimport {\n EnterFrom,\n EnterFade\n} from 'tradera-components/transitions/transitions';\nimport Overlay from 'components/modals/overlay';\nimport './side-menu.scss';\n\nconst SideMenu = ({ children, fromLeft, show, onDismiss }) => (\n \n {show && (\n \n \n \n )}\n {show && (\n \n \n \n {children}\n \n \n \n )}\n \n);\n\nSideMenu.defaultProps = {\n fromLeft: true\n};\n\nSideMenu.propTypes = {\n children: PropTypes.node,\n show: PropTypes.bool,\n fromLeft: PropTypes.bool\n};\n\nexport default SideMenu;\n","export default {\n get: function() {\n let seed = 0;\n\n if (window.performance && window.performance.now) {\n seed = Math.random(window.performance.now());\n } else {\n seed = Math.random(new Date().getMilliseconds());\n }\n\n return Math.floor(Math.random(seed) * (1000000 - 0) + 0);\n }\n};\n","/**\n *\n * Description:\n * This component show AdSense for shopping ads. It's not tested to have multiple of these components on a page.\n *\n */\nimport React from 'react';\nimport AlmostRandom from 'static/script/utils/almost-random';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\nimport PropTypes from 'prop-types';\nimport { withTranslator } from 'tradera-lang/translate';\n\nclass AdSenseShopping extends React.Component {\n static propTypes = {\n searchQuery: PropTypes.string.isRequired,\n publisherId: PropTypes.string.isRequired,\n className: PropTypes.string\n };\n\n static defaultProps = {\n className: ''\n };\n\n constructor(props) {\n super(props);\n this.state = { visible: true };\n this.containerId = 'adsense-shopping-' + AlmostRandom.get();\n this.gdpr = GdprSettings;\n }\n\n componentDidMount() {\n // expand the adsense for shopping to full width of it's container.\n this.width = document.getElementById(this.containerId).offsetWidth;\n this.loadAds(this.width);\n }\n\n componentDidUpdate(prevProps) {\n const { searchQuery } = this.props;\n if (searchQuery !== prevProps.searchQuery) {\n this.loadAds(this.width);\n }\n }\n\n loadAds(width) {\n const { searchQuery, publisherId } = this.props;\n if (searchQuery && window._googCsa && width > 0) {\n const pageOptions = {\n pubId: publisherId,\n adtest: 'off',\n hl: 'sv',\n adsafe: 'medium',\n personalizedAds: this.gdpr.isMarketingEnabled(),\n query: searchQuery,\n linkTarget: '_blank',\n adLoadedCallback: (containerName, adsLoaded) => {\n if (this.containerId === containerName) {\n this.setState({ visible: adsLoaded });\n }\n }\n };\n const afshblock = {\n container: this.containerId,\n width: width,\n height: 400\n };\n window._googCsa('plas', pageOptions, afshblock);\n }\n }\n\n render() {\n const { className, t } = this.props;\n const { visible } = this.state;\n return (\n \n
    \n {t('adsenseShopping_title')}\n
    \n
    \n
    \n );\n }\n}\n\nexport default withTranslator(AdSenseShopping);\n","/**\n *\n * Description:\n * This component show AdSense for shopping ads. It's not tested to have multiple of these components on a page.\n *\n */\nimport React from 'react';\nimport AlmostRandom from 'static/script/utils/almost-random';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\nimport PropTypes from 'prop-types';\n\nclass AdSense extends React.Component {\n static propTypes = {\n channel: PropTypes.string,\n searchQuery: PropTypes.string.isRequired,\n pageIndex: PropTypes.number.isRequired,\n className: PropTypes.string\n };\n\n static defaultProps = {\n className: ''\n };\n\n constructor(props) {\n super(props);\n this.state = { visible: false };\n this.containerId = `adsense-${AlmostRandom.get()}`;\n this.gdpr = GdprSettings;\n }\n\n componentDidMount() {\n this.loadAds();\n }\n\n componentDidUpdate(prevProps) {\n const { searchQuery, pageIndex } = this.props;\n if (\n searchQuery != prevProps.searchQuery ||\n pageIndex != prevProps.pageIndex\n ) {\n this.loadAds();\n }\n }\n\n loadAds() {\n const { searchQuery, pageIndex, channel } = this.props;\n if (searchQuery && window._googCsa) {\n const pageOptions = {\n pubId: 'pub-3205607041006869',\n query: searchQuery,\n adPage: pageIndex,\n adtest: 'off',\n personalizedAds: this.gdpr.isMarketingEnabled(),\n hl: 'sv',\n adsafe: 'medium',\n siteLinks: true,\n linkTarget: '_blank',\n channel: channel,\n adLoadedCallback: (containerName, adsLoaded) => {\n if (this.containerId === containerName) {\n this.setState({ visible: adsLoaded });\n }\n }\n };\n const args = [\n 'ads',\n pageOptions,\n {\n container: this.containerId,\n number: 3,\n lines: 1\n }\n ];\n\n window._googCsa.apply(null, args);\n }\n }\n\n render() {\n const { className } = this.props;\n const { visible } = this.state;\n return (\n \n
    \n
    \n );\n }\n}\n\nexport default AdSense;\n","import breakpoints from 'static/script/utils/breakpoints';\n\n/**\n * Composes a valid string representation of channels for an adsense request,\n * trimms illeagal characters and replaces space (' ') with inderscore ('_')\n * @param {string[]} channels - array of strings representing each channel\n * @returns {string}\n */\nconst formatChannelString = channels => {\n const formattedChannels = channels.map(channel =>\n channel\n ? channel\n .toLowerCase()\n .replace(/[^a-z0-9\\s_]/g, '') // remove all illeagal characters\n .replace(/\\s+/g, '_') // replace space with _\n : null\n );\n\n return formattedChannels.join('+'); // + is the adsense channel separator\n};\n\n/**\n * Composes adsense channel from several sources\n * @param {string} pageType - e.g. browse or search\n * @param {string[]} additionalChannels\n * @returns {string}\n */\nconst composeAdsenseChannel = (pageType, additionalChannels = []) => {\n let channels = ['web'];\n\n if (breakpoints.isVisible(breakpoints.xlarge)) {\n channels.push(`${pageType}_large`);\n } else if (breakpoints.isVisible(breakpoints.large)) {\n channels.push(`${pageType}_medium`);\n } else {\n channels.push(`${pageType}_small`);\n }\n\n return formatChannelString([...channels, ...additionalChannels]);\n};\n\nexport { composeAdsenseChannel, formatChannelString };\n","import PAGE_TYPES from 'tradera-constants/page-types';\n\n/**\n * Takes current filter and a new tag, removes or adds the tag depending on if it already exists\n * @param {string[]} currentTagFilter\n * @param {string} tag\n * @returns {string[]}\n */\nconst addOrRemoveTagFilter = (currentTagFilter, tag) => {\n return currentTagFilter.includes(tag)\n ? currentTagFilter.filter(b => {\n return b !== tag;\n })\n : [...currentTagFilter, tag];\n};\n\n/**\n * Converts array to ; separated string, returns undefined if empty\n * @param {string[]} tags\n * @returns {string}\n */\nconst createTagFilterString = tags =>\n tags !== undefined && tags.length > 0 ? tags.join(';') : undefined;\n\n/**\n * take an object or a string, a filter and a value and returns object with filter set to ;-separated string of values. returns undefined if empty\n * @param {object} attributeFilters\n * @param {string} filter\n * @param {string[]} values\n * @returns {string}\n */\nconst createAttributeFilter = (attributeFilters, filter, values) => {\n const activeAttributeFilter = attributeFilters.find(\n attribute => attribute.parameter === filter\n );\n\n let activeFilterTags = [];\n if (Array.isArray(values)) {\n activeFilterTags = values;\n } else {\n activeFilterTags = addOrRemoveTagFilter(\n activeAttributeFilter.selectedValues,\n values\n );\n }\n\n const activeFilterTagString = createTagFilterString(activeFilterTags);\n return { [filter]: activeFilterTagString };\n};\n\n/**\n * Takes the attributefilters, a filter and a tag in that filter and returns if the filter and tag does NOT exist in the attributefilters (true) or if it does exist (false)\n * @param {object} attributeFilters\n * @param {object} filter\n * @param {string} tag\n * @returns {boolean}\n */\nconst isTagNotInAttributeFilters = (attributeFilters, filter, tag) => {\n const isActiveAttributeFilter = attributeFilters.find(\n attribute => attribute.parameter === filter\n );\n return (\n isActiveAttributeFilter === undefined ||\n isTagNotInTagFilter(isActiveAttributeFilter.selectedValues, tag)\n );\n};\n\n/**\n * Takes a tag and a tagfilter and returns if the tag does NOT exists in the tagfilter (true) or if it does (false)\n * @param {string} tag\n * @param {string[]} tagFilter\n * @returns {boolean}\n */\nconst isTagNotInTagFilter = (tagFilter, tag) => {\n return (\n tagFilter === undefined || tag === undefined || !tagFilter.includes(tag)\n );\n};\n\nconst resolveHeaderCategory = (\n activeCategory = {},\n categories = [],\n categoryId,\n categoryTree = {},\n introText,\n headerText,\n pageType\n) => {\n if (pageType === PAGE_TYPES.CUSTOM_RESULT_PAGE) {\n return {};\n }\n const headerCategory = {\n categoryName:\n activeCategory.alternativeName ||\n activeCategory.name ||\n categoryTree.name,\n categoryId: activeCategory.id || categoryTree.id,\n introText,\n headerText,\n rootCategoryId: categoryTree ? categoryTree.id : 0\n };\n if (!headerCategory.categoryName && categoryId) {\n const category = categories.find(c => c.id === categoryId) || {};\n headerCategory.categoryName = category.name;\n headerCategory.categoryId = category.id;\n }\n return headerCategory;\n};\n\nexport {\n createAttributeFilter,\n isTagNotInAttributeFilters,\n isTagNotInTagFilter,\n resolveHeaderCategory\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect, useDispatch } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { isEqual } from 'underscore';\n\nimport { useTranslator } from 'tradera-lang/translate';\nimport {\n Breakpoint,\n BREAKPOINTS\n} from 'tradera-components/breakpoint/breakpoint';\nimport ScrollToTopButton from 'components/shared/scroll-to-top-button';\nimport ApplicationErrorBoundary from 'tradera-components/application-error-boundary';\nimport Breadcrumbs from 'tradera-components/breadcrumbs/breadcrumbs';\nimport DiscoverPagination from '../components/search-results/pagination/discover-pagination';\nimport FilterCategoriesModal from '../components/filters/categories/filter-categories-modal';\nimport FilterModalFooter from '../components/filters/filter-modal-footer';\nimport InternalSearchForm from '../components/internal-search-form';\nimport IntroTextContainer from '../components/search-results/intro-text-container';\nimport ItemSettings from '../../../../../components/item-settings/item-settings';\nimport Loader from 'tradera-components/loader/loader';\nimport NoItemsError from 'tradera-components/errors/no-items-error';\nimport SaveSearchButton from 'tradera-apps/tradera/components/discover/components/search-results/save-search-button';\nimport SearchFilter from '../components/filters/search-filter';\nimport SearchFilterModal from '../components/filters/search-filter-modal';\nimport SearchResults from '../components/search-results/search-results';\nimport SearchResultsHeader from '../components/search-results/search-results-header';\nimport SideMenu from 'tradera-components/side-menu/side-menu';\nimport SiteSubheader from 'tradera-components/site-subheader/site-subheader';\nimport QuickView from 'tradera-components/quick-view/quick-view-modal';\n\nimport CONSTANTS from '../constants/constants';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport PAGE_TYPES from 'tradera-constants/page-types';\n\nimport WaitForConsentApiLoaded from 'tradera-components/wait-for-consent-api-loaded/wait-for-consent-api-loaded';\nimport AdsenseShopping from 'static/script/app/ads/adsense-shopping';\nimport Adsense from 'static/script/app/ads/adsense';\nimport { composeAdsenseChannel } from 'static/script/app/ui/adsense-utils';\nimport * as gtm from 'tradera-apps/tradera/components/discover/helpers/search-gtm';\n\nimport {\n formatQueryParams,\n stripCategoryIdFromQueryParameters,\n stripItmFromQueryParameters,\n stripPaginationFromQueryParameters,\n stripSavedQueryNameFromQueryParameters,\n toQueryParameters,\n toSearchString\n} from 'tradera-utils/url';\nimport {\n createAttributeFilter,\n isTagNotInAttributeFilters,\n resolveHeaderCategory\n} from './search-results-wrapper-logic';\n\nimport discoverActions from 'tradera-state/discover/actions';\nimport uiActions from 'tradera-state/ui/actions';\n\nimport '../components/search-results/search-results.scss';\nimport { selectPreferredLanguage } from 'tradera-state/language/selectors';\nimport { isSwedishOrUndefined } from 'tradera-utils/languagecode';\nimport { LayoutA } from 'tradera-apps/tradera/layout/layout-a';\nimport { getTotalActiveFilterCount } from '../helpers/filter';\n\nconst SearchResultsWrapper = ({\n adSenseQuery,\n adSenseShoppingPublisherId,\n categories,\n match: {\n params: { categoryId }\n },\n className,\n displayAllowedBuyerRegionFilter,\n featureSwitches,\n splitTestGroups,\n history,\n isLoggedIn,\n isShopOwnedByCurrentMember,\n location,\n openSignIn,\n pageType,\n searchPath,\n setSingleFilterValue,\n showHeading,\n activeFilters = [],\n attributeFilters = [],\n endpoint,\n error,\n filterCategories = {},\n filterPrice,\n filters = {},\n hasResult,\n headerText,\n internalSearch,\n introText,\n mainText,\n pagination = {},\n queryParams,\n totalItems,\n preferredLanguage,\n noItemsFallback,\n loadStatus: { isLoading, isLoaded, setLoading, setLoaded }\n}) => {\n const { categoryTree = {} } = filterCategories;\n const filtersLoading =\n (!filters || Object.keys(filters).length < 1) && isLoading;\n\n const attributeFiltersEnabled =\n featureSwitches['search-with-attribute-filters'];\n const showSaveSearch =\n !queryParams.savedQueryName || queryParams.savedQueryName === '';\n\n const headerCategory = resolveHeaderCategory(\n filterCategories.activeCategory,\n categories,\n queryParams.categoryId,\n filterCategories.categoryTree,\n introText,\n headerText,\n pageType\n );\n\n let gaModalLabel = '';\n\n const totalActiveFilters = getTotalActiveFilterCount(\n filterPrice.fromPrice,\n filterPrice.toPrice,\n attributeFilters,\n activeFilters\n );\n\n const { t } = useTranslator();\n\n const [modal, setModal] = useState({\n modalOpen: null,\n filterAccordionOpen: null\n });\n\n const displayMainText = isSwedishOrUndefined(\n preferredLanguage?.languageCodeIso2\n );\n\n const dispatch = useDispatch();\n\n // Search\n useEffect(() => {\n if (isLoaded || isLoading) return;\n setLoading();\n const newQueryParams = stripItmFromQueryParameters(\n formatQueryParams(toQueryParameters(location.search))\n );\n delete newQueryParams.fe; // Remove workaround query parameter\n if (\n !hasResult ||\n searchPath !== endpoint ||\n !isEqual(newQueryParams, queryParams)\n ) {\n dispatch(\n discoverActions.fetchSearchResults(\n searchPath,\n newQueryParams,\n pageType,\n setLoaded\n )\n );\n } else {\n dispatch(\n discoverActions.afterReceiveSearchResults(pageType, setLoaded)\n );\n }\n }, [\n dispatch,\n endpoint,\n isLoaded,\n isLoading,\n hasResult,\n location,\n pageType,\n queryParams,\n searchPath,\n setLoading,\n setLoaded\n ]);\n\n // Scroll to top on new results\n useEffect(() => {\n if (isLoading) {\n const scrollToElement = document.getElementById(\n 'scroll-to-top-anchor'\n );\n if (scrollToElement) {\n scrollToElement.scrollIntoView();\n } else {\n window.scrollTo(0, 0);\n }\n }\n }, [isLoading]);\n\n const pushToHistory = query => {\n let pathname;\n if (pageType === PAGE_TYPES.CATEGORY_RESULT_PAGE) {\n pathname = categoryId;\n } else if (pageType === PAGE_TYPES.CUSTOM_RESULT_PAGE) {\n pathname = location.pathname;\n } else {\n pathname = 'search';\n }\n history.push({\n pathname,\n search: toSearchString(query)\n });\n };\n\n const updateHistory = param => {\n const { savedQueryName, ...params } = queryParams;\n pushToHistory({\n ...formatQueryParams(\n stripPaginationFromQueryParameters(\n stripSavedQueryNameFromQueryParameters(params)\n )\n ),\n ...param\n });\n };\n\n const checkForGtmTrackingOfAttributeFilter = (\n attributeFilters,\n tag,\n attributeFilter\n ) => {\n isTagNotInAttributeFilters(attributeFilters, attributeFilter, tag) &&\n gtm.trackFilter(attributeFilter, tag);\n };\n\n const handleClearAllFilters = () => {\n const { q, categoryId } = queryParams;\n pushToHistory({\n q,\n categoryId\n });\n };\n\n const handleCategoryChange = () => {};\n\n const handleTranslationStrategyClick = q =>\n updateHistory({ q, noTranslate: true });\n\n const handleSearchCategoryChange = category => {\n if (redirectEmptySearchToBrowse()) {\n gotoBrowseCategory(category);\n } else {\n updateHistory({ categoryId: category.id || null });\n }\n };\n\n const redirectEmptySearchToBrowse = () => {\n return !queryParams?.q && pageType === PAGE_TYPES.SEARCH_RESULT_PAGE;\n };\n\n const gotoBrowseCategory = category => {\n const { ...params } = queryParams;\n const query = {\n ...stripPaginationFromQueryParameters(\n stripCategoryIdFromQueryParameters(params)\n )\n };\n history.push({\n pathname: category.url,\n search: toSearchString(query)\n });\n };\n\n const handleFilterChange = (filterType, value) => {\n gtm.trackFilter(filterType, value);\n updateHistory({ [filterType]: value });\n setSingleFilterValue(filterType, value);\n };\n\n const handlePriceFilterChange = priceFilters => {\n updateHistory({\n ['fromPrice']: priceFilters ? priceFilters.fromPrice : null,\n ['toPrice']: priceFilters ? priceFilters.toPrice : null\n });\n };\n\n const handleAttributeFilterChange = (filter, values) => {\n checkForGtmTrackingOfAttributeFilter(attributeFilters, values, filter);\n const attributeFilterParameters = createAttributeFilter(\n attributeFilters,\n filter,\n values\n );\n updateHistory(attributeFilterParameters);\n };\n\n const handleInternalSearch = query => {\n const q = query.trim();\n if (q) {\n pushToHistory({ q });\n } else {\n pushToHistory(null);\n }\n };\n\n const handleModalClick = (value, filterAccordionOpen) => {\n setModal({\n modalOpen: value,\n filterAccordionOpen: filterAccordionOpen\n });\n };\n\n const isAdsenseEnabled = () => {\n if (!featureSwitches['adsense-for-shopping']) {\n return false;\n }\n\n if (\n splitTestGroups['adsense_for_shopping_loggedin'] ===\n 'enabled_loggedin' &&\n 'enabled_loggedin' &&\n isLoggedIn\n ) {\n return true;\n } else if (\n splitTestGroups['adsense_for_shopping_loggedin'] === 'enabled_all'\n ) {\n return true;\n }\n return false;\n };\n\n if (modal.modalOpen === CONSTANTS.MODALS.FILTER_MODAL) {\n gaModalLabel = 'Filter menu';\n } else if (modal.modalOpen === CONSTANTS.MODALS.CATEGORY_MODAL) {\n gaModalLabel = 'Category menu';\n }\n\n if (!hasResult) return ;\n if (error) return ;\n\n const subContent = (\n
    \n {internalSearch && internalSearch.showSearchBar && (\n \n )}\n \n
    \n );\n\n const mainContent = (\n
    \n \n \n \n {totalItems > 0 && (\n gtm.trackNavigation('Back to top')}\n />\n )}\n {adSenseQuery && adSenseShoppingPublisherId && isAdsenseEnabled() && (\n \n (\n \n )}\n />\n \n )}\n\n {adSenseQuery &&\n isAdsenseEnabled() &&\n typeof pagination !== 'undefined' && (\n \n (\n \n )}\n />\n \n )}\n {mainText && displayMainText && (\n \n )}\n
    \n );\n\n return (\n <>\n {showHeading && (\n \n \n \n {showSaveSearch && (\n
    \n

    \n {t('searchResults_savedSearchBanner')}:\n

    \n \n
    \n )}\n
    \n
    \n )}\n \n handleModalClick('')}>\n
    \n \n \n
    \n \n handleModalClick('')}\n fromLeft={false}>\n
    \n \n \n
    \n \n
    \n \n {isShopOwnedByCurrentMember && }\n \n {!modal.modalOpen && (isLoading || filtersLoading) && (\n \n )}\n \n \n );\n};\n\nSearchResultsWrapper.propTypes = {\n adSenseQuery: PropTypes.string,\n adSenseShoppingPublisherId: PropTypes.string,\n activeFilters: PropTypes.array,\n attributeFilters: PropTypes.array,\n className: PropTypes.string,\n featureSwitches: PropTypes.object,\n filterCategories: PropTypes.object,\n hasResult: PropTypes.bool,\n history: PropTypes.object,\n isLoggedIn: PropTypes.bool,\n location: PropTypes.object,\n openSignIn: PropTypes.func.isRequired,\n pageType: PropTypes.string.isRequired,\n searchPath: PropTypes.string.isRequired,\n searchResults: PropTypes.object,\n setSingleFilterValue: PropTypes.func,\n showHeading: PropTypes.bool,\n loadStatus: PropTypes.shape({\n isLoading: PropTypes.bool,\n isLoaded: PropTypes.bool,\n setLoading: PropTypes.func,\n setLoaded: PropTypes.func\n })\n};\n\nSearchResultsWrapper.defaultProps = {\n className: '',\n searchPath: ENDPOINTS.SEARCH,\n showHeading: true\n};\n\nconst mapStateToProps = state => {\n return {\n adSenseQuery: state.ads.adSenseQuery,\n adSenseShoppingPublisherId: state.ads.adSenseShoppingPublisherId,\n categories: state.page.allCategories,\n featureSwitches: state.environment.featureSwitches,\n splitTestGroups: state.environment.splitTestGroups,\n isLoggedIn: state.member.isLoggedIn,\n searchResults: state.discover,\n activeFilters: state.discover.activeFilters,\n attributeFilters: state.discover.attributeFilters,\n endpoint: state.discover.endpoint,\n error: state.discover.error,\n filterCategories: state.discover.filterCategories,\n filterPrice: state.discover.filterPrice,\n filters: state.discover.filters,\n hasResult: state.discover.hasResult,\n headerText: state.discover.headerText,\n internalSearch: state.discover.internalSearch,\n introText: state.discover.introText,\n isShopOwnedByCurrentMember: state.discover.isShopOwnedByCurrentMember,\n mainText: state.discover.mainText,\n pagination: state.discover.pagination,\n queryParams: state.discover.queryParams,\n totalItems: state.discover.totalItems,\n displayAllowedBuyerRegionFilter:\n state.discover.displayAllowedBuyerRegionFilter,\n preferredLanguage: selectPreferredLanguage(state)\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n openSignIn: redirectUrl => dispatch(uiActions.signIn({ redirectUrl })),\n setSingleFilterValue: (filterType, value) =>\n dispatch(discoverActions.setSingleFilterValue(filterType, value))\n };\n};\n\nexport default withRouter(\n connect(mapStateToProps, mapDispatchToProps)(SearchResultsWrapper)\n);\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport AttributeList from 'tradera-components/attributes/attribute-list';\nimport SearchIcon from '@tradera/blueprint/theme/icons2/search.svg?jsx';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport { useTranslator } from 'tradera-lang/translate';\n\nimport './attribute-modal.scss';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\n\nconst AttributeModal = ({\n options,\n defaultSelected,\n onClose,\n selectAction,\n singleSelect,\n title,\n translateOptions,\n parameter\n}) => {\n const [search, setSearch] = useState('');\n const [selectedAttribute, setSelectedAttribute] = useState(defaultSelected);\n\n const { t } = useTranslator();\n\n const handleSelect = attribute => {\n if (singleSelect) {\n setSelectedAttribute([attribute]);\n } else {\n if (selectedAttribute.includes(attribute)) {\n setSelectedAttribute(\n selectedAttribute.filter(selected => selected !== attribute)\n );\n } else {\n setSelectedAttribute([...selectedAttribute, attribute]);\n }\n }\n };\n\n const handleInputChange = input => setSearch(input.substr(0, 10));\n\n const handleAttributeSave = () => {\n selectAction(selectedAttribute, !selectedAttribute.isActive);\n onClose();\n };\n\n const filteredAttributes = options\n .filter(attribute => {\n return attribute.value.toLowerCase().includes(search.toLowerCase());\n })\n .sort((a, b) => {\n if (a.value > b.value) {\n return 1;\n } else if (a.value < b.value) {\n return -1;\n } else {\n return 0;\n }\n });\n\n return (\n {\n onClose();\n }}>\n
    \n
    \n {\n onClose();\n }}>\n {t('syi_draft_editor_attribute_modalCancel')}\n \n

    \n {title}\n

    \n handleAttributeSave(selectedAttribute)}>\n {t('syi_draft_editor_attribute_modalSave')}\n \n
    \n
    \n
    \n handleInputChange(e.target.value)}\n />\n {search ? (\n setSearch('')}>\n \n \n ) : (\n \n )}\n
    \n
    \n \n
    \n \n );\n};\n\nAttributeModal.defaultProps = {\n defaultSelected: []\n};\n\nAttributeModal.propTypes = {\n options: PropTypes.array.isRequired,\n defaultSelected: PropTypes.array,\n selectAction: PropTypes.func,\n singleSelect: PropTypes.bool,\n onClose: PropTypes.func,\n title: PropTypes.string,\n translateOptions: PropTypes.bool,\n parameter: PropTypes.string\n};\n\nexport default AttributeModal;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"g\", {\n clipRule: \"evenodd\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.6 1.2c.1-.1.3-.2.4-.2h8c.1 0 .3.1.4.2l2.5 3c.1.1.1.2.1.3v10c0 .1-.1.3-.1.4-.1.1-.2.1-.4.1h-13c-.3 0-.5-.2-.5-.5v-10c0-.1 0-.2.1-.3zm.6.8L2.6 4h10.9l-1.7-2zM14 5H2v9h12z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.9 7.1c.2.2.2.5 0 .7l-3.2 3.3c-.1.1-.2.1-.4.1-.1 0-.3-.1-.4-.1L5.1 9.3c-.1-.2-.1-.5 0-.7.2-.2.5-.2.7 0l1.4 1.5 2.9-3c.2-.1.6-.1.8 0z\"\n}))));","// extracted by mini-css-extract-plugin\nexport default {\"aside\":\"aside--1rD1I\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport sharedStyle from '../layout.module.scss';\nimport style from './layout-a.module.scss';\n\nexport const LayoutA = props => {\n const {\n aside,\n mainContent,\n children,\n classes,\n heroContent,\n reversed\n } = props;\n\n return (\n <>\n {heroContent}\n
    \n
    \n {children}\n \n \n {aside}\n \n
    \n {mainContent}\n
    \n
    \n
    \n \n \n );\n};\n\nLayoutA.propTypes = {\n aside: PropTypes.node.isRequired,\n mainContent: PropTypes.node.isRequired,\n heroContent: PropTypes.node,\n classes: PropTypes.string,\n reversed: PropTypes.bool\n};\n\nLayoutA.defaultProps = {\n heroContent: null,\n classes: '',\n reversed: false\n};\n","export const getTranslatedAttributeName = (backingField, t) => {\n return t(`attributes:attribute_${toBackingField(backingField)}`);\n};\n\nexport const getTranslatedAttributeValue = (backingField, value, t) => {\n return t(\n `attributes:attribute_af-${toBackingField(backingField)}_${value}`\n );\n};\n\nconst toBackingField = backingField => {\n return backingField.toLowerCase().replace('af-', '');\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 160 146\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M94.67 77.83a2.98 2.98 0 014-.3l54.9 42.87a2.98 2.98 0 01.47 4.23l-11.18 13.7a2.98 2.98 0 01-4.21.4L84.93 93.75a2.93 2.93 0 01-.52-3.94c3.34-4.7 5.55-6.99 10.26-11.98z\",\n fill: \"#003B29\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M152.52 121.75l-54.9-42.88a1.28 1.28 0 00-1.71.13c-.15.16-.3.3-.43.46-4.42 4.67-6.52 6.9-9.69 11.33-.36.51-.27 1.23.24 1.66l53.7 44.98a1.27 1.27 0 001.82-.17l11.17-13.7a1.27 1.27 0 00-.2-1.82zM98.67 77.53a2.98 2.98 0 00-4 .3l-.45.48c-4.4 4.66-6.58 6.96-9.81 11.5a2.93 2.93 0 00.53 3.94l53.7 44.98a2.98 2.98 0 004.22-.4l11.18-13.7a2.98 2.98 0 00-.47-4.22l-54.9-42.88z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M87.33 43.88c0 24.23-19.55 43.88-43.66 43.88C19.55 87.76 0 68.1 0 43.88 0 19.64 19.55 0 43.67 0c24.11 0 43.66 19.64 43.66 43.88z\",\n fill: \"#F5F5F5\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M43.67 86.06c23.17 0 41.96-18.88 41.96-42.18S66.83 1.7 43.67 1.7C20.5 1.7 1.7 20.58 1.7 43.88s18.8 42.18 41.97 42.18zm0 1.7c24.11 0 43.66-19.65 43.66-43.88C87.33 19.64 67.78 0 43.67 0 19.55 0 0 19.64 0 43.88 0 68.1 19.55 87.76 43.67 87.76z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M153.2 121.84a1.35 1.35 0 012.36 1.14l-1.58 7.55-5.78 6.67-6.35 2.85a1.5 1.5 0 01-1.77-2.32l13.12-15.88z\",\n fill: \"#FEF880\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M153.97 130.53l1.6-7.55a1.35 1.35 0 00-2.37-1.14l-13.12 15.89a1.5 1.5 0 001.77 2.32l6.35-2.86 5.77-6.66zm-6.8 5.27l5.23-6.05 1.2-5.73-11.66 14.12 5.23-2.34z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M152.25 129.62l3.18 1.1a4.25 4.25 0 012.59 2.53l1.45 3.9c.33.86.15 1.84-.45 2.55l-1.1 1.27a2.55 2.55 0 01-2.9.7l-3.69-1.52a4.24 4.24 0 01-1.7-1.28l-2.6-3.25 5.22-6z\",\n fill: \"#003B29\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M156.63 139.86l1.1-1.27a.85.85 0 00.15-.85l-1.45-3.9a2.55 2.55 0 00-1.56-1.51l-2.09-.73-3.53 4.07 1.7 2.14c.28.34.63.6 1.03.76l3.69 1.52c.34.14.73.05.96-.23zm-9.6-4.24l2.6 3.25a4.24 4.24 0 001.7 1.28l3.69 1.51a2.55 2.55 0 002.9-.7l1.1-1.26a2.55 2.55 0 00.45-2.56l-1.45-3.9a4.25 4.25 0 00-2.59-2.52l-3.18-1.1-5.21 6z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.9 57.37c0 5.75-4.43 10.41-9.88 10.41-5.46 0-9.89-4.66-9.89-10.4 0-5.76 4.43-10.42 9.88-10.42 5.46 0 9.88 4.66 9.88 10.41z\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M83.8 64.76a.85.85 0 01.18 1.19l-5.72 7.75-6.9 7a.85.85 0 11-1.2-1.19l6.8-6.91 5.65-7.66a.85.85 0 011.19-.18z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M81.21 70.4c.36-.4.96-.47 1.4-.16l9.94 6.97c.5.36.6 1.08.2 1.55l-.75.9 1.35 1.04-4.63 5.2-1.2-.88-1.4 1.69a1.06 1.06 0 01-1.51.13l-9.42-8.1a1.06 1.06 0 01-.1-1.52l6.12-6.82z\",\n fill: \"#FEF880\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M88.48 83.61l2.39-2.68-1.3-1L91 78.2l-8.91-6.25-5.3 5.92 8.42 7.25 2.02-2.44 1.24.93zm.23 2.3l-1.2-.9-1.4 1.7a1.06 1.06 0 01-1.5.13l-9.42-8.1a1.06 1.06 0 01-.1-1.52l6.12-6.82c.36-.4.96-.47 1.4-.16l9.94 6.97a1.06 1.06 0 01.2 1.55l-.75.9 1.35 1.04-4.63 5.2z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M160 143.75c0 1.23-7.95 2.23-17.74 2.23s-17.75-1-17.75-2.23c0-1.24 7.95-2.23 17.75-2.23s17.74 1 17.74 2.23z\",\n fill: \"#EDEAEA\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M4.9 2.5c-.2-.2-.5-.2-.8 0L1.8 4.3c-.3.1-.4.5-.3.8l.9 2.8c.1.3.3.5.6.5h1.8V6.7c0-1 .8-1.7 1.7-1.8h.9c0-.2-.1-.5-.3-.6zM3.1 9.4h1.8v.9c0 1 .8 1.7 1.8 1.7h2c-.4 1.1.3 2.5 1.6 2.5h3.5c1.4 0 2.1-1.6 1.5-2.7l-1.8-3.3c-.3-.6-.9-.9-1.5-.9v-.9c0-1-.8-1.7-1.8-1.7H8.5c0-.5-.2-1.1-.7-1.4L5.5 1.7c-.6-.4-1.4-.4-2 0L1.2 3.5C.6 3.9.4 4.7.6 5.4l.9 2.8c.2.7.8 1.2 1.6 1.2zm2.8.9V6.7c0-.4.3-.7.7-.7h3.7c.4 0 .7.3.7.7v1.2c-.2.2-.4.4-.6.7L9.1 11H6.7c-.5 0-.8-.3-.8-.7zm5.5-1.4c.3-.5 1-.5 1.2 0l1.8 3.3c.3.6-.1 1.3-.6 1.3h-3.5c-.5 0-.9-.6-.6-1.3z\",\n fillRule: \"evenodd\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M2 3c0-.6.4-1 1-1h1.2c.6 0 1 .4 1 1v1.2c0 .6-.4 1-1 1H3c-.6 0-1-.4-1-1zm0 4.4c0-.6.4-1 1-1h1.2c.6 0 1 .4 1 1v1.2c0 .6-.4 1-1 1H3c-.6 0-1-.4-1-1zm1 3.4c-.6 0-1 .4-1 1V13c0 .6.4 1 1 1h1.2c.6 0 1-.4 1-1v-1.2c0-.6-.4-1-1-1zM6.4 3c0-.6.4-1 1-1h1.2c.6 0 1 .4 1 1v1.2c0 .6-.4 1-1 1H7.4c-.6 0-1-.4-1-1zm1 3.4c-.6 0-1 .4-1 1v1.2c0 .6.4 1 1 1h1.2c.6 0 1-.4 1-1V7.4c0-.6-.4-1-1-1zm-1 5.4c0-.6.4-1 1-1h1.2c.6 0 1 .4 1 1V13c0 .6-.4 1-1 1H7.4c-.6 0-1-.4-1-1zM11.8 2c-.6 0-1 .4-1 1v1.2c0 .6.4 1 1 1H13c.6 0 1-.4 1-1V3c0-.6-.4-1-1-1zm-1 5.4c0-.6.4-1 1-1H13c.6 0 1 .4 1 1v1.2c0 .6-.4 1-1 1h-1.2c-.6 0-1-.4-1-1zm1 3.4c-.6 0-1 .4-1 1V13c0 .6.4 1 1 1H13c.6 0 1-.4 1-1v-1.2c0-.6-.4-1-1-1z\",\n fillRule: \"evenodd\"\n})));","import $ from 'jquery';\n\n// Use tradera-utils/breakpoints instead!\n\n//TODO - Change this to use media query events.\nfunction isVisible(breakpoint) {\n return $(breakpoint).css('display') === 'block';\n}\nfunction getCurrent() {\n let sizes = ['xxlarge', 'xlarge', 'large', 'medium', 'small'];\n for (let i = 0; i < sizes.length; i++) {\n let breakpoint = '#breakpoint-' + sizes[i];\n if (isVisible(breakpoint)) {\n return sizes[i];\n }\n }\n}\n\nexport default {\n isVisible: isVisible,\n getCurrent: getCurrent,\n small: '#breakpoint-small',\n medium: '#breakpoint-medium',\n large: '#breakpoint-large',\n xlarge: '#breakpoint-xlarge',\n xxlarge: '#breakpoint-xxlarge',\n siteheader: '#breakpoint-siteheader',\n siteheaderportrait: '#breakpoint-siteheaderportrait',\n sidebarsearch: '#breakpoint-sidebarsearch'\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FixedSizeList as List } from 'react-window';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { getTranslatedAttributeValue } from 'tradera-components/attributes/attribute-helper';\n\nconst AttributeList = ({\n attributes,\n hideCheckbox = false,\n selected,\n setSelected,\n parameter,\n translateOptions\n}) => {\n const { t } = useTranslator();\n\n const Row = ({ index, style }) => (\n \n \n \n {translateOptions\n ? getTranslatedAttributeValue(\n parameter,\n attributes[index].value,\n t\n )\n : attributes[index].name\n ? attributes[index].name\n : attributes[index].value}\n \n {\n setSelected(attributes[index].value);\n }}\n />\n \n \n );\n\n return (\n
    \n {attributes.length > 0 ? (\n \n {({ height, width }) => (\n \n {Row}\n \n )}\n \n ) : (\n
    \n
    \n Inga resultat\n
    \n
    \n )}\n
    \n );\n};\n\nAttributeList.defaultProps = {\n selected: []\n};\n\nAttributeList.propTypes = {\n attributes: PropTypes.array,\n selected: PropTypes.array,\n setSelected: PropTypes.func\n};\n\nexport default AttributeList;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.5 3.3l.8-.8.7.8-1.3 1.4.7.7L6.7 4l.8.8-.8.8.7.7.8-.8.8.8-1.3 1.4.7.7L9.7 7l.8.8-.8.7.7.7.8-.8.8.8-.1.1c-.4.4-.9 1-1.2 1.3l.7.7c.3-.3.8-.8 1.2-1.3l.1-.1.7.8-.8.8.7.7.8-.8.4.4-2.7 2.7L1.4 4.1l2.7-2.7.4.4-.7.8.7.7zm.7-2.2l.4.4.4.3L7.1 3l.4.4 1.1 1.1.4.4 1 1 .4.4 1.1 1.1.4.4L13 8.9l.4.4 1.1 1.1.4.4.4.4c.4.4.4 1 0 1.4l-2.7 2.7c-.4.4-1 .4-1.4 0L.7 4.8c-.4-.4-.4-1 0-1.4L3.4.7c.4-.4 1-.4 1.4 0l.4.4z\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n})));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Range } from 'rc-slider';\nimport geometric from '../rc-slider/geometric';\nimport qs from 'qs';\nimport Spinner from 'components/spinner/spinner';\nimport { withTranslator } from 'tradera-lang/translate';\nimport * as gtm from 'tradera-apps/tradera/components/discover/helpers/search-gtm';\n\nimport 'components/rc-slider/rc-slider.scss';\nimport './slider-horizontal.scss';\n\n// TOOD: Rename component to \"range\"? To avoid confusion with the price-slider container\n\nclass PriceRange extends React.Component {\n constructor(props) {\n super(props);\n this.navigateEvent = props.navigateEvent;\n this.state = {\n //set starting position for handle\n usedSlider: false,\n min: props.handleStart || 1,\n max: props.handleEnd || '',\n loading: false,\n lastSearchMin: props.handleStart || 1,\n lastSearchMax:\n props.handleEnd === props.rangeEnd ? null : props.handleEnd\n };\n this.formElement = null;\n }\n\n setFormReference = el => {\n this.formElement = el;\n };\n\n /**\n * @description Handles min value changing in price slider\n * @param {object} event syntehtic event contains value `event.target.value`\n * @memberof PriceRange\n */\n handleMinChange = event => {\n this.setMin(event.target.value);\n };\n\n setMin = value => {\n let min = value;\n if (min === '' || isNaN(min)) {\n min = min === '' ? 1 : this.state.min;\n } else {\n min = parseInt(min, 10);\n }\n this.setState({\n min\n });\n return min;\n };\n\n /**\n * @description Handles max value changing in price slider\n * @param {object} event syntehtic event contains value `event.target.value`\n * @memberof PriceRange\n */\n handleMaxChange = event => {\n const max = this.setMax(event.target.value);\n if (max > 4999) {\n event.currentTarget.blur();\n }\n };\n\n setMax = value => {\n const { rangeEnd } = this.props;\n let max = value;\n if (max === '' || isNaN(max)) {\n max = max === '' ? rangeEnd : this.state.max;\n } else {\n max = parseInt(max, 10);\n }\n max = Math.min(max, 5000);\n this.setState({\n max\n });\n return max;\n };\n\n stateHasChangedSinceStart = (inputMinValue, inputMaxValue) => {\n return (\n inputMinValue !== this.state.lastSearchMin ||\n inputMaxValue !== this.state.lastSearchMax\n );\n };\n\n gotoNewURL = (min, max) => {\n const { handlePriceFilterChange } = this.props;\n\n const minInput = this.formElement.querySelector('.price-range__min');\n const maxInput = this.formElement.querySelector('.price-range__max');\n const inputs = [minInput, maxInput];\n\n // Get values from inputs if not provided as arguments\n let values = [\n min === undefined ? parseInt(minInput.value, 10) : min,\n max === undefined ? parseInt(maxInput.value, 10) : max\n ];\n if (!this.stateHasChangedSinceStart(...values)) {\n return;\n }\n\n for (let index = 0; index < inputs.length; index++) {\n if (document.activeElement === inputs[index]) {\n return;\n }\n }\n\n const search = () => {\n const formElements = Array.from(this.formElement.elements);\n const inputs = formElements.filter(el => {\n return el.tagName.toLocaleLowerCase() === 'input';\n });\n\n const urlParamsAsObject = inputs.reduce((acc, cur) => {\n if (cur.value) {\n // Only keep params with value\n acc[cur.name] = cur.value;\n }\n return acc;\n }, {});\n\n if (handlePriceFilterChange) {\n handlePriceFilterChange(urlParamsAsObject);\n gtm.trackPriceFilter(\n urlParamsAsObject.fromPrice,\n urlParamsAsObject.toPrice\n );\n this.setState({\n lastSearchMin: parseInt(urlParamsAsObject['fromPrice'], 10),\n lastSearchMax:\n parseInt(urlParamsAsObject['toPrice'], 10) || null,\n loading: false\n });\n } else {\n const url =\n this.formElement.action +\n '?' +\n qs.stringify(urlParamsAsObject);\n\n $(document).trigger(this.navigateEvent, { href: url }); // TODO: Change to a regular event when we support it\n }\n };\n\n this.setState({\n loading: true\n });\n setTimeout(search, 1); // Hack to make sure its called after the handleValuesChanging::setState\n };\n\n handleValuesChanging = ([min, max]) => {\n this.setMin(min);\n this.setMax(max);\n };\n\n renderUrlParamsAsElements = () => {\n const allUrlParams = qs.parse(window.location.search, {\n ignoreQueryPrefix: true\n });\n const reservedParams = ['fromPrice', 'toPrice'];\n\n if (Object.keys(allUrlParams).length > 0) {\n const relevantUrlParams = Object.keys(allUrlParams).filter(\n paramName => {\n return reservedParams.indexOf(paramName) < 0;\n }\n );\n return relevantUrlParams.map(paramName => {\n return (\n \n );\n });\n }\n };\n\n inputMinLength = () => {\n return '0' === this.state.min.toString().length\n ? 1\n : this.state.min.toString().length;\n };\n\n inputMaxLength = () => {\n return '0' === this.state.max.toString().length\n ? 1\n : this.state.max.toString().length;\n };\n\n handleInputBlur = () => {\n if (this.navigateEvent || this.props.handlePriceFilterChange) {\n this.gotoNewURL();\n }\n };\n\n handleSliderInteraction = ([min, max]) => {\n const { handleStart, handleEnd, handlePriceFilterChange } = this.props;\n if (this.navigateEvent || handlePriceFilterChange) {\n // Check it values differ from what is currently set\n if (handleStart !== min || handleEnd !== max) {\n this.gotoNewURL(min, max);\n }\n }\n };\n\n componentDidUpdate(prevProps) {\n // Update min and max values when updated through props\n if (prevProps.handleStart !== this.props.handleStart) {\n this.setMin(this.props.handleStart);\n }\n if (prevProps.handleEnd !== this.props.handleEnd) {\n this.setMax(this.props.handleEnd);\n }\n }\n\n render() {\n const {\n algorithm,\n rangeStart,\n rangeEnd,\n handleStart,\n handleEnd,\n t\n } = this.props;\n const { min, max } = this.state;\n const isMax = max >= rangeEnd;\n const limitedMax = isMax ? rangeEnd : max;\n\n return (\n \n {this.renderUrlParamsAsElements()}\n {this.state.loading && (\n \n )}\n \n \n \n {t('priceRange_price')}\n \n \n \n {!isMax ? (\n \n {t('priceRange_price')}{' '}\n {max === rangeEnd ? '+' : ''}\n \n ) : (\n ''\n )}\n \n \n
    \n \n
    \n \n );\n }\n}\n\nPriceRange.propTypes = {\n handleStart: PropTypes.number.isRequired,\n handleEnd: PropTypes.number.isRequired,\n handlePriceFilterChange: PropTypes.func,\n rangeStart: PropTypes.number.isRequired,\n rangeEnd: PropTypes.number.isRequired,\n algorithm: PropTypes.object,\n navigateEvent: PropTypes.string\n};\n\n// export default PriceRange;\nexport { PriceRange };\nexport default withTranslator(PriceRange);\n","export default {\n getPosition(x, min, max) {\n return (max / (max - min)) ** 0.5 * ((x - min) / max) ** 0.5 * 100;\n },\n\n getValue(x, min, max) {\n return Math.floor((x / 100) ** 2 * (max - min)) + min;\n }\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"layout-reversed\":\"layout-reversed--1CYE2\",\"layoutReversed\":\"layout-reversed--1CYE2\",\"layout-inner\":\"layout-inner--3Vhpo\",\"layoutInner\":\"layout-inner--3Vhpo\",\"aside\":\"aside--1BJT0\",\"main\":\"main--1_vGx\"};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 34 34\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 2c4.14 0 7.68 1.46 10.6 4.4C30.55 9.31 32 12.85 32 17s-1.46 7.68-4.4 10.6C24.69 30.55 21.15 32 17 32s-7.68-1.46-10.6-4.4C3.45 24.69 2 21.15 2 17S3.46 9.32 6.4 6.4A14.46 14.46 0 0117 2zm1.88 24.38V15.74h-3.75v10.63h3.74zM17 12.63a2.41 2.41 0 001.77-.74 2.41 2.41 0 00.73-1.77 2.41 2.41 0 00-.73-1.76A2.41 2.41 0 0017 7.63a2.41 2.41 0 00-1.77.73 2.41 2.41 0 00-.73 1.77c0 .69.24 1.28.73 1.76a2.41 2.41 0 001.77.73z\"\n})));"],"sourceRoot":""}