{"version":3,"sources":["webpack:///./src/components/show-more/show-more.jsx","webpack:///./src/utils/css.ts","webpack:///./src/components/translation/translated-by-google.jsx","webpack:///./src/hooks/use-event-listener.js","webpack:///./src/apps/tradera/components/discover/components/search-results/items-with-stiched-ads.tsx","webpack:///./src/legacy/static/components/shared/scroll-to-top-button.jsx","webpack:///./src/blueprint/theme/icons-colored/multicolor.svg","webpack:///./src/components/breadcrumbs/breadcrumbs.tsx","webpack:///./src/components/dropdown-button/dropdown-button.module.scss","webpack:///./src/components/dropdown-button/dropdown-button.tsx","webpack:///./src/apps/tradera/components/discover/components/search-results/pagination/pagination-helper.ts","webpack:///./src/apps/tradera/components/discover/components/search-results/pagination/discover-pagination.jsx","webpack:///./src/components/accordion/accordion.jsx","webpack:///./src/components/accordion/accordion-item.module.scss","webpack:///./src/components/accordion/accordion-next-level.module.scss","webpack:///./src/components/accordion/accordion-next-level.tsx","webpack:///./src/components/accordion/accordion-item.tsx","webpack:///./src/apps/tradera/components/discover/components/filters/categories/filter-categories.jsx","webpack:///./src/apps/tradera/components/discover/components/filters/categories/filter-categories-side-sheet.tsx","webpack:///./src/apps/tradera/components/discover/components/internal-search-form.jsx","webpack:///./src/apps/tradera/components/discover/components/search-results/intro-text-container.tsx","webpack:///./src/components/item-settings/discount-rates.js","webpack:///./src/components/item-settings/item-settings.jsx","webpack:///./src/components/item-card/item-card-parts/seller-rating.tsx","webpack:///./src/components/item-card/item-card-parts/seller-link.tsx","webpack:///./src/components/item-card/item-card-parts/shipping-label.tsx","webpack:///./src/components/item-card/item-list-card.tsx","webpack:///./src/apps/tradera/components/discover/components/search-results/zero-results.jsx","webpack:///./src/components/item-card-grid/item-card-grid.module.scss","webpack:///./src/components/item-card-grid/item-card-grid.jsx","webpack:///./src/apps/tradera/components/discover/components/search-results/fallback/fallback-items.jsx","webpack:///./src/state/services/discover.types.ts","webpack:///./src/apps/tradera/components/discover/components/search-results/fallback/use-get-no-category-fallback-search-result.ts","webpack:///./src/apps/tradera/components/discover/components/search-results/fallback/use-get-all-fallback-search-results.ts","webpack:///./src/apps/tradera/components/discover/components/search-results/fallback/use-get-unsold-fallback-search-result.ts","webpack:///./src/apps/tradera/components/discover/components/search-results/fallback/use-get-best-match-fallback-search-result.ts","webpack:///./src/apps/tradera/components/discover/components/search-results/search-results.jsx","webpack:///./src/blueprint/theme/icons2/view-md.svg","webpack:///./src/blueprint/theme/icons2/view-lg.svg","webpack:///./src/apps/tradera/components/discover/components/search-results/layout/site-layout-switch.module.scss","webpack:///./src/apps/tradera/components/discover/components/search-results/layout/item-layout-switch.tsx","webpack:///./src/blueprint/theme/icons2/max-width.svg","webpack:///./src/blueprint/theme/icons2/min-width.svg","webpack:///./src/apps/tradera/components/discover/components/search-results/layout/site-layout-switch.jsx","webpack:///./src/components/form-controls/select.tsx","webpack:///./src/blueprint/theme/icons2/sort.svg","webpack:///./src/apps/tradera/components/discover/components/search-results/sort/sorting-link.tsx","webpack:///./src/apps/tradera/components/discover/components/search-results/header/search-field-profile-page.jsx","webpack:///./src/apps/tradera/components/discover/components/filters/price-range/price-range.jsx","webpack:///./src/apps/tradera/components/discover/components/filters/filter-options.module.scss","webpack:///./src/apps/tradera/components/discover/components/filters/filter-option.tsx","webpack:///./src/components/item-card/item-card-parts/attribute-button.tsx","webpack:///./src/components/attributes/attribute-color.jsx","webpack:///./src/apps/tradera/components/discover/components/filters/attributes/all-attributes-list.module.scss","webpack:///./src/apps/tradera/components/discover/components/filters/attributes/all-attributes-list.jsx","webpack:///./src/apps/tradera/components/discover/components/filters/attributes/attribute-filter.jsx","webpack:///./src/components/form-controls/radio-input-group.tsx","webpack:///./src/apps/tradera/components/discover/components/filters/filter-radios.tsx","webpack:///./src/apps/tradera/components/discover/components/filters/select-filter.jsx","webpack:///./src/apps/tradera/components/discover/components/filters/filter-ship-to.jsx","webpack:///./src/blueprint/theme/icons2/filters.svg","webpack:///./src/apps/tradera/components/discover/components/filters/search-filter.module.scss","webpack:///./src/apps/tradera/components/discover/components/filters/search-filter.tsx","webpack:///./src/apps/tradera/components/discover/helpers/filter.js","webpack:///./src/apps/tradera/components/discover/components/search-results/tag.tsx","webpack:///./src/apps/tradera/components/discover/components/search-results/header/attribute-filter-tags.tsx","webpack:///./src/apps/tradera/components/discover/components/search-results/header/price-filter-tag.tsx","webpack:///./src/apps/tradera/components/discover/components/search-results/header/filter-tags.tsx","webpack:///./src/apps/tradera/components/discover/components/search-results/header/active-filters.module.scss","webpack:///./src/apps/tradera/components/discover/components/search-results/header/active-filters.tsx","webpack:///./src/apps/tradera/components/discover/components/search-results/layout/filter-section.module.scss","webpack:///./src/apps/tradera/components/discover/components/search-results/layout/filter-section.tsx","webpack:///./src/hooks/use-scroll-direction.js","webpack:///./src/apps/tradera/components/discover/components/search-results/header/search-results-header.jsx","webpack:///./src/apps/tradera/components/discover/containers/search-results-wrapper-logic.js","webpack:///./src/apps/tradera/components/discover/components/search-results/sort/sort-radio-buttons.tsx","webpack:///./src/apps/tradera/components/discover/components/filters/search-filter-side-sheet.tsx","webpack:///./src/state/ui/selectors.ts","webpack:///./src/apps/tradera/components/discover/components/search-results/save-search/sticky-save-search-button.jsx","webpack:///./src/apps/tradera/components/discover/containers/search-results-wrapper.module.scss","webpack:///./src/apps/tradera/components/discover/components/search-results/save-search/save-search-bottom-banner.module.scss","webpack:///./src/apps/tradera/components/discover/components/search-results/save-search/save-search-bottom-banner.tsx","webpack:///./src/apps/tradera/components/discover/containers/search-results-wrapper.jsx","webpack:///./src/blueprint/theme/icons2/back.svg","webpack:///./src/hooks/use-click-outside.ts","webpack:///./src/blueprint/theme/icons2/view-sm.svg","webpack:///./src/apps/tradera/components/discover/components/search-results/ads/search-results-ads.tsx","webpack:///./node_modules/lodash/isEqual.js","webpack:///./src/legacy/static/packages/format.js","webpack:///./src/components/form-controls/radio-input.tsx","webpack:///./src/apps/tradera/components/discover/components/search-results/magnifier.svg","webpack:///./src/components/tree-navigation/tree-item.module.scss","webpack:///./src/components/tree-navigation/tree-item.jsx","webpack:///./src/components/tree-navigation/show-more-button.jsx","webpack:///./src/components/tree-navigation/tree-navigation.jsx","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/rc-util/es/hooks/useEvent.js","webpack:///./node_modules/rc-util/es/hooks/useLayoutEffect.js","webpack:///./node_modules/rc-util/es/Dom/canUseDom.js","webpack:///./node_modules/rc-util/es/hooks/useState.js","webpack:///./node_modules/rc-util/es/hooks/useMergedState.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack:///./node_modules/rc-util/es/KeyCode.js","webpack:///./node_modules/rc-slider/es/context.js","webpack:///./node_modules/rc-slider/es/util.js","webpack:///./node_modules/rc-slider/es/Handles/Handle.js","webpack:///./node_modules/rc-slider/es/Handles/index.js","webpack:///./node_modules/rc-slider/es/hooks/useDrag.js","webpack:///./node_modules/rc-slider/es/Tracks/Track.js","webpack:///./node_modules/rc-slider/es/Tracks/index.js","webpack:///./node_modules/rc-slider/es/Marks/Mark.js","webpack:///./node_modules/rc-slider/es/Marks/index.js","webpack:///./node_modules/rc-slider/es/Steps/Dot.js","webpack:///./node_modules/rc-slider/es/Steps/index.js","webpack:///./node_modules/rc-util/es/warning.js","webpack:///./node_modules/rc-slider/es/Slider.js","webpack:///./node_modules/rc-slider/es/hooks/useOffset.js","webpack:///./node_modules/rc-slider/es/index.js","webpack:///./src/blueprint/theme/icons2/view-list.svg","webpack:///./src/components/errors/no-items-error.jsx","webpack:///./src/components/attributes/attribute-helper.ts","webpack:///./src/apps/tradera/layout/layout-a/layout-a.module.scss","webpack:///./src/apps/tradera/layout/layout-a/index.jsx"],"names":["ShowMore","_ref","children","className","minHeight","_ref$buttonClassName","buttonClassName","t","useTranslator","container","useRef","_useState2","_slicedToArray","useState","textNotFitting","setTextNotFitting","_useState4","showMore","setShowMore","useEffect","containerElement","current","resizeObserver","ResizeObserver","scrollHeight","offsetHeight","observe","unobserve","_jsxs","_jsx","ref","style","Button","theme","onClick","useMinHeight","maxHeight","arguments","length","undefined","Infinity","defaultMinHeight","_useState6","setMinHeight","_useInView","useInView","triggerOnce","initialInView","entry","boundingClientRect","height","value","includes","parseFloat","rootElementFontSize","isServer","window","getComputedStyle","document","documentElement","fontSize","parseCssLengthValue","propTypes","TranslatedByGoogle","disclaimer","src","alt","useEventListener","eventName","handler","element","savedHandler","elem","addEventListener","eventListener","event","removeEventListener","ComponentsWithStitchAds","adsEnabled","components","itemLayout","pageIndex","wrapperProp","wrapper","result","mobileAdIndex","tabletAdIndex","desktopAdIndex","Wrapper","_ref2","isSiteWidthFull","useIsSiteWidthFull","isMobile","useIsMobile","isTablet","useIsTablet","isDesktop","useIsDesktop","adFrequency","itemsPerRow","factor","ITEM_LAYOUT","LIST","GRID_LARGE","GRID_MEDIUM","GRID","getItemsPerRow","adOffset","adClassName","_ref3","entries","_ref4","index","component","push","MobileAd","TabletAd","DesktopAd","_Fragment","ScrollToTopButton","_ref$onClick","variant","fluid","scrollTo","icon","ArrowUpIcon","iconConfig","Breadcrumbs","categoryPath","categoryTree","handleClick","_ref$inSPA","inSPA","breadcrumbRef","React","toLocalizedUrl","useUrlLocalizer","parsedCategoryPath","path","resolveActiveCategoryPath","scrollLeft","scrollWidth","clientWidth","cx","itemScope","itemType","map","category","isLastItem","isFirstChild","microDataPositionProperty","String","gaLabel","itemProp","nowrap","TextElement","name","ALink","useLink","href","url","content","parents","status","child","props","_objectWithoutProperties","_excluded","_objectSpread","DropdownButton","forwardRef","forwardedRef","isOpen","cn","DropdownIcon","position","align","ArrowDownIcon","styles","getCurrentPageByIndex","pageLinks","findIndex","page","buildPagingArray","firstPage","lastPage","pageCount","linksBefore","linksAfter","totalPages","pageArray","pagination","active","currentPageByIndex","indexStart","linksCountLimit","dotted","indexMaxLimited","Math","min","itemsAfterCurrent","canShiftBack","max","i","DiscoverPagination","Component","constructor","getLinkValue","_this$props","this","location","queryParams","query","paging","spage","pathname","toSearchString","getNavLink","direction","_this$props$paginatio","currentIndex","linkIndex","renderPageLinks","viewClass","link","render","_this$props2","desktopPagination","mobilePagination","prevLink","nextLink","helmetLinks","rel","toAbsoluteUrl","isNextJs","Helmet","PrevIcon","NextIcon","withOrWithoutRouter","ComposedComponent","_extends","useLocation","withRouter","withTranslator","Accordion","title","AccordionNextLevel","onClose","onDismiss","slideOut","setSlideOut","HeaderWithCloseButton","border","menu","closeNextLevel","setTimeout","autoFocus","IconBack","AccordionItem","_ref$className","_ref$collapsable","collapsable","_ref$hideTitle","hideTitle","label","onChange","hasNextLevel","accordionOpen","setAccordionOpen","ArrowRight","ArrowDown","mapTree","tree","searchString","_category$children","isActive","FilterCategories","filterCategories","handleCategoryChange","handleSearchCategoryChange","pageType","categoryResultPage","PAGE_TYPES","CATEGORY_RESULT_PAGE","onCategoryClick","useCallback","preventDefault","categories","stripPaginationFromQueryParameters","isAllCategoriesActiveParent","SEARCH_RESULT_PAGE","categoryId","TreeNavigation","id","isNarrow","onItemClick","showMoreText","FilterCategoriesSideSheet","isLoading","show","body","LoadingIcon","BottomSheet","SideMenu","fromLeft","width","InternalSearchForm","internalSearch","handleInternalSearch","setSearchString","placeholder","onSubmit","e","type","target","SearchIcon","IntroTextContainer","html","dangerouslySetInnerHTML","__html","discounRates","ItemSettings","super","item","state","itemSettings","onDisplay","price","priceBeforeDiscount","canHaveDiscount","ITEM_TYPES","PURE_BIN","SHOP_ITEM","hasDiscount","discountRate","onDisplayCount","maxOnDisplayCount","discountCount","maxDiscountCount","isFetching","async","closeItemSettings","setState","data","getItemDiscountQuota","error","addItemOnDisplay","removeItemOnDisplay","_this$state$itemSetti","postItemSettings","itemId","updateItem","handleOnDislayClick","_this$state$itemSetti2","count","handleDiscountChange","_this$state$itemSetti3","calculateDiscount","round","componentDidUpdate","prevProps","open","getItemSettings","componentWillUnmount","_this$props3","_this$state","_this$state$item","MODAL_STATE","OPEN","onDisplayDisabled","setDiscountDisabled","DialogModal","mobileFullscreen","CloseIcon","minWidth","LocalLoader","Fragment","checked","disabled","htmlFor","parseInt","option","saveItemSettings","connect","ui","dispatch","SellerRating","includeTotal","_ref$sellerDsrAverage","sellerDsrAverage","isGood","isBad","formattedRating","formatSellerDsrAverage","replace","classNames","Number","toFixed","SellerLink","sellerMemberId","sellerAlias","hasRating","abs","ShippingLabel","hasFreeShipping","shippingOptions","ShippingOptionProvider","NotSpecified","Takeaway","TakeawayOnly","shippingCost","cost","ItemListCard","_item$discountRate","_item$attributes","onAddToWishlist","onQuickView","onRemoveFromWishlist","onAttributeButtonClick","onSettings","_ref$isShopOwnedByCur","isShopOwnedByCurrentMember","ready","itemUrl","withListItemIds","useAppSelector","items","wishListItemIds","existsInWishList","isSwedishVisitor","useSelector","selectIsSwedishVisitor","dayjs","useDayJs","showBids","AuctionType","Auction","AuctionBin","isShopItem","ShopItem","isPureBINItem","PureBin","showBuyNowPrice","totalBids","showBuyNowText","visibleAttributes","getVisibleAttributes","attributes","isNewToday","startDate","isAfter","subtract","handleWishlist","stopPropagation","displayHighlighted","ItemCardImage","imageUrl","shortDescription","NewTodayBadge","DiscountBadge","AttributeButtonsList","EndTimeLabel","endDate","WishListButton","toggled","showText","QuickViewButton","SettingsButton","PriceLabel","as","DiscountedPriceLabel","BidsLabel","buyNowPrice","OnDisplayBadge","ZeroResults","MagnifierIcon","memo","ItemCardGridContext","createContext","ItemCardGrid","itemSize","renderAsList","rest","Provider","classnames","css","grid","list","ItemCardGridItem","spanEntireRow","renderBorderBottom","useItemCardGridContext","context","useContext","Error","FallbackItems","fallbackUrl","fallbackItems","quickViewEnabled","handleQuickViewClick","handleRemoveFromWishlist","handleAddToWishlist","handleItemAttributesForFilterClick","showSavedSearchBanner","fallbackItemsHeaderTitle","fallbackItemsHeaderDescription","ItemCardComponent","ItemCard","fallbackItemsHeader","SaveSearchButton","showHint","gaActionString","searchGtm","ArrowRightIcon","SearchTypeVariantHintParameterValue","QueryScopeParameterValue","ItemStatusParameterValue","hasItems","SEARCH_TYPE_VARIANT_HINT_PARAMETER_NAME","useGetAllFallbackSearchResults","mainSearchItems","mainSearchHasPagination","mainSearchParams","isClientSideFallbacksEnabled","_useGetUnsoldFallback","useGetUnsoldFallbackSearchResult","_notSoldFallback$pagi","isUnsoldFilterEnabled","useIsFeatureEnabled","preferredLanguage","selectPreferredLanguageCode","countryCodeIso2","selectMemberCountryCodeIso2","automaticTranslationPreferred","selectAutomaticTranslationPreferred","mainSearchHasUnsoldFilter","itemStatus","Unsold","queryParamsForUnsold","unsoldSearchApiRequest","createIndependentSearchApiRequest","_useGetIndependentSea","useGetIndependentSearchResultQuery","skip","notSoldFallback","currentData","isFetchingNotSoldFallback","notSoldFallbackUrl","createSearchFallbackUrl","_useGetBestMatchFallb","useGetBestMatchFallbackSearchResult","notSoldFallbackItem","isEnabled","_mainSearchParams$q","_bestMatchFallback$pa","_bestMatchFallback$it","searchIsMultiWord","q","mainSearchResultIsHigherThanThreshold","notSoldSearchResultIsHigherThanThreshold","queryParamsForBestMatch","queryScope","BestMatch","searchTypeVariantHint","EnrichAllWordsSearchResult","bestMatchSearchApiRequest","bestMatchQueryHasQueryScopeAllWordsAnyOrder","AllWordsAnyOrder","bestMatchFallback","isFetchingBestMatchFallback","bestMatchFallbackUrl","mainSearchItemIds","filter","_useGetNoCategoryFall","useGetNoCategoryFallbackSearchResult","notSoldFallbackItems","bestMatchFallbackItems","_noCategoryFallback$p","mainSearchResultHasItems","queryParamasForNoCategory","EnrichEmptySearchResult","noCategorySearchApiRequest","noCategoryFallback","isFetchingNoCategoryFallback","noCategoryFallbackUrl","searchParams","isBestMatch","isAllCategories","urlParams","URLSearchParams","secondPageLink","find","set","delete","toString","ItemCardGridItemWrapper","getItemCardGridSize","SearchResults","_notSoldFallback$item","handleItemAttributesForFiltering","noItemsFallback","isLoaded","useDispatch","webLiveUrl","selectWebLiveUrl","selectIsGoogleAdsEnabled","itemsOnDisplay","discover","searchTerm","selectIsFeatureEnabled","showItemsOnDisplay","isLastChanceLiveUppdatesEnabled","imageMode","ITEM_CARD_IMAGE_MODES","NATURAL","SQUARE","handleOpenItemSettings","openItemSettings","uiActions","openQuickViewAction","openedFrom","GtmService","trackAction","itemActions","attribute","values","formatQueryParams","_useGetAllFallbackSea","isFetchingFallbacks","bestMatchFallbackHasItems","bestMatchOrNoCategoryfallbackItems","bestMatchOrNoCategoryfallbackUrl","notSoldfallbackHasItems","bestMatchOrNoCategoryfallbackHasItems","CUSTOM_RESULT_PAGE","registerLiveUpdates","onConnect","socket","emit","onClientEvent","Type","Event","AuctionId","BidAmount","NumberOfBids","useMemo","ItemsOnDisplay","defaultProps","itemsOnDisplayCards","placeHolderCards","InfoIcon","Object","assign","bind","source","key","prototype","hasOwnProperty","call","apply","createElement","viewBox","xmlns","clipRule","d","fillRule","trackItemLayoutChange","gtm","gridMedium","gridLarge","ItemLayoutSwitch","isSideSheet","useAppDispatch","selectedLayout","iconClasses","options","ListViewIcon","GridSmallIcon","GridMediumIcon","GridLargeIcon","radioOptions","RadioSwitch","defaultChecked","handleOnChange","updateItemLayout","currentOrderPos","SiteLayoutSwitch","siteLayout","updateSiteLayout","MinWidthIcon","SITE_LAYOUT","DEFAULT","MaxWidthIcon","FULL_WIDTH","trackSiteLayoutChange","Select","handleChange","_ref$selectClassName","selectClassName","selectedValue","visuallyHideLabel","_ref$type","fill","SortingLink","_sortBy$options","_sortBy$options$find","sortBy","handleModalClick","selectedSorting","CONSTANTS","MODALS","FILTER_MODAL","DescendingIcon","SearchFieldProfilePage","navigation","useNavigation","_toQueryParameters$q","toQueryParameters","search","trim","handleProfileSearch","PriceRange","setFormReference","el","formElement","handleMinChange","setMin","rangeStart","isNaN","handleMaxChange","setMax","rangeEnd","currentTarget","blur","stateHasChangedSinceStart","inputMinValue","inputMaxValue","lastSearchMin","lastSearchMax","gotoNewURL","fromPrice","toPrice","handlePriceFilterChange","loading","handleValuesChanging","inputMinLength","inputMaxLength","handleInputBlur","handleSliderInteraction","handleStart","handleEnd","usedSlider","isMax","limitedMax","method","action","size","onBlur","autoComplete","Slider","range","defaultValue","onAfterChange","FilterDropDown","exceptionRef","onClickOutsideOfItem","useClickOutside","FilterOption","filterOpen","setFilterOpen","isFilterOnTheEdge","setIsFilterOnTheEdge","isLargeScreen","handleWindowResize","_el$offsetParent","filterOffsetRight","getBoundingClientRect","right","parentOffsetRight","offsetParent","setIsFilterOpen","bottomSheetBody","onToggleFilter","AttributeButton","text","selected","multiColorStyle","backgroundImage","MultiColorImage","AttributeColor","optionWithText","_ref$isDisabled","isDisabled","_ref$size","lowercasedColorAttributeValue","toLowerCase","CheckIcon","AllAttributesList","defaultSelected","parameter","onSelect","translateOptions","isInSideSheet","setSearch","selectedAttribute","setSelectedAttribute","optionsWithText","addTextAndReSort","filteredAttributes","handleInputChange","input","substr","top","AttributeFilter","attributeFilter","handleAttributeFilterChange","_ref$numberToShow","numberToShow","_ref$isInSideSheet","presentation","selectedValues","preserveOptionsOrder","hasMoreOptions","AttributeOptionsShortList","addText","RadioInputGroup","_ref$radioButtonClass","radioButtonClassName","RadioInput","FilterRadios","handleFilterChange","SelectFilter","_ref$filter","FilterShipTo","allowedBuyerRegions","county","countyFilterEnabled","selectDisplayCountyFilter","allowedBuyerRegionToggleOptions","shippingTypes","selectedUI","setSelectedUI","buyerRegionElements","countyElements","handleToggleChange","currentFilter","shippingTypesFiltername","SearchFilter","_ref$filterPrice","filterPrice","_ref$attributeFilters","attributeFilters","itemCondition","selectItemConditionFilter","sellerType","selectSellerTypeFilter","selectCountyFilter","selectItemTypeFilter","selectAllowedBuyerRegionsFilter","selectItemStatusFilter","FilterIcon","fixedIcon","iconRight","CATEGORY_MODAL","getTranslatedAttributeName","getTotalActiveFilterCount","activeFilters","userSetPriceFilter","totalAttributeFilters","reduce","Tag","iconSize","AttributeFilterTags","_attributeFilter$opti","attributeValue","getTranslatedAttributeValue","PriceFilterTag","priceText","FilterTags","_options$find","selectedName","ActiveFilters","handleClearAllFilters","totalActiveFilters","FilterSection","isFilterOpen","isSearchFormOpen","startPositionRef","_useScrollDirection","delayDirection","delayInPx","scrollDirection","setScrollDirection","currentScrollPosition","setCurrentScrollPosition","isDelayed","setIsDelayed","onScroll","_startPositionRef$cur","bottom","scrollY","newPosition","scrollTop","useScrollDirection","elemHeight","setElemHeight","scrollingUp","display","SearchResultsHeader","_searchResults$filter2","_searchResults$filter3","_searchResults$filter4","headerCategory","isLoggedIn","searchLanguages","searchResults","_searchResults$filter","filters","totalItems","headerText","cookieUtil","useCookieUtil","showBreadcrumb","showHeadingArea","showHeading","showIntroText","logger","readCookie","SHIP_TO_SWEDEN_DISCLAIMER_DISMISSED","shipToSwedenDisclaimerVisible","setShipToSwedenDisclaimerVisible","allFilters","Breakpoint","upTo","BREAKPOINTS","MD","showSearchBar","itemsCount","formatNumber","some","x","isSwedishOrUndefined","dismissShipToSwedenDisclaimer","createCookie","ContentDescription","introText","downTo","LG","breadcrumbs","member","searchFormOpen","showSearchForm","isTagNotInTagFilter","tagFilter","tag","SortRadioButtons","val","getSelectedAttributeValues","o","join","getSelectedValue","_filter$options","SearchFilterSideSheet","_filterPrice$fromPric","_filterPrice$toPrice","onClearAllFilters","selectSortByFilter","activeShipToFilter","selectShowSaveSearchBanner","showSaveSearchBanner","StickySaveSearchButton","buttonsInViewport","setButtonsInViewport","hasButtonInViewport","saveSearchBannerVisible","ioCallback","intersectionRatio","saveSearchButtons","querySelectorAll","observers","forEach","button","observer","IntersectionObserver","disconnect","StickyButtonPortal","isHidden","isVertical","SaveSearchBottomBanner","isDismissed","setIsDismissed","saveSearchButtonType","hideOnScroll","StickyButtonPosition","Bottom","iconColor","containerClassName","emailTooltipPosition","EmailNotificationTooltipPosition","Top","SearchResultsWrapper","searchPath","setSingleFilterValue","_props$activeFilters","_props$attributeFilte","endpoint","_props$filterCategori","_props$filters","hasResult","mainText","_props$pagination","_props$loadStatus","loadStatus","setLoading","setLoaded","filtersLoading","keys","isPrerenderReadyEnabled","isNewAdSlotsOnSearchBrowseEnabled","isGoogleAdsEnabled","isAdsTowerWide","useMediaQuery","showSaveSearch","savedQueryName","activeCategory","categoryName","alternativeName","rootCategoryId","c","resolveHeaderCategory","modalOpen","modal","setModal","_useSelector","modals","currentModal","currentModalData","showSaveSearchModal","SAVE_SEARCH_MODAL_ID","newQueryParams","stripItmFromQueryParameters","fe","isEqual","discoverActions","prerenderReady","saveSearchData","selectSaveSearchData","saveSearch","searchName","touchwebSearchApi","endpoints","initiate","fixedCacheKey","unwrap","then","showSuccessToast","catch","showErrorToast","unsubscribe","growthbook","useGrowthBook","addRecentSearches","pushToHistory","oldParams","newParams","sort","updateHistory","param","params","stripSavedQueryNameFromQueryParameters","checkForGtmTrackingOfAttributeFilter","isTagNotInAttributeFilters","isActiveAttributeFilter","next","redirectEmptySearchToBrowse","gotoBrowseCategory","stripCategoryIdFromQueryParameters","filterType","Array","isArray","filterParameters","priceFilters","attributeFilterParameters","createAttributeFilter","activeAttributeFilter","activeFilterTags","addOrRemoveTagFilter","currentTagFilter","b","activeFilterTagString","tags","Loader","usePortal","NoItemsError","subContent","marginTop","Sticky","bottomBoundary","innerZ","Ad","adFormat","deviceName","classNameAdWrapper","heroContent","mainContent","QuickView","LayoutA","aside","classes","SaveSearchModal","ENDPOINTS","SEARCH","allCategories","itemData","listener","exceptionEl","isElClicked","contains","Element","isExceptionClicked","isKey","baseIsEqual","module","exports","other","isLocaleFormattingSupportedInBrowser","toLocaleString","toLocaleStringSupportsLocales","Intl","NumberFormat","number","format","formatMe","labelClassName","ItemContent","uniqueId","childrenCount","isActiveParentNode","TreeItem","treeId","itemClasses","Boolean","ShowMoreButton","ArrowIcon","onShowMoreClick","expanded","setExpanded","isTopLevel","isL1","role","treeShape","PropTypes","oneOfType","string","isRequired","bool","arrayOf","shape","_arrayLikeToArray","arr","len","arr2","_unsupportedIterableToArray","minLen","n","slice","from","test","_toConsumableArray","iter","Symbol","iterator","TypeError","_i","_s","_e","_x","_r","_arr","_n","_d","done","err","useEvent","callback","fnRef","memoFn","_fnRef$current","_len","args","_key","concat","useInternalLayoutEffect","deps","firstMountRef","useLayoutUpdateEffect","firstMount","useSafeState","destroyRef","_React$useState2","setValue","updater","ignoreDestroy","hasValue","excluded","objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","KeyCode","MAC_ENTER","BACKSPACE","TAB","NUM_CENTER","ENTER","SHIFT","CTRL","ALT","PAUSE","CAPS_LOCK","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","PRINT_SCREEN","INSERT","DELETE","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","QUESTION_MARK","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","META","WIN_KEY_RIGHT","CONTEXT_MENU","NUM_ZERO","NUM_ONE","NUM_TWO","NUM_THREE","NUM_FOUR","NUM_FIVE","NUM_SIX","NUM_SEVEN","NUM_EIGHT","NUM_NINE","NUM_MULTIPLY","NUM_PLUS","NUM_MINUS","NUM_PERIOD","NUM_DIVISION","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NUMLOCK","SEMICOLON","DASH","EQUALS","COMMA","PERIOD","SLASH","APOSTROPHE","SINGLE_QUOTE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","WIN_KEY","MAC_FF_META","WIN_IME","isTextModifyingKeyEvent","keyCode","altKey","ctrlKey","metaKey","isCharacterKey","navigator","userAgent","step","includedStart","includedEnd","tabIndex","getOffset","getDirectionStyle","offset","positionStyle","transform","left","getIndex","_classNames","_getIndex","prefixCls","valueIndex","onStartMove","dragging","onOffsetChange","restProps","_React$useContext","ariaLabelForHandle","ariaLabelledByForHandle","ariaValueTextFormatterForHandle","handlePrefixCls","onInternalStartMove","handleNode","onMouseDown","onTouchStart","onKeyDown","which","handleRender","draggingIndex","handlesRef","focus","_handlesRef$current$i","node","getPosition","obj","touches","pageX","pageY","Track","start","end","trackPrefixCls","offsetStart","offsetEnd","Tracks","startPoint","included","trackList","startValue","endValue","Mark","_onClick","textCls","Marks","marks","markPrefixCls","Dot","activeStyle","dotClassName","mergedStyle","Steps","dots","stepDots","dotSet","Set","mark","add","dotValue","warned","preWarningFns","warning","valid","message","note","warningOnce","preMessage","fn","resetWarned","noteOnce","_props$prefixCls","_props$disabled","onFocus","_props$min","_props$max","_props$step","onBeforeChange","_props$allowCross","allowCross","_props$pushable","pushable","draggableTrack","reverse","vertical","_props$included","trackStyle","handleStyle","railStyle","dotStyle","activeDotStyle","_props$tabIndex","containerRef","mergedMin","isFinite","mergedMax","mergedStep","mergedPush","markList","markObj","a","_useOffset","formatRangeValue","formatNextValue","formatStepValue","stepValue","getDecimal","num","split","maxDecimal","fixedValue","formatValue","alignValues","closeValue","closeDist","alignValue","dist","offsetValue","mode","nextValue","originValue","targetDistValue","potentialValues","sign","compareValue","valueDist","potentialValue","cloneValues","offsetChangedValue","changed","needPush","nextValues","pushNum","_offsetChangedValue","_changed","_offsetChangedValue2","_i2","_changed2","_offsetChangedValue3","_i3","_changed3","_offsetChangedValue4","useOffset","_useOffset2","offsetValues","_useMergedState","defaultStateValue","postState","innerValue","setInnerValue","mergedValue","postMergedValue","onChangeFn","prevValue","setPrevValue","prev","useMergedState","_useMergedState2","rawValues","valueList","_valueList$","returnValues","pointCount","_returnValues","rawValuesRef","getTriggerValue","triggerValues","triggerChange","cloneNextValues","changeToCloseValue","newValue","keyboardValue","setKeyboardValue","mergedDraggableTrack","_useDrag","finishChange","draggingValue","setDraggingValue","_React$useState4","setDraggingIndex","_React$useState6","cacheValues","setCacheValues","_React$useState8","originValues","setOriginValues","mouseMoveEventRef","mouseUpEventRef","flushValues","updateCacheValue","offsetPercent","maxStartOffset","maxEndOffset","formatStartValue","cloneCacheValues","offsetDist","updateCacheValueRef","sourceValues","targetValues","every","_getPosition","startX","startY","onMouseMove","offSetPercent","_getPosition2","moveX","moveY","offsetX","offsetY","_containerRef$current","onMouseUp","useDrag","_useDrag2","onStartDrag","lastIndexOf","sortedCacheValues","_React$useMemo2","activeElement","percent","clientX","clientY","ErrorContainer","WarningIcon","backingField","toBackingField","translation","cleanedUpBackingField","shouldTranslateValues","orderBySortOrderThenByAttributeName","uncompress","attributeOption","sortOrder","maybeCompressedAttributeOption","reversed","sharedStyle","layoutInner","layoutReversed","main"],"mappings":"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","file":"script/chunks/chunk.campaign-page~cause~causes-landing-page~profile-page~search-page.7c71a6f7f7.js","sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { useInView } from 'react-intersection-observer';\nimport { useTranslator } from 'tradera/lang/translate';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport { parseCssLengthValue } from 'tradera/utils/css';\n\nexport const ShowMore = ({\n children,\n className,\n minHeight,\n buttonClassName = ''\n}) => {\n const { t } = useTranslator();\n const container = useRef(null);\n const [textNotFitting, setTextNotFitting] = useState(false);\n const [showMore, setShowMore] = useState(false);\n\n useEffect(() => {\n const containerElement = container.current;\n const resizeObserver = new ResizeObserver(() => {\n if (!showMore) {\n setTextNotFitting(\n containerElement.scrollHeight >\n containerElement.offsetHeight\n );\n }\n });\n resizeObserver.observe(containerElement);\n return () => resizeObserver.unobserve(containerElement);\n }, [showMore]);\n\n return (\n
\n \n \n {children}\n
\n \n {(textNotFitting || showMore) && (\n setShowMore(!showMore)}>\n {showMore\n ? t('showMore_show_less')\n : `...${t('showMore_show_more')}`}\n \n )}\n \n );\n};\n\n// use in combo with the component above to have a more dynamic min-height\nexport function useMinHeight(maxHeight = Infinity, defaultMinHeight = '3rem') {\n const [minHeight, setMinHeight] = useState(defaultMinHeight);\n const { ref, entry } = useInView({\n triggerOnce: true,\n initialInView: true\n });\n\n useEffect(() => {\n if (entry) {\n if (\n // the aim here is to see if the ref is taller than the desired max-height\n // if it is => set the minHeight to be the desired maxHeight instread\n // this way we can have short min-height as fallback but if the content is overflowing we can update the min-height\n entry.boundingClientRect.height > parseCssLengthValue(maxHeight)\n ) {\n setMinHeight(maxHeight);\n }\n }\n }, [entry, maxHeight]);\n\n return {\n ref,\n minHeight\n };\n}\n\nShowMore.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n minHeight: PropTypes.string\n};\n","type CssLengthValue = string | number;\nimport { isServer } from 'tradera/utils/nextjs';\n\nexport function parseCssLengthValue(value: CssLengthValue) {\n if (typeof value !== 'string') return value;\n\n if (value.includes('px')) {\n return parseFloat(value);\n }\n\n const DEFAULT_SERVER_FONT_SIZE = 14;\n\n const rootElementFontSize = isServer\n ? DEFAULT_SERVER_FONT_SIZE\n : parseFloat(\n // of the computed font-size, so in px\n window.getComputedStyle(\n // for the root element\n document.documentElement\n ).fontSize\n );\n\n return parseFloat(value) * rootElementFontSize;\n}\n","import React from 'react';\nimport { useTranslator } from 'tradera/lang/translate';\n\nexport const TranslatedByGoogle = ({ disclaimer }) => {\n const { t } = useTranslator();\n\n return (\n \n \n {disclaimer || t('translation_translated_by')}\n \n \"\"\n \n );\n};\n","import { useEffect, useRef } from 'react';\n\nexport const useEventListener = (eventName, handler, element) => {\n // Create a ref that stores handler\n const savedHandler = useRef();\n // Update ref.current value if handler changes.\n // This allows our effect below to always get latest handler ...\n // ... without us needing to pass it in effect deps array ...\n // ... and potentially cause effect to re-run every render.\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(\n () => {\n const elem = element || window;\n // Make sure element supports addEventListener\n // On\n const isSupported = elem && elem.addEventListener;\n if (!isSupported) return;\n // Create event listener that calls handler function stored in ref\n const eventListener = (event) => savedHandler.current(event);\n // Add event listener\n elem.addEventListener(eventName, eventListener);\n // Remove event listener on cleanup\n return () => {\n elem.removeEventListener(eventName, eventListener);\n };\n },\n [eventName, element] // Re-run if eventName or element changes\n );\n};\n","import React from 'react';\nimport { DesktopAd, TabletAd, MobileAd } from './ads/search-results-ads';\nimport useIsMobile from 'tradera/hooks/use-is-mobile';\nimport { useIsTablet } from 'tradera/hooks/use-is-tablet';\nimport useIsDesktop from 'tradera/hooks/use-is-desktop';\nimport { useIsSiteWidthFull } from 'tradera/state/ui/helpers';\nimport { ITEM_LAYOUT } from 'tradera/constants/ui';\n\nconst MOBILE_AD_OFFSET = 6;\nconst AD_FREQUENCY = 12;\nconst AD_FREQUENCY_FULL_WIDTH = 16;\n\nfunction getItemsPerRow(\n itemLayout: ITEM_LAYOUT | undefined,\n isSiteWidthFull: boolean\n) {\n const factor = isSiteWidthFull ? 2 : 1;\n switch (itemLayout) {\n case ITEM_LAYOUT.LIST:\n // siteWidthFull does not add items per row in list view.\n return 1;\n case ITEM_LAYOUT.GRID_LARGE:\n return 2 * factor;\n case ITEM_LAYOUT.GRID_MEDIUM:\n return 3 * factor;\n case ITEM_LAYOUT.GRID:\n default:\n return 4 * factor;\n }\n}\ntype ComponentsWithStitchAdsProps = {\n adsEnabled: boolean;\n components: React.ReactNode[];\n itemLayout?: ITEM_LAYOUT;\n pageIndex: number;\n wrapper?: (props: { children: React.ReactNode }) => JSX.Element;\n};\nexport const ComponentsWithStitchAds = ({\n adsEnabled,\n components,\n itemLayout,\n pageIndex,\n wrapper: wrapperProp\n}: ComponentsWithStitchAdsProps) => {\n const result = [];\n let mobileAdIndex = 0;\n let tabletAdIndex = 0;\n let desktopAdIndex = 0;\n const defaultWrapper = ({ children }: { children: React.ReactNode }) => (\n
{children}
\n );\n const Wrapper = wrapperProp ?? defaultWrapper;\n\n const isSiteWidthFull = useIsSiteWidthFull();\n const isMobile = useIsMobile();\n const isTablet = useIsTablet();\n const isDesktop = useIsDesktop();\n\n if (!(components && components.length > 0)) {\n return null;\n }\n\n const adFrequency = isSiteWidthFull\n ? AD_FREQUENCY_FULL_WIDTH\n : AD_FREQUENCY;\n\n const itemsPerRow = getItemsPerRow(itemLayout, isSiteWidthFull);\n\n const adOffset = isMobile ? MOBILE_AD_OFFSET : itemsPerRow * 2;\n const adClassName = itemLayout === ITEM_LAYOUT.LIST ? 'mb-2' : '';\n for (const [index, component] of components.entries()) {\n if (adsEnabled && pageIndex > 0 && index > 0) {\n if ((index - adOffset) % adFrequency === 0) {\n if (isMobile) {\n result.push(\n \n \n \n );\n mobileAdIndex += 1;\n } else if (isTablet) {\n result.push(\n \n \n \n );\n tabletAdIndex += 1;\n } else if (isDesktop) {\n result.push(\n \n \n \n );\n desktopAdIndex += 1;\n }\n }\n }\n result.push(component);\n\n // Add extra ad to the end for desktop when full site width\n if (index === components.length - 1 && isSiteWidthFull) {\n result.push(\n \n \n \n );\n desktopAdIndex += 1;\n }\n }\n\n return <>{result};\n};\n","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';\nimport { Button } from 'tradera/components/atoms/button/button';\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 icon={}\n iconConfig={{ variant: 'fixed' }}>\n \n {t('searchResults_backToTop')}\n \n \n
\n );\n};\n\nScrollToTopButton.propTypes = {\n onClick: PropTypes.func\n};\n\nexport default ScrollToTopButton;\n","export default \"//static.tradera.net/touchweb/static/output/images/multicolor.45085a87.svg\";","import * as React from 'react';\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport ALink from 'tradera/components/alink/alink';\nimport { useUrlLocalizer } from 'tradera/lang/translate';\nimport { Button } from '../atoms/button/button';\n\ntype Category = { id: number; name: string; url: string };\ntype CategoryTree = Category & {\n status: string;\n children: CategoryTree[];\n};\ntype BreadCrumbsProps = {\n categoryPath?: Category[];\n categoryTree?: CategoryTree;\n className?: string;\n handleClick?: (category: Category) => void;\n inSPA?: boolean;\n};\n/**\n * Creates a breadcrumb itemd with Microdata attributes.\n * Microdata can be tested with Google's Structured Data Testing Tool here:\n * https://search.google.com/structured-data/testing-tool?utm_campaign=devsite&utm_medium=microdata&utm_source=breadcrumb\n * Please note that it will give errors if href is contains localhost:5454.\n */\nexport const Breadcrumbs = ({\n categoryPath,\n categoryTree,\n className,\n handleClick,\n inSPA = false\n}: BreadCrumbsProps) => {\n const breadcrumbRef = React.useRef(null);\n const { toLocalizedUrl } = useUrlLocalizer();\n\n // Use path if provided otherwise parse path from tree\n const parsedCategoryPath = React.useMemo(() => {\n if (categoryPath) {\n return categoryPath;\n } else if (categoryTree) {\n const path = resolveActiveCategoryPath(categoryTree);\n // If empty path, fall back to first root category\n if (path.length > 0) {\n return path;\n } else {\n return [categoryTree];\n }\n } else {\n return [];\n }\n }, [categoryPath, categoryTree]);\n\n React.useEffect(() => {\n if (!breadcrumbRef.current) {\n return;\n }\n breadcrumbRef.current.scrollLeft =\n breadcrumbRef.current.scrollWidth -\n breadcrumbRef.current.clientWidth;\n }, [parsedCategoryPath]);\n\n return (\n \n \n {parsedCategoryPath.map((category, index) => {\n const isLastItem = index + 1 === parsedCategoryPath.length;\n const isFirstChild = index === 0;\n const microDataPositionProperty = String(index + 1);\n const gaLabel = isFirstChild ? 'All' : `L${index}`;\n\n return (\n \n \n /\n \n {handleClick ? (\n handleClick(category)}>\n {category.name}\n \n ) : (\n \n {category.name}\n \n )}\n \n \n );\n })}\n \n \n );\n};\n\nBreadcrumbs.propTypes = {\n categoryPath: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number,\n url: PropTypes.string,\n name: PropTypes.string\n })\n ),\n categoryTree: PropTypes.shape({\n status: PropTypes.string,\n children: PropTypes.arrayOf(PropTypes.object),\n id: PropTypes.number,\n url: PropTypes.string,\n name: PropTypes.string\n }),\n className: PropTypes.string,\n handleClick: PropTypes.func,\n inSPA: PropTypes.bool\n};\n\n/**\n * Recursively search tree for active category, return list of it and its parents\n *\n * @param {object} category - Category tree\n * @param {object[]} parents - Parent categories to current tree\n */\nconst resolveActiveCategoryPath = (\n category: CategoryTree,\n parents: Category[] = []\n): Category[] => {\n if (category.status === 'active') {\n return [...parents, category];\n } else {\n if (category.children) {\n for (const child of category.children) {\n const path = resolveActiveCategoryPath(child, [\n ...parents,\n category\n ]);\n if (path.length > 0) return path;\n }\n }\n return [];\n }\n};\n\nconst TextElement = ({\n children,\n className,\n ...props\n}: React.ComponentProps<'span'>) => (\n \n {children}\n \n);\n","// extracted by mini-css-extract-plugin\nexport default {\"iconOpen\":\"iconOpen--CTghk\"};","import React from 'react';\nimport cn from 'classnames';\n\nimport type { ButtonProps } from '../atoms/button/button';\nimport { Button } from '../atoms/button/button';\nimport ArrowDownIcon from '@tradera/blueprint/theme/icons2/arrow-down.svg?jsx';\n\nimport styles from './dropdown-button.module.scss';\n\n// trying to make this a bit restrictive...since if you want a Button, use that instead\nexport type DropdownButtonProps = Omit & {\n isOpen?: boolean;\n};\n\n/**\n * Just a button with a specific look and feel used for dropdowns.\n *\n * Pass `isOpen` to change the icon to an open state.\n */\nexport const DropdownButton = React.forwardRef<\n React.ElementRef,\n DropdownButtonProps\n>(function DropdownButton(\n { children, className, fluid, isOpen, ...props },\n forwardedRef\n) {\n return (\n }\n iconConfig={{\n position: 'right',\n // If we would always use `fixed` here, the icon would be on top of the text since it's absolutely positioned when fixed\n variant: fluid ? 'fixed' : undefined\n }}\n align=\"left\"\n fluid={fluid}\n {...props}>\n {children}\n \n );\n});\n\ntype DropdownIconProps = { isOpen?: boolean; className?: string };\nexport const DropdownIcon = ({ isOpen, className }: DropdownIconProps) => (\n \n);\n","export type PageLink = {\n pageIndex: number;\n pagination: unknown;\n};\n\nexport type PageArrayItem = {\n pageIndex?: number;\n pagination?: unknown;\n active?: boolean;\n dotted?: boolean;\n};\n\nexport const getCurrentPageByIndex = (\n pageLinks: PageLink[],\n pageIndex: number\n): number => pageLinks.findIndex((page) => page.pageIndex === pageIndex); // Set current page to actual index (position) in pageLinks array.\n\nexport const buildPagingArray = (\n {\n pageIndex,\n pageLinks,\n firstPage,\n lastPage,\n pageCount\n }: {\n pageIndex: number;\n pageLinks: PageLink[];\n firstPage: unknown;\n lastPage: unknown;\n pageCount: number;\n },\n linksBefore = 2,\n linksAfter = 3\n): PageArrayItem[] => {\n const totalPages = pageLinks.length;\n const pageArray: PageArrayItem[] = [\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 // eslint-disable-next-line better-mutation/no-mutation\n linksCountLimit--;\n }\n\n const indexMaxLimited = Math.min(indexStart + linksCountLimit, totalPages);\n\n if (indexMaxLimited === totalPages) {\n const itemsAfterCurrent = totalPages - currentPageByIndex;\n const canShiftBack = Math.max(linksAfter - itemsAfterCurrent, 0);\n indexStart = Math.max(indexStart - canShiftBack, 1);\n }\n\n // eslint-disable-next-line better-mutation/no-mutation\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 } from 'react-router-dom';\nimport { Helmet } from 'react-helmet';\nimport { getCurrentPageByIndex, buildPagingArray } from './pagination-helper';\nimport { toSearchString, toAbsoluteUrl } 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 { withTranslator } from 'tradera/lang/translate';\nimport { isNextJs } from 'tradera/utils/nextjs';\nimport ALink from 'tradera/components/alink/alink';\nimport { useLocation } from 'tradera/hooks/use-location';\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: null // ensure the legacy 'spage' parameter is removed\n };\n return `${location.pathname}${toSearchString(query)}`;\n }\n };\n\n getNavLink = (direction) => {\n const {\n pagination: { pageLinks, pageIndex }\n } = this.props;\n\n const currentIndex = getCurrentPageByIndex(pageLinks, pageIndex);\n\n if (currentIndex === -1) {\n return null;\n }\n\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 const href = this.getLinkValue(link.pagination);\n return (\n \n {href ? (\n \n {link.pageIndex}\n \n ) : (\n ...\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: toAbsoluteUrl(prevLink)\n });\n }\n if (nextLink) {\n helmetLinks.push({\n rel: 'next',\n href: toAbsoluteUrl(nextLink)\n });\n }\n\n return (\n
\n {!isNextJs && }\n \n
\n );\n }\n}\n\nconst withoutRouter = (ComposedComponent) =>\n function WithoutRouter({ ...props }) {\n const location = useLocation();\n return ;\n };\n\nconst withOrWithoutRouter = (Component) =>\n isNextJs ? withoutRouter(Component) : withRouter(Component);\n\nexport const DiscoverPaginationWithRouter =\n withOrWithoutRouter(DiscoverPagination);\nexport default withTranslator(withOrWithoutRouter(DiscoverPagination));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './accordion.module.scss';\n\nexport const 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","// extracted by mini-css-extract-plugin\nexport default {\"item-body\":\"item-body--8aZkT\",\"itemBody\":\"item-body--8aZkT\",\"collapsed\":\"collapsed--YrdvD\",\"arrow-open\":\"arrow-open--kaW1Q\",\"arrowOpen\":\"arrow-open--kaW1Q\",\"nextLevel\":\"nextLevel--krwk2\",\"slideIn\":\"slideIn--juTqr\",\"slideOut\":\"slideOut--4bDyM\"};","// extracted by mini-css-extract-plugin\nexport default {\"nextLevel\":\"nextLevel--rjQPP\",\"slideIn\":\"slideIn--vdkdH\",\"body\":\"body--va3b0\",\"slideOut\":\"slideOut--CmW-5\"};","import React, { useState } from 'react';\nimport IconBack from '@tradera/blueprint/theme/icons2/back.svg?jsx';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport styles from './accordion-next-level.module.scss';\nimport { HeaderWithCloseButton } from 'tradera/components/scrollable-modal/header-with-close-button';\nimport cn from 'classnames';\n\ntype AccordionNextLevelProps = {\n children: React.ReactNode;\n onClose?: () => void;\n onDismiss: () => void;\n title?: string;\n};\n\nexport const AccordionNextLevel = ({\n onClose,\n onDismiss,\n children,\n title\n}: AccordionNextLevelProps) => {\n const [slideOut, setSlideOut] = useState(false);\n\n const closeNextLevel = () => {\n setSlideOut(true);\n setTimeout(() => {\n setSlideOut(false);\n onDismiss();\n }, 400);\n };\n\n return (\n \n \n \n \n }\n />\n
{children}
\n \n );\n};\n","import React, { useState } from 'react';\nimport ArrowDown from '@tradera/blueprint/theme/icons2/arrow-down.svg?jsx';\nimport ArrowRight from '@tradera/blueprint/theme/icons2/arrow-right.svg?jsx';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport styles from './accordion-item.module.scss';\nimport cn from 'classnames';\nimport { AccordionNextLevel } from './accordion-next-level';\n\ntype AccordionItemProps = {\n hasNextLevel?: boolean;\n children: React.ReactNode;\n className?: string;\n collapsable?: boolean;\n hideTitle?: boolean;\n onChange?: (open: boolean) => void;\n title?: string;\n label?: React.ReactNode;\n onDismiss?: () => void;\n};\n\nexport const AccordionItem = ({\n className = '',\n collapsable = true,\n hideTitle = false,\n label,\n onChange,\n children,\n title,\n hasNextLevel,\n onDismiss\n}: AccordionItemProps) => {\n const [accordionOpen, setAccordionOpen] = useState(false);\n\n return (\n <>\n
\n {hideTitle ? (\n
{children}
\n ) : (\n <>\n {\n setAccordionOpen(!accordionOpen);\n onChange?.(!accordionOpen);\n }\n : () => {}\n }>\n \n {title}\n \n {label && !accordionOpen && (\n \n {label}\n \n )}\n \n {collapsable && (\n \n {hasNextLevel ? (\n \n ) : (\n \n )}\n \n )}\n \n \n {accordionOpen && (\n <>\n {hasNextLevel ? (\n \n setAccordionOpen(false)\n }\n onClose={onDismiss}\n title={title}>\n {children}\n \n ) : (\n \n
\n {children}\n
\n
\n )}\n \n )}\n \n )}\n \n \n );\n};\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 { 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, searchString)\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 if (categoryResultPage) {\n handleCategoryChange(category, event);\n } else {\n event.preventDefault();\n handleSearchCategoryChange(category);\n }\n },\n [categoryResultPage, handleCategoryChange, handleSearchCategoryChange]\n );\n\n if (!filterCategories?.categoryTree) {\n return null;\n }\n\n const categories = [filterCategories?.categoryTree];\n\n const searchString = categoryResultPage\n ? toSearchString(stripPaginationFromQueryParameters(queryParams))\n : null;\n const tree = mapTree(categories, searchString);\n\n const isAllCategoriesActiveParent =\n pageType === PAGE_TYPES.SEARCH_RESULT_PAGE && !queryParams?.categoryId;\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 LoadingIcon from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\nimport { Accordion } from 'tradera/components/accordion/accordion';\nimport { AccordionItem } from 'tradera/components/accordion/accordion-item';\nimport { FilterCategories } from './filter-categories';\nimport { BottomSheet } from 'tradera/components/bottom-sheet/bottom-sheet';\nimport { useTranslator } from 'tradera/lang/translate';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport { HeaderWithCloseButton } from 'tradera/components/scrollable-modal/header-with-close-button';\nimport useIsMobile from 'tradera/hooks/use-is-mobile';\nimport SideMenu from 'tradera/components/side-menu/side-menu';\n\ntype FilterCategoriesSideSheetProps = {\n filterCategories: {\n categoryTree: object;\n parameter: string;\n type: string;\n };\n handleCategoryChange: () => void;\n handleSearchCategoryChange: () => void;\n onDismiss: () => void;\n pageType: string;\n isLoading: boolean;\n show: boolean;\n queryParams: object;\n};\n\nexport const FilterCategoriesSideSheet = ({\n filterCategories,\n handleCategoryChange,\n handleSearchCategoryChange,\n pageType,\n isLoading,\n queryParams,\n onDismiss,\n show\n}: FilterCategoriesSideSheetProps) => {\n const { t } = useTranslator();\n const isMobile = useIsMobile();\n\n const body = (\n
\n \n
\n {isLoading && (\n
\n \n
\n )}\n \n \n \n \n \n
\n
\n \n
\n
\n );\n\n return isMobile ? (\n \n {body}\n \n ) : (\n \n {body}\n \n );\n};\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","type Props = {\n html: string;\n className?: string;\n};\n\nexport const IntroTextContainer = ({ html, className, ...props }: Props) => (\n \n);\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 { closeItemSettings } from 'tradera/state/ui/reducer';\nimport {\n addItemOnDisplay,\n removeItemOnDisplay\n} from 'tradera/state/discover/reducer';\nimport { LocalLoader } from 'tradera/components/loader/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 { Button } from '../atoms/button/button';\nimport { MODAL_STATE } from 'tradera/constants/ui';\n\nconst calculateDiscount = (priceBeforeDiscount, discountRate) => {\n const 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,\n closeItemSettings\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(item.itemId, onDisplay, discountRate);\n\n if (onDisplay) {\n addItemOnDisplay(item);\n } else {\n removeItemOnDisplay(item);\n }\n\n if (this.props.updateItem) {\n this.props.updateItem(item.itemId, {\n onDisplay,\n discountRate,\n price\n });\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 !== MODAL_STATE.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 (${\n maxOnDisplayCount -\n onDisplayCount\n } 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 {`(${\n maxDiscountCount -\n discountCount\n } 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 updateItem: PropTypes.func\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n closeItemSettings: () => dispatch(closeItemSettings()),\n addItemOnDisplay: (item) => dispatch(addItemOnDisplay({ item })),\n removeItemOnDisplay: (item) => dispatch(removeItemOnDisplay({ item }))\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 classNames from 'classnames';\nimport React from 'react';\nimport { formatSellerDsrAverage } from 'tradera/utils/format';\n\ntype SellerRatingProps = {\n className?: string;\n sellerDsrAverage?: number;\n includeTotal: boolean;\n};\n\nexport const SellerRating = ({\n className,\n includeTotal,\n sellerDsrAverage = 0\n}: SellerRatingProps) => {\n const isGood = sellerDsrAverage >= 4.8;\n const isBad = sellerDsrAverage < 4.5;\n const formattedRating = formatSellerDsrAverage(sellerDsrAverage).replace(\n ',',\n '.'\n );\n\n return (\n \n {Number(formattedRating).toFixed(1) +\n (includeTotal ? '\\u00A0/\\u00A05.0' : '')}\n \n );\n};\n","import React from 'react';\nimport { SellerRating } from './seller-rating';\nimport ALink from 'tradera/components/alink/alink';\n\ntype SellerLinkProps = {\n className?: string;\n sellerMemberId?: number;\n sellerAlias?: string;\n sellerDsrAverage?: number;\n};\n\nexport const SellerLink = ({\n className,\n sellerMemberId,\n sellerAlias,\n sellerDsrAverage\n}: SellerLinkProps) => {\n const hasRating = Math.abs(sellerDsrAverage || 0) >= 0.1;\n\n return (\n \n \n {sellerAlias}\n \n {hasRating && (\n <>\n  \n \n \n )}\n \n );\n};\n","import classNames from 'classnames';\nimport React from 'react';\nimport { useTranslator } from 'tradera/lang/translate';\nimport type { ShippingOption } from 'tradera/state/services/types/touchweb-search-api.types';\nimport { ShippingOptionProvider } from 'tradera/state/services/types/touchweb-search-api.types';\n\ntype ShippingLabelProps = {\n className: string;\n hasFreeShipping?: boolean;\n shippingOptions?: ShippingOption[];\n};\n\nexport const ShippingLabel = ({\n className,\n hasFreeShipping,\n shippingOptions\n}: ShippingLabelProps) => {\n const { t } = useTranslator();\n\n if (hasFreeShipping) {\n return (\n \n {t('itemCard_freeShipping')}\n

\n );\n }\n\n const hasNonSpecifiedShipping =\n !shippingOptions ||\n shippingOptions.length === 0 ||\n (shippingOptions.length === 1 &&\n shippingOptions[0].type === ShippingOptionProvider.NotSpecified);\n\n if (hasNonSpecifiedShipping) {\n return (\n

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

\n );\n }\n\n const isPickupOnly =\n shippingOptions.length === 1 &&\n [\n ShippingOptionProvider.Takeaway,\n ShippingOptionProvider.TakeawayOnly\n ].includes(shippingOptions[0].type);\n\n if (isPickupOnly) {\n return (\n

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

\n );\n }\n\n const shippingCost = shippingOptions[0].cost;\n\n if (shippingCost) {\n return (\n

\n {t('itemCard_shippingCost', { shippingCost })}\n

\n );\n }\n\n return null;\n};\n","import React from 'react';\nimport ALink from 'tradera/components/alink/alink';\nimport { EndTimeLabel } from './item-card-parts/end-time-label';\nimport { AttributeButtonsList } from './item-card-parts/attribute-buttons-list';\nimport { BidsLabel } from './item-card-parts/bids-label';\nimport { DiscountBadge } from './item-card-parts/discount-badge';\nimport { DiscountedPriceLabel } from './item-card-parts/disacount-price-label';\nimport { ItemCardImage } from './item-card-parts/item-card-image';\nimport { NewTodayBadge } from './item-card-parts/new-today-badge';\nimport { OnDisplayBadge } from './item-card-parts/on-display-badge';\nimport { PriceLabel } from './item-card-parts/price-label';\nimport { QuickViewButton } from './item-card-parts/quick-view-button';\nimport { SellerLink } from './item-card-parts/seller-link';\nimport { SettingsButton } from './item-card-parts/settings-button';\nimport { ShippingLabel } from './item-card-parts/shipping-label';\nimport { WishListButton } from './item-card-parts/wish-list-button';\nimport { useSelector } from 'react-redux';\nimport { selectIsSwedishVisitor } from 'tradera/state/shipping-region/selectors';\nimport { useDayJs } from 'tradera/hooks/use-day-js';\nimport { useAppSelector } from 'tradera/state/hooks';\nimport { useTranslator } from 'tradera/lang/translate';\nimport type {\n Attribute,\n ItemDto\n} from 'tradera/state/services/types/touchweb-search-api.types';\nimport { AuctionType } from 'tradera/state/services/types/touchweb-search-api.types';\nimport { getVisibleAttributes } from './item-card-parts/attribute-list-helper';\n\ntype ItemListCardProps = {\n item?: ItemDto;\n onAddToWishlist?: (itemId: ItemDto['itemId']) => void;\n onRemoveFromWishlist?: (itemId: ItemDto['itemId']) => void;\n onQuickView?: (item: ItemDto) => void;\n onSettings: (item: ItemDto) => void;\n onAttributeButtonClick: (attr: Attribute | null) => void;\n isShopOwnedByCurrentMember: boolean;\n onClick: (e: React.MouseEvent) => void;\n className?: string;\n};\n\nexport const ItemListCard = ({\n className,\n item,\n onClick,\n onAddToWishlist,\n onQuickView,\n onRemoveFromWishlist,\n onAttributeButtonClick,\n onSettings,\n isShopOwnedByCurrentMember = false\n}: ItemListCardProps) => {\n const ready = !!item?.itemUrl;\n const { t } = useTranslator();\n\n const withListItemIds = useAppSelector(\n (state) => state.items.wishListItemIds\n ) as number[];\n const existsInWishList =\n typeof item?.itemId !== 'undefined' &&\n withListItemIds.includes(item.itemId);\n const isSwedishVisitor = useSelector(selectIsSwedishVisitor);\n const dayjs = useDayJs();\n\n const showBids = item?.itemType\n ? [AuctionType.Auction, AuctionType.AuctionBin].includes(item.itemType)\n : false;\n\n const isShopItem = item?.itemType === AuctionType.ShopItem;\n const isPureBINItem = item?.itemType === AuctionType.PureBin;\n const showBuyNowPrice =\n item?.itemType === AuctionType.AuctionBin && item?.totalBids === 0;\n item?.itemType === AuctionType.AuctionBin && item?.totalBids === 0;\n const showBuyNowText = showBuyNowPrice || isShopItem || isPureBINItem;\n\n const hasDiscount = (item?.discountRate ?? 0) > 0;\n\n const visibleAttributes = getVisibleAttributes(\n (item as ItemDto)?.attributes\n );\n\n const isNewToday =\n !!item?.startDate &&\n dayjs(item?.startDate).isAfter(dayjs().subtract(1, 'day'));\n const itemUrl = item?.itemUrl || '/';\n\n const handleWishlist = (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n if (!onRemoveFromWishlist) return;\n if (!onAddToWishlist) return;\n if (!item) return;\n if (existsInWishList) {\n onRemoveFromWishlist(item?.itemId);\n } else {\n onAddToWishlist(item?.itemId);\n }\n };\n\n const handleSettings = (event: React.MouseEvent) => {\n event.preventDefault();\n if (!item) return;\n onSettings(item);\n };\n\n const handleQuickview = (event: React.MouseEvent) => {\n event.preventDefault();\n if (!item) return;\n if (!onQuickView) return;\n onQuickView(item);\n };\n\n const getBadge = () => {\n if (isNewToday) {\n return ;\n }\n\n if (hasDiscount) {\n return (\n \n );\n }\n };\n\n return (\n \n \n
{getBadge()}
\n
\n {!!item?.attributes?.length && onAttributeButtonClick && (\n \n )}\n
\n

\n \n {item?.shortDescription}\n \n

\n
\n
\n

\n \n {item?.shortDescription}\n \n

\n
\n
\n \n {!isShopItem && (\n \n )}\n
\n\n
\n \n \n {onQuickView && (\n \n )}\n {isShopOwnedByCurrentMember && (\n \n )}\n
\n
\n \n \n \n {hasDiscount && (\n \n )}\n {showBids && (\n \n )}\n {showBuyNowText && showBuyNowPrice ? (\n

\n {t('item-card_text_or')}{' '}\n {showBuyNowText && (\n \n {t('itemCard_buyNow')}\n \n )}{' '}\n {showBuyNowPrice && (\n \n )}\n

\n ) : (\n showBuyNowText &&\n !showBuyNowPrice &&

{t('itemCard_buyNow')}

\n )}\n {isSwedishVisitor && (\n \n )}\n {item?.onDisplay && }\n

\n {!isShopItem && (\n \n )}\n

\n \n \n );\n};\n","import React from 'react';\nimport MagnifierIcon from './magnifier.svg?jsx';\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","// extracted by mini-css-extract-plugin\nexport default {\"grid\":\"grid--wjGlP\",\"list\":\"list--o0q1c\",\"cards-xs\":\"cards-xs--gSome\",\"cardsXs\":\"cards-xs--gSome\",\"cards-sm\":\"cards-sm--ONg5C\",\"cardsSm\":\"cards-sm--ONg5C\",\"cards-md\":\"cards-md--qZo8e\",\"cardsMd\":\"cards-md--qZo8e\",\"cards-lg\":\"cards-lg--yvE9x\",\"cardsLg\":\"cards-lg--yvE9x\",\"cards-xl\":\"cards-xl--JNgoM\",\"cardsXl\":\"cards-xl--JNgoM\",\"span-entire-row\":\"span-entire-row--t6Stz\",\"spanEntireRow\":\"span-entire-row--t6Stz\"};","import React, { useContext } from 'react';\nimport classnames from 'classnames';\nimport css from './item-card-grid.module.scss';\n\nconst ItemCardGridContext = React.createContext(null);\nconst useItemCardGridContext = () => {\n const context = useContext(ItemCardGridContext);\n\n if (!context) {\n throw new Error(\n 'Component cannot be used outside of ItemCardGridContext'\n );\n }\n return context;\n};\n\nexport const ItemCardGrid = (props) => {\n const { itemSize, renderAsList, children, className, ...rest } = props;\n return (\n \n \n {children}\n \n \n );\n};\n\nexport const ItemCardGridItem = (props) => {\n const { children, className, spanEntireRow, renderBorderBottom } = props;\n const context = useItemCardGridContext();\n const { renderAsList } = context;\n\n return (\n \n {children}\n \n );\n};\n","import React from 'react';\nimport { useTranslator } from 'tradera/lang/translate';\nimport { ItemCardGridItem } from 'tradera/components/item-card-grid/item-card-grid';\nimport { ItemListCard } from 'tradera/components/item-card/item-list-card';\nimport { ItemCard } from 'tradera/components/item-card/item-card';\nimport { SaveSearchButton } from '../save-search/save-search-button';\nimport ArrowRightIcon from '@tradera/blueprint/theme/icons2/arrow-right.svg?jsx';\nimport * as searchGtm from 'tradera/apps/tradera/components/discover/helpers/search-gtm';\nimport ALink from 'tradera/components/alink/alink';\nimport { Button } from 'tradera/components/atoms/button/button';\n\nexport const FallbackItems = ({\n fallbackUrl,\n fallbackItems,\n itemLayout,\n quickViewEnabled,\n handleQuickViewClick,\n handleRemoveFromWishlist,\n handleAddToWishlist,\n handleItemAttributesForFilterClick,\n showSavedSearchBanner,\n fallbackItemsHeaderTitle,\n fallbackItemsHeaderDescription\n}) => {\n const { t } = useTranslator();\n const ItemCardComponent =\n itemLayout === 'layout-list' ? ItemListCard : ItemCard;\n const fallbackItemsHeader = (\n <>\n

\n {fallbackItemsHeaderTitle}\n

\n \n );\n return (\n <>\n {showSavedSearchBanner && (\n \n

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

\n

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

\n \n \n )}\n \n {fallbackUrl ? (\n \n {fallbackItemsHeader}\n \n \n ) : (\n fallbackItemsHeader\n )}\n {fallbackItemsHeaderDescription && (\n

\n {fallbackItemsHeaderDescription}\n

\n )}\n
\n\n {fallbackItems.map((item) => (\n \n \n \n ))}\n {fallbackUrl && (\n \n \n \n )}\n \n );\n};\n","import type { ResponseStatus } from './types/webapi-discover-generated';\n\nexport type Error = {\n data?: {\n responseStatus?: ResponseStatus;\n };\n};\nexport enum SearchTypeVariantHintParameterValue {\n EnrichEmptySearchResult = 'enrichemptysearchresult',\n EnrichAllWordsSearchResult = 'enrichallwordssearchresult'\n}\n\nexport enum QueryScopeParameterValue {\n BestMatch = 'BestMatch',\n AllWordsAnyOrder = 'AllWordsAnyOrder'\n}\n\nexport enum ItemStatusParameterValue {\n Unsold = 'Unsold',\n Ended = 'Ended',\n Active = 'Active'\n}\n","import { useGetIndependentSearchResultQuery } from 'tradera/state/services/discover-api';\nimport { createIndependentSearchApiRequest } from 'tradera/features/discover/data';\nimport { useAppSelector } from 'tradera/state/hooks';\nimport {\n selectAutomaticTranslationPreferred,\n selectPreferredLanguageCode\n} from 'tradera/state/language/selectors';\nimport { selectMemberCountryCodeIso2 } from 'tradera/state/member/selectors';\nimport { useUrlLocalizer } from 'tradera/lang/translate';\nimport { SearchTypeVariantHintParameterValue } from 'tradera/state/services/discover.types';\nimport { createSearchFallbackUrl } from './use-get-all-fallback-search-results';\nimport type { ItemCardViewModel } from 'tradera/state/services/types/webapi-discover-generated';\n\nexport const useGetNoCategoryFallbackSearchResult = (\n mainSearchItems: ItemCardViewModel[],\n mainSearchParams: { [key: string]: string },\n notSoldFallbackItems: ItemCardViewModel[] | null | undefined,\n bestMatchFallbackItems: ItemCardViewModel[] | null | undefined,\n isEnabled: boolean\n) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const preferredLanguage = useAppSelector(selectPreferredLanguageCode);\n const countryCodeIso2 = useAppSelector(selectMemberCountryCodeIso2);\n const automaticTranslationPreferred = useAppSelector(\n selectAutomaticTranslationPreferred\n );\n const mainSearchResultHasItems = mainSearchItems.length > 0;\n\n const queryParamasForNoCategory = {\n ...mainSearchParams,\n categoryId: '',\n searchTypeVariantHint:\n SearchTypeVariantHintParameterValue.EnrichEmptySearchResult\n };\n\n const noCategorySearchApiRequest = createIndependentSearchApiRequest(\n countryCodeIso2,\n automaticTranslationPreferred,\n preferredLanguage,\n queryParamasForNoCategory\n );\n\n // Trigger when a category is set and main result, not sold fallback and best match fallback did not return any items.\n const {\n currentData: noCategoryFallback,\n isFetching: isFetchingNoCategoryFallback\n } = useGetIndependentSearchResultQuery(noCategorySearchApiRequest, {\n skip:\n mainSearchParams.categoryId == null ||\n !isEnabled ||\n mainSearchResultHasItems ||\n hasItems(notSoldFallbackItems) ||\n hasItems(bestMatchFallbackItems)\n });\n\n const noCategoryFallbackUrl = toLocalizedUrl(\n createSearchFallbackUrl(\n queryParamasForNoCategory,\n true,\n false,\n noCategoryFallback?.pagination?.pageLinks\n )\n );\n\n return {\n noCategoryFallback: {\n items: noCategoryFallback?.items,\n url: noCategoryFallbackUrl\n },\n isFetching: isFetchingNoCategoryFallback\n };\n};\n\nconst hasItems = (items: ItemCardViewModel[] | null | undefined): boolean => {\n return items?.length ? items?.length > 0 : false;\n};\n","import type {\n ItemCardViewModel,\n PaginationLinkViewModel\n} from 'tradera/state/services/types/webapi-discover-generated';\nimport {\n QueryScopeParameterValue,\n SearchTypeVariantHintParameterValue\n} from 'tradera/state/services/discover.types';\nimport { useGetUnsoldFallbackSearchResult } from './use-get-unsold-fallback-search-result';\nimport { useGetBestMatchFallbackSearchResult } from './use-get-best-match-fallback-search-result';\nimport { useGetNoCategoryFallbackSearchResult } from './use-get-no-category-fallback-search-result';\n\nconst SEARCH_TYPE_VARIANT_HINT_PARAMETER_NAME = 'searchTypeVariantHint';\n\nexport const useGetAllFallbackSearchResults = (\n mainSearchItems: ItemCardViewModel[],\n mainSearchHasPagination: boolean,\n mainSearchParams: { [key: string]: string },\n isClientSideFallbacksEnabled: boolean\n) => {\n const { notSoldFallback, isFetching: isFetchingNotSoldFallback } =\n useGetUnsoldFallbackSearchResult(\n mainSearchHasPagination,\n mainSearchParams,\n isClientSideFallbacksEnabled\n );\n\n const { bestMatchFallback, isFetching: isFetchingBestMatchFallback } =\n useGetBestMatchFallbackSearchResult(\n mainSearchItems,\n mainSearchParams,\n notSoldFallback.items,\n isClientSideFallbacksEnabled && !isFetchingNotSoldFallback\n );\n\n const { noCategoryFallback, isFetching: isFetchingNoCategoryFallback } =\n useGetNoCategoryFallbackSearchResult(\n mainSearchItems,\n mainSearchParams,\n notSoldFallback.items,\n bestMatchFallback.items,\n isClientSideFallbacksEnabled && !isFetchingBestMatchFallback\n );\n\n return {\n notSoldFallback,\n bestMatchFallback,\n noCategoryFallback,\n isFetching:\n isFetchingNotSoldFallback ||\n isFetchingBestMatchFallback ||\n isFetchingNoCategoryFallback\n };\n};\n\nexport const createSearchFallbackUrl = (\n searchParams: Record,\n isBestMatch: boolean,\n isAllCategories: boolean,\n pageLinks: PaginationLinkViewModel[] | null | undefined\n): string | null => {\n const urlParams = new URLSearchParams(searchParams);\n\n const secondPageLink = pageLinks?.find((link) => link.pageIndex === 2);\n\n if (!secondPageLink) {\n return null;\n }\n\n if (secondPageLink?.paging) {\n urlParams.set('paging', secondPageLink.paging);\n }\n\n if (isBestMatch) {\n urlParams.set('queryScope', QueryScopeParameterValue.BestMatch);\n urlParams.set(\n SEARCH_TYPE_VARIANT_HINT_PARAMETER_NAME,\n SearchTypeVariantHintParameterValue.EnrichAllWordsSearchResult\n );\n }\n\n if (isAllCategories) {\n urlParams.delete('categoryId');\n urlParams.set(\n SEARCH_TYPE_VARIANT_HINT_PARAMETER_NAME,\n SearchTypeVariantHintParameterValue.EnrichEmptySearchResult\n );\n }\n\n const query = urlParams.toString();\n const queryPart = query ? `?${query}` : '';\n\n return `/search${queryPart}`;\n};\n","import { useGetIndependentSearchResultQuery } from 'tradera/state/services/discover-api';\nimport { createIndependentSearchApiRequest } from 'tradera/features/discover/data';\nimport { useAppSelector } from 'tradera/state/hooks';\nimport {\n selectAutomaticTranslationPreferred,\n selectPreferredLanguageCode\n} from 'tradera/state/language/selectors';\nimport { selectMemberCountryCodeIso2 } from 'tradera/state/member/selectors';\nimport { useUrlLocalizer } from 'tradera/lang/translate';\nimport { ItemStatusParameterValue } from 'tradera/state/services/discover.types';\nimport { useIsFeatureEnabled } from 'tradera/hooks/use-is-feature-enabled';\nimport { createSearchFallbackUrl } from './use-get-all-fallback-search-results';\n\nexport const useGetUnsoldFallbackSearchResult = (\n mainSearchHasPagination: boolean,\n mainSearchParams: { [key: string]: string },\n isClientSideFallbacksEnabled: boolean\n) => {\n const isUnsoldFilterEnabled = useIsFeatureEnabled(\n 'search-item-status-unsold'\n );\n const { toLocalizedUrl } = useUrlLocalizer();\n const preferredLanguage = useAppSelector(selectPreferredLanguageCode);\n const countryCodeIso2 = useAppSelector(selectMemberCountryCodeIso2);\n const automaticTranslationPreferred = useAppSelector(\n selectAutomaticTranslationPreferred\n );\n const mainSearchHasUnsoldFilter =\n mainSearchParams.itemStatus === ItemStatusParameterValue.Unsold;\n\n const queryParamsForUnsold = {\n ...mainSearchParams,\n itemStatus: ItemStatusParameterValue.Unsold\n };\n\n const unsoldSearchApiRequest = createIndependentSearchApiRequest(\n countryCodeIso2,\n automaticTranslationPreferred,\n preferredLanguage,\n queryParamsForUnsold\n );\n\n // Get the not sold fallback result if the main search is not filtered on Unsold and if the main result does not have multiple paging pages.\n const {\n currentData: notSoldFallback,\n isFetching: isFetchingNotSoldFallback\n } = useGetIndependentSearchResultQuery(unsoldSearchApiRequest, {\n skip:\n mainSearchHasUnsoldFilter ||\n mainSearchHasPagination ||\n !isClientSideFallbacksEnabled ||\n !isUnsoldFilterEnabled\n });\n\n const notSoldFallbackUrl = toLocalizedUrl(\n createSearchFallbackUrl(\n queryParamsForUnsold,\n true,\n false,\n notSoldFallback?.pagination?.pageLinks\n )\n );\n\n return {\n notSoldFallback: {\n items: notSoldFallback?.items,\n url: notSoldFallbackUrl\n },\n isFetching: isFetchingNotSoldFallback\n };\n};\n","import { useGetIndependentSearchResultQuery } from 'tradera/state/services/discover-api';\nimport { createIndependentSearchApiRequest } from 'tradera/features/discover/data';\nimport { useAppSelector } from 'tradera/state/hooks';\nimport {\n selectAutomaticTranslationPreferred,\n selectPreferredLanguageCode\n} from 'tradera/state/language/selectors';\nimport { selectMemberCountryCodeIso2 } from 'tradera/state/member/selectors';\nimport { useUrlLocalizer } from 'tradera/lang/translate';\nimport {\n QueryScopeParameterValue,\n SearchTypeVariantHintParameterValue\n} from 'tradera/state/services/discover.types';\nimport { createSearchFallbackUrl } from './use-get-all-fallback-search-results';\nimport type { ItemCardViewModel } from 'tradera/state/services/types/webapi-discover-generated';\n\nconst MAIN_SEARCH_RESULT_THRESHHOLD_FOR_FALLBACK = 20;\nconst UNSOLD_FALLBACK_THRESHOLD_FOR_ADDITIONAL_FALLBACK = 20;\n\nexport const useGetBestMatchFallbackSearchResult = (\n mainSearchItems: ItemCardViewModel[],\n mainSearchParams: { [key: string]: string },\n notSoldFallbackItem: ItemCardViewModel[] | null | undefined,\n isEnabled: boolean\n) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const preferredLanguage = useAppSelector(selectPreferredLanguageCode);\n const countryCodeIso2 = useAppSelector(selectMemberCountryCodeIso2);\n const automaticTranslationPreferred = useAppSelector(\n selectAutomaticTranslationPreferred\n );\n const searchIsMultiWord = mainSearchParams.q?.includes(' ');\n const mainSearchResultIsHigherThanThreshold =\n mainSearchItems.length > MAIN_SEARCH_RESULT_THRESHHOLD_FOR_FALLBACK;\n\n const notSoldSearchResultIsHigherThanThreshold = notSoldFallbackItem?.length\n ? notSoldFallbackItem.length >\n UNSOLD_FALLBACK_THRESHOLD_FOR_ADDITIONAL_FALLBACK\n : false;\n\n const queryParamsForBestMatch = {\n ...mainSearchParams,\n queryScope: QueryScopeParameterValue.BestMatch,\n searchTypeVariantHint:\n SearchTypeVariantHintParameterValue.EnrichAllWordsSearchResult\n };\n\n const bestMatchSearchApiRequest = createIndependentSearchApiRequest(\n countryCodeIso2,\n automaticTranslationPreferred,\n preferredLanguage,\n queryParamsForBestMatch\n );\n\n const bestMatchQueryHasQueryScopeAllWordsAnyOrder =\n bestMatchSearchApiRequest.queryScope ===\n QueryScopeParameterValue.AllWordsAnyOrder;\n\n // Trigger when query is multiword, queryScope is empty or 'AllwordsAnyOrder' and main result and not sold fallback result is less than 20 items\n const {\n currentData: bestMatchFallback,\n isFetching: isFetchingBestMatchFallback\n } = useGetIndependentSearchResultQuery(bestMatchSearchApiRequest, {\n skip:\n !searchIsMultiWord ||\n bestMatchQueryHasQueryScopeAllWordsAnyOrder ||\n mainSearchResultIsHigherThanThreshold ||\n notSoldSearchResultIsHigherThanThreshold ||\n !isEnabled\n });\n\n const bestMatchFallbackUrl = toLocalizedUrl(\n createSearchFallbackUrl(\n queryParamsForBestMatch,\n false,\n true,\n bestMatchFallback?.pagination?.pageLinks\n )\n );\n\n // Remove duplicates\n // Main items and unsold fallback items should never have the same ids since they are filtered on different itemStatus,\n // No category fallback should not be displayed if there are any main or not sold fallback search results.\n const mainSearchItemIds = mainSearchItems.map((item) => item.itemId);\n const deduplicatedBestMatchItems = bestMatchFallback?.items?.filter(\n (item) => !mainSearchItemIds.includes(item.itemId)\n );\n\n return {\n bestMatchFallback: {\n items: deduplicatedBestMatchItems,\n url: bestMatchFallbackUrl\n },\n isFetching: isFetchingBestMatchFallback\n };\n};\n","import React, { useCallback, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslator } from 'tradera/lang/translate';\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 ZeroResults from './zero-results';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport { ComponentsWithStitchAds } from './items-with-stiched-ads';\nimport { updateItem } from 'tradera/state/discover/reducer';\nimport * as itemActions from 'tradera/state/items/actions';\nimport uiActions from 'tradera/state/ui/actions';\nimport { openItemSettings } from 'tradera/state/ui/reducer';\nimport { GtmService } from 'tradera/services/google-tagmanager-service';\nimport { registerLiveUpdates } from 'tradera/utils/register-live-updates';\nimport { useIsFeatureEnabled } from 'tradera/hooks/use-is-feature-enabled';\nimport { selectIsGoogleAdsEnabled } from 'tradera/state/ads/selectors';\nimport {\n selectIsFeatureEnabled,\n selectWebLiveUrl\n} from 'tradera/state/environment/selectors';\nimport useIsMobile from 'tradera/hooks/use-is-mobile';\nimport {\n ItemCardGrid,\n ItemCardGridItem\n} from 'tradera/components/item-card-grid/item-card-grid';\nimport { ITEM_CARD_IMAGE_MODES } from 'tradera/components/item-card/item-card-parts/item-card-image-modes';\nimport { ITEM_LAYOUT } from 'tradera/constants/ui';\nimport { FallbackItems } from './fallback/fallback-items';\nimport LoadingIcon from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\nimport { formatQueryParams } from 'tradera/utils/url';\nimport { useGetAllFallbackSearchResults } from './fallback/use-get-all-fallback-search-results';\nimport { useIsSiteWidthFull } from 'tradera/state/ui/helpers';\nimport { useAppSelector } from 'tradera/state/hooks';\n\nconst ItemCardGridItemWrapper = ({ children }) => (\n {children}\n);\n\nconst getItemCardGridSize = (itemLayout, isSiteWidthFull) => {\n if (isSiteWidthFull) {\n switch (itemLayout) {\n case ITEM_LAYOUT.GRID_LARGE:\n return 'md';\n case ITEM_LAYOUT.GRID_MEDIUM:\n return 'sm';\n case ITEM_LAYOUT.GRID:\n return 'xs';\n default:\n return 'list';\n }\n }\n switch (itemLayout) {\n case ITEM_LAYOUT.GRID_LARGE:\n return 'xl';\n case ITEM_LAYOUT.GRID_MEDIUM:\n return 'lg';\n case ITEM_LAYOUT.GRID:\n return 'md';\n default:\n return 'list';\n }\n};\n\nexport const SearchResults = ({\n handleItemAttributesForFiltering,\n isShopOwnedByCurrentMember,\n pageType,\n noItemsFallback,\n isLoaded\n}) => {\n const { t } = useTranslator();\n const dispatch = useDispatch();\n const webLiveUrl = useAppSelector(selectWebLiveUrl);\n const adsEnabled = useSelector((state) => selectIsGoogleAdsEnabled(state));\n\n const itemLayout = useSelector((state) => state.ui.itemLayout);\n const itemsOnDisplay = useSelector(\n (state) => state.discover.itemsOnDisplay\n );\n const items = useSelector((state) => state.discover.items);\n const pageIndex = useSelector((state) =>\n state.discover.pagination ? state.discover.pagination.pageIndex : null\n );\n const pageCount = useSelector((state) =>\n state.discover.pagination ? state.discover.pagination.pageCount : null\n );\n const queryParams = useSelector((state) => state.discover.queryParams);\n const searchTerm = queryParams.q;\n\n const quickViewEnabled = useSelector(selectIsFeatureEnabled('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 const isSiteWidthFull = useIsSiteWidthFull();\n const isMobile = useIsMobile();\n\n const shouldUseNaturalImageMode =\n isMobile && itemLayout === 'layout-grid-large';\n\n const imageMode = shouldUseNaturalImageMode\n ? ITEM_CARD_IMAGE_MODES.NATURAL\n : ITEM_CARD_IMAGE_MODES.SQUARE;\n\n const ItemCardComponent =\n itemLayout === 'layout-list' ? ItemListCard : ItemCard;\n\n const handleOpenItemSettings = useCallback(\n (item) => dispatch(openItemSettings(item)),\n [dispatch]\n );\n\n const handleQuickViewClick = useCallback(\n (item) => {\n dispatch(\n uiActions.openQuickViewAction({\n items,\n item,\n openedFrom: 'Search Results'\n })\n );\n },\n [items, dispatch]\n );\n\n const handleAddToWishlist = useCallback(\n (itemId) => {\n GtmService.trackAction('Wishlist Item', `Add From ${pageType}`);\n dispatch(itemActions.wishlist(itemId));\n },\n [pageType, dispatch]\n );\n\n const handleRemoveFromWishlist = useCallback(\n (itemId) => {\n GtmService.trackAction('Wishlist Item', `Remove From ${pageType}`);\n dispatch(itemActions.wishlist(itemId));\n },\n [pageType, dispatch]\n );\n\n const handleItemAttributesForFilterClick = useCallback(\n (attribute) => {\n const { name, values } = attribute;\n GtmService.trackAction('Search', 'ItemCard filter', `${name}`);\n handleItemAttributesForFiltering(name, values);\n },\n [handleItemAttributesForFiltering]\n );\n\n const searchParams = formatQueryParams(queryParams);\n const {\n notSoldFallback,\n bestMatchFallback,\n noCategoryFallback,\n isFetching: isFetchingFallbacks\n } = useGetAllFallbackSearchResults(\n items,\n pageCount > 1,\n searchParams,\n pageType === PAGE_TYPES.SEARCH_RESULT_PAGE\n );\n\n const bestMatchFallbackHasItems = bestMatchFallback?.items?.length > 0;\n\n const bestMatchOrNoCategoryfallbackItems = bestMatchFallbackHasItems\n ? bestMatchFallback.items\n : noCategoryFallback.items;\n\n const bestMatchOrNoCategoryfallbackUrl = bestMatchFallbackHasItems\n ? bestMatchFallback.url\n : noCategoryFallback.url;\n\n const notSoldfallbackHasItems = notSoldFallback?.items?.length > 0;\n const bestMatchOrNoCategoryfallbackHasItems =\n bestMatchOrNoCategoryfallbackItems?.length > 0;\n\n useEffect(() => {\n if (\n pageType === PAGE_TYPES.CUSTOM_RESULT_PAGE &&\n isLastChanceLiveUppdatesEnabled\n ) {\n return registerLiveUpdates({\n url: webLiveUrl,\n onConnect: (socket) => {\n for (const { 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 dispatch(\n updateItem(data.Event.AuctionId, {\n price: data.Event.BidAmount,\n totalBids: data.Event.NumberOfBids\n })\n );\n break;\n }\n }\n });\n }\n }, [\n pageType,\n items,\n isLastChanceLiveUppdatesEnabled,\n dispatch,\n webLiveUrl\n ]);\n\n const components = React.useMemo(\n () =>\n items.map((item) => (\n \n \n \n )),\n [\n ItemCardComponent,\n handleAddToWishlist,\n handleItemAttributesForFilterClick,\n handleOpenItemSettings,\n handleQuickViewClick,\n handleRemoveFromWishlist,\n imageMode,\n isShopOwnedByCurrentMember,\n itemLayout,\n items,\n quickViewEnabled,\n isSiteWidthFull\n ]\n );\n\n return (\n <>\n {showItemsOnDisplay && (\n \n <>\n \n
\n

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

\n
\n \n \n {itemLayout !== 'layout-list' && (\n \n
\n \n )}\n \n \n )}\n\n 20\n ? 'search-results'\n : 'few-results'\n }`}>\n <>\n {items?.length > 0 && (\n \n )}\n {/* Loader for fallback items fetched on client side */}\n {isFetchingFallbacks && (\n \n \n \n )}\n {notSoldfallbackHasItems && (\n \n )}\n {bestMatchOrNoCategoryfallbackHasItems && (\n \n )}\n \n {items?.length < 1 &&\n !isFetchingFallbacks &&\n !notSoldfallbackHasItems &&\n !bestMatchOrNoCategoryfallbackHasItems && (\n \n {noItemsFallback ? (\n noItemsFallback\n ) : (\n \n )}\n \n )}\n \n \n );\n};\n\nSearchResults.propTypes = {\n isShopOwnedByCurrentMember: PropTypes.bool,\n pageType: PropTypes.string,\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}) => {\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 // eslint-disable-next-line better-mutation/no-mutation\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","function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\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 ? Object.assign.bind() : 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); }\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})));","// extracted by mini-css-extract-plugin\nexport default {\"switch\":\"switch--ipsqt\"};","import React from 'react';\nimport uiActions from 'tradera/state/ui/actions';\nimport { ITEM_LAYOUT } from 'tradera/constants/ui';\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';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport cn from 'classnames';\nimport styles from './site-layout-switch.module.scss';\nimport useIsDesktop from 'tradera/hooks/use-is-desktop';\nimport { RadioSwitch } from 'tradera/components/form-controls/radio-switch';\nimport { useTranslator } from 'tradera/lang/translate';\nimport { useAppSelector, useAppDispatch } from 'tradera/state/hooks';\n\nconst trackItemLayoutChange = (itemLayout: string) => {\n gtm.trackFilter('Layout', itemLayout);\n};\n\nconst list = ITEM_LAYOUT.LIST;\nconst grid = ITEM_LAYOUT.GRID;\nconst gridMedium = ITEM_LAYOUT.GRID_MEDIUM;\nconst gridLarge = ITEM_LAYOUT.GRID_LARGE;\n\ntype ItemLayoutSwitchProps = {\n className?: string;\n isSideSheet?: boolean;\n};\n\nexport const ItemLayoutSwitch = ({\n className,\n isSideSheet\n}: ItemLayoutSwitchProps) => {\n const { t } = useTranslator();\n const isDesktop = useIsDesktop();\n const itemLayout = useAppSelector((state) => state?.ui.itemLayout);\n const dispatch = useAppDispatch();\n const selectedLayout = [list, grid, gridMedium, gridLarge].includes(\n itemLayout\n )\n ? itemLayout\n : list; // make sure passed in value is one of our 4 layouts, or default to list\n const iconClasses = cn('icon align-text-bottom', { 'icon-md': isDesktop });\n const options = [\n {\n icon: ,\n type: list\n },\n {\n icon: ,\n type: grid\n },\n {\n icon: ,\n type: gridMedium\n },\n {\n icon: ,\n type: gridLarge\n }\n ];\n\n if (!isDesktop || isSideSheet) {\n const radioOptions = options\n .filter((item) => {\n if (!isDesktop) {\n return item.type !== grid;\n }\n return item;\n })\n .map((item) => ({\n value: item.type,\n name: {item.icon}\n }));\n\n return (\n {\n dispatch(uiActions.updateItemLayout(e));\n trackItemLayoutChange(e);\n }}\n className={className}\n />\n );\n }\n const currentOrderPos = options.findIndex(\n (item) => selectedLayout === item.type\n );\n\n const nextItem = (currentOrderPos + 1) % 4;\n const type = options[nextItem].type;\n\n return (\n {\n dispatch(uiActions.updateItemLayout(type));\n trackItemLayoutChange(type);\n }}\n className={cn(className, styles.switch, 'p-0')}>\n {options[currentOrderPos].icon}\n \n );\n};\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 10\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 5l7.5 4.33V.67L0 5zm20 0L12.5.67v8.66L20 5zm-13.25.75h6.5v-1.5h-6.5v1.5z\"\n})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\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 * 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';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport cn from 'classnames';\nimport styles from './site-layout-switch.module.scss';\nimport { useTranslator } from 'tradera/lang/translate';\nimport { SITE_LAYOUT } from 'tradera/constants/ui';\n\nconst trackSiteLayoutChange = (siteLayout) => {\n gtm.trackFilter('Site width layout', siteLayout);\n};\n\nconst iconClasses = 'icon icon-md align-text-bottom';\n\nconst SiteLayoutSwitch = ({ siteLayout, className, updateSiteLayout }) => {\n const { t } = useTranslator();\n let icon = ;\n let type = SITE_LAYOUT.DEFAULT;\n\n if (siteLayout === SITE_LAYOUT.DEFAULT) {\n icon = ;\n type = SITE_LAYOUT.FULL_WIDTH;\n }\n\n return (\n {\n updateSiteLayout(type);\n trackSiteLayoutChange(type);\n }}\n className={cn(className, styles.switch, 'p-0')}>\n {icon}\n \n );\n};\n\nSiteLayoutSwitch.propTypes = {\n siteLayout: PropTypes.string,\n className: PropTypes.string\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 classnames from 'classnames';\n\ntype SelectProps = {\n className: string;\n handleChange: (value: string) => void;\n id: string;\n label?: string;\n options: Array<{ name: string; value: string }>;\n selectClassName?: string;\n selectedValue: string;\n visuallyHideLabel?: boolean;\n type?: 'single' | 'sort';\n};\n\nexport const Select = ({\n className = '',\n handleChange,\n id,\n label,\n options,\n selectClassName = '',\n selectedValue,\n visuallyHideLabel,\n type = 'single'\n}: SelectProps) => {\n if (!options) {\n return null;\n }\n return (\n
\n {label ? (\n \n {label}\n \n ) : null}\n
\n {\n handleChange(e.target.value);\n }}>\n {options.map((option) => (\n \n ))}\n \n
\n \n );\n};\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 11\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 .5C0 .22.22 0 .5 0h8.6a.5.5 0 010 1H.5A.5.5 0 010 .5zm0 3c0-.28.22-.5.5-.5h6.68a.5.5 0 010 1H.5a.5.5 0 01-.5-.5zM.5 9a.5.5 0 000 1h2.84a.5.5 0 000-1H.5zM0 6.5c0-.28.22-.5.5-.5h4.76a.5.5 0 010 1H.5a.5.5 0 01-.5-.5zM12.48.41A.49.49 0 0012 0a.49.49 0 00-.48.5v7.99L9.65 6.54l-.67.71 3.05 3.18 3.06-3.18-.68-.7-1.93 2V.4z\",\n fill: \"#000\"\n})));","import React from 'react';\nimport CONSTANTS from 'tradera/apps/tradera/components/discover/constants/constants';\nimport DescendingIcon from '@tradera/blueprint/theme/icons2/sort.svg?jsx';\nimport DropdownIcon from '@tradera/blueprint/theme/icons2/dropdown.svg?jsx';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport { useTranslator } from 'tradera/lang/translate';\nimport type { SingleOptionFilterViewModel } from 'tradera/state/services/types/webapi-discover-generated';\ntype SortingLinkProps = {\n sortBy: SingleOptionFilterViewModel;\n handleModalClick: (param: string, text: string) => void;\n};\n\nexport const SortingLink = ({ sortBy, handleModalClick }: SortingLinkProps) => {\n const { t } = useTranslator();\n const selectedSorting = sortBy?.options?.find(\n (option) => option.value === sortBy.selectedValue\n )?.name;\n\n if (!selectedSorting) return null;\n const fontSize = '0.8571428571rem'; // 12px. temp fix until button classes can override button style\n\n return (\n {\n handleModalClick(\n CONSTANTS.MODALS.FILTER_MODAL,\n t('searchResults_sortLabel')\n );\n }}>\n \n {selectedSorting}\n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useTranslator } from 'tradera/lang/translate';\nimport { toQueryParameters, toSearchString } from 'tradera/utils/url';\nimport SearchIcon from '@tradera/blueprint/theme/icons2/search.svg?jsx';\nimport { useLocation } from 'tradera/hooks/use-location';\nimport { useNavigation } from 'tradera/hooks/use-navigation';\nexport const SearchFieldProfilePage = () => {\n const location = useLocation();\n const { t } = useTranslator();\n const navigation = useNavigation();\n const { q: searchTerm = '' } = toQueryParameters(location.search);\n const [searchString, setSearchString] = useState(searchTerm);\n\n useEffect(() => {\n setSearchString(searchTerm);\n }, [searchTerm]);\n\n const handleProfileSearch = (query) => {\n const q = query.trim();\n navigation.push({\n pathname: location.pathname,\n search: toSearchString(q ? { q } : 'null')\n });\n };\n\n return (\n
\n
\n {\n e.preventDefault();\n handleProfileSearch(searchString);\n }}>\n setSearchString(e.target.value)}\n />\n \n \n
\n
\n );\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Slider from 'rc-slider';\nimport { withTranslator } from 'tradera/lang/translate';\nimport * as gtm from 'tradera/apps/tradera/components/discover/helpers/search-gtm';\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.state = {\n //set starting position for handle\n usedSlider: false,\n min: props.handleStart || props.rangeStart,\n max: props.handleEnd || props.rangeEnd,\n loading: false,\n lastSearchMin: props.handleStart,\n lastSearchMax: 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 const { rangeStart } = this.props;\n let min = value;\n if (min === '' || isNaN(min)) {\n min = min === '' ? rangeStart : 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 >= this.props.rangeEnd) {\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, this.props.rangeEnd);\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 = (fromPrice, toPrice) => {\n const { handlePriceFilterChange } = this.props;\n\n // Get values from inputs if not provided as arguments\n if (!this.stateHasChangedSinceStart(fromPrice, toPrice)) {\n return;\n }\n\n const search = () => {\n if (handlePriceFilterChange) {\n // This will update the URL with the new price\n handlePriceFilterChange({\n fromPrice:\n fromPrice <= this.props.rangeStart ? null : fromPrice,\n toPrice: toPrice >= this.props.rangeEnd ? null : toPrice\n });\n gtm.trackPriceFilter(fromPrice, toPrice);\n this.setState({\n lastSearchMin: parseInt(fromPrice, 10),\n lastSearchMax: parseInt(toPrice, 10) || null,\n loading: false\n });\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 inputMinLength = () => {\n return this.state.min.toString().length;\n };\n\n inputMaxLength = () => {\n return this.state.max.toString().length;\n };\n\n handleInputBlur = () => {\n if (this.props.handlePriceFilterChange) {\n this.gotoNewURL(this.state.min, this.state.max);\n }\n };\n\n handleSliderInteraction = ([min, max]) => {\n const { handleStart, handleEnd, handlePriceFilterChange } = this.props;\n if (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 { rangeStart, rangeEnd, t } = this.props;\n const { min, max } = this.state;\n const isMax = max >= rangeEnd;\n const limitedMax = isMax ? rangeEnd : max;\n\n return (\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,\n handleEnd: PropTypes.number,\n handlePriceFilterChange: PropTypes.func,\n rangeStart: PropTypes.number.isRequired,\n rangeEnd: PropTypes.number.isRequired\n};\n\n// export default PriceRange;\nexport { PriceRange };\nexport default withTranslator(PriceRange);\n","// extracted by mini-css-extract-plugin\nexport default {\"filterOption\":\"filterOption--l4QLO\",\"body\":\"body--Cau7n\",\"inner\":\"inner--QdYTv\",\"open\":\"open--jvkWy\",\"icon\":\"icon--piQ7t\",\"arrowOpen\":\"arrowOpen---umoA\",\"button\":\"button--UQkxb\"};","import type { ReactChild, RefObject } from 'react';\nimport React, { useState, useRef, useCallback, useEffect } from 'react';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport styles from './filter-options.module.scss';\nimport cn from 'classnames';\nimport { useClickOutside } from 'tradera/hooks/use-click-outside';\nimport { useEventListener } from 'tradera/hooks/use-event-listener';\nimport { useIsTablet } from 'tradera/hooks/use-is-tablet';\nimport useIsDesktop from 'tradera/hooks/use-is-desktop';\nimport { BottomSheet } from 'tradera/components/bottom-sheet/bottom-sheet';\nimport { HeaderWithCloseButton } from 'tradera/components/scrollable-modal/header-with-close-button';\nimport { useTranslator } from 'tradera/lang/translate';\nimport { setIsFilterOpen } from 'tradera/state/discover/reducer';\nimport { useAppDispatch } from 'tradera/state/hooks';\nimport { DropdownButton } from 'tradera/components/dropdown-button/dropdown-button';\n\ntype FilterDropDownProps = {\n exceptionRef?: RefObject;\n id: string;\n children: ReactChild;\n onClose: () => void;\n};\n\nconst FilterDropDown = ({\n id,\n children,\n onClose,\n exceptionRef\n}: FilterDropDownProps) => {\n const ref = useRef(null);\n const onClickOutsideOfItem = useCallback(() => onClose(), [onClose]);\n\n useClickOutside(ref, onClickOutsideOfItem, exceptionRef);\n\n return (\n
\n
{children}
\n
\n );\n};\n\ntype FilterOptionProps = {\n children: ReactChild;\n title: string;\n id: string;\n className?: string;\n};\n\nexport const FilterOption = ({\n children,\n title,\n id,\n className\n}: FilterOptionProps) => {\n const [filterOpen, setFilterOpen] = useState(false);\n const [isFilterOnTheEdge, setIsFilterOnTheEdge] = useState(false);\n const isTablet = useIsTablet();\n const isDesktop = useIsDesktop();\n const isLargeScreen = isTablet || isDesktop;\n const ref = useRef(null);\n const exceptionRef = useRef(null);\n const { t } = useTranslator();\n const dispatch = useAppDispatch();\n\n const handleWindowResize = () => {\n const el = ref.current;\n\n if (!el) {\n return;\n }\n\n const dropDownWidth = 384; // need to match the width in .body {}\n const parentOuterSpace = 80; // for a more precise position\n const siteWidth = 1250; // fallback if offsetParent is null (which will never happen)\n\n const filterOffsetRight = el.getBoundingClientRect().right;\n const parentOffsetRight =\n el.offsetParent?.getBoundingClientRect().right;\n\n setIsFilterOnTheEdge(\n filterOffsetRight + dropDownWidth >\n (parentOffsetRight\n ? parentOffsetRight + parentOuterSpace\n : siteWidth)\n );\n };\n useEffect(() => {\n handleWindowResize();\n }, [ref]);\n\n useEventListener('resize', handleWindowResize);\n\n const onDismiss = () => {\n setFilterOpen(false);\n dispatch(setIsFilterOpen(false));\n };\n\n const onToggleFilter = () => {\n setFilterOpen(!filterOpen);\n dispatch(setIsFilterOpen(!filterOpen));\n };\n\n const bottomSheetBody = (\n
\n \n
{children}
\n
\n \n
\n
\n );\n\n return (\n
\n \n {title}\n \n \n {bottomSheetBody}\n \n {filterOpen && (\n <>\n {isLargeScreen && (\n \n \n {children}\n \n
\n )}\n \n )}\n
\n );\n};\n","import React from 'react';\nimport type { ButtonProps } from 'tradera/components/atoms/button/button';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport classNames from 'classnames';\n\nexport type AttributeButtonProps = Pick<\n ButtonProps,\n 'className' | 'onClick'\n> & {\n text: string;\n selected?: boolean;\n};\n\nexport const AttributeButton = ({\n className,\n text,\n selected,\n onClick\n}: AttributeButtonProps) => {\n return (\n \n {text}\n \n );\n};\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 { Button } from '../atoms/button/button';\n\nconst multiColorStyle = {\n backgroundImage: `url(${MultiColorImage})`\n};\n\nconst getStyle = (value) => (value === 'multi' ? multiColorStyle : null);\n\nconst AttributeColor = ({\n optionWithText,\n handleClick,\n selected,\n isDisabled = false,\n size = 'xs',\n className = ''\n}) => {\n // Sometimes saved searches have the color attribute values as title case (\"Red\" instead of \"red\"). This is a work around.\n const lowercasedColorAttributeValue = optionWithText.value.toLowerCase();\n return (\n {\n handleClick();\n }}\n aria-label={optionWithText.text}\n title={optionWithText.text}>\n \n {selected && (\n
\n \n
\n )}\n \n {optionWithText.text}\n \n );\n};\n\nexport default AttributeColor;\n","// extracted by mini-css-extract-plugin\nexport default {\"list\":\"list--Mv7rj\",\"isInSideSheet\":\"isInSideSheet--Dpbzm\"};","import React, { useState } from 'react';\nimport SearchIcon from '@tradera/blueprint/theme/icons2/search.svg?jsx';\nimport { useTranslator } from 'tradera/lang/translate';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport { addTextAndReSort } from 'tradera/components/attributes/attribute-helper';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport cn from 'classnames';\nimport css from './all-attributes-list.module.scss';\n\nexport const AllAttributesList = ({\n options,\n defaultSelected,\n parameter,\n onSelect,\n translateOptions,\n isInSideSheet\n}) => {\n const { t } = useTranslator();\n const [search, setSearch] = useState('');\n const [selectedAttribute, setSelectedAttribute] = useState(defaultSelected);\n\n const optionsWithText = addTextAndReSort(\n parameter,\n t,\n translateOptions,\n options\n );\n\n const handleSelect = (attribute) => {\n if (selectedAttribute.includes(attribute)) {\n setSelectedAttribute(\n selectedAttribute.filter((selected) => selected !== attribute)\n );\n } else {\n setSelectedAttribute([...selectedAttribute, attribute]);\n }\n\n onSelect(attribute);\n };\n\n const handleInputChange = (input) => setSearch(input.substr(0, 10));\n\n const filteredAttributes = optionsWithText.filter((option) => {\n return option.value.toLowerCase().includes(search.toLowerCase());\n });\n\n return (\n <>\n
\n
\n handleInputChange(e.target.value)}\n />\n {search ? (\n {\n setSearch('');\n }}>\n \n \n ) : (\n \n )}\n
\n
\n {filteredAttributes.length > 0 && (\n \n {filteredAttributes.map((option) => (\n \n {\n handleSelect(option.value);\n }}\n />\n \n {option.text}\n \n \n ))}\n \n )}\n \n );\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\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 { AllAttributesList } from './all-attributes-list';\nimport {\n addText,\n addTextAndReSort\n} from 'tradera/components/attributes/attribute-helper';\n\nexport const AttributeFilter = ({\n attributeFilter,\n handleAttributeFilterChange,\n numberToShow = 22,\n queryParams,\n isInSideSheet = false\n}) => {\n if (!attributeFilter) {\n return null;\n }\n\n const {\n options,\n translateOptions,\n parameter,\n presentation,\n selectedValues,\n preserveOptionsOrder\n } = attributeFilter;\n\n const hasMoreOptions = options.length > numberToShow;\n\n return (\n
\n {hasMoreOptions && presentation !== 'color' ? (\n {\n handleAttributeFilterChange(parameter, attributes);\n }}\n parameter={parameter}\n isInSideSheet={isInSideSheet}\n />\n ) : (\n \n )}\n
\n );\n};\n\nconst AttributeOptionsShortList = ({\n options,\n parameter,\n presentation,\n selectedValues,\n translateOptions,\n handleAttributeFilterChange,\n preserveOptionsOrder\n}) => {\n const { t } = useTranslator();\n\n const optionsWithText = preserveOptionsOrder\n ? addText(parameter, t, translateOptions, options)\n : addTextAndReSort(parameter, t, translateOptions, options);\n return optionsWithText.map((optionWithText, index) => {\n const selected = selectedValues.includes(optionWithText.value);\n if (presentation === 'color') {\n return (\n {\n handleAttributeFilterChange(\n parameter,\n optionWithText.value\n );\n }}\n selected={selected}\n />\n );\n } else {\n return (\n {\n handleAttributeFilterChange(\n parameter,\n optionWithText.value\n );\n }}\n selected={selected}\n />\n );\n }\n });\n};\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","import React from 'react';\nimport { RadioInput } from './radio-input';\n\ntype RadioInputGroupProps = {\n options: Array<{\n value: string;\n name: string;\n }>;\n checked: string;\n handleOnChange: (value: string, event: React.ChangeEvent) => void;\n id: string;\n className?: string;\n radioButtonClassName?: string;\n};\n\nexport const RadioInputGroup = ({\n id,\n options,\n checked,\n handleOnChange,\n className = '',\n radioButtonClassName = ''\n}: RadioInputGroupProps) => {\n return (\n
\n {options.map((option) => (\n \n {option.name}\n \n ))}\n
\n );\n};\n","import React from 'react';\nimport { RadioInputGroup } from 'tradera/components/form-controls/radio-input-group';\nimport type { Filter } from './types';\n\ntype FilterRadiosProps = {\n filter: Filter;\n handleFilterChange: (parameter: string, id: string) => void;\n id: string;\n};\nexport const FilterRadios = ({\n filter,\n handleFilterChange,\n id\n}: FilterRadiosProps) => {\n const { parameter, selectedValue, options } = filter;\n if (!options) {\n return null;\n }\n\n return (\n
\n {\n handleFilterChange(parameter, e);\n }}\n />\n
\n );\n};\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, { useState } from 'react';\nimport { useSelector } from 'react-redux';\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';\nimport { selectDisplayCountyFilter } from 'tradera/state/discover/selectors';\n\nconst FilterShipTo = ({\n allowedBuyerRegions,\n county,\n handleFilterChange,\n queryParams\n}) => {\n const { t } = useTranslator();\n const countyFilterEnabled = useSelector(selectDisplayCountyFilter);\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(\n queryParams.county || queryParams.shippingTypes ? 1 : 0\n );\n const buyerRegionElements = (\n \n );\n const countyElements = (\n \n );\n const handleToggleChange = () => {\n const currentFilter = selectedUI === 0 ? allowedBuyerRegions : county;\n const shippingTypesFiltername = 'shippingTypes';\n\n setSelectedUI((selectedUI + 1) % 2);\n\n if (currentFilter === allowedBuyerRegions) {\n handleFilterChange(\n shippingTypesFiltername,\n 'Takeaway;TakeawayOnly'\n );\n } else {\n handleFilterChange(\n [shippingTypesFiltername, currentFilter.parameter],\n null\n );\n }\n };\n const combinedUI = () => (\n <>\n
\n \n
\n {selectedUI === 0 ? buyerRegionElements : countyElements}\n \n );\n return countyFilterEnabled ? combinedUI() : buyerRegionElements;\n};\n\nexport default FilterShipTo;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 14 17\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2 .75c.28 0 .5.22.5.5v9h-1v-9c0-.28.22-.5.5-.5zm5 0c.28 0 .5.22.5.5v3h-1v-3c0-.28.22-.5.5-.5zm5 0c.28 0 .5.22.5.5v8h-1v-8c0-.28.22-.5.5-.5zm-5.5 15v-8.5h1v8.5a.5.5 0 11-1 0zm5 0v-3.5h1v3.5a.5.5 0 11-1 0zm-10 0v-2.5h1v2.5a.5.5 0 11-1 0z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3 11.75a1 1 0 10-2 0 1 1 0 002 0zm1 0a2 2 0 10-4 0 2 2 0 004 0zm4-6a1 1 0 10-2 0 1 1 0 002 0zm1 0a2 2 0 10-4 0 2 2 0 004 0zm4 5a1 1 0 10-2 0 1 1 0 002 0zm1 0a2 2 0 10-4 0 2 2 0 004 0z\"\n})));","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"wrapper--COLTB\"};","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport PriceRange from './price-range/price-range';\nimport { FilterOption } from './filter-option';\nimport { AttributeFilter } from './attributes/attribute-filter';\nimport { FilterRadios } from './filter-radios';\nimport { useTranslator } from 'tradera/lang/translate';\nimport { getTranslatedAttributeName } from 'tradera/components/attributes/attribute-helper';\nimport FilterShipTo from './filter-ship-to';\nimport { useLocation } from 'tradera/hooks/use-location';\nimport type { CompressedSearchFilterProps } from './types';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport FilterIcon from '@tradera/blueprint/theme/icons2/filters.svg?jsx';\nimport cn from 'classnames';\nimport styles from './search-filter.module.scss';\nimport CONSTANTS from '../../constants/constants';\nimport useIsDesktop from 'tradera/hooks/use-is-desktop';\nimport {\n selectItemConditionFilter,\n selectSellerTypeFilter,\n selectCountyFilter,\n selectItemTypeFilter,\n selectAllowedBuyerRegionsFilter,\n selectItemStatusFilter\n} from 'tradera/state/discover/selectors';\nimport { useIsTablet } from 'tradera/hooks/use-is-tablet';\n\nexport const SearchFilter = ({\n filterPrice = {\n fromPrice: { value: 1 },\n toPrice: { value: 5000 }\n },\n attributeFilters = [],\n handleFilterChange,\n handlePriceFilterChange,\n handleAttributeFilterChange,\n queryParams,\n handleModalClick\n}: CompressedSearchFilterProps) => {\n const { t } = useTranslator();\n const location = useLocation();\n const isDesktop = useIsDesktop();\n const isTablet = useIsTablet();\n const isLargeScreen = isDesktop || isTablet;\n\n const itemCondition = useSelector(selectItemConditionFilter);\n const sellerType = useSelector(selectSellerTypeFilter);\n const county = useSelector(selectCountyFilter);\n const itemType = useSelector(selectItemTypeFilter);\n const allowedBuyerRegions = useSelector(selectAllowedBuyerRegionsFilter);\n const itemStatus = useSelector(selectItemStatusFilter);\n const { fromPrice, toPrice } = filterPrice;\n\n return (\n
\n \n handleModalClick?.(CONSTANTS.MODALS.FILTER_MODAL)\n }\n theme=\"tag\"\n size={isLargeScreen ? 'sm' : 'xs'}\n icon={}\n fixedIcon={!isLargeScreen}\n iconRight={isLargeScreen}>\n \n {t('searchResults_all_filter_button')}\n \n \n {!isDesktop && (\n \n handleModalClick?.(CONSTANTS.MODALS.CATEGORY_MODAL)\n }>\n {t('searchSelect_allCategoriesShortName')}\n \n )}\n {attributeFilters.map((attributeFilter) => (\n \n \n \n ))}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n};\n","export const getTotalActiveFilterCount = (\n fromPrice,\n toPrice,\n attributeFilters,\n activeFilters\n) => {\n const getAttributeFilterCount = () =>\n attributeFilters?.reduce(\n (count, attributeFilter) =>\n count + attributeFilter.selectedValues.length,\n 0\n );\n\n const userSetPriceFilter = !!fromPrice?.value || !!toPrice?.value ? 1 : 0;\n const totalAttributeFilters = getAttributeFilterCount();\n const totalActiveFilters =\n activeFilters?.length + totalAttributeFilters + userSetPriceFilter;\n return totalActiveFilters;\n};\n","import React from 'react';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport { Button } from 'tradera/components/atoms/button/button';\n\ntype TagProps = {\n text?: string;\n onClick: () => void;\n};\n\nexport const Tag = ({ text, onClick }: TagProps) => {\n const iconSize = '0.65rem';\n return (\n \n {text}\n \n \n );\n};\n","import React from 'react';\nimport { useTranslator } from 'tradera/lang/translate';\nimport { getTranslatedAttributeValue } from 'tradera/components/attributes/attribute-helper';\nimport { Tag } from '../tag';\nimport type {\n CompressedAttributeFilters,\n CompressedAttributeFilter\n} from '../../filters/types';\n\ntype AttributeFilterTagsProps = {\n attributeFilters: CompressedAttributeFilters;\n handleAttributeFilterChange: (filter: string, values: string) => void;\n};\n\nexport const AttributeFilterTags = ({\n attributeFilters,\n handleAttributeFilterChange\n}: AttributeFilterTagsProps) => {\n const { t } = useTranslator();\n\n if (!attributeFilters) {\n return null;\n }\n return (\n <>\n {attributeFilters.map(\n (attributeFilter: CompressedAttributeFilter) => {\n const {\n parameter,\n selectedValues,\n options = []\n } = attributeFilter;\n\n return options.map(([attributeValue], index) => {\n if (!selectedValues.includes(attributeValue)) {\n return null;\n }\n\n const text = attributeFilter.translateOptions\n ? getTranslatedAttributeValue(\n parameter,\n attributeValue,\n t\n )\n : attributeValue;\n return (\n {\n handleAttributeFilterChange(\n parameter,\n attributeValue\n );\n }}\n />\n );\n });\n }\n )}\n \n );\n};\n","import React from 'react';\nimport { useTranslator } from 'tradera/lang/translate';\nimport { Tag } from '../tag';\nimport type { FilterPrice, handlePriceFilterChange } from '../../filters/types';\n\ntype PriceFilterTagProps = {\n userSetPriceFilter: boolean;\n filterPrice: FilterPrice;\n handlePriceFilterChange: handlePriceFilterChange;\n};\n\nexport const PriceFilterTag = ({\n userSetPriceFilter,\n filterPrice,\n handlePriceFilterChange\n}: PriceFilterTagProps) => {\n const { fromPrice, toPrice } = filterPrice;\n const { t } = useTranslator();\n\n if (userSetPriceFilter) {\n const priceText = toPrice.value\n ? t('searchResults_priceFilterLabel_interval', {\n fromPrice: fromPrice.value || 1,\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","import React from 'react';\nimport * as gtm from 'tradera/apps/tradera/components/discover/helpers/search-gtm';\nimport { Tag } from '../tag';\nimport type { ActiveFiltersType } from '../../filters/types';\n\ntype FilterTagProps = {\n activeFilters: ActiveFiltersType | undefined;\n handleFilterChange: (parameter: string, unknown: undefined) => void;\n};\n\nexport const FilterTags = ({\n activeFilters,\n handleFilterChange\n}: FilterTagProps) => {\n if (!activeFilters) {\n return null;\n }\n return (\n <>\n {activeFilters.map((filter, index) => {\n const { parameter, options } = filter;\n const selectedName = options.find(\n (option) => option.value === filter.selectedValue\n )?.name;\n\n return (\n {\n gtm.trackButton('Remove filter');\n handleFilterChange(parameter, undefined);\n }}\n />\n );\n })}\n \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"wrapper--Z9XeP\"};","import React from 'react';\nimport { useTranslator } from 'tradera/lang/translate';\nimport * as gtm from 'tradera/apps/tradera/components/discover/helpers/search-gtm';\nimport { getTotalActiveFilterCount } from '../../../helpers/filter';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport { AttributeFilterTags } from './attribute-filter-tags';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport { PriceFilterTag } from './price-filter-tag';\nimport { FilterTags } from './filter-tags';\nimport type { CompressedSearchFilterProps } from '../../filters/types';\nimport cn from 'classnames';\nimport css from './active-filters.module.scss';\n\ntype ActiveFiltersProps = Pick<\n CompressedSearchFilterProps,\n | 'filterPrice'\n | 'activeFilters'\n | 'handleAttributeFilterChange'\n | 'handleClearAllFilters'\n | 'handleFilterChange'\n | 'handlePriceFilterChange'\n | 'attributeFilters'\n>;\nexport const ActiveFilters = ({\n handleAttributeFilterChange,\n handleClearAllFilters,\n handleFilterChange,\n handlePriceFilterChange,\n attributeFilters,\n activeFilters,\n filterPrice = {\n fromPrice: {},\n toPrice: {}\n }\n}: ActiveFiltersProps) => {\n const { t } = useTranslator();\n const { fromPrice, toPrice } = filterPrice;\n const userSetPriceFilter = !!fromPrice?.value || !!toPrice?.value;\n\n const totalActiveFilters = getTotalActiveFilterCount(\n fromPrice,\n toPrice,\n attributeFilters,\n activeFilters\n );\n\n return (\n <>\n {totalActiveFilters > 0 && (\n \n

\n {`${t('searchResults_activeFilters')}: `}\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","// extracted by mini-css-extract-plugin\nexport default {\"fixed\":\"fixed---Tpgs\",\"innerWrapper\":\"innerWrapper--iY6vl\",\"isSearchFormOpen\":\"isSearchFormOpen--3AjbS\",\"isFilterOpen\":\"isFilterOpen--PZPcS\"};","import { useEffect, useRef, useState } from 'react';\nimport { SearchFilter } from '../../../components/filters/search-filter';\nimport { ActiveFilters } from '../../../components/search-results/header/active-filters';\nimport { useScrollDirection } from 'tradera/hooks/use-scroll-direction';\nimport type { CompressedSearchFilterProps } from '../../../components/filters/types';\nimport cn from 'classnames';\nimport styles from './filter-section.module.scss';\n\nexport const FilterSection = ({\n attributeFilters,\n filterPrice,\n handleAttributeFilterChange,\n handleFilterChange,\n handlePriceFilterChange,\n queryParams,\n activeFilters,\n handleClearAllFilters,\n handleModalClick,\n isFilterOpen,\n isSearchFormOpen\n}: CompressedSearchFilterProps) => {\n const startPositionRef = useRef(null);\n const { scrollDirection, isDelayed } = useScrollDirection({\n startPositionRef,\n delayDirection: 'UP',\n delayInPx: 10\n });\n const [elemHeight, setElemHeight] = useState(0);\n const scrollingUp = scrollDirection === 'UP';\n\n useEffect(() => {\n if (startPositionRef?.current) {\n setElemHeight(\n startPositionRef?.current?.getBoundingClientRect().height\n );\n }\n }, [startPositionRef]);\n\n return (\n
\n \n \n
\n \n
\n
\n \n
\n
\n
\n );\n};\n","import { useCallback, useEffect, useState } from 'react';\n\nexport const useScrollDirection = ({\n startPositionRef,\n delayDirection,\n delayInPx\n}) => {\n const [scrollDirection, setScrollDirection] = useState(null);\n const [currentScrollPosition, setCurrentScrollPosition] = useState(0);\n const [isDelayed, setIsDelayed] = useState(false);\n\n const onScroll = useCallback(() => {\n if (window === undefined || document === undefined) {\n return;\n }\n\n if (\n startPositionRef &&\n startPositionRef?.current?.getBoundingClientRect().bottom >\n window.scrollY\n ) {\n // Wait until we've scrolled below our startPositionRef before deciding scroll direction.\n setCurrentScrollPosition(null);\n setScrollDirection(null);\n return;\n }\n\n const newPosition =\n window.scrollY ||\n document.body.scrollTop ||\n (document.documentElement && document.documentElement.scrollTop) ||\n 0;\n\n const direction = currentScrollPosition < newPosition ? 'DOWN' : 'UP';\n\n setScrollDirection(direction);\n setCurrentScrollPosition(newPosition);\n\n if (delayDirection && delayInPx) {\n if (direction !== delayDirection) {\n setIsDelayed(false);\n } else {\n // \"Delay\" scrolling direction with delayInPx, e.g don't fire an event directly when scrolling in delayDirection, wait X px to avoid the scrolling being too sensitive\n if (newPosition < currentScrollPosition - delayInPx) {\n setIsDelayed(true);\n }\n }\n }\n }, [currentScrollPosition, startPositionRef, delayDirection, delayInPx]);\n\n useEffect(() => {\n document.addEventListener('scroll', onScroll);\n return () => {\n document.removeEventListener('scroll', onScroll);\n };\n }, [onScroll]);\n\n return { scrollDirection, isDelayed };\n};\n","import React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport PAGE_TYPES from 'tradera/constants/page-types';\nimport * as gtm from 'tradera/apps/tradera/components/discover/helpers/search-gtm';\nimport { formatNumber } from 'packages/format';\nimport { withTranslator } from 'tradera/lang/translate';\nimport { ShowMore } from 'tradera/components/show-more/show-more';\nimport { Breadcrumbs } from 'tradera/components/breadcrumbs/breadcrumbs';\nimport {\n Breakpoint,\n BREAKPOINTS\n} from 'tradera/components/breakpoint/breakpoint';\nimport InternalSearchForm from '../../internal-search-form';\nimport { IntroTextContainer } from '../intro-text-container';\nimport { SaveSearchButton } from '../save-search/save-search-button';\nimport { ItemLayoutSwitch } from '../layout/item-layout-switch';\nimport SiteLayoutSwitch from '../layout/site-layout-switch';\nimport { Select } from 'tradera/components/form-controls/select';\nimport { SortingLink } from '../sort/sorting-link';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport { logger } from 'packages/logger';\nimport { TranslatedByGoogle } from 'tradera/components/translation/translated-by-google';\nimport { isSwedishOrUndefined } from 'tradera/localization/languagecode';\nimport { useCookieUtil } from 'tradera/hooks/use-cookie-util';\nimport { SHIP_TO_SWEDEN_DISCLAIMER_DISMISSED } from 'tradera/constants/cookies';\nimport useIsDesktop from 'tradera/hooks/use-is-desktop';\nimport { SearchFieldProfilePage } from './search-field-profile-page';\nimport { FilterSection } from '../layout/filter-section';\nimport cn from 'classnames';\n\nconst SearchResultsHeader = (props) => {\n const {\n handleFilterChange,\n handleInternalSearch,\n handleSearchCategoryChange,\n headerCategory,\n internalSearch,\n isLoggedIn,\n pageType,\n queryParams,\n handleAttributeFilterChange,\n handlePriceFilterChange,\n handleClearAllFilters,\n searchLanguages,\n searchResults,\n t,\n handleModalClick,\n filterPrice,\n attributeFilters,\n activeFilters,\n isFilterOpen,\n isSearchFormOpen\n } = props;\n\n const { filters = {}, totalItems } = searchResults;\n const { sortBy } = filters;\n const { headerText } = headerCategory;\n const cookieUtil = useCookieUtil();\n const isDesktop = useIsDesktop();\n\n const showBreadcrumb = pageType === PAGE_TYPES.SEARCH_RESULT_PAGE;\n const showHeadingArea = pageType !== PAGE_TYPES.CUSTOM_RESULT_PAGE;\n const showHeading =\n isDesktop ||\n (!isDesktop && pageType === PAGE_TYPES.CATEGORY_RESULT_PAGE);\n const showIntroText = pageType === PAGE_TYPES.CATEGORY_RESULT_PAGE;\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 const [shipToSwedenDisclaimerVisible, setShipToSwedenDisclaimerVisible] =\n useState(\n cookieUtil.readCookie(SHIP_TO_SWEDEN_DISCLAIMER_DISMISSED)\n ? false\n : true\n );\n\n const dismissShipToSwedenDisclaimer = () => {\n setShipToSwedenDisclaimerVisible(!shipToSwedenDisclaimerVisible);\n cookieUtil.createCookie(\n SHIP_TO_SWEDEN_DISCLAIMER_DISMISSED,\n !shipToSwedenDisclaimerVisible\n );\n };\n\n const allFilters = (\n \n );\n\n return (\n
\n
\n {showBreadcrumb && (\n
\n \n
\n )}\n\n \n {pageType === PAGE_TYPES.CUSTOM_RESULT_PAGE &&\n !isDesktop && }\n\n {internalSearch.showSearchBar && (\n
\n \n
\n )}\n
\n\n \n
\n {showHeadingArea && (\n <>\n
\n {showHeading && (\n \n {headerText}\n \n )}\n {isDesktop && (\n \n {totalItems\n ? t(\n 'searchResults_itemsFound',\n {\n itemsCount:\n formatNumber(\n totalItems\n ),\n count: totalItems\n }\n )\n : t(\n 'searchResults_noItemsFound'\n )}\n

\n )}\n
\n {searchLanguages &&\n searchLanguages.some(\n (x) => !isSwedishOrUndefined(x)\n ) && (\n <>\n
\n \n
\n {shipToSwedenDisclaimerVisible &&\n searchResults.filters\n ?.allowedBuyerRegions\n ?.selectedValue &&\n searchResults.filters.allowedBuyerRegions.selectedValue.includes(\n 'sweden'\n ) && (\n
\n
\n \n {t(\n 'searchFilters_shipTo_sweden_disclaimer_header'\n )}\n \n \n \n \n
\n {t(\n isLoggedIn\n ? 'searchFilters_shipTo_sweden_disclaimer_text_logged_in'\n : 'searchFilters_shipTo_sweden_disclaimer_text_logged_out'\n )}\n
\n )}\n \n )}\n {showIntroText && (\n
\n \n
\n )}\n \n )}\n {pageType === PAGE_TYPES.CUSTOM_RESULT_PAGE &&\n isDesktop && }\n
\n \n
\n
\n {[\n PAGE_TYPES.SEARCH_RESULT_PAGE,\n PAGE_TYPES.CATEGORY_RESULT_PAGE\n ].includes(pageType) && (\n
\n \n
\n )}\n {\n gtm.trackFilter(\n sortBy?.parameter,\n value\n );\n handleFilterChange(\n sortBy?.parameter,\n value\n );\n }}\n className=\"d-flex mr-2\"\n selectClassName=\"form-control-sm\"\n visuallyHideLabel\n type=\"sort\"\n />\n
\n \n
\n
\n \n
\n
\n
\n
\n {!isDesktop && (\n <>\n {allFilters}\n
\n \n {totalItems\n ? t('searchResults_itemsFound', {\n itemsCount:\n formatNumber(totalItems),\n count: totalItems\n })\n : t('searchResults_noItemsFound')}\n

\n \n
\n \n )}\n
\n \n {isDesktop && allFilters}\n \n );\n};\n\nSearchResultsHeader.propTypes = {\n handleFilterChange: PropTypes.func.isRequired,\n headerCategory: PropTypes.object,\n isLoading: PropTypes.bool,\n pageType: PropTypes.string.isRequired,\n handleInternalSearch: PropTypes.func,\n handleSearchCategoryChange: PropTypes.func,\n handleAttributeFilterChange: PropTypes.func,\n handlePriceFilterChange: PropTypes.func,\n handleClearAllFilters: PropTypes.func,\n handleModalClick: PropTypes.func\n};\n\nconst ContentDescription = ({ introText }) => {\n return introText ? (\n \n \n \n ) : null;\n};\n\nconst mapStateToProps = (state) => {\n return {\n breadcrumbs: state.page.breadcrumbs,\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 searchLanguages: state.discover.searchLanguages,\n attributeFilters: state.discover.attributeFilters,\n filterPrice: state.discover.filterPrice,\n activeFilters: state.discover.activeFilters,\n isFilterOpen: state.discover.isFilterOpen,\n isSearchFormOpen: state.ui.showSearchForm\n };\n};\n\nexport { SearchResultsHeader };\nexport default connect(mapStateToProps)(withTranslator(SearchResultsHeader));\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 from 'react';\nimport { RadioInputGroup } from 'tradera/components/form-controls/radio-input-group';\nimport type { Filter } from '../../filters/types';\n\ntype SortRadioButtonsProps = {\n sortBy: Filter;\n handleFilterChange: (parameter: string, val: string) => void;\n id: string;\n title?: string;\n};\n\nexport const SortRadioButtons = ({\n title,\n sortBy,\n handleFilterChange,\n id\n}: SortRadioButtonsProps) => {\n const { parameter, selectedValue, options } = sortBy;\n if (!options) {\n return null;\n }\n return (\n <>\n {title && title}\n {\n handleFilterChange(parameter, val);\n }}\n />\n \n );\n};\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport PriceRange from './price-range/price-range';\nimport { Accordion } from 'tradera/components/accordion/accordion';\nimport { AccordionItem } from 'tradera/components/accordion/accordion-item';\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 {\n getTranslatedAttributeName,\n addText\n} from 'tradera/components/attributes/attribute-helper';\nimport { formatNumber } from 'packages/format';\nimport { ItemLayoutSwitch } from '../search-results/layout/item-layout-switch';\nimport { FilterRadios } from './filter-radios';\nimport FilterShipTo from './filter-ship-to';\nimport type { TranslationFunction } from 'tradera/lang/translate';\nimport { useTranslator } from 'tradera/lang/translate';\nimport { useLocation } from 'tradera/hooks/use-location';\nimport type {\n CompressedSearchFilterProps,\n CompressedAttributeFilter,\n Filter,\n AttributeFilter as AttributeFilterType\n} from './types';\nimport SideMenu from 'tradera/components/side-menu/side-menu';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport { HeaderWithCloseButton } from 'tradera/components/scrollable-modal/header-with-close-button';\nimport { BottomSheet } from 'tradera/components/bottom-sheet/bottom-sheet';\nimport useIsMobile from 'tradera/hooks/use-is-mobile';\nimport {\n selectItemStatusFilter,\n selectItemConditionFilter,\n selectSellerTypeFilter,\n selectCountyFilter,\n selectItemTypeFilter,\n selectSortByFilter,\n selectAllowedBuyerRegionsFilter\n} from 'tradera/state/discover/selectors';\n\nconst getSelectedAttributeValues = <\n TAttributeFilter extends AttributeFilterType | CompressedAttributeFilter\n>(\n attributeFilter: TAttributeFilter,\n t: TranslationFunction\n) => {\n let selected = attributeFilter.selectedValues;\n\n if (selected.length === 0) {\n return;\n }\n\n if (attributeFilter.presentation === 'color') {\n const optionsWithText = addText(\n attributeFilter.parameter,\n t,\n attributeFilter.translateOptions,\n attributeFilter.options\n );\n\n selected = selected\n .map((value) => {\n const option = optionsWithText.find((o) => o.value === value);\n return option?.text;\n })\n .filter((i): i is string => typeof i === 'string');\n }\n\n return selected.join(', ');\n};\n\nconst getSelectedValue = (filter: Filter) => {\n const selectedValue = filter && filter.selectedValue;\n if (!selectedValue) {\n return '';\n }\n const selected = filter.options?.find((o) => o.value === selectedValue);\n\n return selected?.name;\n};\n\ntype SearchFilterSideSheetProps = CompressedSearchFilterProps & {\n isLoading?: boolean;\n show: boolean;\n onDismiss: () => void;\n onClearAllFilters: () => void;\n};\nexport const SearchFilterSideSheet = ({\n activeFilters,\n attributeFilters = [],\n filterPrice = { fromPrice: { value: 0 }, toPrice: { value: 0 } },\n handleAttributeFilterChange,\n handleFilterChange,\n handlePriceFilterChange,\n isLoading,\n queryParams,\n totalItems,\n show,\n onDismiss,\n onClearAllFilters\n}: SearchFilterSideSheetProps) => {\n const { t } = useTranslator();\n const isMobile = useIsMobile();\n const location = useLocation();\n const itemCondition = useSelector(selectItemConditionFilter);\n const sellerType = useSelector(selectSellerTypeFilter);\n const county = useSelector(selectCountyFilter);\n const itemType = useSelector(selectItemTypeFilter);\n const sortBy = useSelector(selectSortByFilter);\n const allowedBuyerRegions = useSelector(selectAllowedBuyerRegionsFilter);\n const itemStatus = useSelector(selectItemStatusFilter);\n\n const activeShipToFilter = activeFilters?.filter(\n (x) => x.parameter === 'allowedBuyerRegions' || x.parameter === 'county'\n );\n\n const body = (\n
\n \n {t('searchResults_clear')}\n \n }\n />\n
\n

\n {t('searchFilters_itemsFound', {\n itemsCount: formatNumber(totalItems),\n count: totalItems\n })}\n

\n {isLoading && (\n
\n \n
\n )}\n \n \n
\n \n {t('searchFilters_layout')}\n \n \n
\n
\n \n \n \n {attributeFilters.map((attributeFilter) => (\n \n \n \n ))}\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n \n
\n
\n );\n\n return isMobile ? (\n \n {body}\n \n ) : (\n \n {body}\n \n );\n};\n","import type { RootState } from '../configure-store';\n\nexport const selectShowSaveSearchBanner = (state: RootState) =>\n state.ui.showSaveSearchBanner;\n","import React, { useEffect, useCallback, useState } from 'react';\nimport { StickyButtonPortal } from 'tradera/components/sticky-button/sticky-button';\nimport { SaveSearchButton } from './save-search-button';\nimport * as searchGtm from 'tradera/apps/tradera/components/discover/helpers/search-gtm';\nimport { selectShowSaveSearchBanner } from 'tradera/state/ui/selectors';\nimport { useSelector } from 'react-redux';\n\nexport const StickySaveSearchButton = () => {\n const [buttonsInViewport, setButtonsInViewport] = useState({ 0: true });\n const hasButtonInViewport = Object.values(buttonsInViewport).some(\n (value) => value\n );\n\n //Hide sticky button when save search banner is visible\n const saveSearchBannerVisible = useSelector(selectShowSaveSearchBanner);\n\n //Handle in view state of several save search buttons\n const ioCallback = useCallback(\n (entry, index) => {\n if (entry.intersectionRatio > 0) {\n setButtonsInViewport((state) => {\n return {\n ...state,\n [index]: true\n };\n });\n } else {\n setButtonsInViewport((state) => {\n return {\n ...state,\n [index]: false\n };\n });\n }\n },\n [setButtonsInViewport]\n );\n useEffect(() => {\n const saveSearchButtons = document.querySelectorAll(\n '#save-search-button'\n );\n const observers = [];\n saveSearchButtons.forEach((button, index) => {\n const observer = new IntersectionObserver(([entry]) =>\n ioCallback(entry, index)\n );\n observer.observe(button);\n observers.push(observer);\n });\n if (saveSearchButtons.length === 0) {\n setButtonsInViewport({});\n }\n return () => {\n observers.forEach((observer) => observer.disconnect());\n };\n }, [ioCallback]);\n\n return saveSearchBannerVisible ? null : (\n \n \n \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"negativeLeftMargin\":\"negativeLeftMargin--GKdPa\"};","// extracted by mini-css-extract-plugin\nexport default {\"saveSearchBottomBanner\":\"saveSearchBottomBanner--RyHrb\",\"saveSearchBottomBannerButton\":\"saveSearchBottomBannerButton--Blp6-\"};","import React, { useState } from 'react';\nimport { useTranslator } from 'tradera/lang/translate';\nimport {\n StickyButtonPortal,\n StickyButtonPosition\n} from 'tradera/components/sticky-button/sticky-button';\nimport { SaveSearchButton } from './save-search-button';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport useIsMobile from 'tradera/hooks/use-is-mobile';\nimport { EmailNotificationTooltipPosition } from './email-notification-tooltip';\nimport * as searchGtm from 'tradera/apps/tradera/components/discover/helpers/search-gtm';\nimport styles from './save-search-bottom-banner.module.scss';\n\nexport const SaveSearchBottomBanner = () => {\n const { t } = useTranslator();\n const [isDismissed, setIsDismissed] = useState(false);\n const isMobile = useIsMobile();\n\n const saveSearchButtonType = isMobile ? 'icon' : 'default';\n\n return (\n \n \n \n {t('searchResults_saveSearch_banner')}\n \n\n \n \n setIsDismissed(true)}>\n \n \n \n \n \n );\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect, useDispatch, useSelector } from 'react-redux';\nimport isEqual from 'lodash/isEqual';\nimport ScrollToTopButton from 'tradera/legacy/static/components/shared/scroll-to-top-button';\nimport DiscoverPagination from '../components/search-results/pagination/discover-pagination';\nimport { FilterCategoriesSideSheet } from '../components/filters/categories/filter-categories-side-sheet';\nimport InternalSearchForm from '../components/internal-search-form';\nimport { IntroTextContainer } from '../components/search-results/intro-text-container';\nimport { ShowMore } from 'tradera/components/show-more/show-more';\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 { SearchResults } from '../components/search-results/search-results';\nimport SearchResultsHeader from '../components/search-results/header/search-results-header';\nimport { useIsFeatureEnabled } from 'tradera/hooks/use-is-feature-enabled';\nimport QuickView from 'tradera/components/quick-view/quick-view-modal';\nimport CONSTANTS from '../constants/constants';\nimport ENDPOINTS from 'tradera/constants/endpoints';\nimport PAGE_TYPES from 'tradera/constants/page-types';\nimport * as gtm from 'tradera/apps/tradera/components/discover/helpers/search-gtm';\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';\nimport * as discoverActions from 'tradera/state/discover/actions';\nimport {\n setSingleFilterValue,\n updateItem\n} from 'tradera/state/discover/reducer';\nimport { LayoutA } from 'tradera/apps/tradera/layout/layout-a';\nimport { getTotalActiveFilterCount } from '../helpers/filter';\nimport { useLocation } from 'tradera/hooks/use-location';\nimport { useNavigation } from 'tradera/hooks/use-navigation';\nimport { isNextJs } from 'tradera/utils/nextjs';\nimport {\n SaveSearchModal,\n SAVE_SEARCH_MODAL_ID\n} from '../components/search-results/save-search-modal';\nimport { FilterCategories } from '../components/filters/categories/filter-categories';\nimport useIsDesktop from 'tradera/hooks/use-is-desktop';\nimport { selectSaveSearchData } from 'tradera/state/discover/selectors';\nimport { showSuccessToast, showErrorToast } from 'tradera/services/toasts';\nimport { touchwebSearchApi } from 'tradera/state/services/touchweb-search-api';\nimport { SearchFilterSideSheet } from '../components/filters/search-filter-side-sheet';\nimport { StickySaveSearchButton } from '../components/search-results/save-search/sticky-save-search-button';\nimport {\n DesktopAd,\n MobileAd,\n TabletAd\n} from '../components/search-results/ads/search-results-ads';\nimport { selectIsGoogleAdsEnabled } from 'tradera/state/ads/selectors';\nimport { Ad } from 'tradera/components/ads/ad';\nimport styles from './search-results-wrapper.module.scss';\nimport { useMediaQuery } from 'react-responsive';\nimport Sticky from 'react-stickynode';\nimport { useIsSiteWidthFull } from 'tradera/state/ui/helpers';\nimport { addRecentSearches } from 'tradera/state/personalisation/actions';\nimport { SaveSearchBottomBanner } from '../components/search-results/save-search/save-search-bottom-banner';\nimport { useGrowthBook } from '@growthbook/growthbook-react';\nimport { showSaveSearchBanner } from 'tradera/state/ui/reducer';\n\nconst SearchResultsWrapper = (props) => {\n const {\n categories,\n categoryId,\n className,\n isShopOwnedByCurrentMember,\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 noItemsFallback,\n updateItem,\n loadStatus: { isLoading, isLoaded, setLoading, setLoaded }\n } = props;\n const location = useLocation();\n const navigation = useNavigation();\n const isDesktop = useIsDesktop();\n const filtersLoading =\n (!filters || Object.keys(filters).length === 0) && isLoading;\n\n const isPrerenderReadyEnabled = useIsFeatureEnabled('prerender-ready');\n const isNewAdSlotsOnSearchBrowseEnabled = useIsFeatureEnabled(\n 'new-ad-slots-on-search-browse'\n );\n const isGoogleAdsEnabled = useSelector(selectIsGoogleAdsEnabled);\n const isSiteWidthFull = useIsSiteWidthFull();\n const isAdsTowerWide = useMediaQuery({ minWidth: 1330 }) || isSiteWidthFull;\n\n const showSaveSearch =\n (!queryParams.savedQueryName || queryParams.savedQueryName === '') &&\n showHeading;\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 const totalActiveFilters = getTotalActiveFilterCount(\n filterPrice.fromPrice,\n filterPrice.toPrice,\n attributeFilters,\n activeFilters\n );\n\n const [modal, setModal] = useState({\n modalOpen: null\n });\n\n const { currentModal, currentModalData } = useSelector(\n (state) => state.ui.modals\n );\n\n const saveSearchBannerVisible = useSelector(\n (state) => state.ui.showSaveSearchBanner\n );\n\n const showSaveSearchModal =\n currentModal === SAVE_SEARCH_MODAL_ID && currentModalData;\n\n const dispatch = useDispatch();\n\n // Search\n useEffect(() => {\n if (isNextJs || isLoaded || isLoading) return;\n\n setLoading();\n\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 useEffect(() => {\n if (!isLoaded || !isPrerenderReadyEnabled) {\n return;\n }\n window.prerenderReady = true;\n }, [dispatch, isLoaded, isPrerenderReadyEnabled]);\n\n // Scroll to top on new results\n useEffect(() => {\n if (isLoading) {\n window.scrollTo(0, 0);\n }\n }, [isLoading]);\n\n // Save search on mount if saveSearch queryparam is present when redirecting from sign in\n const saveSearchData = useSelector((state) => selectSaveSearchData(state));\n useEffect(() => {\n if (queryParams.saveSearch) {\n const { searchName, categoryId, queryParams } = saveSearchData;\n const result = dispatch(\n touchwebSearchApi.endpoints.saveSearch.initiate(\n {\n savedQueryName: searchName,\n categoryId,\n ...queryParams\n },\n { fixedCacheKey: 'shared-save-search' }\n )\n )\n .unwrap()\n .then(() => {\n showSuccessToast('searchResults_saveSearch_success');\n return;\n })\n .catch(() => {\n showErrorToast('searchResults_saveSearch_error');\n });\n return result.unsubscribe;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const growthbook = useGrowthBook();\n\n // Save recent search\n useEffect(() => {\n const newQueryParams = stripItmFromQueryParameters(\n formatQueryParams(toQueryParameters(location.search))\n );\n if (newQueryParams.q) {\n dispatch(addRecentSearches(newQueryParams, growthbook));\n }\n\n return () => {\n dispatch(showSaveSearchBanner(false));\n };\n }, [dispatch, location?.search, growthbook]);\n\n const pushToHistory = useCallback(\n (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 const search = toSearchString(query);\n const oldParams = new URLSearchParams(location.search);\n const newParams = new URLSearchParams(search);\n oldParams.sort();\n newParams.sort();\n if (newParams.toString() !== oldParams.toString()) {\n navigation.push({\n pathname,\n search\n });\n }\n },\n [categoryId, location.pathname, location.search, navigation, pageType]\n );\n\n const updateHistory = useCallback(\n (param) => {\n const { savedQueryName, ...params } = queryParams;\n pushToHistory(\n formatQueryParams(\n stripPaginationFromQueryParameters(\n stripSavedQueryNameFromQueryParameters({\n ...params,\n ...param\n })\n )\n )\n );\n },\n [pushToHistory, queryParams]\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, next } = queryParams;\n pushToHistory(\n next\n ? {\n q,\n categoryId,\n next\n }\n : {\n q,\n categoryId\n }\n );\n };\n\n const handleCategoryChange = () => {};\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 navigation.push({\n pathname: category.url,\n search: toSearchString(query)\n });\n };\n\n const handleFilterChange = (filterType, value) => {\n if (Array.isArray(filterType)) {\n const filterParameters = filterType.map((filter) => ({\n [filter]: value\n }));\n\n filterType.forEach((filter) => {\n gtm.trackFilter(filter, value);\n setSingleFilterValue(filter, value);\n });\n\n updateHistory(Object.assign({}, ...filterParameters));\n return;\n }\n\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 = useCallback(\n (filter, values) => {\n checkForGtmTrackingOfAttributeFilter(\n attributeFilters,\n values,\n filter\n );\n const attributeFilterParameters = createAttributeFilter(\n attributeFilters,\n filter,\n values\n );\n updateHistory(attributeFilterParameters);\n },\n [attributeFilters, updateHistory]\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) => {\n setModal({\n modalOpen: value\n });\n };\n\n if (!hasResult) return ;\n if (error) return ;\n\n const subContent = isDesktop && (\n
\n {internalSearch && internalSearch.showSearchBar && (\n \n )}\n {!filterCategories || !filterCategories.categoryTree ? null : (\n \n )}\n {isGoogleAdsEnabled &&\n isNewAdSlotsOnSearchBrowseEnabled &&\n isLoaded &&\n totalItems > 0 && (\n
\n \n \n \n
\n )}\n
\n );\n\n const heroContent = (\n
\n \n
\n );\n\n const mainContent = (\n
\n \n \n {totalItems > 0 && }\n\n {isGoogleAdsEnabled &&\n isNewAdSlotsOnSearchBrowseEnabled &&\n isLoaded &&\n totalItems > 0 && (\n <>\n \n \n \n \n )}\n {mainText && (\n \n \n \n )}\n
\n );\n\n return (\n <>\n {!isDesktop && (\n <>\n handleModalClick('')}\n show={\n modal.modalOpen === CONSTANTS.MODALS.CATEGORY_MODAL\n }\n />\n \n )}\n \n {isShopOwnedByCurrentMember && (\n \n )}\n \n {!modal.modalOpen && (isLoading || filtersLoading) && (\n \n )}\n \n {showSaveSearchModal && (\n \n )}\n {showSaveSearch && }\n handleModalClick('')}\n onClearAllFilters={handleClearAllFilters}\n isLoading={isLoading}\n />\n {saveSearchBannerVisible && }\n \n );\n};\n\nSearchResultsWrapper.propTypes = {\n activeFilters: PropTypes.array,\n attributeFilters: PropTypes.array,\n className: PropTypes.string,\n categoryId: PropTypes.number,\n filterCategories: PropTypes.object,\n hasResult: PropTypes.bool,\n isLoggedIn: PropTypes.bool,\n pageType: PropTypes.string.isRequired,\n searchPath: PropTypes.string.isRequired,\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 noItemsFallback: PropTypes.node\n};\n\nSearchResultsWrapper.defaultProps = {\n className: '',\n searchPath: ENDPOINTS.SEARCH,\n showHeading: true\n};\n\nconst mapStateToProps = (state) => {\n return {\n categories: state.page.allCategories,\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 };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n updateItem: (itemId, itemData) =>\n dispatch(updateItem(itemId, itemData)),\n setSingleFilterValue: (filterType, value) =>\n dispatch(setSingleFilterValue(filterType, value))\n };\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(SearchResultsWrapper);\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\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: \"M5.3 8L12 1.3c.2-.2.2-.5 0-.7s-.5-.2-.7 0L3.9 8l7.4 7.4c.2.2.5.2.7 0s.2-.5 0-.7z\",\n fillRule: \"evenodd\"\n})));","import { useEffect } from 'react';\n\nexport const useClickOutside = (\n ref: React.RefObject,\n handler: (e: KeyboardEvent | MouseEvent | TouchEvent) => void,\n exceptionRef: React.RefObject | null = null\n) => {\n useEffect(() => {\n const listener = (event: KeyboardEvent | MouseEvent | TouchEvent) => {\n const el = ref?.current;\n const exceptionEl = exceptionRef?.current;\n\n const isElClicked = el?.contains(\n event.target instanceof Element ? event.target : null\n );\n const isExceptionClicked = exceptionEl?.contains(\n event.target instanceof Element ? event.target : null\n );\n const isKey = event.type === 'keydown';\n const isEscapeKey =\n isKey && 'key' in event && event.key === 'Escape';\n\n if (isEscapeKey) {\n handler(event);\n } else if (!el || isElClicked || isExceptionClicked || isKey) {\n // Do nothing if ref's element, its children, the (optional) exceptionRef's element or any key but ESC is clicked\n return;\n }\n\n handler(event);\n };\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n document.addEventListener('keydown', listener);\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n document.removeEventListener('keydown', listener);\n };\n }, [ref, handler, exceptionRef]);\n};\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\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 React from 'react';\nimport { Ad } from 'tradera/components/ads/ad';\n\nconst DESKTOP = 'desktop';\nconst TABLET = 'tablet';\nconst MOBILE = 'mobile';\n\ntype DeviceAdProps = { className?: string };\nexport const DesktopAd = ({ className }: DeviceAdProps) => (\n \n);\n\nexport const TabletAd = ({ className }: DeviceAdProps) => (\n \n);\n\nexport const MobileAd = ({ className }: DeviceAdProps) => (\n \n);\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","// https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString\nfunction toLocaleStringSupportsLocales() {\n const number = 0;\n try {\n number.toLocaleString('i');\n } catch (e) {\n return e.name === 'RangeError';\n }\n return false;\n}\n\n// https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString\nfunction toLocaleStringSupportsOptions() {\n return !!(\n typeof Intl === 'object' &&\n Intl &&\n typeof Intl.NumberFormat === 'function'\n );\n}\n\nconst isLocaleFormattingSupportedInBrowser =\n toLocaleStringSupportsLocales() && toLocaleStringSupportsOptions();\n\nexport const formatNumber = (number) => {\n if (!isLocaleFormattingSupportedInBrowser) {\n return typeof number !== 'number' ? `${parseInt(number)}` : `${number}`;\n }\n\n const format = (formatMe) => formatMe.toLocaleString('sv-SE');\n\n return number !== undefined\n ? typeof number !== 'number'\n ? format(parseInt(number))\n : format(number)\n : '';\n};\n","import classnames from 'classnames';\nimport React from 'react';\n\ntype RadioInputProps = React.PropsWithChildren<{\n id: string;\n value: string;\n checked: string;\n handleOnChange: (value: string, event: React.ChangeEvent) => void;\n radioButtonClassName?: string;\n labelClassName?: string;\n}>;\n\nexport const RadioInput = ({\n id,\n value,\n checked,\n children,\n handleOnChange,\n radioButtonClassName,\n labelClassName,\n ...props\n}: RadioInputProps) => (\n
\n {\n handleOnChange(e.target.value, e);\n }}\n {...props}\n />\n \n {children}\n \n
\n);\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\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})));","// extracted by mini-css-extract-plugin\nexport default {\"not-clickable\":\"not-clickable--T0+hi\",\"notClickable\":\"not-clickable--T0+hi\",\"tree-item\":\"tree-item--5FTd9\",\"treeItem\":\"tree-item--5FTd9\",\"item-name\":\"item-name--injN3\",\"itemName\":\"item-name--injN3\",\"active\":\"active--LsORl\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { formatNumber } from 'packages/format';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport styles from './tree-item.module.scss';\nimport cn from 'classnames';\n\nconst ItemContent = ({\n uniqueId,\n name,\n childrenCount,\n isActiveParentNode,\n isAllCategoriesActiveParent\n}) => {\n return (\n <>\n \n {name}\n \n {childrenCount && (\n \n {formatNumber(childrenCount)}\n \n )}\n \n );\n};\n\nexport const TreeItem = ({\n onClick,\n isNarrow,\n isActiveParentNode,\n isAllCategoriesActiveParent,\n ...props\n}) => {\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 font-weight-normal`;\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={cn(styles.treeItem, itemClasses, 'text-dark', {\n [styles.active]: isActive\n })}>\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 className=\"my-2 w-100\"\n onClick={onClick}>\n {children ? children : t('treeNavigation_showMore')}\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 isAllCategoriesActiveParent\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 const isL1 = path && path.length === 1;\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\n const isHidden = index >= MAX_VISIBLE_ITEMS && !expanded;\n const isActiveParentNode = children?.length > 0 && isL1;\n\n return (\n \n 0 ? null : count}\n isActiveParentNode={isActiveParentNode}\n isAllCategoriesActiveParent={\n isAllCategoriesActiveParent\n }\n />\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 default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import * as React from 'react';\nexport default function useEvent(callback) {\n var fnRef = React.useRef();\n fnRef.current = callback;\n var memoFn = React.useCallback(function () {\n var _fnRef$current;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args));\n }, []);\n return memoFn;\n}","import * as React from 'react';\nimport canUseDom from \"../Dom/canUseDom\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nvar useInternalLayoutEffect = process.env.NODE_ENV !== 'test' && canUseDom() ? React.useLayoutEffect : React.useEffect;\nvar useLayoutEffect = function useLayoutEffect(callback, deps) {\n var firstMountRef = React.useRef(true);\n useInternalLayoutEffect(function () {\n return callback(firstMountRef.current);\n }, deps);\n\n // We tell react that first mount has passed\n useInternalLayoutEffect(function () {\n firstMountRef.current = false;\n return function () {\n firstMountRef.current = true;\n };\n }, []);\n};\nexport var useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) {\n useLayoutEffect(function (firstMount) {\n if (!firstMount) {\n return callback();\n }\n }, deps);\n};\nexport default useLayoutEffect;","export default function canUseDom() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n/**\n * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.\n * We do not make this auto is to avoid real memory leak.\n * Developer should confirm it's safe to ignore themselves.\n */\nexport default function useSafeState(defaultValue) {\n var destroyRef = React.useRef(false);\n var _React$useState = React.useState(defaultValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n value = _React$useState2[0],\n setValue = _React$useState2[1];\n React.useEffect(function () {\n destroyRef.current = false;\n return function () {\n destroyRef.current = true;\n };\n }, []);\n function safeSetState(updater, ignoreDestroy) {\n if (ignoreDestroy && destroyRef.current) {\n return;\n }\n setValue(updater);\n }\n return [value, safeSetState];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"./useEvent\";\nimport { useLayoutUpdateEffect } from \"./useLayoutEffect\";\nimport useState from \"./useState\";\n/** We only think `undefined` is empty */\nfunction hasValue(value) {\n return value !== undefined;\n}\n\n/**\n * Similar to `useState` but will use props value if provided.\n * Note that internal use rc-util `useState` hook.\n */\nexport default function useMergedState(defaultStateValue, option) {\n var _ref = option || {},\n defaultValue = _ref.defaultValue,\n value = _ref.value,\n onChange = _ref.onChange,\n postState = _ref.postState;\n\n // ======================= Init =======================\n var _useState = useState(function () {\n if (hasValue(value)) {\n return value;\n } else if (hasValue(defaultValue)) {\n return typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n } else {\n return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;\n }\n }),\n _useState2 = _slicedToArray(_useState, 2),\n innerValue = _useState2[0],\n setInnerValue = _useState2[1];\n var mergedValue = value !== undefined ? value : innerValue;\n var postMergedValue = postState ? postState(mergedValue) : mergedValue;\n\n // ====================== Change ======================\n var onChangeFn = useEvent(onChange);\n var _useState3 = useState([mergedValue]),\n _useState4 = _slicedToArray(_useState3, 2),\n prevValue = _useState4[0],\n setPrevValue = _useState4[1];\n useLayoutUpdateEffect(function () {\n var prev = prevValue[0];\n if (innerValue !== prev) {\n onChangeFn(innerValue, prev);\n }\n }, [prevValue]);\n\n // Sync value back to `undefined` when it from control to un-control\n useLayoutUpdateEffect(function () {\n if (!hasValue(value)) {\n setInnerValue(value);\n }\n }, [value]);\n\n // ====================== Update ======================\n var triggerChange = useEvent(function (updater, ignoreDestroy) {\n setInnerValue(updater, ignoreDestroy);\n setPrevValue([mergedValue], ignoreDestroy);\n });\n return [postMergedValue, triggerChange];\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\n\nvar KeyCode = {\n /**\n * MAC_ENTER\n */\n MAC_ENTER: 3,\n /**\n * BACKSPACE\n */\n BACKSPACE: 8,\n /**\n * TAB\n */\n TAB: 9,\n /**\n * NUMLOCK on FF/Safari Mac\n */\n NUM_CENTER: 12,\n // NUMLOCK on FF/Safari Mac\n /**\n * ENTER\n */\n ENTER: 13,\n /**\n * SHIFT\n */\n SHIFT: 16,\n /**\n * CTRL\n */\n CTRL: 17,\n /**\n * ALT\n */\n ALT: 18,\n /**\n * PAUSE\n */\n PAUSE: 19,\n /**\n * CAPS_LOCK\n */\n CAPS_LOCK: 20,\n /**\n * ESC\n */\n ESC: 27,\n /**\n * SPACE\n */\n SPACE: 32,\n /**\n * PAGE_UP\n */\n PAGE_UP: 33,\n // also NUM_NORTH_EAST\n /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34,\n // also NUM_SOUTH_EAST\n /**\n * END\n */\n END: 35,\n // also NUM_SOUTH_WEST\n /**\n * HOME\n */\n HOME: 36,\n // also NUM_NORTH_WEST\n /**\n * LEFT\n */\n LEFT: 37,\n // also NUM_WEST\n /**\n * UP\n */\n UP: 38,\n // also NUM_NORTH\n /**\n * RIGHT\n */\n RIGHT: 39,\n // also NUM_EAST\n /**\n * DOWN\n */\n DOWN: 40,\n // also NUM_SOUTH\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n /**\n * INSERT\n */\n INSERT: 45,\n // also NUM_INSERT\n /**\n * DELETE\n */\n DELETE: 46,\n // also NUM_DELETE\n /**\n * ZERO\n */\n ZERO: 48,\n /**\n * ONE\n */\n ONE: 49,\n /**\n * TWO\n */\n TWO: 50,\n /**\n * THREE\n */\n THREE: 51,\n /**\n * FOUR\n */\n FOUR: 52,\n /**\n * FIVE\n */\n FIVE: 53,\n /**\n * SIX\n */\n SIX: 54,\n /**\n * SEVEN\n */\n SEVEN: 55,\n /**\n * EIGHT\n */\n EIGHT: 56,\n /**\n * NINE\n */\n NINE: 57,\n /**\n * QUESTION_MARK\n */\n QUESTION_MARK: 63,\n // needs localization\n /**\n * A\n */\n A: 65,\n /**\n * B\n */\n B: 66,\n /**\n * C\n */\n C: 67,\n /**\n * D\n */\n D: 68,\n /**\n * E\n */\n E: 69,\n /**\n * F\n */\n F: 70,\n /**\n * G\n */\n G: 71,\n /**\n * H\n */\n H: 72,\n /**\n * I\n */\n I: 73,\n /**\n * J\n */\n J: 74,\n /**\n * K\n */\n K: 75,\n /**\n * L\n */\n L: 76,\n /**\n * M\n */\n M: 77,\n /**\n * N\n */\n N: 78,\n /**\n * O\n */\n O: 79,\n /**\n * P\n */\n P: 80,\n /**\n * Q\n */\n Q: 81,\n /**\n * R\n */\n R: 82,\n /**\n * S\n */\n S: 83,\n /**\n * T\n */\n T: 84,\n /**\n * U\n */\n U: 85,\n /**\n * V\n */\n V: 86,\n /**\n * W\n */\n W: 87,\n /**\n * X\n */\n X: 88,\n /**\n * Y\n */\n Y: 89,\n /**\n * Z\n */\n Z: 90,\n /**\n * META\n */\n META: 91,\n // WIN_KEY_LEFT\n /**\n * WIN_KEY_RIGHT\n */\n WIN_KEY_RIGHT: 92,\n /**\n * CONTEXT_MENU\n */\n CONTEXT_MENU: 93,\n /**\n * NUM_ZERO\n */\n NUM_ZERO: 96,\n /**\n * NUM_ONE\n */\n NUM_ONE: 97,\n /**\n * NUM_TWO\n */\n NUM_TWO: 98,\n /**\n * NUM_THREE\n */\n NUM_THREE: 99,\n /**\n * NUM_FOUR\n */\n NUM_FOUR: 100,\n /**\n * NUM_FIVE\n */\n NUM_FIVE: 101,\n /**\n * NUM_SIX\n */\n NUM_SIX: 102,\n /**\n * NUM_SEVEN\n */\n NUM_SEVEN: 103,\n /**\n * NUM_EIGHT\n */\n NUM_EIGHT: 104,\n /**\n * NUM_NINE\n */\n NUM_NINE: 105,\n /**\n * NUM_MULTIPLY\n */\n NUM_MULTIPLY: 106,\n /**\n * NUM_PLUS\n */\n NUM_PLUS: 107,\n /**\n * NUM_MINUS\n */\n NUM_MINUS: 109,\n /**\n * NUM_PERIOD\n */\n NUM_PERIOD: 110,\n /**\n * NUM_DIVISION\n */\n NUM_DIVISION: 111,\n /**\n * F1\n */\n F1: 112,\n /**\n * F2\n */\n F2: 113,\n /**\n * F3\n */\n F3: 114,\n /**\n * F4\n */\n F4: 115,\n /**\n * F5\n */\n F5: 116,\n /**\n * F6\n */\n F6: 117,\n /**\n * F7\n */\n F7: 118,\n /**\n * F8\n */\n F8: 119,\n /**\n * F9\n */\n F9: 120,\n /**\n * F10\n */\n F10: 121,\n /**\n * F11\n */\n F11: 122,\n /**\n * F12\n */\n F12: 123,\n /**\n * NUMLOCK\n */\n NUMLOCK: 144,\n /**\n * SEMICOLON\n */\n SEMICOLON: 186,\n // needs localization\n /**\n * DASH\n */\n DASH: 189,\n // needs localization\n /**\n * EQUALS\n */\n EQUALS: 187,\n // needs localization\n /**\n * COMMA\n */\n COMMA: 188,\n // needs localization\n /**\n * PERIOD\n */\n PERIOD: 190,\n // needs localization\n /**\n * SLASH\n */\n SLASH: 191,\n // needs localization\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192,\n // needs localization\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222,\n // needs localization\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219,\n // needs localization\n /**\n * BACKSLASH\n */\n BACKSLASH: 220,\n // needs localization\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221,\n // needs localization\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224,\n // Firefox (Gecko) fires this for the meta key instead of 91\n /**\n * WIN_IME\n */\n WIN_IME: 229,\n // ======================== Function ========================\n /**\n * whether text and modified key is entered at the same time.\n */\n isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n var keyCode = e.keyCode;\n if (e.altKey && !e.ctrlKey || e.metaKey ||\n // Function keys don't generate text\n keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n return false;\n }\n\n // The following keys are quite harmless, even in combination with\n // CTRL, ALT or SHIFT.\n switch (keyCode) {\n case KeyCode.ALT:\n case KeyCode.CAPS_LOCK:\n case KeyCode.CONTEXT_MENU:\n case KeyCode.CTRL:\n case KeyCode.DOWN:\n case KeyCode.END:\n case KeyCode.ESC:\n case KeyCode.HOME:\n case KeyCode.INSERT:\n case KeyCode.LEFT:\n case KeyCode.MAC_FF_META:\n case KeyCode.META:\n case KeyCode.NUMLOCK:\n case KeyCode.NUM_CENTER:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAUSE:\n case KeyCode.PRINT_SCREEN:\n case KeyCode.RIGHT:\n case KeyCode.SHIFT:\n case KeyCode.UP:\n case KeyCode.WIN_KEY:\n case KeyCode.WIN_KEY_RIGHT:\n return false;\n default:\n return true;\n }\n },\n /**\n * whether character is entered.\n */\n isCharacterKey: function isCharacterKey(keyCode) {\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n return true;\n }\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n return true;\n }\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n return true;\n }\n\n // Safari sends zero key code for non-latin characters.\n if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n return true;\n }\n switch (keyCode) {\n case KeyCode.SPACE:\n case KeyCode.QUESTION_MARK:\n case KeyCode.NUM_PLUS:\n case KeyCode.NUM_MINUS:\n case KeyCode.NUM_PERIOD:\n case KeyCode.NUM_DIVISION:\n case KeyCode.SEMICOLON:\n case KeyCode.DASH:\n case KeyCode.EQUALS:\n case KeyCode.COMMA:\n case KeyCode.PERIOD:\n case KeyCode.SLASH:\n case KeyCode.APOSTROPHE:\n case KeyCode.SINGLE_QUOTE:\n case KeyCode.OPEN_SQUARE_BRACKET:\n case KeyCode.BACKSLASH:\n case KeyCode.CLOSE_SQUARE_BRACKET:\n return true;\n default:\n return false;\n }\n }\n};\nexport default KeyCode;","import * as React from 'react';\nvar SliderContext = /*#__PURE__*/React.createContext({\n min: 0,\n max: 0,\n direction: 'ltr',\n step: 1,\n includedStart: 0,\n includedEnd: 0,\n tabIndex: 0\n});\nexport default SliderContext;","export function getOffset(value, min, max) {\n return (value - min) / (max - min);\n}\nexport function getDirectionStyle(direction, value, min, max) {\n var offset = getOffset(value, min, max);\n var positionStyle = {};\n\n switch (direction) {\n case 'rtl':\n positionStyle.right = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateX(50%)';\n break;\n\n case 'btt':\n positionStyle.bottom = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateY(50%)';\n break;\n\n case 'ttb':\n positionStyle.top = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateY(-50%)';\n break;\n\n default:\n positionStyle.left = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateX(-50%)';\n break;\n }\n\n return positionStyle;\n}\n/** Return index value if is list or return value directly */\n\nexport function getIndex(value, index) {\n return Array.isArray(value) ? value[index] : value;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"value\", \"valueIndex\", \"onStartMove\", \"style\", \"render\", \"dragging\", \"onOffsetChange\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport SliderContext from '../context';\nimport { getDirectionStyle, getIndex } from '../util';\nvar Handle = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames, _getIndex;\n\n var prefixCls = props.prefixCls,\n value = props.value,\n valueIndex = props.valueIndex,\n onStartMove = props.onStartMove,\n style = props.style,\n render = props.render,\n dragging = props.dragging,\n onOffsetChange = props.onOffsetChange,\n restProps = _objectWithoutProperties(props, _excluded);\n\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n disabled = _React$useContext.disabled,\n range = _React$useContext.range,\n tabIndex = _React$useContext.tabIndex,\n ariaLabelForHandle = _React$useContext.ariaLabelForHandle,\n ariaLabelledByForHandle = _React$useContext.ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle = _React$useContext.ariaValueTextFormatterForHandle;\n\n var handlePrefixCls = \"\".concat(prefixCls, \"-handle\"); // ============================ Events ============================\n\n var onInternalStartMove = function onInternalStartMove(e) {\n if (!disabled) {\n onStartMove(e, valueIndex);\n }\n }; // =========================== Keyboard ===========================\n\n\n var onKeyDown = function onKeyDown(e) {\n if (!disabled) {\n var offset = null; // Change the value\n\n switch (e.which || e.keyCode) {\n case KeyCode.LEFT:\n offset = direction === 'ltr' || direction === 'btt' ? -1 : 1;\n break;\n\n case KeyCode.RIGHT:\n offset = direction === 'ltr' || direction === 'btt' ? 1 : -1;\n break;\n // Up is plus\n\n case KeyCode.UP:\n offset = direction !== 'ttb' ? 1 : -1;\n break;\n // Down is minus\n\n case KeyCode.DOWN:\n offset = direction !== 'ttb' ? -1 : 1;\n break;\n\n case KeyCode.HOME:\n offset = 'min';\n break;\n\n case KeyCode.END:\n offset = 'max';\n break;\n\n case KeyCode.PAGE_UP:\n offset = 2;\n break;\n\n case KeyCode.PAGE_DOWN:\n offset = -2;\n break;\n }\n\n if (offset !== null) {\n e.preventDefault();\n onOffsetChange(offset, valueIndex);\n }\n }\n }; // ============================ Offset ============================\n\n\n var positionStyle = getDirectionStyle(direction, value, min, max); // ============================ Render ============================\n\n var handleNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n className: classNames(handlePrefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(handlePrefixCls, \"-\").concat(valueIndex + 1), range), _defineProperty(_classNames, \"\".concat(handlePrefixCls, \"-dragging\"), dragging), _classNames)),\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: onInternalStartMove,\n onTouchStart: onInternalStartMove,\n onKeyDown: onKeyDown,\n tabIndex: disabled ? null : getIndex(tabIndex, valueIndex),\n role: \"slider\",\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n \"aria-valuenow\": value,\n \"aria-disabled\": disabled,\n \"aria-label\": getIndex(ariaLabelForHandle, valueIndex),\n \"aria-labelledby\": getIndex(ariaLabelledByForHandle, valueIndex),\n \"aria-valuetext\": (_getIndex = getIndex(ariaValueTextFormatterForHandle, valueIndex)) === null || _getIndex === void 0 ? void 0 : _getIndex(value)\n }, restProps)); // Customize\n\n if (render) {\n handleNode = render(handleNode, {\n index: valueIndex,\n prefixCls: prefixCls,\n value: value,\n dragging: dragging\n });\n }\n\n return handleNode;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Handle.displayName = 'Handle';\n}\n\nexport default Handle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"style\", \"onStartMove\", \"onOffsetChange\", \"values\", \"handleRender\", \"draggingIndex\"];\nimport * as React from 'react';\nimport Handle from './Handle';\nimport { getIndex } from '../util';\nvar Handles = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n style = props.style,\n onStartMove = props.onStartMove,\n onOffsetChange = props.onOffsetChange,\n values = props.values,\n handleRender = props.handleRender,\n draggingIndex = props.draggingIndex,\n restProps = _objectWithoutProperties(props, _excluded);\n\n var handlesRef = React.useRef({});\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus(index) {\n var _handlesRef$current$i;\n\n (_handlesRef$current$i = handlesRef.current[index]) === null || _handlesRef$current$i === void 0 ? void 0 : _handlesRef$current$i.focus();\n }\n };\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, values.map(function (value, index) {\n return /*#__PURE__*/React.createElement(Handle, _extends({\n ref: function ref(node) {\n if (!node) {\n delete handlesRef.current[index];\n } else {\n handlesRef.current[index] = node;\n }\n },\n dragging: draggingIndex === index,\n prefixCls: prefixCls,\n style: getIndex(style, index),\n key: index,\n value: value,\n valueIndex: index,\n onStartMove: onStartMove,\n onOffsetChange: onOffsetChange,\n render: handleRender\n }, restProps));\n }));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Handles.displayName = 'Handles';\n}\n\nexport default Handles;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n\nfunction getPosition(e) {\n var obj = 'touches' in e ? e.touches[0] : e;\n return {\n pageX: obj.pageX,\n pageY: obj.pageY\n };\n}\n\nexport default function useDrag(containerRef, direction, rawValues, min, max, formatValue, triggerChange, finishChange, offsetValues) {\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n draggingValue = _React$useState2[0],\n setDraggingValue = _React$useState2[1];\n\n var _React$useState3 = React.useState(-1),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n draggingIndex = _React$useState4[0],\n setDraggingIndex = _React$useState4[1];\n\n var _React$useState5 = React.useState(rawValues),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n cacheValues = _React$useState6[0],\n setCacheValues = _React$useState6[1];\n\n var _React$useState7 = React.useState(rawValues),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n originValues = _React$useState8[0],\n setOriginValues = _React$useState8[1];\n\n var mouseMoveEventRef = React.useRef(null);\n var mouseUpEventRef = React.useRef(null);\n React.useEffect(function () {\n if (draggingIndex === -1) {\n setCacheValues(rawValues);\n }\n }, [rawValues, draggingIndex]); // Clean up event\n\n React.useEffect(function () {\n return function () {\n document.removeEventListener('mousemove', mouseMoveEventRef.current);\n document.removeEventListener('mouseup', mouseUpEventRef.current);\n document.removeEventListener('touchmove', mouseMoveEventRef.current);\n document.removeEventListener('touchend', mouseUpEventRef.current);\n };\n }, []);\n\n var flushValues = function flushValues(nextValues, nextValue) {\n // Perf: Only update state when value changed\n if (cacheValues.some(function (val, i) {\n return val !== nextValues[i];\n })) {\n if (nextValue !== undefined) {\n setDraggingValue(nextValue);\n }\n\n setCacheValues(nextValues);\n triggerChange(nextValues);\n }\n };\n\n var updateCacheValue = function updateCacheValue(valueIndex, offsetPercent) {\n // Basic point offset\n if (valueIndex === -1) {\n // >>>> Dragging on the track\n var startValue = originValues[0];\n var endValue = originValues[originValues.length - 1];\n var maxStartOffset = min - startValue;\n var maxEndOffset = max - endValue; // Get valid offset\n\n var offset = offsetPercent * (max - min);\n offset = Math.max(offset, maxStartOffset);\n offset = Math.min(offset, maxEndOffset); // Use first value to revert back of valid offset (like steps marks)\n\n var formatStartValue = formatValue(startValue + offset);\n offset = formatStartValue - startValue;\n var cloneCacheValues = originValues.map(function (val) {\n return val + offset;\n });\n flushValues(cloneCacheValues);\n } else {\n // >>>> Dragging on the handle\n var offsetDist = (max - min) * offsetPercent; // Always start with the valueIndex origin value\n\n var cloneValues = _toConsumableArray(cacheValues);\n\n cloneValues[valueIndex] = originValues[valueIndex];\n var next = offsetValues(cloneValues, offsetDist, valueIndex, 'dist');\n flushValues(next.values, next.value);\n }\n }; // Resolve closure\n\n\n var updateCacheValueRef = React.useRef(updateCacheValue);\n updateCacheValueRef.current = updateCacheValue;\n\n var onStartMove = function onStartMove(e, valueIndex) {\n e.stopPropagation();\n var originValue = rawValues[valueIndex];\n setDraggingIndex(valueIndex);\n setDraggingValue(originValue);\n setOriginValues(rawValues);\n\n var _getPosition = getPosition(e),\n startX = _getPosition.pageX,\n startY = _getPosition.pageY; // Moving\n\n\n var onMouseMove = function onMouseMove(event) {\n event.preventDefault();\n\n var _getPosition2 = getPosition(event),\n moveX = _getPosition2.pageX,\n moveY = _getPosition2.pageY;\n\n var offsetX = moveX - startX;\n var offsetY = moveY - startY;\n\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n width = _containerRef$current.width,\n height = _containerRef$current.height;\n\n var offSetPercent;\n\n switch (direction) {\n case 'btt':\n offSetPercent = -offsetY / height;\n break;\n\n case 'ttb':\n offSetPercent = offsetY / height;\n break;\n\n case 'rtl':\n offSetPercent = -offsetX / width;\n break;\n\n default:\n offSetPercent = offsetX / width;\n }\n\n updateCacheValueRef.current(valueIndex, offSetPercent);\n }; // End\n\n\n var onMouseUp = function onMouseUp(event) {\n event.preventDefault();\n document.removeEventListener('mouseup', onMouseUp);\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('touchend', onMouseUp);\n document.removeEventListener('touchmove', onMouseMove);\n mouseMoveEventRef.current = null;\n mouseUpEventRef.current = null;\n setDraggingIndex(-1);\n finishChange();\n };\n\n document.addEventListener('mouseup', onMouseUp);\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('touchend', onMouseUp);\n document.addEventListener('touchmove', onMouseMove);\n mouseMoveEventRef.current = onMouseMove;\n mouseUpEventRef.current = onMouseUp;\n }; // Only return cache value when it mapping with rawValues\n\n\n var returnValues = React.useMemo(function () {\n var sourceValues = _toConsumableArray(rawValues).sort(function (a, b) {\n return a - b;\n });\n\n var targetValues = _toConsumableArray(cacheValues).sort(function (a, b) {\n return a - b;\n });\n\n return sourceValues.every(function (val, index) {\n return val === targetValues[index];\n }) ? cacheValues : rawValues;\n }, [rawValues, cacheValues]);\n return [draggingIndex, draggingValue, returnValues, onStartMove];\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport SliderContext from '../context';\nimport { getOffset } from '../util';\nexport default function Track(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n start = props.start,\n end = props.end,\n index = props.index,\n onStartMove = props.onStartMove;\n\n var _React$useContext = React.useContext(SliderContext),\n direction = _React$useContext.direction,\n min = _React$useContext.min,\n max = _React$useContext.max,\n disabled = _React$useContext.disabled,\n range = _React$useContext.range;\n\n var trackPrefixCls = \"\".concat(prefixCls, \"-track\");\n var offsetStart = getOffset(start, min, max);\n var offsetEnd = getOffset(end, min, max); // ============================ Events ============================\n\n var onInternalStartMove = function onInternalStartMove(e) {\n if (!disabled && onStartMove) {\n onStartMove(e, -1);\n }\n }; // ============================ Render ============================\n\n\n var positionStyle = {};\n\n switch (direction) {\n case 'rtl':\n positionStyle.right = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n\n case 'btt':\n positionStyle.bottom = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n\n case 'ttb':\n positionStyle.top = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n\n default:\n positionStyle.left = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(trackPrefixCls, range && \"\".concat(trackPrefixCls, \"-\").concat(index + 1)),\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: onInternalStartMove,\n onTouchStart: onInternalStartMove\n });\n}","import * as React from 'react';\nimport SliderContext from '../context';\nimport Track from './Track';\nimport { getIndex } from '../util';\nexport default function Tracks(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n values = props.values,\n startPoint = props.startPoint,\n onStartMove = props.onStartMove;\n\n var _React$useContext = React.useContext(SliderContext),\n included = _React$useContext.included,\n range = _React$useContext.range,\n min = _React$useContext.min;\n\n var trackList = React.useMemo(function () {\n if (!range) {\n // null value do not have track\n if (values.length === 0) {\n return [];\n }\n\n var startValue = startPoint !== null && startPoint !== void 0 ? startPoint : min;\n var endValue = values[0];\n return [{\n start: Math.min(startValue, endValue),\n end: Math.max(startValue, endValue)\n }];\n } // Multiple\n\n\n var list = [];\n\n for (var i = 0; i < values.length - 1; i += 1) {\n list.push({\n start: values[i],\n end: values[i + 1]\n });\n }\n\n return list;\n }, [values, range, startPoint, min]);\n return included ? trackList.map(function (_ref, index) {\n var start = _ref.start,\n end = _ref.end;\n return /*#__PURE__*/React.createElement(Track, {\n index: index,\n prefixCls: prefixCls,\n style: getIndex(style, index),\n start: start,\n end: end,\n key: index,\n onStartMove: onStartMove\n });\n }) : null;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { getDirectionStyle } from '../util';\nimport SliderContext from '../context';\nexport default function Mark(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n children = props.children,\n value = props.value,\n _onClick = props.onClick;\n\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n includedStart = _React$useContext.includedStart,\n includedEnd = _React$useContext.includedEnd,\n included = _React$useContext.included;\n\n var textCls = \"\".concat(prefixCls, \"-text\"); // ============================ Offset ============================\n\n var positionStyle = getDirectionStyle(direction, value, min, max);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(textCls, _defineProperty({}, \"\".concat(textCls, \"-active\"), included && includedStart <= value && value <= includedEnd)),\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: function onMouseDown(e) {\n e.stopPropagation();\n },\n onClick: function onClick() {\n _onClick(value);\n }\n }, children);\n}","import * as React from 'react';\nimport Mark from './Mark';\nexport default function Marks(props) {\n var prefixCls = props.prefixCls,\n marks = props.marks,\n onClick = props.onClick;\n var markPrefixCls = \"\".concat(prefixCls, \"-mark\"); // Not render mark if empty\n\n if (!marks.length) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: markPrefixCls\n }, marks.map(function (_ref) {\n var value = _ref.value,\n style = _ref.style,\n label = _ref.label;\n return /*#__PURE__*/React.createElement(Mark, {\n key: value,\n prefixCls: markPrefixCls,\n style: style,\n value: value,\n onClick: onClick\n }, label);\n }));\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { getDirectionStyle } from '../util';\nimport SliderContext from '../context';\nexport default function Dot(props) {\n var prefixCls = props.prefixCls,\n value = props.value,\n style = props.style,\n activeStyle = props.activeStyle;\n\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n included = _React$useContext.included,\n includedStart = _React$useContext.includedStart,\n includedEnd = _React$useContext.includedEnd;\n\n var dotClassName = \"\".concat(prefixCls, \"-dot\");\n var active = included && includedStart <= value && value <= includedEnd; // ============================ Offset ============================\n\n var mergedStyle = _objectSpread(_objectSpread({}, getDirectionStyle(direction, value, min, max)), typeof style === 'function' ? style(value) : style);\n\n if (active) {\n mergedStyle = _objectSpread(_objectSpread({}, mergedStyle), typeof activeStyle === 'function' ? activeStyle(value) : activeStyle);\n }\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(dotClassName, _defineProperty({}, \"\".concat(dotClassName, \"-active\"), active)),\n style: mergedStyle\n });\n}","import * as React from 'react';\nimport SliderContext from '../context';\nimport Dot from './Dot';\nexport default function Steps(props) {\n var prefixCls = props.prefixCls,\n marks = props.marks,\n dots = props.dots,\n style = props.style,\n activeStyle = props.activeStyle;\n\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n step = _React$useContext.step;\n\n var stepDots = React.useMemo(function () {\n var dotSet = new Set(); // Add marks\n\n marks.forEach(function (mark) {\n dotSet.add(mark.value);\n }); // Fill dots\n\n if (dots && step !== null) {\n var current = min;\n\n while (current <= max) {\n dotSet.add(current);\n current += step;\n }\n }\n\n return Array.from(dotSet);\n }, [min, max, step, dots, marks]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-step\")\n }, stepDots.map(function (dotValue) {\n return /*#__PURE__*/React.createElement(Dot, {\n prefixCls: prefixCls,\n key: dotValue,\n value: dotValue,\n style: style,\n activeStyle: activeStyle\n });\n }));\n}","/* eslint-disable no-console */\nvar warned = {};\nvar preWarningFns = [];\n\n/**\n * Pre warning enable you to parse content before console.error.\n * Modify to null will prevent warning.\n */\nexport var preMessage = function preMessage(fn) {\n preWarningFns.push(fn);\n};\nexport function warning(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'warning');\n }, message);\n if (finalMessage) {\n console.error(\"Warning: \".concat(finalMessage));\n }\n }\n}\nexport function note(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'note');\n }, message);\n if (finalMessage) {\n console.warn(\"Note: \".concat(finalMessage));\n }\n }\n}\nexport function resetWarned() {\n warned = {};\n}\nexport function call(method, valid, message) {\n if (!valid && !warned[message]) {\n method(false, message);\n warned[message] = true;\n }\n}\nexport function warningOnce(valid, message) {\n call(warning, valid, message);\n}\nexport function noteOnce(valid, message) {\n call(note, valid, message);\n}\nwarningOnce.preMessage = preMessage;\nwarningOnce.resetWarned = resetWarned;\nwarningOnce.noteOnce = noteOnce;\nexport default warningOnce;\n/* eslint-enable */","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport shallowEqual from 'shallowequal';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport Handles from './Handles';\nimport useDrag from './hooks/useDrag';\nimport SliderContext from './context';\nimport Tracks from './Tracks';\nimport Marks from './Marks';\nimport Steps from './Steps';\nimport useOffset from './hooks/useOffset';\nimport warning from \"rc-util/es/warning\";\nvar Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-slider' : _props$prefixCls,\n className = props.className,\n style = props.style,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n autoFocus = props.autoFocus,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n _props$min = props.min,\n min = _props$min === void 0 ? 0 : _props$min,\n _props$max = props.max,\n max = _props$max === void 0 ? 100 : _props$max,\n _props$step = props.step,\n step = _props$step === void 0 ? 1 : _props$step,\n value = props.value,\n defaultValue = props.defaultValue,\n range = props.range,\n count = props.count,\n onChange = props.onChange,\n onBeforeChange = props.onBeforeChange,\n onAfterChange = props.onAfterChange,\n _props$allowCross = props.allowCross,\n allowCross = _props$allowCross === void 0 ? true : _props$allowCross,\n _props$pushable = props.pushable,\n pushable = _props$pushable === void 0 ? false : _props$pushable,\n draggableTrack = props.draggableTrack,\n reverse = props.reverse,\n vertical = props.vertical,\n _props$included = props.included,\n included = _props$included === void 0 ? true : _props$included,\n startPoint = props.startPoint,\n trackStyle = props.trackStyle,\n handleStyle = props.handleStyle,\n railStyle = props.railStyle,\n dotStyle = props.dotStyle,\n activeDotStyle = props.activeDotStyle,\n marks = props.marks,\n dots = props.dots,\n handleRender = props.handleRender,\n _props$tabIndex = props.tabIndex,\n tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n ariaLabelForHandle = props.ariaLabelForHandle,\n ariaLabelledByForHandle = props.ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle = props.ariaValueTextFormatterForHandle;\n var handlesRef = React.useRef();\n var containerRef = React.useRef();\n var direction = React.useMemo(function () {\n if (vertical) {\n return reverse ? 'ttb' : 'btt';\n }\n\n return reverse ? 'rtl' : 'ltr';\n }, [reverse, vertical]); // ============================ Range =============================\n\n var mergedMin = React.useMemo(function () {\n return isFinite(min) ? min : 0;\n }, [min]);\n var mergedMax = React.useMemo(function () {\n return isFinite(max) ? max : 100;\n }, [max]); // ============================= Step =============================\n\n var mergedStep = React.useMemo(function () {\n return step !== null && step <= 0 ? 1 : step;\n }, [step]); // ============================= Push =============================\n\n var mergedPush = React.useMemo(function () {\n if (pushable === true) {\n return mergedStep;\n }\n\n return pushable >= 0 ? pushable : false;\n }, [pushable, mergedStep]); // ============================ Marks =============================\n\n var markList = React.useMemo(function () {\n var keys = Object.keys(marks || {});\n return keys.map(function (key) {\n var mark = marks[key];\n var markObj = {\n value: Number(key)\n };\n\n if (mark && _typeof(mark) === 'object' && ! /*#__PURE__*/React.isValidElement(mark) && ('label' in mark || 'style' in mark)) {\n markObj.style = mark.style;\n markObj.label = mark.label;\n } else {\n markObj.label = mark;\n }\n\n return markObj;\n }).filter(function (_ref) {\n var label = _ref.label;\n return label || typeof label === 'number';\n }).sort(function (a, b) {\n return a.value - b.value;\n });\n }, [marks]); // ============================ Format ============================\n\n var _useOffset = useOffset(mergedMin, mergedMax, mergedStep, markList, allowCross, mergedPush),\n _useOffset2 = _slicedToArray(_useOffset, 2),\n formatValue = _useOffset2[0],\n offsetValues = _useOffset2[1]; // ============================ Values ============================\n\n\n var _useMergedState = useMergedState(defaultValue, {\n value: value\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedValue = _useMergedState2[0],\n setValue = _useMergedState2[1];\n\n var rawValues = React.useMemo(function () {\n var valueList = mergedValue === null || mergedValue === undefined ? [] : Array.isArray(mergedValue) ? mergedValue : [mergedValue];\n\n var _valueList = _slicedToArray(valueList, 1),\n _valueList$ = _valueList[0],\n val0 = _valueList$ === void 0 ? mergedMin : _valueList$;\n\n var returnValues = mergedValue === null ? [] : [val0]; // Format as range\n\n if (range) {\n returnValues = _toConsumableArray(valueList); // When count provided or value is `undefined`, we fill values\n\n if (count || mergedValue === undefined) {\n var pointCount = count >= 0 ? count + 1 : 2;\n returnValues = returnValues.slice(0, pointCount); // Fill with count\n\n while (returnValues.length < pointCount) {\n var _returnValues;\n\n returnValues.push((_returnValues = returnValues[returnValues.length - 1]) !== null && _returnValues !== void 0 ? _returnValues : mergedMin);\n }\n }\n\n returnValues.sort(function (a, b) {\n return a - b;\n });\n } // Align in range\n\n\n returnValues.forEach(function (val, index) {\n returnValues[index] = formatValue(val);\n });\n return returnValues;\n }, [mergedValue, range, mergedMin, count, formatValue]); // =========================== onChange ===========================\n\n var rawValuesRef = React.useRef(rawValues);\n rawValuesRef.current = rawValues;\n\n var getTriggerValue = function getTriggerValue(triggerValues) {\n return range ? triggerValues : triggerValues[0];\n };\n\n var triggerChange = function triggerChange(nextValues) {\n // Order first\n var cloneNextValues = _toConsumableArray(nextValues).sort(function (a, b) {\n return a - b;\n }); // Trigger event if needed\n\n\n if (onChange && !shallowEqual(cloneNextValues, rawValuesRef.current)) {\n onChange(getTriggerValue(cloneNextValues));\n } // We set this later since it will re-render component immediately\n\n\n setValue(cloneNextValues);\n };\n\n var changeToCloseValue = function changeToCloseValue(newValue) {\n if (!disabled) {\n var valueIndex = 0;\n var valueDist = mergedMax - mergedMin;\n rawValues.forEach(function (val, index) {\n var dist = Math.abs(newValue - val);\n\n if (dist <= valueDist) {\n valueDist = dist;\n valueIndex = index;\n }\n }); // Create new values\n\n var cloneNextValues = _toConsumableArray(rawValues);\n\n cloneNextValues[valueIndex] = newValue; // Fill value to match default 2\n\n if (range && !rawValues.length && count === undefined) {\n cloneNextValues.push(newValue);\n }\n\n onBeforeChange === null || onBeforeChange === void 0 ? void 0 : onBeforeChange(getTriggerValue(cloneNextValues));\n triggerChange(cloneNextValues);\n onAfterChange === null || onAfterChange === void 0 ? void 0 : onAfterChange(getTriggerValue(cloneNextValues));\n }\n }; // ============================ Click =============================\n\n\n var onSliderMouseDown = function onSliderMouseDown(e) {\n e.preventDefault();\n\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n width = _containerRef$current.width,\n height = _containerRef$current.height,\n left = _containerRef$current.left,\n top = _containerRef$current.top,\n bottom = _containerRef$current.bottom,\n right = _containerRef$current.right;\n\n var clientX = e.clientX,\n clientY = e.clientY;\n var percent;\n\n switch (direction) {\n case 'btt':\n percent = (bottom - clientY) / height;\n break;\n\n case 'ttb':\n percent = (clientY - top) / height;\n break;\n\n case 'rtl':\n percent = (right - clientX) / width;\n break;\n\n default:\n percent = (clientX - left) / width;\n }\n\n var nextValue = mergedMin + percent * (mergedMax - mergedMin);\n changeToCloseValue(formatValue(nextValue));\n }; // =========================== Keyboard ===========================\n\n\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n keyboardValue = _React$useState2[0],\n setKeyboardValue = _React$useState2[1];\n\n var onHandleOffsetChange = function onHandleOffsetChange(offset, valueIndex) {\n if (!disabled) {\n var next = offsetValues(rawValues, offset, valueIndex);\n onBeforeChange === null || onBeforeChange === void 0 ? void 0 : onBeforeChange(getTriggerValue(rawValues));\n triggerChange(next.values);\n onAfterChange === null || onAfterChange === void 0 ? void 0 : onAfterChange(getTriggerValue(next.values));\n setKeyboardValue(next.value);\n }\n };\n\n React.useEffect(function () {\n if (keyboardValue !== null) {\n var valueIndex = rawValues.indexOf(keyboardValue);\n\n if (valueIndex >= 0) {\n handlesRef.current.focus(valueIndex);\n }\n }\n\n setKeyboardValue(null);\n }, [keyboardValue]); // ============================= Drag =============================\n\n var mergedDraggableTrack = React.useMemo(function () {\n if (draggableTrack && mergedStep === null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(false, '`draggableTrack` is not supported when `step` is `null`.');\n }\n\n return false;\n }\n\n return draggableTrack;\n }, [draggableTrack, mergedStep]);\n\n var finishChange = function finishChange() {\n onAfterChange === null || onAfterChange === void 0 ? void 0 : onAfterChange(getTriggerValue(rawValuesRef.current));\n };\n\n var _useDrag = useDrag(containerRef, direction, rawValues, mergedMin, mergedMax, formatValue, triggerChange, finishChange, offsetValues),\n _useDrag2 = _slicedToArray(_useDrag, 4),\n draggingIndex = _useDrag2[0],\n draggingValue = _useDrag2[1],\n cacheValues = _useDrag2[2],\n onStartDrag = _useDrag2[3];\n\n var onStartMove = function onStartMove(e, valueIndex) {\n onStartDrag(e, valueIndex);\n onBeforeChange === null || onBeforeChange === void 0 ? void 0 : onBeforeChange(getTriggerValue(rawValuesRef.current));\n }; // Auto focus for updated handle\n\n\n var dragging = draggingIndex !== -1;\n React.useEffect(function () {\n if (!dragging) {\n var valueIndex = rawValues.lastIndexOf(draggingValue);\n handlesRef.current.focus(valueIndex);\n }\n }, [dragging]); // =========================== Included ===========================\n\n var sortedCacheValues = React.useMemo(function () {\n return _toConsumableArray(cacheValues).sort(function (a, b) {\n return a - b;\n });\n }, [cacheValues]); // Provide a range values with included [min, max]\n // Used for Track, Mark & Dot\n\n var _React$useMemo = React.useMemo(function () {\n if (!range) {\n return [mergedMin, sortedCacheValues[0]];\n }\n\n return [sortedCacheValues[0], sortedCacheValues[sortedCacheValues.length - 1]];\n }, [sortedCacheValues, range, mergedMin]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n includedStart = _React$useMemo2[0],\n includedEnd = _React$useMemo2[1]; // ============================= Refs =============================\n\n\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n handlesRef.current.focus(0);\n },\n blur: function blur() {\n var _document = document,\n activeElement = _document.activeElement;\n\n if (containerRef.current.contains(activeElement)) {\n activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur();\n }\n }\n };\n }); // ========================== Auto Focus ==========================\n\n React.useEffect(function () {\n if (autoFocus) {\n handlesRef.current.focus(0);\n }\n }, []); // =========================== Context ============================\n\n var context = React.useMemo(function () {\n return {\n min: mergedMin,\n max: mergedMax,\n direction: direction,\n disabled: disabled,\n step: mergedStep,\n included: included,\n includedStart: includedStart,\n includedEnd: includedEnd,\n range: range,\n tabIndex: tabIndex,\n ariaLabelForHandle: ariaLabelForHandle,\n ariaLabelledByForHandle: ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle: ariaValueTextFormatterForHandle\n };\n }, [mergedMin, mergedMax, direction, disabled, mergedStep, included, includedStart, includedEnd, range, tabIndex, ariaLabelForHandle, ariaLabelledByForHandle, ariaValueTextFormatterForHandle]); // ============================ Render ============================\n\n return /*#__PURE__*/React.createElement(SliderContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: containerRef,\n className: classNames(prefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, \"\".concat(prefixCls, \"-vertical\"), vertical), _defineProperty(_classNames, \"\".concat(prefixCls, \"-horizontal\"), !vertical), _defineProperty(_classNames, \"\".concat(prefixCls, \"-with-marks\"), markList.length), _classNames)),\n style: style,\n onMouseDown: onSliderMouseDown\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-rail\"),\n style: railStyle\n }), /*#__PURE__*/React.createElement(Tracks, {\n prefixCls: prefixCls,\n style: trackStyle,\n values: sortedCacheValues,\n startPoint: startPoint,\n onStartMove: mergedDraggableTrack ? onStartMove : null\n }), /*#__PURE__*/React.createElement(Steps, {\n prefixCls: prefixCls,\n marks: markList,\n dots: dots,\n style: dotStyle,\n activeStyle: activeDotStyle\n }), /*#__PURE__*/React.createElement(Handles, {\n ref: handlesRef,\n prefixCls: prefixCls,\n style: handleStyle,\n values: cacheValues,\n draggingIndex: draggingIndex,\n onStartMove: onStartMove,\n onOffsetChange: onHandleOffsetChange,\n onFocus: onFocus,\n onBlur: onBlur,\n handleRender: handleRender\n }), /*#__PURE__*/React.createElement(Marks, {\n prefixCls: prefixCls,\n marks: markList,\n onClick: changeToCloseValue\n })));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Slider.displayName = 'Slider';\n}\n\nexport default Slider;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nexport default function useOffset(min, max, step, markList, allowCross, pushable) {\n var formatRangeValue = React.useCallback(function (val) {\n var formatNextValue = isFinite(val) ? val : min;\n formatNextValue = Math.min(max, val);\n formatNextValue = Math.max(min, formatNextValue);\n return formatNextValue;\n }, [min, max]);\n var formatStepValue = React.useCallback(function (val) {\n if (step !== null) {\n var stepValue = min + Math.round((formatRangeValue(val) - min) / step) * step; // Cut number in case to be like 0.30000000000000004\n\n var getDecimal = function getDecimal(num) {\n return (String(num).split('.')[1] || '').length;\n };\n\n var maxDecimal = Math.max(getDecimal(step), getDecimal(max), getDecimal(min));\n var fixedValue = Number(stepValue.toFixed(maxDecimal));\n return min <= fixedValue && fixedValue <= max ? fixedValue : null;\n }\n\n return null;\n }, [step, min, max, formatRangeValue]);\n var formatValue = React.useCallback(function (val) {\n var formatNextValue = formatRangeValue(val); // List align values\n\n var alignValues = markList.map(function (mark) {\n return mark.value;\n });\n\n if (step !== null) {\n alignValues.push(formatStepValue(val));\n } // min & max\n\n\n alignValues.push(min, max); // Align with marks\n\n var closeValue = alignValues[0];\n var closeDist = max - min;\n alignValues.forEach(function (alignValue) {\n var dist = Math.abs(formatNextValue - alignValue);\n\n if (dist <= closeDist) {\n closeValue = alignValue;\n closeDist = dist;\n }\n });\n return closeValue;\n }, [min, max, markList, step, formatRangeValue, formatStepValue]); // ========================== Offset ==========================\n // Single Value\n\n var offsetValue = function offsetValue(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n\n if (typeof offset === 'number') {\n var nextValue;\n var originValue = values[valueIndex]; // Only used for `dist` mode\n\n var targetDistValue = originValue + offset; // Compare next step value & mark value which is best match\n\n var potentialValues = [];\n markList.forEach(function (mark) {\n potentialValues.push(mark.value);\n }); // Min & Max\n\n potentialValues.push(min, max); // In case origin value is align with mark but not with step\n\n potentialValues.push(formatStepValue(originValue)); // Put offset step value also\n\n var sign = offset > 0 ? 1 : -1;\n\n if (mode === 'unit') {\n potentialValues.push(formatStepValue(originValue + sign * step));\n } else {\n potentialValues.push(formatStepValue(targetDistValue));\n } // Find close one\n\n\n potentialValues = potentialValues.filter(function (val) {\n return val !== null;\n }) // Remove reverse value\n .filter(function (val) {\n return offset < 0 ? val <= originValue : val >= originValue;\n });\n\n if (mode === 'unit') {\n // `unit` mode can not contain itself\n potentialValues = potentialValues.filter(function (val) {\n return val !== originValue;\n });\n }\n\n var compareValue = mode === 'unit' ? originValue : targetDistValue;\n nextValue = potentialValues[0];\n var valueDist = Math.abs(nextValue - compareValue);\n potentialValues.forEach(function (potentialValue) {\n var dist = Math.abs(potentialValue - compareValue);\n\n if (dist < valueDist) {\n nextValue = potentialValue;\n valueDist = dist;\n }\n }); // Out of range will back to range\n\n if (nextValue === undefined) {\n return offset < 0 ? min : max;\n } // `dist` mode\n\n\n if (mode === 'dist') {\n return nextValue;\n } // `unit` mode may need another round\n\n\n if (Math.abs(offset) > 1) {\n var cloneValues = _toConsumableArray(values);\n\n cloneValues[valueIndex] = nextValue;\n return offsetValue(cloneValues, offset - sign, valueIndex, mode);\n }\n\n return nextValue;\n } else if (offset === 'min') {\n return min;\n } else if (offset === 'max') {\n return max;\n }\n };\n /** Same as `offsetValue` but return `changed` mark to tell value changed */\n\n\n var offsetChangedValue = function offsetChangedValue(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n var originValue = values[valueIndex];\n var nextValue = offsetValue(values, offset, valueIndex, mode);\n return {\n value: nextValue,\n changed: nextValue !== originValue\n };\n };\n\n var needPush = function needPush(dist) {\n return pushable === null && dist === 0 || typeof pushable === 'number' && dist < pushable;\n }; // Values\n\n\n var offsetValues = function offsetValues(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n var nextValues = values.map(formatValue);\n var originValue = nextValues[valueIndex];\n var nextValue = offsetValue(nextValues, offset, valueIndex, mode);\n nextValues[valueIndex] = nextValue;\n\n if (allowCross === false) {\n // >>>>> Allow Cross\n var pushNum = pushable || 0; // ============ AllowCross ===============\n\n if (valueIndex > 0 && nextValues[valueIndex - 1] !== originValue) {\n nextValues[valueIndex] = Math.max(nextValues[valueIndex], nextValues[valueIndex - 1] + pushNum);\n }\n\n if (valueIndex < nextValues.length - 1 && nextValues[valueIndex + 1] !== originValue) {\n nextValues[valueIndex] = Math.min(nextValues[valueIndex], nextValues[valueIndex + 1] - pushNum);\n }\n } else if (typeof pushable === 'number' || pushable === null) {\n // >>>>> Pushable\n // =============== Push ==================\n // >>>>>> Basic push\n // End values\n for (var i = valueIndex + 1; i < nextValues.length; i += 1) {\n var changed = true;\n\n while (needPush(nextValues[i] - nextValues[i - 1]) && changed) {\n var _offsetChangedValue = offsetChangedValue(nextValues, 1, i);\n\n nextValues[i] = _offsetChangedValue.value;\n changed = _offsetChangedValue.changed;\n }\n } // Start values\n\n\n for (var _i = valueIndex; _i > 0; _i -= 1) {\n var _changed = true;\n\n while (needPush(nextValues[_i] - nextValues[_i - 1]) && _changed) {\n var _offsetChangedValue2 = offsetChangedValue(nextValues, -1, _i - 1);\n\n nextValues[_i - 1] = _offsetChangedValue2.value;\n _changed = _offsetChangedValue2.changed;\n }\n } // >>>>> Revert back to safe push range\n // End to Start\n\n\n for (var _i2 = nextValues.length - 1; _i2 > 0; _i2 -= 1) {\n var _changed2 = true;\n\n while (needPush(nextValues[_i2] - nextValues[_i2 - 1]) && _changed2) {\n var _offsetChangedValue3 = offsetChangedValue(nextValues, -1, _i2 - 1);\n\n nextValues[_i2 - 1] = _offsetChangedValue3.value;\n _changed2 = _offsetChangedValue3.changed;\n }\n } // Start to End\n\n\n for (var _i3 = 0; _i3 < nextValues.length - 1; _i3 += 1) {\n var _changed3 = true;\n\n while (needPush(nextValues[_i3 + 1] - nextValues[_i3]) && _changed3) {\n var _offsetChangedValue4 = offsetChangedValue(nextValues, 1, _i3 + 1);\n\n nextValues[_i3 + 1] = _offsetChangedValue4.value;\n _changed3 = _offsetChangedValue4.changed;\n }\n }\n }\n\n return {\n value: nextValues[valueIndex],\n values: nextValues\n };\n };\n\n return [formatValue, offsetValues];\n}","import Slider from './Slider';\nexport default Slider;","function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\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})));","import React from 'react';\n\nimport { useTranslator } from 'tradera/lang/translate';\nimport ErrorContainer from './error-container';\nimport WarningIcon from '@tradera/blueprint/theme/icons/warning.svg?jsx';\n\nexport const NoItemsError = () => {\n const { t } = useTranslator();\n return (\n \n

    \n \n

    \n

    {t('error_oops')}

    \n

    {t('error_cantLoadItems')}

    \n

    {t('error_tryAgainLater')}

    \n

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

    \n
    \n );\n};\n\nexport default NoItemsError;\n","import type { SyiAttributeOption } from 'tradera/apps/syi/components/attributes/types';\nimport type {\n AttributeOption,\n CompressedAttributeOption\n} from 'tradera/apps/tradera/components/discover/components/filters/types';\nimport type { TranslationFunction } from 'tradera/lang/translate';\n\ntype SimpleAttributeOption = {\n value: string;\n sortOrder: number;\n};\ntype PossibleAttributeOption =\n | SyiAttributeOption\n | AttributeOption\n | SimpleAttributeOption;\nexport const getTranslatedAttributeName = (\n backingField: string,\n t: TranslationFunction\n) => {\n const key = `attribute_${toBackingField(backingField)}`;\n const translation = t(`attributes:::${key}`);\n return key == translation ? backingField : translation;\n};\n\nexport const getTranslatedAttributeValue = (\n backingField: string,\n value: string,\n t: TranslationFunction\n) => {\n const cleanedUpBackingField = toBackingField(backingField);\n\n // Sometimes saved searches have the color attribute values as title case (\"Red\" instead of \"red\"). This is a work around.\n const cleanedUpValue =\n cleanedUpBackingField === 'color' ? value.toLowerCase() : value;\n const key = `attribute_af-${cleanedUpBackingField}_${cleanedUpValue}`;\n const translation = t(`attributes:::${key}`);\n return key == translation ? value : translation;\n};\n\nconst toBackingField = (backingField: string) => {\n return backingField.toLowerCase().replace('af-', '');\n};\n\nexport const addTextAndReSort = <\n TAttributeOption extends PossibleAttributeOption\n>(\n backingField: string,\n t: TranslationFunction,\n shouldTranslateValues: boolean,\n options: TAttributeOption[]\n): AttributeOptionWithText[] => {\n return addText(backingField, t, shouldTranslateValues, options).sort(\n orderBySortOrderThenByAttributeName\n );\n};\nconst isCompressedAtributeOption = (\n attributeOption: PossibleAttributeOption | CompressedAttributeOption\n): attributeOption is CompressedAttributeOption =>\n Array.isArray(attributeOption);\n\nexport const uncompress = (\n option: PossibleAttributeOption | CompressedAttributeOption\n): PossibleAttributeOption => {\n return isCompressedAtributeOption(option)\n ? {\n value: option[0],\n sortOrder: option[1]\n }\n : option;\n};\n\nexport type AttributeOptionWithText<\n TAttributeOption extends PossibleAttributeOption\n> = TAttributeOption & {\n text: string;\n};\n\nexport function addText(\n backingField: string,\n t: TranslationFunction,\n shouldTranslateValues: boolean,\n options: TAttributeOption[]\n): AttributeOptionWithText[];\nexport function addText(\n backingField: string,\n t: TranslationFunction,\n shouldTranslateValues: boolean,\n options: AttributeOption[] | CompressedAttributeOption[]\n): AttributeOptionWithText[];\nexport function addText(\n backingField: string,\n t: TranslationFunction,\n shouldTranslateValues: boolean,\n options: PossibleAttributeOption[] | CompressedAttributeOption[]\n) {\n return options.map((maybeCompressedAttributeOption) => {\n const option = uncompress(maybeCompressedAttributeOption);\n const text = shouldTranslateValues\n ? getTranslatedAttributeValue(backingField, option.value, t)\n : option.value;\n\n return { ...option, text };\n });\n}\n\nconst orderBySortOrderThenByAttributeName = (\n a: AttributeOptionWithText,\n b: AttributeOptionWithText\n) => {\n // Sort by sortOrder\n // If the first item has a higher number, move it down\n // If the first item has a lower number, move it up\n if (a.sortOrder > b.sortOrder) return 1;\n if (a.sortOrder < b.sortOrder) return -1;\n\n // If the sortOrder number is the same between both items, sort alphabetically\n // If the first item comes first in the alphabet, move it up\n // Otherwise move it down\n if (a.text > b.text) return 1;\n if (a.text < b.text) return -1;\n\n return 0;\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"aside\":\"aside--Bd463\"};","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 { aside, mainContent, children, classes, heroContent, 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 children: PropTypes.node,\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"],"sourceRoot":""}