{"version":3,"sources":["webpack:///./src/EbaySweden.TouchWeb/static/script/components/tradera/logo.jsx","webpack:///./src/frontend/components/ads/dfp-ad-init-data-decorator.js","webpack:///./src/EbaySweden.TouchWeb/static/script/packages/react/messaging.js","webpack:///./src/frontend/components/ads/boot-takeover-ads.js","webpack:///./src/frontend/components/ads/boot-react-ads.js","webpack:///./src/frontend/state/views/syi/actions/charity-actions.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/modals/simple-modal.jsx","webpack:///./src/frontend/state/categories/actions.js","webpack:///./src/frontend/state/categories/api.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/helpers/helper.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search-category/search-category.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/search.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/helpers/search.analytics.js","webpack:///./src/frontend/apps/tradera/components/vip-shared/shipping-options/translate-buyer-region-text.js","webpack:///./src/frontend/components/messaging/get-messaging-url.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/localization/shipping-country-select-dropdown.module.scss","webpack:///./src/EbaySweden.TouchWeb/static/script/components/localization/shipping-country-select-dropdown.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/localization/shipping-country-select.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/localization/localization-menu.jsx","webpack:///./src/frontend/apps/syi/script/app_react/services/navigation-service.js","webpack:///./src/frontend/components/rating-stars/rating-utils.js","webpack:///./src/frontend/components/rating-stars/rating-stars.module.scss","webpack:///./src/frontend/components/rating-stars/rating-stars.jsx","webpack:///./src/frontend/state/personalisation/actions.js","webpack:///./src/frontend/state/personalisation/api.js","webpack:///./src/frontend/hooks/use-is-feature-enabled.js","webpack:///./src/frontend/state/views/syi/actions/long-description-actions.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/modals/modal-footer.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/components/search-input.jsx","webpack:///./src/frontend/components/transitions/transitions.jsx","webpack:///./src/frontend/components/messaging/messaging-button.jsx","webpack:///./src/frontend/state/views/syi/actions/syi-actions.js","webpack:///./node_modules/flightjs/build/flight.js","webpack:///./src/frontend/hooks/use-qualtive.js","webpack:///./src/frontend/components/application-error-boundary/application-error-boundary.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/storage-service.js","webpack:///./src/EbaySweden.TouchWeb/static/script/init-module.js","webpack:///./src/frontend/components/atoms/button/button.jsx","webpack:///./src/frontend/state/views/syi/actions/attributes-actions.js","webpack:///./src/frontend/components/international-identification-modal/mit-id.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/components/highlight-word.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/components/suggestion-list-items.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/components/search-suggestion.jsx","webpack:///./src/frontend/constants/surveys.js","webpack:///./src/frontend/components/alerts/gdpr/gdpr-modal.jsx","webpack:///./src/frontend/components/alerts/gdpr/gdpr-settings-modal.jsx","webpack:///./src/frontend/components/alerts/gdpr/gpdr-container.jsx","webpack:///./src/frontend/components/site-header/hover-menu/constants.js","webpack:///./src/EbaySweden.TouchWeb/static/script/constants/strings.js","webpack:///./src/frontend/apps/my-tradera/app/data/shipping-providers.js","webpack:///./src/frontend/state/views/syi/selectors/attribute-selectors.js","webpack:///./src/frontend/components/shipping/shipping-provider-icon.jsx","webpack:///./src/frontend/components/site-header/hover-menu/hover-menu.jsx","webpack:///./src/frontend/apps/syi/script/app_react/services/campaign-service.js","webpack:///./src/frontend/state/views/syi/actions/campaign-code-actions.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/modals/modal-header.jsx","webpack:///./src/frontend/components/wait-for-consent-api-loaded/wait-for-consent-api-loaded.jsx","webpack:///./src/frontend/apps/syi/script/app_react/utils/throttled-action.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/on-ready.js","webpack:///./src/frontend/state/views/syi/actions/category-actions.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/modals/overlay.module.scss","webpack:///./src/EbaySweden.TouchWeb/static/script/components/modals/overlay.jsx","webpack:///./src/frontend/state/views/syi/actions/payment-actions.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/layout/ads/ad-slot-utilities.js","webpack:///./src/frontend/helpers/category-icon-helper.js","webpack:///./src/frontend/components/international-identification-modal/document-scanning.jsx","webpack:///./src/frontend/components/international-identification-modal/mit-id-logo.module.scss","webpack:///./src/frontend/components/international-identification-modal/mit-id-logo.jsx","webpack:///./src/frontend/components/international-identification-modal/international-identification-modal.module.scss","webpack:///./src/frontend/components/international-identification-modal/international-identification-modal.jsx","webpack:///./src/frontend/components/site-header/localization-region-picker.jsx","webpack:///./src/frontend/components/site-header/localization-link.jsx","webpack:///./src/frontend/components/site-footer/footer-localization-link.module.scss","webpack:///./src/frontend/components/site-footer/footer-localization-link.jsx","webpack:///./src/frontend/utils/consent-service.js","webpack:///./src/frontend/components/site-footer/footer-links.module.scss","webpack:///./src/frontend/components/site-footer/footer-links.jsx","webpack:///./src/frontend/components/site-footer/footer-partners.jsx","webpack:///./src/frontend/components/site-footer/site-footer.module.scss","webpack:///./src/frontend/components/site-footer/site-footer.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/modals/modal-body.jsx","webpack:///./src/frontend/apps/syi/script/app_react/services/scribe.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/modals/modal-container.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/jquery-events.js","webpack:///./node_modules/classnames/index.js","webpack:///./src/frontend/utils/map-language-code-to-language-key.js","webpack:///./src/frontend/apps/syi/script/app_react/services/shipping-calculator-service.js","webpack:///./src/frontend/apps/syi/script/app_react/services/shipping-provider-service.js","webpack:///./src/frontend/state/views/syi/actions/shipping-actions.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/localization/language-select.module.scss","webpack:///./src/EbaySweden.TouchWeb/static/script/components/localization/language-select.jsx","webpack:///./src/frontend/components/messaging/messaging-modal.jsx","webpack:///./src/frontend/state/views/syi/actions/error-actions.js","webpack:///./src/frontend/apps/syi/script/app_react/services/native-app-service.js","webpack:///./src/frontend/state/views/syi/actions/image-actions.js","webpack:///./src/frontend/components/flag/flag.jsx","webpack:///./src/frontend/components/ads/localized-dfp-ad.jsx","webpack:///./src/frontend/state/views/syi/actions/price-actions.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/multi-currency/multi-currency-utils.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/multi-currency/multi-currency.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/multi-currency/multi-currency-container.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/multi-currency/multi-currency-renderer.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/multi-currency/multi-currency-boot.js","webpack:///./src/frontend/apps/syi/script/app_react/services/session-service.js","webpack:///./src/frontend/apps/syi/script/app_react/services/publish-service.js","webpack:///./src/frontend/state/views/syi/actions/helpers/server-validation-error-helper.js","webpack:///./src/frontend/state/views/syi/actions/draft-actions.js","webpack:///./src/frontend/utils/script.js","webpack:///./src/frontend/components/alerts/gdpr/gdpr-mount.js","webpack:///./src/frontend/helpers/filter-categories-helper.js","webpack:///./src/frontend/apps/syi/script/app_react/services/google-tagmanager.js","webpack:///./src/frontend/apps/syi/script/app_react/services/image-upload-service.js","webpack:///./src/frontend/state/views/syi/actions/fees-actions.js","webpack:///./src/frontend/services/category-service.js","webpack:///./src/frontend/components/site-header/cart-link.jsx","webpack:///./src/frontend/components/site-header/dropdown-menu-burger.jsx","webpack:///./src/frontend/components/site-header/dropdown-menu-item-separator.jsx","webpack:///./src/frontend/components/site-header/dropdown-menu-item-button.jsx","webpack:///./src/frontend/components/site-header/dropdown-menu-item.jsx","webpack:///./src/frontend/components/site-header/dropdown-menu-item-expandable.jsx","webpack:///./src/frontend/hooks/use-menu-height-fix.js","webpack:///./src/frontend/components/site-header/dropdown-menu-content.jsx","webpack:///./src/frontend/components/site-header/seo-links.jsx","webpack:///./src/frontend/components/site-header/dropdown-menu.jsx","webpack:///./src/frontend/components/site-header/sign-up-link.jsx","webpack:///./src/frontend/components/portals/modal-portal.jsx","webpack:///./src/frontend/components/push-notification-modal/push-notification-modal.jsx","webpack:///./src/frontend/components/push-notification-modal/push-splash-icon.svg","webpack:///./src/frontend/components/push-notification-modal/push-wishlist-icon.svg","webpack:///./src/frontend/components/push-notification-modal/push-selling-icon.svg","webpack:///./src/frontend/components/site-header/hover-menu/hover-menu-item.module.scss","webpack:///./src/frontend/components/site-header/hover-menu/hover-menu-item.jsx","webpack:///./src/frontend/components/site-header/hover-menu/hover-menu-separator.module.scss","webpack:///./src/frontend/components/site-header/hover-menu/hover-menu-separator.jsx","webpack:///./src/frontend/components/site-header/site-header.analytics.js","webpack:///./src/frontend/components/site-header/buy-menu.jsx","webpack:///./src/frontend/components/site-header/buying-link.jsx","webpack:///./src/frontend/components/site-header/how-to-link.jsx","webpack:///./src/frontend/components/site-header/new-listing-link.jsx","webpack:///./src/frontend/components/profile-menu/expandable-localization-menu-item.jsx","webpack:///./src/frontend/utils/map-currency-code-to-country-code.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/localization/currency-select.module.scss","webpack:///./src/EbaySweden.TouchWeb/static/script/components/localization/currency-select.jsx","webpack:///./src/frontend/components/profile-menu/expandable-currency-menu-item.jsx","webpack:///./src/frontend/components/profile-menu/profile-menu-alerts.jsx","webpack:///./src/frontend/components/profile/profile-card.jsx","webpack:///./src/frontend/components/profile-menu/profile-menu-content.jsx","webpack:///./src/frontend/components/profile-menu/sign-in-menu-content.jsx","webpack:///./src/frontend/components/profile-menu/profile-menu.jsx","webpack:///./src/frontend/components/site-header/profile.jsx","webpack:///./src/frontend/components/site-header/profile-link.jsx","webpack:///./src/frontend/components/site-header/profile-menu-link.jsx","webpack:///./src/frontend/components/site-header/search-button.jsx","webpack:///./src/frontend/components/international-shipping-modal/international-shipping-modal.module.scss","webpack:///./src/frontend/components/international-shipping-modal/international-shipping-modal.jsx","webpack:///./src/frontend/components/modal-renderer/modal-renderer.jsx","webpack:///./src/frontend/components/site-header/watch-list-menu.jsx","webpack:///./src/frontend/components/site-header/wishlist-link.jsx","webpack:///./src/frontend/components/site-header/ongoing-auctions-link.jsx","webpack:///./src/frontend/components/site-header/sell-menu.jsx","webpack:///./src/frontend/components/site-header/selling-link.jsx","webpack:///./src/frontend/components/toasts/tradera-toast-container.jsx","webpack:///./src/frontend/components/site-header/currency-link.jsx","webpack:///./src/frontend/components/site-header/site-header.jsx","webpack:///./src/frontend/components/site-header/hover-menu/hover-menu.module.scss","webpack:///./src/EbaySweden.TouchWeb/static/script/containers/navigation/main-navigation.js","webpack:///./src/frontend/state/views/syi/actions/short-description-actions.js","webpack:///./src/frontend/state/views/syi/selectors/category-selectors.js","webpack:///./src/frontend/apps/syi/script/app_react/services/event-broadcaster.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/helpers/suggestions-api.js"],"names":["TraderaLogo","width","height","className","style","otherProps","role","viewBox","id","d","propTypes","defaultProps","React","memo","DfpAdInitDataDecorator","Component","constructor","props","super","this","state","pageTargeting","initData","gptData","customTargetingParameters","adUnitPath","componentDidUpdate","prevProps","setState","render","Messaging","subscribe","bind","publish","namespace","Date","now","Math","random","events","callback","Array","isArray","map","event","push","$","document","on","console","warn","payload","trigger","teardown","me","off","initLeeadsDesktop","takeoverElement","children","length","innerHTML","window","ADTECH","config","page","protocol","server","network","siteid","params","loc","placements","sizeid","alias","target","enqueueAd","executeQueue","isTakeOverAllowedOnPage","getInitData","pageName","loadScript","src","resolve","reject","script","createElement","async","onload","onerror","body","appendChild","initTakeovers","a","GdprSettings","isMarketingEnabled","getElementById","clientWidth","max","documentElement","innerWidth","isBreakpointOrHigher","BREAKPOINTS","MD","loadReactElements","getElementsByTagName","forEach","element","hasAttribute","position","getAttribute","adFormats","deviceName","adOnlyOnPages","stickyEnabled","autoscale","stickyTop","stickyBottom","adContainerClass","refresh","featureSwitches","split","indexOf","isNaN","isLoggedIn","sizeMapping","createGptSizeMapping","mapDeviceNameToViewport","minViewportWidth","maxViewportWidth","ReactDOM","minWidth","maxWidth","undefined","slotTargeting","pos","autoscaleOffsetWidth","offsetWidth","messages","unmountComponentAtNode","e","logger","initReactElement","setAttribute","reactAdsLoader","setCharityFromDraftAndFetchInfo","charityFromDraft","dispatch","setCharityFromDraft","setCharityAndFetchInfo","charityId","resetCharityAndShippingInfo","shippingActions","resetSelected","resetCharity","setCharityId","fetchCharityInfo","fetchCharityShippingInfo","getCharity","response","setCharityInfo","data","status","getState","getCharityShippingInfo","environment","setCharityShippingInfo","freeShippingPaidByProviderName","type","providerName","forceFreeShipping","marketingApiClient","get","axiosConfigs","notAuthenticated","cancelTokenId","SimpleModal","classNameBody","closeModalCallback","styleBody","closeOnEscape","useCallback","keyCode","preventDefault","useEffect","addEventListener","removeEventListener","allowPinchZoom","forwardProps","requestCategoryList","actionTypes","REQUEST_CATEGORY_LIST","receiveCategoryList","RECEIVE_CATEGORY_LIST","handleCategoryListError","HANDLE_CATEGORY_LIST_ERROR","fetchCategoryList","touchWebClient","then","results","catch","error","message","API_ERRORS","VERSION_MISMATCH","reload","CANCELLED","specialSearchTerms","stammisglaset","SearchCategory","handleCategoryChange","selectOptions","selectedCategoryId","chosenCategory","isDefaultSelected","shortName","title","name","onChange","value","option","index","key","KEYCODE","Search","inSPA","topLevelCategories","categoryPath","inputClassName","placeholderText","discoverCurrentCategoryId","discoverSearchTerm","queryParams","history","useDispatch","t","useTranslator","toLocalizedUrl","useUrlLocalizer","searchSuggestionsElementRef","createRef","searchInputRef","useState","currentCategoryId","setCurrentCategoryId","isSearchInputFocused","setIsSearchInputFocused","searchTerm","setSearchTerm","suggestions","setSuggestions","selectedSuggestionIndex","setSelectedSuggestionIndex","loadSuggestionsDebounce","debounce","getSuggestionsWrapper","enableSuggestionsFromBackend","getSuggestions","limitPrevious","enablePrevious","enableSuggestions","loadSearchSuggestions","newSearchTerm","changeWindowLocation","newQuery","label","trimmedSearchTerm","newSearchUrl","allCategories","specialTermUrl","toLowerCase","q","filteredQueryParams","categoryId","paging","spage","isQueryReformulation","includes","ENDPOINTS","SEARCH","qs","stringify","addQueryPrefix","currentCategory","find","category","href","getNewSearchUrl","addRecentSearch","Analytics","trackEvent","action","current","blur","location","allCategoriesOption","optionsList","filter","selectedOption","getCategoryDropdownConfig","selectedCategory","categorySelectOptions","categoriesElement","selectBox","discoverActions","selectedOptions","text","onBlur","onClearSearchInput","onFocus","onFormSubmit","onUserInputChange","evt","onUserKeyUp","which","querySelectorAll","click","incrementBy","newIndex","currentIndex","totalElements","getNextIndex","handleUpDownArrowKeys","suggestionsElement","visible","onChangeSearchTerm","onPreviousSearchRemoved","selectedIndex","ConnectedSearch","connect","pageType","PAGE_TYPES","SEARCH_RESULT_PAGE","CATEGORY_RESULT_PAGE","discover","categories","SearchInSpa","withRouter","SearchOutsideSpa","translateBuyerRegionText","allowedBuyerRegion","getMessagingUrl","origin","ShippingCountrySelectDropdown","shippingCountries","selectedShippingCountry","onSelect","searchFocus","setSearchFocus","search","setSearch","isSearchEnabled","setIsSearchEnabled","includesSearch","v","filteredShippingCountries","countryCodeIso2","mapCountryCodeToCountryKey","listStyle","Row","styles","onClick","placeholder","autoComplete","setTimeout","onMouseDown","itemCount","itemSize","PlainShippingCountrySelect","getAvailableShippingCountries","shippingCountry","updateShippingRegion","showShippingCountries","isLoadingAvailableShippingCountries","onShippingCountrySelected","mapDispatchToProps","ShippingCountrySelect","selectShippingCountry","selectAvailableShippingCountries","selectIsLoadingAvailableShippingCountries","selectHasLoadedAvailableShippingCountries","LocalizationMenu","showRegionSelection","onLanguageSelected","inProfileMenu","isServer","module","default","goToStart","toLocalizedRiotUrl","goToSummary","draftId","goToPublished","itemId","setDraftUrlWithoutReload","replaceState","rating","toFixed","RatingStars","memberAlias","memberId","gaAttributes","link","dark","displayRating","utils","Stars","useLink","setPersonalisedBrandsAction","items","setPersonalisedSearchesAction","setPersonalisedBrandsStatusAction","setPersonalisedSearchesStatusAction","recentSearchesIsUpdatedAction","lastUpdated","fetchPersonalisedBrandsIfNeeded","personalisation","brands","axiosWithTokenRefresh","PERSONALISED_SUGGESTIONS","headers","defaultJsonRequestHeaders","handleError","logError","brandsResult","newStatus","fetchPersonalisedSearchesIfNeeded","searches","searchesResult","addRecentSearchText","removeRecentSearchText","removeRecentSearch","useIsFeatureEnabled","featureName","useSelector","setLongDescription","longDescription","draftActions","updateDraftCanBeResumed","setLongDescriptionFromDraft","reset","ModalFooter","SearchInput","placeHolderTranslation","categoryName","showClearButton","method","onSubmit","maxLength","ref","onKeyDown","Expand","timeout","classNames","EnterFrom","from","unmountOnExit","EnterFade","MessagingButton","buttonVisible","participating","uiActions","openMessagingModal","handleLogin","signIn","redirectUrl","componentDidMount","checkUserMessagingParticipation","sellerId","err","buyerId","source","mode","getMessagingThreadLink","traderaUserId","singleThread","openForm","getMessagingPageLink","pathname","BUTTON_LABELS","ask_seller","contact_seller","contact_buyer","disableButton","disabled","verticalAlign","compose","withUrlLocalizer","withTranslator","setIsPropertyEditMode","isPropertyEditMode","setCreationType","creationType","showAllErrors","hideAllErrors","setIsEditOfPublishedItem","isEditOfPublishedItem","setCategoryRestriction","restriction","updateItemConditionRestrictionForCategory","toggleModal","modalId","showModal","modalData","hideModal","enableAutoSave","disableAutoSave","factory","modules","installedModules","__webpack_require__","moduleId","exports","loaded","call","m","c","p","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","advice","component","debug","registry","apply","around","base","wrapped","i","l","arguments","args","before","beforeFn","obj","fnName","after","afterFn","res","unbound","withAdvice","fn","trim","mutateProperty","withBase","withLogging","functionNameRegEx","ignoredMixin","teardownAll","componentInfo","findComponentInfo","Object","keys","instances","k","info","instance","attachTo","selector","Error","options","merge","each","node","isAttachedTo","initialize","prettyPrintMixins","mixedIn","prototype","mixin","toString","match","Boolean","join","define","mixins","enabled","describe","newComponent","newPrototype","create","concat","defaults","attrDef","unshift","withRegistration","components","slice","dontLock","setWritability","writable","propertyWritability","hasOwnProperty","traverse","util","path","prop","tests","log","expected","ALL","logFilter","eventNames","actions","saveLogFilter","localStorage","setItem","ignored","enable","getItem","thisProp","retrieveLogFilter","DEBUG","byName","byNameContains","byType","byValue","byValueCoerced","custom","logByAction","logByName","logAll","logNone","actionSymbols","eventArgs","eventType","elem","toRegExp","actionLoggable","nameLoggable","pop","$node","expr","test","RegExp","replace","some","result","tagName","elemToString","groupCollapsed","Function","toArray","groupEnd","parseEventArgs","end","matchEvent","b","ComponentInfo","attachedTo","addInstance","instanceInfo","InstanceInfo","identity","removeInstance","indexOfNode","splice","removeComponentInfo","addBind","removeBind","allInstances","inst","findInstanceInfo","getBoundEventNames","ev","findInstanceInfoByNode","thisInstanceInfo","componentOn","boundCallback","otherArgs","canWriteProtect","writeProtectSupported","propertyIsEnumerable","getOwnPropertyDescriptor","isDomObj","nodeType","len","arr","extend","extra","protect","getEnumerableProperty","funcs","uniqueArray","array","u","func","wait","immediate","context","later","callNow","clearTimeout","throttle","throttling","more","whenDone","countThen","num","delegate","rules","parent","isPropagationStopped","closest","currentTarget","el","once","ran","defineProperty","op","componentId","checkSerializable","postMessage","warnAboutReferenceType","initAttributes","attrs","incomingKeys","definedKeys","attr","initDeprecatedAttributes","proxyEventTo","targetEvent","$element","defaultFn","lastIndex","lastArg","defaultBehavior","Event","eventData","isDefaultPrevented","originalCb","resolveDelegateRules","bound","boundFunctions","ruleInfo","r","select","attributeKey","attributes","Attributes","defaultAttrs","jquery","LOCALES","sv","en","da","de","mapLocale","languageCodeIso2","openQualtiveModal","translate","survey","surveyOptions","darkMode","qualtive","present","useQualtive","customAttributes","isQualtiveFeatureToggleEnabled","member","language","preferred","isQualtiveEnabled","isFunctionalEnabled","locale","user","withQualtive","WrappedComponent","WithQualtive","displayName","ApplicationErrorBoundary","componentDidCatch","fallback","capture","onError","ResultSet","_result","orderByTimestamp","orderByValue","orderByExpire","_orderBy","orderProp","StorageService","datastore","localStore","getDataSafe","store","remove","encodedKey","encodeURI","purge","expires","getTime","set","timestamp","removeExpired","fetch","addRow","row","propValue","decodeURI","rows","flush","clearByPrefix","GdprMount","MultiCurrencyBoot","boot","MainNavigation","Button","theme","size","unbutton","wide","round","translucent","outline","branded","fluid","iconHidden","iconFixed","tag","loading","toggle","toggleActive","hoverColor","input","nowrap","allClasses","color","hover","transparent","hiddenIcon","fixedIcon","buttonClasses","onBtnClick","suggestionsThrottle","ThrottledAction","imageToColorsThrottle","INPUT_TYPE_MAP","Color","Dropdown","transformServerOption","serverOption","sortOrder","isActive","warningLabel","transformServerAttribute","attribute","description","backingField","possibleValues","inputType","isMultiSelect","maxNumberOfValues","minNumberOfValues","numberOfValuesSelected","shouldTranslateValues","preserveOptionsOrder","setAttributesFromDraft","draft","attributeValues","resetSelectedAttributes","fetchForCategory","selectPreferredLanguage","webApiClient","attributeDefinitions","updateCategoryAttributesOptionsStatuses","campaignCodeActions","validateCampaignCode","updateAttribute","attributeId","optionValue","activate","onUpdated","selectCategoryAttributes","resetAttribute","throttledFetchCategoryAttributeSuggestions","shortDescription","execute","fetchCategoryAttributeSuggestions","throttledFetchImageAttributeSuggestions","draftImageIds","fetchImageAttributeSuggestions","resetImageAttributesSuggestions","query","paramKeyPart","colors","colorValues","cv","suggestedAttributes","values","splitTestGroup","splitTestGroups","splitTestEnabled","extractorType","getAttributeSuggestionExtractor","post","termAttributeValues","transformServerAttributeSuggestion","suggestionsExtractorType","splitTest","attributeSuggestion","STATE","handleMitIdQueryParam","publishAction","errorAction","identified","parse","ignoreQueryPrefix","memberIdentificationClient","command","errors","GtmService","trackAction","MitId","onVerifyCancel","purpose","isMobile","MitIdDesktop","onVerifyComplete","isLoading","setIsLoading","verifyingState","setVerifyingState","currentTimeoutId","windowHeight","innerHeight","windowWidth","top","screenY","left","screenX","mitIdWindow","closed","userClosedWindow","isCompleted","close","poll","open","i18nKey","HighlightWord","icon","prev","fixFlexHeightInIpadMini2Style","flexBasis","PreviousSearchesListItem","changeSearchTerm","isSelected","toSearchString","SearchesSuggestionsListItem","item","ShopsSuggestionsListItem","suggestionUrl","urlName","CharitiesSuggestionsListItem","slug","CampaignSuggestionsListItem","campaignId","headline","AdvancedSearchListItem","SellerSearchListItem","searchUrl","SearchSuggestion","entry","componentProps","JSON","SURVEYS","general","supportURL","paynova","textKey","cardVerification","bankId","MYT_PAGE_NAMES","BuyerActiveItems","BuyerPurchases","BuyerItemsLost","SellerActive","SellerSold","SellerUnsold","valuationPage","syiDraftPage","combinedShipping","payouts","translationImprovements","GdprModal","openGdprSettings","acceptAndHide","GdprSettingsModal","saveHandler","gdprSettings","performance","functional","marketing","checked","dismissOnOverlayClick","mobileFullscreen","onDismiss","save","htmlFor","tabIndex","autoFocus","handleChange","visibleModal","ui","gdpr","modalOpen","visibleSettings","settingsOpen","closeModal","closeGdprModal","openSettings","closeSettings","closeGdprSettings","isQuantcastConsentEnabled","eventLabel","CookieUtil","createCookie","GDPR_CONSENT_ALERT_DISMISSED","dayjs","add","toDate","hitCallback","hasCookie","GDPR_CONSENT_COOKIE","isPerformanceEnabled","HOVER_MENUS","WISHLIST","SELL","BUY","LOCALIZATION","CURRENCY","INVOICE_UNPAID","INVOICE_UNPAID_DESCRIPTION","INVOICE_OVERDUE","INVOICE_OVERDUE_DESCRIPTION","BANK_ACCOUNT_MISSING","BANK_ACCOUNT_MISSING_DESCRIPTION","PAYOUT_FAILED","PAYOUT_FAILED_DESCRIPTION","PAYMENT_READY_BANK_ACCOUNT_MISSING","PAYMENT_READY_BANK_ACCOUNT_MISSING_DESCRIPTION","SWISH_MISSING","SWISH_MISSING_DESCRIPTION","ADD_SWISH","NO_THANKS_SWISH","I_UNDERSTAND","IFRAME_NOT_SUPPORTED","COOKIES","HEADER","DESC","READ_MORE","WELCOME_TO_TRADERA","GET_STARTED_BUYING","GET_STARTED_SELLING","VIEW_MORE_VIDEOS","DISCOVER","FILTERS","ALL_CATEGORIES","BRANDS","CONDITION","ITEM_TYPE","PRICE","SELLER_TYPE","COUNTY","ITEM_STATUS","SORTING","CLEAR","META","DEFAULT_SITE_NAME","DEFAULT_DESCRIPTION","shippingProviders","SHIPPING_OPTIONS","SCHENKER","logoImgUrl","POSTNORD","POSTNORD_PARCEL","POSTNORD_STAMP","DHL","BUSSGODS","BRING_DENMARK","ALTERNATIVE","TAKE_AWAY","TAKE_AWAY_ONLY","NOT_SPECIFIED","mapInstance","FEDEX","UPS","provider","shippingProvidersMap","selectSyiAttributes","views","syi","categoryAttributes","selectSuggestedAttributes","ShippingProviderIcon","iconClass","imgClass","alt","HoverMenu","show","hoverContainer","toggleShowTimeoutId","showMenu","toggleShow","hoverMenuContainer","onMouseLeave","hoverMenuArea","hoverMenuAreaContent","getCampaignCode","campaignCode","brandAttributeValues","requestData","code","selectedCategories","selectedBrandAttributes","httpClient","SELLING_CAMPAING_CODE","authenticated","axios","isCancel","validate","campaignCodeValid","validation","isValid","validationDisplayMessage","hasEnded","campaign","campaignCodeId","campaignCodeMessage","isCustomLengthFeeFree","isUnsoldFeeFree","provisionFactor","discountFactor","maxFeeCap","bannerMobileImageUrl","bannerTabletImageUrl","bannerDesktopImageUrl","CHARITIES","userData","charities","throttledCampaignCodeValidation","delayedValidationTimeoutId","resetCharityCampaign","getSyiSlice","charityCampaign","wasForceFreeShipping","resetCampaign","feesActions","resetDiscountFactor","resetCampaignCommission","updateCommission","updateMaxCommission","updatePrices","isReadOnly","acc","findBrandAttributeValues","campaignService","draftCategoryId","campaignCodeDescription","isCompanyUser","setDiscountFactor","setCampaignCommission","commissionProcent","allowZeroDayAuctions","forcePaymentOption","setDisplayPromoted","setDisplayHighlighted","applyCharityFromCampaignCodeId","toggleShowInput","isChecked","setInitialCampaignCode","isChangeItem","saveTypedCampaignCode","inputCampaignCode","searching","ModalHeader","onClose","stopPropagation","right","WaitForConsentApiLoaded","placeHolder","onLoadRender","ads","isTcfLoaded","PropTypes","isRequired","minDelayInMs","alwaysDelay","lastActionTime","timeoutId","wrappedAction","timeNow","onDOMContentLoaded","readyState","onWindowLoad","throttledCategoriesRequest","loadCategories","executeImmediately","request","categoryService","loadChildCategories","prefetchChildren","closeLevel","disableLevel","toggleLevelLabel","selectLevelCategory","closeAllLevels","updateCategoryRestrictions","resetCategoryRestriction","syiActions","displayPaymentOptions","paymentOptionGroups","setDraftCategory","levels","level","loadTopCategories","shortDescriptionForRecommendations","setPath","openLevel","toggleCategories","categoryLevel","categoriesVisible","selectCategory","isLeaf","x","setPathFromDraft","draftCategoryPath","Overlay","componentWillUnmount","toggleAllVisible","togglePaymentOption","paymentOption","selected","selectedPaymentOptions","payment","paymentType","po","setSelectedPaymentOptions","device","mobile","tablet","desktop","sizes","adFormat","panorama","wide_skyscraper","half_page","medium_rectangle","mobile_rectangle","mobile_wideboard","mapSingleAdFormatToSizes","pre","cur","mapManyAdFormatsToSizes","sizeMap","viewport","slot","categoryIcons","PriceIcon","VehiclesBoatsPartsIcon","BooksMagazinesIcon","ComputersAccessoriesIcon","DvdVideosIcon","PhotoCamerasOpticsIcon","StampIcon","ClothesIcon","ConsumerElectronicsIcon","HobbyIcon","WatchesIcon","AntiquesDesignIcon","MusicIcon","CurrencyIcon","ArtIcon","JewlryGemstonesIcon","SportsLeisureIcon","MobilePhoneTelecommunicationsIcon","PostcardsPicturesIcon","OtherIcon","CollectiblesIcon","VideoComputerGamesIcon","HomeHouseholdIcon","ConstructionToolsIcon","ChildrensClothingShoesIcon","TicketsTravelIcon","CharityIcon","HandmadeAppliedArtsIcon","GardenPlantsIcon","ChildrensItemsIcon","AccessoriesIcon","ShoesIcon","BeautyCareIcon","ToysChildrensItemsIcon","getCategoryIcon","IconComponent","DocumentScanning","zignSecWebSDKUrl","pageSpecificData","dataAttributeName","querySelector","js","addScriptToDom","zs","sessionId","getSessionStatus","token","relayState","ZignSec","ZsProduct","Scanning","openInIframe","relay_state","analysis_types","isSuccessful","MitIdLogo","xmlns","InternationalIdentificationModal","validIdentifications","setValidIdentifications","setError","selectedIdentification","setSelectedIdentification","selectedIdentificationGui","isDesktop","internationalIdentificationModalId","dismissLocalizationRegionPicker","onLocalizationShippingRegionSelected","ConnectedLocalizationRegionPicker","showLocalizationRegionPicker","selectShowLocalizationRegionPicker","geolocation","selectGeolocation","isoCode","currencyCode","currency","LocalizationLink","hideRegionSelection","preferredLanguage","selectShowRegionSelection","mouseOver","mouseOut","transparentHeader","showIconInsteadOfFlag","countryCode","getCountryCodeFromLanguage","onMouseEnter","hoverMenuStyles","alignRight","isLocalizationSettingsVisible","setLocalizationSettingsVisible","shouldBeVisible","__tcfapi","FooterLinks","links","callerId","linksToRender","useCurrentLanguage","onlySwedish","rest","BuyingLinks","isNextWebBrandsPageEnabled","SellingLinks","isPennybridgeCharitiesEnabled","ContactAndHelpLinks","rel","isSwedishOrUndefined","ConsentService","openUi","CouponCodeLinks","isCouponationNavLinkEnabled","FooterPartners","groupedPartners","partners","logo","group","partner","isSwedish","useInView","threshold","symbolRef","inView","appName","downTo","getFullYear","ModalBody","inlineStyle","sendSessionStart","SELLING_SCRIBE_SESSION_START","sendSessionDuration","duration","madeByTemplate","SELLING_SCRIBE_SESSION_DURATION","durationMilliSeconds","sendDuration","measuredName","SELLING_SCRIBE_DURATION","sendIncrement","SELLING_SCRIBE_INCREMENT","sendValidationErrors","SELLING_SCRIBE_VALIDATION_ERRORS","ModalContainer","jqueryTrigger","onlyHandlers","prefixedEventName","jsEvent","CustomEvent","detail","dispatchEvent","hasOwn","classes","arg","argType","inner","mapLanguageCodeToLanguageKey","languageCode","lokaliseKey","toInt","n","Number","weight","SELLING_SHIPPING_CALCULATOR","getShippingProviders","SHIPPING_PROVIDERS","finalizeResponse","prepareResultForView","IGNORE_ME","getShippingProvidersByWeight","fromCountry","shippingProvider","useAdvancedWidget","products","variants","promoted","isObsolete","logoUrls","DBSchenker","PostNord","PostNordDenmark","BringDenmark","Bussgods","Alternative","AlternativeDenmark","Posten","product","validationError","cost","isStamps","variant","texts","numberOfStamps","price","restrictionText","restrictionTexts","setShippingOptionVariant","primary","setOfferTakeaway","offerTakeaway","shippingByWeightEnabled","selectFeatureSwitches","setSuggestedShippingProducts","shippingProducts","getAndSetShippingOptionsByWeight","shippingOptions","productsPerWeightSpan","bringEnabled","getShippingProvidersWithProducts","shipping","primaryShippingProviders","isLoadingProvidersWithProducts","calculateShipping","shippingCalculatorService","additionalInfo","clearSuggestedShippingProducts","makeSecondaryShippingOptionPrimary","removeShippingOption","setCalculatorDimensions","dimensions","setOfferShipping","offerShipping","setSecondaryShippingOptionOpen","secondaryShippingOptionOpen","setShippingOptionCost","setShippingOptionsFromDraft","shippingOption","removeCostIfCostMatchesSelectedProduct","productId","shippingState","getVariant","setShippingOptionVariantAfterDraft","isPrimary","getPrimaryOrSecondaryProducts","productVariant","setShippingOptionSelected","toggleShippingCalculator","toggleShippingOption","setShippingFromcountry","setShippingFromcountryFromDraft","PlainLanguageSelect","languages","setPreferredLanguage","onLanguageChanged","LanguageSelect","selectAvailableLanguages","MESSAGING_STATES","MessagingModal","MESSAGING_REMOTE_URL","POST_MESSAGE_TYPE_PREFIX","messaging","handleClose","iframeElement","contentWindow","focus","recipientId","handleMessage","setIframeRef","scrolling","NotParticipatingMessage","Loader","seller","transaction","purchaseOrderId","propertyName","openAddPhoto","url","setDraftImages","images","image","draftImage","imageId","removeImageInSlot","slotIndex","slots","imageUrl","rotationDegrees","isListingImage","filename","imageGroupId","isUploading","handleAttributeSuggestionsForSlot","setUploadFailed","errorMessage","setUploading","numberOfSlots","prepareUpload","selectedFilesCount","freeSlotCount","errorActions","numberOfFilesToUpload","min","MissingDraftId","setIsUploadingWithApp","isUploadingWithApp","cancelMobileUpload","draftSocket","disconnect","imageIds","setUploadedImageInNextFreeSlot","freeSlotIndex","setUploadedImageInImageSlot","removeImageWithId","changeImagePosition","to","newSlots","rotateImage","setImageThunk","fileInput","flow","files","imageUploadService","uploadFromFileInput","nativeAppOpenAddPhotoThunk","saveNowIfQueued","currentDraftId","fetchImagesFromDraft","loadImagesFromDraft","Flag","toUpperCase","LocalizedDfpAd","globalStore","isCriteoDirectBidderEnabled","isLoggingEnabled","toIntOrNull","number","isFinite","isNullOrUndefined","val","setOpeningBid","openingBid","setFixedPrice","fixedPrice","setReservePrice","reservePrice","setAuctionBinPrice","auctionBinPrice","setAuctionBinPriceVisibility","setReservePriceVisibility","setCharityDonationVisibility","setIsPureBinSelected","isPureBinSelected","setVat","vat","setEditCharity","editCharity","setFromDraft","queryParamCharityId","hasOpeningBid","hasFixedPrice","hasReservePrice","hasCharityId","isAuction","isAuctionBin","isPureBin","roundToDecimalPlaces","amount","decimals","rate","amountInSek","MultiCurrency","preferredCurrency","amountInOtherCurrency","symbolPrefix","symbolSuffix","multiCurrency","createFlightListener","onModalLoad","onModalClose","renderElement","resolveAmountWithoutUnitType","appendToStringOnce","str","appendix","renderAllDisplays","multiCurrencyDisplays","listenForAmountChangeInInput","inputElementDataId","displayElementDataId","amountInput","amountDisplay","deregisterMultiCurrencyListeners","synchronize","getSynchronizeInputToDisplay","renderVipModal","currencies","_booted","multiCurrencyRenderer","setCurrencyIfNotChosen","memberCountry","startTime","trackItemPublished","isFromTemplate","templateId","isDraftFromTemplate","scribe","sessionService","prepareForPublish","descriptionLanguageCodeIso2","hasTraderaPayConsent","SELLING_ITEM_PUBLISH","errorCode","handleServerValidationError","translator","invalidImageErrorCodes","imageErrors","nonImageErrors","imageErrorDisplayTexts","displayTexts","invalidImageCount","imageActions","count","handleInvalidImages","nonImageErrorDisplayTexts","translateErrorCode","errorDisplayTexts","errorDisplayText","reasonDisplayText","ensureDraftReason","draftReason","setDraft","isNewDraft","categoryActions","setAllowedBuyerRegion","setAvailableAllowedBuyerRegions","setItemCondition","itemCondition","setDurationDays","durationDays","setCustomEndTime","customEndTime","shortDescriptionActions","setShortDescription","setDescriptionLanguageCodeIso2","setCurrency","longDescriptionActions","displayPromoted","displayHighlighted","priceActions","charity","paymentActions","paymentOptions","getShippingOptionsFromDraft","getFromCountryFromDraft","memberCountryCodeIso2","isShippingFromCountryEnabled","loadDraft","draftService","navigationService","finally","canBeResumed","hasShortDescription","hasLongDescription","hasImage","setResumableDrafts","drafts","hasAuctionBinPrice","hasResponseErrorCode","responseOrNull","arrayOfErrorCodesToCheck","triggerSave","saveDraft","buildDraftFromState","version","setDraftVersion","responseJSON","setUsedAllowed","isAllowed","condition","isUsedAllowed","categoryRestriction","allowUsed","loadDrafts","resumableDrafts","browserDraftImageUrls","serverDraft","serverDraftImages","serverDraftImageUrls","changedImages","imagesHaveChanged","imageSlots","resetDurationAndEndTime","setRestart","restart","setReference","reference","extraFeatures","getCustomEndTime","itemDuration","publishService","memberConsent","googleTagManager","trackAddonBeforePublish","draftSelectedAttributes","suggestionEngine","completionTimeInSeconds","comparer","localeCompare","analyticsData","sa","trackAttributeSuggestions","loadDraftIfMissing","loadDefaultDraft","loadDefaultTemplateDraft","template","useDraftAsTemplate","resetItemCondition","publishAdditionalDescription","resetDraft","resetDrafts","optionsWithDefaults","timeoutTimer","head","removeChild","isNativeAppContext","isHybridAppContext","domNode","filterCategories","categoryNodes","timers","sentCounter","pushToDataLayer","dataLayer","trackAddonAfterPublish","addOnfeatureName","trackPageView","trackTiming","timingCategory","timingVar","variable","timingValue","timingLabel","startTimer","sendTimer","trackSellItemEvent","sendTimerOnce","eventCategory","eventAction","eventValue","allowedFileExtensions","uploadFileWithFormData","file","imageFlow","replaceIndex","formData","FormData","append","notifyImageUploaded","endTime","notifyImageUploadFailed","validateFile","fileExt","endsWith","suffix","eventBroadcaster","notifyImageValidationFailed","displayMessage","isMultifileSupported","uploadFiles","maxNumberOfFiles","validationResult","iframe_name","iframe","form","fileInputParent","parentNode","submit","theFile","responseText","contentDocument","parseJSON","uploadFileWithDom","uploadCroppedImageFile","imageFile","priceInfo","auctionCommission","fixedPriceCommission","featureFees","feesTotal","commissionMinimum","commissionCap","customEndTimeHour","customEndTimeMinute","customEndTimePrice","highlightFeaturePrice","fee","campaignCommissionProcent","fees","isDomainNameCategory","domainNameCategoryId","companyMinCommissionProcent","companyMaxCommissionProcent","maxCommissionCost","isCategoryWithNoCommissionCap","_cache","_title","existsInCache","clearCache","topCategories","levelToSearch","ids","categoryIds","categoryInfo","CartLink","formattedCartItems","cartSum","cartUrl","DropDownMenuHamburger","active","MenuItemSeparator","MenuItemButton","containerClass","follow","MenuItem","alerts","bold","border","imageContainerClassName","notify","notificationDot","MenuItemContent","backgroundImage","NotificationDot","ExpandableMenuItem","prevState","expanded","onOpen","defaultExpanded","toggleOpen","useMenuHeightFix","menuContentRef","useRef","currentBreakpoint","useBreakpoint","parentElement","marginBottom","XL","marginY","getBoundingClientRect","maxHeight","getGaAttributes","CategoryMenuItems","filteredCategories","categoryList","searchPlaceholder","handleFilterKey","handleFilterChange","CategoryMenuItem","categoryNode","isTopLevel","DropdownMenuContent","isValuationPageEnabled","mediaProps","BREAKPOINT_SIZES","list","TopLevelCategories","SeoLinks","trackAnalytics","DropdownMenu","dropdownMenu","categoryDropdownMenu","closeCategoryDropdownMenu","closeProfileMenu","isFetching","openCategoryDropdownMenu","onItemClick","sideMenuMediaProps","LG","dropdownMenuMediaProps","renderChild","TransitionGroup","mountOnEnter","in","zIndex","SignUpLink","clickAction","register","selectIsSwedishVisitor","selectIsForeignLanguageActivated","selectIsOutsideSweden","ModalPortal","notificationPortalRoot","createPortal","PushNotificationModal","modalType","gaLabel","tagGroups","trackGa","handleAccept","pushNotificationActions","handleReject","dangerouslySetInnerHTML","__html","HoverMenuItem","HoverMenuItemSeparator","getMenuGaAttributes","BuyMenu","alignSm43Lg50","BuyingLink","buyingText","ToBuyLink","howTo","NewListingLink","newListingLink","PlainLocalizationMenuItem","onToggle","LocalizationMenuItem","mapCurrencyCodeToCountryCode","sek","usd","jpy","gbp","nok","eur","dkk","PlainCurrencySelect","onCurrencySelected","longName","CurrencySelect","selectCurrencies","selectPreferredCurrency","ownProps","setPreferredCurrency","CurrencyMenuItem","showCurrencySelection","selectShowCurrencySelection","currencyShortName","trackPaymentOnboarding","InvoiceUnpaidAlert","InvoiceOverdueAlert","BankAccountMissingAlert","PayoutFailedAlert","PayoutReadyBankAccountMissingAlert","SwishMissingAlert","dismissSwish","enableSwishUrl","HyperwalletPayeeVerificationAlert","HyperwalletPayeeVerificationReviewAlert","OnboardToTraderaPayAlert","getGaLinkAttributes","getGaButtonAttributes","ProfileCard","cleanedMemberAlias","imageAvailable","setImageAvailable","mediaBelowLarge","trackExpandItemClick","ProfileMenuContent","logOut","memberDetailedSellerRatingAverage","memberHeroImage","showMessagingLink","showPayments1Menu","showPayments2Menu","systemMessages","threadsUnread","isTraderaShopEnabled","isSellerListEnabled","InvoiceUnpaid","InvoiceOverdue","OnboardToTraderaPay","hasWallet","STORAGE_KEYS","BATCH_PAYOUTS_ALERT_DISMISSED","BankAccountMissing","PayoutReadyBankAccountMissing","PayoutFailed","SwishNumberMissing","HyperwalletPayeeVerificationRequired","HyperwalletPayeeVerificationUnderReview","trackOnClick","SignInMenuContent","closeMenu","getReturnUrl","onLoad","iframeDocument","onIframeLoad","STRINGS","AddHumanyBot","botWidget","ProfileMenu","handleExpand","paymentSettings","upTo","is","Profile","facebookId","borderRadius","margin","ProfileLink","handleProfileClick","menuExpanded","systemMessageCount","logInText","tooltip","badgeType","multipleBadges","ProfileMenuLink","preventNavigationAndShowLogin","redirect","handleLoginClick","profileMenu","openProfileMenu","scrollTo","messagingThreads","profileMenuOpen","badges","showHeaderSearch","system","SearchButton","showSearch","Modal","header","internationalShippingModalContainer","internationalShippingModalHeader","internationalShippingModalBody","getMessagingCell","ownItem","getProviderIcon","providerImageMap","PostNordParcel","PostNordStamp","Schenker","SchenkerPrivpak","getProviderCell","removeDuplicateOwnCountryRowIfOnlyRow","ownShippingCountryCode","toCountryCodeIso2","ShippingRow","providers","isOwnRow","messagingLink","scope","country","internationalShippingModalBodyCountry","shippingCost","shippingWeight","getValueCell","internationalShipping","shippingCountryCode","sortedRows","ownCountryRow","buyerRegionText","fromCountryCodeIso2","shippingOptionCountry","internationalShippingModalTable","modals","INTERNATIONAL_SHIPPING_MODAL_ID","currentModal","WatchListMenu","WishlistLink","wishlistText","OngoingAuctionsLink","SellMenu","alignSm25Lg50","SellingLink","selling","transition","cssTransition","enter","exit","hideProgressBar","closeOnClick","draggablePercent","autoClose","pauseOnFocusLoss","success","warning","closeButton","closeToast","marginTop","TraderaToastContainer","CurrencyLink","SiteHeader","openSearchForm","closeSearchForm","autoFocusSearch","menu","activeHoverMenu","isTablet","expireDate","setTime","cookieUtil","sticky","fetchMessagingNotifications","getGeolocation","cartItemCount","closeMessagingModal","closeNotificationOptinModal","messagingModal","notificationOptinModal","hasCartItems","stickyEnabledOnPage","isMobileBreakpoint","hideElements","enableTransforms","activeClass","handleClickSearch","handleMenuClick","handleMouseOverMenu","handleMouseOutMenu","handleMenuBlur","handleRegisterClick","memberStateActions","withBreakpoint","hasSearch","searchParams","showSearchForm","headerElement","footerElement","resetShortDescription","observable","cancel","previousSearchService","SEARCH_RECENT","CancelToken","generateSuggestionId","term","previousSearchResults","suggestedResults","shops","campaigns","getPreviousSearches","getSuggestionsFromBackend","withDuplicates","uniqueMap","has","uniqueResults","shopResults","suggestedCharitiesResults","charitiesResults","suggestedCampaignResults","campaignResults","capaignId","allSuggestions","normalizeSearches","SEARCH_SUGGESTIONS","cancelToken","limit","previousResults","output","prettySearchTerm","recentCount"],"mappings":"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","file":"script/chunks/chunk.37.1a76a5f624.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst TraderaLogo = ({ width, height, className, style, ...otherProps }) => (\n \n Tradera\n \n \n);\nTraderaLogo.propTypes = {\n width: PropTypes.number,\n height: PropTypes.number,\n className: PropTypes.string,\n style: PropTypes.object\n};\nTraderaLogo.defaultProps = {\n width: 120,\n className: ''\n};\n\nexport default React.memo(TraderaLogo);\n","import React from 'react';\nimport LocalizedDfpAd from './localized-dfp-ad';\n\nclass DfpAdInitDataDecorator extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n pageTargeting: props.initData.gptData.customTargetingParameters,\n adUnitPath: props.initData.gptData.adUnitPath\n };\n }\n\n componentDidUpdate(prevProps) {\n if (\n prevProps.initData &&\n prevProps.initData.gptData &&\n prevProps.initData.gptData.customTargetingParameters\n ) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n pageTargeting:\n prevProps.initData.gptData.customTargetingParameters,\n adUnitPath: prevProps.initData.gptData.adUnitPath\n });\n }\n }\n\n render() {\n return ;\n }\n}\nexport default DfpAdInitDataDecorator;\n","import $ from 'jquery';\n\n/**\n * @description - class for connecting to twitter flight events\n * @class Messaging\n */\nexport default class Messaging {\n constructor() {\n this.subscribe = this.subscribe.bind(this);\n this.publish = this.publish.bind(this);\n this.namespace = `events-${Date.now()}-${Math.random()}`;\n this.events = [];\n }\n\n /**\n * @description - method to 'connect' to events\n * @param {array} events - array of all events to listen to\n * @param {function} callback - function invoked when an event is fired\n * @memberof Messaging\n */\n subscribe(events, callback) {\n if (!events) {\n console.warn('No event{s} passed, failing to register', true);\n return;\n }\n\n if (!Array.isArray(events)) {\n events = [events];\n }\n events.map(event => {\n this.events.push(event);\n $(document).on(`${event}.${this.namespace}`, callback);\n });\n }\n\n /**\n * @description - publish event\n * @param {string} event\n * @param {(object|string)} payload\n * @memberof Messaging\n */\n publish(event, payload) {\n // this.ConnectedToFlight.prototype.publishEvent(event, payload);\n $(document).trigger(event, payload);\n }\n\n teardown() {\n let me = this;\n this.events.map(event => {\n $(document).off(`${event}.${me.namespace}`);\n });\n this.events = [];\n }\n}\n","/*\n----------------------------------------------------------------------------------------------------------------------------------\n\n# DESCRIPTION\nThis script contains the boot loader for takeover ads at Tradera. In the current version it has support for following vendors:\n- Leeads\n\nIMPORTANT: if you need to add a new takeover solution then be sure it doesn't collide with the leeads takeover solution. \nThere is a risk you get a take over over a take over if that happens.\n\n----------------------------------------------------------------------------------------------------------------------------------\n*/\n\nimport { getInitData } from 'packages/init-data';\nimport { BREAKPOINTS, isBreakpointOrHigher } from 'tradera-utils/breakpoints';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\n\n/**\n * this will be false if the user has an ad blocker\n */\nconst adTechLoaded = () => {\n return typeof window.ADTECH === 'undefined' ? false : true;\n};\n\n/**\n * init the leeads desktop take over\n * @param {*DOMElement} takeoverElement\n */\nconst initLeeadsDesktop = takeoverElement => {\n // console.info('[init] leeads take over - desktop');\n\n // \n if (takeoverElement.children.length == 0) {\n takeoverElement.innerHTML =\n '
';\n }\n window.ADTECH.config.page = {\n protocol: 'https',\n server: 'adserver.adtech.de',\n network: '1568.1',\n siteid: '894854',\n params: { loc: '100' }\n };\n window.ADTECH.config.placements[6498025] = {\n sizeid: '16',\n params: { alias: '', target: '_blank' }\n };\n window.ADTECH.enqueueAd(6498025);\n window.ADTECH.executeQueue();\n};\n\nconst isTakeOverAllowedOnPage = () => {\n let initData = getInitData();\n switch (initData.pageName) {\n case 'StartPage':\n case 'Category':\n case 'SearchResults':\n return true;\n default:\n return false;\n }\n};\n\nconst loadScript = src => {\n return new Promise((resolve, reject) => {\n let script = document.createElement('script');\n script.src = src;\n script.async = false;\n script.onload = () => {\n resolve();\n };\n script.onerror = () => {\n reject('failed to load adtech script');\n };\n document.body.appendChild(script);\n });\n};\n\nconst initTakeovers = async () => {\n if (!GdprSettings.isMarketingEnabled()) {\n return;\n }\n try {\n await loadScript('https://aka-cdn.adtech.de/dt/common/DAC.js');\n } catch (err) {\n // failed, maybe adblocker or other, do not do anything more here\n return;\n }\n\n if (!adTechLoaded()) {\n return;\n }\n\n if (!isTakeOverAllowedOnPage()) {\n return;\n }\n\n let takeoverElement = document.getElementById('ads-takeover');\n let clientWidth = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n\n // LEEADS TAKEOVERS\n if (isBreakpointOrHigher(BREAKPOINTS.MD, clientWidth)) {\n initLeeadsDesktop(takeoverElement);\n }\n};\n\nexport default initTakeovers;\n","/**\n *\n * DESCRIPTION:\n * This script detects elements in a HTML page and initializes react components in those slots.\n * The react component that is created can be configured using data attributes, see under function declaration below.\n *\n * data-g-ad-position - {string} Tradera domain specific custom targeting parameter e.g. mid1-desktop, see google ad manager (DFP) for more info\n * data-g-ad-format - {string} comma separated, maps to an ad size, see ad-slot-utilities.js\n * data-g-ad-device - {string} maps to viewport according to our breakpoints, see ad-slot-utilities.js\n * data-g-ad-only-on-pages - {string} comma separated, specify pages where ad should be visible, OR filter, uses our pagename in init-data\n * data-g-ad-sticky - {bool} enable sticky\n * data-g-ad-autoscale - {bool} enable autoscale, which resizes an ad to fit the available space to parent\n * data-g-ad-sticky-top - {string (#id) or number} if sticky is enabled, specifies top boundary\n * data-g-ad-sticky-bottom - {string (#id) or number} if sticky is enabled, specifies top boundary\n * data-g-ad-ad-container-class - {string} possibility to wrap entire ad component in div with class specified as value\n */\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport logger from 'packages/logger';\nimport {\n createGptSizeMapping,\n mapDeviceNameToViewport\n} from 'static/script/app/ui/layout/ads/ad-slot-utilities';\nimport DfpAdInitDataDecorator from './dfp-ad-init-data-decorator';\nimport Messaging from 'packages/react/messaging';\nimport initTakeovers from './boot-takeover-ads';\nimport ApplicationErrorBoundary from 'tradera-components/application-error-boundary/application-error-boundary';\nimport MediaQuery from 'react-responsive';\n\n/**\n * initializes the react into the DOM element\n * @param {*HTMLDomElement} element a HTML Dom element for the that is to be initialized.\n * @param {*} initData The init data element that is part of every page request\n */\nconst initReactElement = (element, initData) => {\n // get all element attributes\n const position = element.getAttribute('data-g-ad-position');\n const adFormats = element.getAttribute('data-g-ad-format');\n const deviceName = element.getAttribute('data-g-ad-device');\n const adOnlyOnPages = element.getAttribute('data-g-ad-only-on-pages');\n const stickyEnabled = element.hasAttribute('data-g-ad-sticky');\n const autoscale = element.hasAttribute('data-g-ad-autoscale');\n let stickyTop = element.getAttribute('data-g-ad-sticky-top');\n let stickyBottom = element.getAttribute('data-g-ad-sticky-bottom');\n let adContainerClass = element.getAttribute('data-g-ad-ad-container-class');\n\n const refresh =\n element.hasAttribute('data-g-ad-refresh') &&\n 'ads-refresh' in initData.featureSwitches &&\n initData.featureSwitches['ads-refresh'] === true;\n\n // check if this adslot has specific exclusion rules\n if (adOnlyOnPages !== null) {\n // if page not found in list of ads to load then exit\n if (\n adOnlyOnPages\n .split(',')\n .indexOf(initData.gptData.customTargetingParameters.page) === -1\n ) {\n return;\n }\n }\n\n // handle sticky properties\n if (stickyTop !== null && !isNaN(stickyTop)) {\n stickyTop = parseInt(stickyTop);\n if (!initData.isLoggedIn) {\n stickyTop += 38;\n }\n }\n if (stickyBottom !== null && !isNaN(stickyBottom)) {\n stickyBottom = parseInt(stickyBottom);\n }\n\n // get size mapping\n const sizeMapping = createGptSizeMapping(adFormats, deviceName);\n const [minViewportWidth, maxViewportWidth] = mapDeviceNameToViewport(\n deviceName\n );\n\n if (element && sizeMapping) {\n try {\n ReactDOM.render(\n \n \n \n \n ,\n element\n );\n\n // make sure that we kill our react stuff once a pjax happens\n const messages = new Messaging();\n messages.subscribe(['data:navigation:after-page-load'], function() {\n ReactDOM.unmountComponentAtNode(element);\n messages.teardown();\n });\n } catch (e) {\n logger(e);\n }\n }\n};\n\n/**\n * Finds all react ad elements in the DOM and initializes them if they have not previously been initialized\n * @param {*object} initData\n */\nconst loadReactElements = initData => {\n // find all the elements on the page\n Array.from(document.getElementsByTagName('react-adslot')).forEach(\n element => {\n if (!element.hasAttribute('data-react-loaded')) {\n initReactElement(element, initData);\n element.setAttribute('data-react-loaded', true);\n }\n }\n );\n};\n\n/**\n * This is the main loader function to init the ads on a page. This function should only be called once per \"loaded page.\"\n * @param {*object} initData\n */\nconst reactAdsLoader = initData => {\n if (\n 'ads-leeads-takeover' in initData.featureSwitches &&\n initData.featureSwitches['ads-leeads-takeover'] === true\n ) {\n initTakeovers();\n }\n loadReactElements(initData);\n\n // make sure that on mobile pagination that the new that are sent are loaded\n const messages = new Messaging();\n messages.subscribe(\n [\n 'ui:search-result:after-pagination',\n 'data:navigation-filter:after-load'\n ],\n function() {\n loadReactElements(initData);\n }\n );\n messages.subscribe(['data:navigation:after-page-load'], function() {\n messages.teardown();\n });\n};\n\nexport default reactAdsLoader;\n","import { axiosConfigs } from 'tradera-utils/api';\nimport { marketingApiClient } from 'tradera-utils/http';\nimport {\n resetCharity,\n setCharityShippingInfo,\n setCharityId,\n setCharityFromDraft,\n setCharityInfo\n} from 'tradera-state/views/syi/reducers/charity';\nimport shippingActions from './shipping-actions';\nimport logger from 'packages/logger';\n\nexport const setCharityFromDraftAndFetchInfo = charityFromDraft => dispatch => {\n dispatch(setCharityFromDraft(charityFromDraft));\n dispatch(setCharityAndFetchInfo(charityFromDraft.charityId));\n};\n\nexport const resetCharityAndShippingInfo = () => setCharityAndFetchInfo(null);\n\nexport const setCharityAndFetchInfo = charityId => dispatch => {\n dispatch(shippingActions.resetSelected());\n dispatch(resetCharity());\n dispatch(setCharityId({ charityId }));\n dispatch(fetchCharityInfo(charityId));\n dispatch(fetchCharityShippingInfo(charityId));\n};\n\nconst fetchCharityInfo = charityId => async dispatch => {\n if (!charityId) {\n return;\n }\n try {\n const response = await getCharity(charityId);\n dispatch(setCharityInfo(response.data));\n } catch (error) {\n if (error?.response?.status !== 404) {\n logger(error);\n }\n }\n};\n\nconst fetchCharityShippingInfo = charityId => async (dispatch, getState) => {\n if (!charityId) {\n return;\n }\n try {\n const response = await getCharityShippingInfo(charityId);\n\n const isFreeShippingPaidByProviderEnabled = getState().environment\n .featureSwitches['free-shipping-paid-by-provider'];\n\n if (isFreeShippingPaidByProviderEnabled) {\n dispatch(setCharityShippingInfo(response.data));\n if (response.data.freeShippingPaidByProviderName) {\n dispatch({\n type: 'FREE_SHIPPING_PAID_BY_PROVIDER',\n payload: {\n providerName:\n response.data.freeShippingPaidByProviderName\n }\n });\n }\n }\n if (response.data.forceFreeShipping) {\n dispatch({\n type: 'FORCE_FREE_SHIPPING'\n });\n }\n } catch (error) {\n if (error?.response?.status !== 404) {\n logger(error);\n }\n }\n};\n\nconst getCharityShippingInfo = charityId =>\n marketingApiClient.get(`/charity-shipping-info?charityId=${charityId}`, {\n ...axiosConfigs.notAuthenticated,\n cancelTokenId: 'getCharityShippingInfo'\n });\n\nconst getCharity = charityId =>\n marketingApiClient.get(`/syi/charity-details?charityId=${charityId}`, {\n ...axiosConfigs.notAuthenticated,\n cancelTokenId: 'getCharity'\n });\n","import React, { useEffect, useCallback } from 'react';\nimport PropType from 'prop-types';\nimport { RemoveScroll } from 'react-remove-scroll';\nimport './modal.scss';\n\nconst SimpleModal = ({\n children,\n className,\n classNameBody,\n closeModalCallback,\n style,\n styleBody\n}) => {\n const closeOnEscape = useCallback(\n e => {\n if (e.keyCode === 27) {\n e.preventDefault();\n closeModalCallback(e);\n }\n },\n [closeModalCallback]\n );\n\n useEffect(() => {\n window.addEventListener('keydown', closeOnEscape);\n return () => {\n window.removeEventListener('keydown', closeOnEscape);\n };\n }, [closeOnEscape]);\n\n return (\n \n \n \n {children}\n \n \n \n );\n};\n\nSimpleModal.propTypes = {\n children: PropType.node.isRequired,\n className: PropType.string,\n classNameBody: PropType.string,\n closeModalCallback: PropType.func.isRequired,\n style: PropType.object,\n styleBody: PropType.object\n};\nSimpleModal.defaultProps = {\n className: '',\n classNameBody: '',\n style: {},\n styleBody: {}\n};\n\nexport default SimpleModal;\n","import actionTypes from './action-types';\nimport { getCategoryList } from './api';\nimport { API_ERRORS } from 'tradera-utils/api';\nimport { reload } from 'tradera-utils/location';\n\nconst fetchCategoryList = () => dispatch => {\n dispatch(requestCategoryList());\n\n return getCategoryList()\n .then(results => dispatch(receiveCategoryList(results.data)))\n .catch(error => {\n switch (error.message) {\n case API_ERRORS.VERSION_MISMATCH:\n reload(true);\n break;\n case API_ERRORS.CANCELLED:\n break;\n default:\n dispatch(handleCategoryListError(error));\n break;\n }\n });\n};\n\nconst requestCategoryList = payload => ({\n type: actionTypes.REQUEST_CATEGORY_LIST,\n payload\n});\n\nconst receiveCategoryList = payload => ({\n type: actionTypes.RECEIVE_CATEGORY_LIST,\n payload\n});\n\nconst handleCategoryListError = payload => ({\n type: actionTypes.HANDLE_CATEGORY_LIST_ERROR,\n payload\n});\n\nexport default {\n fetchCategoryList\n};\n","import { touchWebClient } from 'tradera-utils/http';\n\nexport const getCategoryList = () =>\n touchWebClient.get('categories', { cancelTokenId: 'getCategoryList' });\n","import ENDPOINTS from 'tradera-constants/endpoints';\nimport qs from 'qs';\n\nconst specialSearchTerms = {\n stammisglaset: '/campaign/stammisglaset'\n};\n\n/**\n *\n * @param {string} searchTerm search term\n * @param {object} queryParams query paramters of the current page\n * @param {int} currentCategoryId id of the current selected category\n * @param {array} allCategories array with all the categories\n */\nexport const getNewSearchUrl = (\n searchTerm,\n queryParams,\n currentCategoryId,\n allCategories\n) => {\n // Search with search term\n if (searchTerm) {\n // ----------------------------------\n // Special case redirects\n const specialTermUrl = specialSearchTerms[searchTerm.toLowerCase()];\n if (specialTermUrl) {\n return specialTermUrl;\n }\n\n // Filter out params not to pass on in query reformulation\n const {\n q,\n categoryId,\n paging,\n spage,\n ...filteredQueryParams\n } = queryParams;\n\n // Query reformulation = First \"Nike\" and then \"Nike air\" or the other way around\n const isQueryReformulation =\n searchTerm.includes(q) || (q && q.includes(searchTerm));\n\n return (\n ENDPOINTS.SEARCH +\n qs.stringify(\n {\n // Keep\n ...(isQueryReformulation ? filteredQueryParams : {}),\n q: searchTerm,\n categoryId: currentCategoryId\n ? currentCategoryId\n : undefined\n },\n {\n addQueryPrefix: true\n }\n )\n );\n }\n\n if (currentCategoryId > 0) {\n // Search without search term, just category\n const currentCategory = allCategories.find(\n category => category.id === currentCategoryId\n );\n\n if (currentCategory) {\n return currentCategory.href;\n }\n return;\n }\n // Fall back to category page for empty search\n return '/kategorier';\n};\n\n/**\n *\n * @param {function} t translator function\n * @param {array} allCategories all categories\n * @param {array} categoryPath path to the current category. it's in the reverse order\n * @param {int} currentCategoryId id of the current category\n */\nexport const getCategoryDropdownConfig = (\n t,\n allCategories,\n categoryPath,\n currentCategoryId\n) => {\n const allCategoriesOption = {\n id: 0,\n title: t('searchSelect_allCategories'),\n shortName: t('searchSelect_allCategoriesShortName')\n };\n\n const optionDivider = {\n id: 0,\n title: '------------------'\n };\n\n /**\n * Strip \"all categories\" (may be multiple) from categorypath\n * Add rest of categorypath\n * Add \"all categories\"\n * Add all level1 categories\n */\n const optionsList = [\n ...categoryPath.filter(category => category.id !== 0),\n allCategoriesOption,\n optionDivider,\n ...allCategories\n ];\n\n /**\n * Get selected category from list, fallback to \"all categories\"\n */\n const selectedOption =\n optionsList.find(category => category.id === currentCategoryId) ||\n allCategoriesOption;\n\n return {\n selectedOption,\n optionsList\n };\n};\n\nexport const getNextIndex = (incrementBy, currentIndex, totalElements) => {\n if (currentIndex === null) {\n currentIndex = incrementBy > 0 ? -1 : 0;\n }\n\n let newIndex = currentIndex + incrementBy;\n if (newIndex < 0) {\n return totalElements - 1;\n }\n if (newIndex >= totalElements) {\n return 0;\n }\n return newIndex;\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport DropdownIcon from '@tradera/blueprint/theme/icons2/dropdown.svg?jsx';\n\nconst SearchCategory = ({\n handleCategoryChange,\n selectOptions,\n selectedCategoryId,\n chosenCategory\n}) => {\n if (!selectOptions) {\n return null;\n }\n\n const isDefaultSelected = selectedCategoryId === 0;\n\n return (\n \n \n \n {chosenCategory.shortName\n ? chosenCategory.shortName\n : chosenCategory.title}\n \n \n \n \n \n \n {selectOptions.map((option, index) => {\n return (\n option && (\n \n )\n );\n })}\n \n \n );\n};\n\nSearchCategory.propTypes = {\n handleCategoryChange: PropTypes.func,\n selectOptions: PropTypes.array,\n selectedCategoryId: PropTypes.number,\n chosenCategory: PropTypes.object\n};\n\nexport default SearchCategory;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect, useDispatch } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport PAGE_TYPES from 'tradera-constants/page-types';\nimport discoverActions from 'tradera-state/discover/actions';\nimport { debounce } from 'packages';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport { getSuggestions, addRecentSearch } from './helpers/suggestions-api';\nimport {\n trackSearch,\n trackSearchCategoryChanges,\n trackResetButton\n} from './helpers/search.analytics';\nimport {\n getNewSearchUrl,\n getCategoryDropdownConfig,\n getNextIndex\n} from './helpers/helper';\n\nimport SearchCategory from 'components/search-category/search-category';\nimport SearchInput from './components/search-input';\nimport SearchSuggestion from './components/search-suggestion';\n\nexport const KEYCODE = {\n ENTER: 13,\n ESC: 27,\n UP: 38,\n DOWN: 40\n};\n\nexport const MIN_CHARS_FOR_SUGGESTIONS = 2;\n\nexport const Search = ({\n inSPA,\n topLevelCategories = [],\n categoryPath = [],\n inputClassName = '',\n placeholderText = null,\n discoverCurrentCategoryId = 0,\n discoverSearchTerm = '',\n queryParams,\n history\n}) => {\n const dispatch = useDispatch();\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const searchSuggestionsElementRef = React.createRef();\n const searchInputRef = React.createRef();\n\n const [currentCategoryId, setCurrentCategoryId] = useState(\n discoverCurrentCategoryId\n );\n const [isSearchInputFocused, setIsSearchInputFocused] = useState(false);\n const [searchTerm, setSearchTerm] = useState(discoverSearchTerm || '');\n const [suggestions, setSuggestions] = useState([]);\n const [selectedSuggestionIndex, setSelectedSuggestionIndex] = useState(\n null\n );\n\n useEffect(() => {\n setCurrentCategoryId(discoverCurrentCategoryId);\n }, [discoverCurrentCategoryId]);\n\n useEffect(() => {\n setSearchTerm(discoverSearchTerm);\n }, [discoverSearchTerm]);\n\n const loadSuggestionsDebounce = debounce(async (searchTerm, callback) => {\n const suggestions = await getSuggestionsWrapper(searchTerm);\n if (suggestions) {\n callback(suggestions);\n }\n }, 200);\n\n /**\n * this function wraps the getSuggestions and makes sure the paramters to the getSuggestions are consistent\n * @param {string} searchTerm\n */\n const getSuggestionsWrapper = async searchTerm => {\n const enableSuggestionsFromBackend =\n searchTerm.length >= MIN_CHARS_FOR_SUGGESTIONS;\n const suggestions = await getSuggestions({\n searchTerm,\n limitPrevious: enableSuggestionsFromBackend ? 3 : 7,\n enablePrevious: true,\n enableSuggestions: enableSuggestionsFromBackend\n });\n return suggestions;\n };\n\n const handleUpDownArrowKeys = keyCode => {\n let incrementBy = null;\n if (keyCode === KEYCODE.DOWN) {\n incrementBy = 1;\n } else if (keyCode === KEYCODE.UP) {\n incrementBy = -1;\n }\n if (incrementBy !== null) {\n const newIndex = getNextIndex(\n incrementBy,\n selectedSuggestionIndex,\n suggestions.length\n );\n setSelectedSuggestionIndex(newIndex);\n }\n };\n\n const handleUserKeyUp = evt => {\n switch (evt.which) {\n case KEYCODE.ESC:\n evt.target.blur();\n return;\n\n case KEYCODE.ENTER:\n // eslint-disable-next-line no-case-declarations\n const suggestions = searchSuggestionsElementRef.current?.querySelectorAll(\n '[data-suggestion]'\n );\n\n if (suggestions && suggestions[selectedSuggestionIndex]) {\n evt.preventDefault();\n suggestions[selectedSuggestionIndex].click();\n }\n return;\n\n case KEYCODE.DOWN:\n case KEYCODE.UP:\n handleUpDownArrowKeys(evt.which);\n return;\n }\n };\n\n const loadSearchSuggestions = async newSearchTerm => {\n setSelectedSuggestionIndex(null);\n setSearchTerm(newSearchTerm);\n setIsSearchInputFocused(true);\n\n if (typeof newSearchTerm !== 'string') return null;\n\n if (newSearchTerm.length >= MIN_CHARS_FOR_SUGGESTIONS) {\n loadSuggestionsDebounce(newSearchTerm, suggestions => {\n setSuggestions(suggestions);\n });\n return;\n }\n const suggestions = await getSuggestionsWrapper(newSearchTerm);\n\n setSuggestions(suggestions);\n };\n\n const handleUserInputChange = evt =>\n loadSearchSuggestions(evt.target.value);\n\n const handleBlur = () => setIsSearchInputFocused(false);\n\n const handleFocus = () => {\n loadSearchSuggestions(searchTerm);\n };\n\n const handlePreviousSearchRemoved = () => {\n loadSearchSuggestions(searchTerm);\n };\n\n const handleCategoryChange = event => {\n const currentCategoryId = parseInt(event.target.value, 10);\n setCurrentCategoryId(currentCategoryId);\n dispatch(discoverActions.setCurrentCategoryId(currentCategoryId));\n trackSearchCategoryChanges(event);\n };\n\n const changeWindowLocation = newQuery => {\n // Trim search term to avoid empty searches\n const trimmedSearchTerm = newQuery.trim();\n let newSearchUrl = getNewSearchUrl(\n trimmedSearchTerm,\n queryParams,\n currentCategoryId,\n [...topLevelCategories, ...categoryPath]\n );\n\n // Search with search term\n if (trimmedSearchTerm) {\n addRecentSearch(trimmedSearchTerm);\n trackSearch(trimmedSearchTerm);\n }\n if (inSPA) {\n searchInputRef.current.blur();\n history.push(toLocalizedUrl(newSearchUrl));\n } else {\n window.location.href = toLocalizedUrl(newSearchUrl);\n }\n setIsSearchInputFocused(false);\n };\n\n const handleFormSubmit = event => {\n event.preventDefault();\n changeWindowLocation(searchTerm);\n };\n\n const clearSearchInputAndGoToBrowse = event => {\n event.preventDefault();\n trackResetButton();\n setSearchTerm('');\n changeWindowLocation('');\n };\n\n const handleSuggestionsChangingSearchTerm = newSearchTerm => {\n // fixes case when user is on the same url as the current selected serach term. To reproduce:\n // 1. search tröja\n // 2. change the search term in the search box to \"tröj\" without hitting enter\n // 3. now you get previous searches \"tröja\", click on it\n // 4. without next line nothing will happen\n if (newSearchTerm !== searchTerm) {\n setSearchTerm(newSearchTerm);\n }\n setIsSearchInputFocused(false);\n searchInputRef.current.blur();\n };\n\n const {\n selectedOption: selectedCategory,\n optionsList: categorySelectOptions\n } = getCategoryDropdownConfig(\n t,\n topLevelCategories,\n categoryPath,\n currentCategoryId\n );\n\n return (\n \n }\n inputClassName={inputClassName}\n placeholderText={placeholderText}\n onBlur={handleBlur}\n onClearSearchInput={clearSearchInputAndGoToBrowse}\n onFocus={handleFocus}\n onFormSubmit={handleFormSubmit}\n onUserInputChange={handleUserInputChange}\n onUserKeyUp={handleUserKeyUp}\n searchInputRef={searchInputRef}\n searchTerm={searchTerm}\n selectedCategory={selectedCategory}\n suggestionsElement={\n \n }\n />\n );\n};\n\nconst mapStateToProps = state => {\n const pageType = state.page.type;\n let categoryPath = undefined;\n let discoverCurrentCategoryId = 0;\n let discoverSearchTerm = '';\n\n // Reflect search state on search & category pages\n if (\n [\n PAGE_TYPES.SEARCH_RESULT_PAGE,\n PAGE_TYPES.CATEGORY_RESULT_PAGE\n ].includes(pageType)\n ) {\n categoryPath = state.discover.categoryPath.map(\n ({ name, ...category }) => ({\n ...category,\n title: name\n })\n );\n discoverCurrentCategoryId = state.discover.currentCategoryId;\n discoverSearchTerm = state.discover.queryParams?.q || '';\n }\n\n return {\n topLevelCategories: state.categories.topLevelCategories,\n categoryPath,\n discoverCurrentCategoryId,\n queryParams: state.discover.queryParams,\n discoverSearchTerm\n };\n};\n\nSearch.propTypes = {\n inSPA: PropTypes.bool.isRequired,\n categoryPath: PropTypes.array,\n placeholderText: PropTypes.string,\n discoverCurrentCategoryId: PropTypes.number,\n queryParams: PropTypes.object\n};\n\nconst ConnectedSearch = connect(mapStateToProps)(Search);\nexport const SearchInSpa = withRouter(ConnectedSearch);\nexport const SearchOutsideSpa = ConnectedSearch;\n","import { Analytics } from 'packages';\n\nexport const trackSearchCategoryChanges = evt => {\n const selectBox = evt.target;\n const selectedOption =\n selectBox &&\n selectBox.selectedOptions &&\n selectBox.selectedOptions.length > 0 &&\n selectBox.selectedOptions[0];\n if (!selectedOption) {\n return;\n }\n Analytics.trackEvent({\n category: 'User search',\n action: 'Top search box Category dropdown',\n label: selectedOption.text\n });\n};\n\nexport const trackSearch = label => {\n Analytics.trackEvent({\n category: 'User search',\n action: 'Search Query',\n label: label\n });\n};\n\nexport const trackResetButton = () => {\n Analytics.trackEvent({\n category: 'User search',\n action: ' Top search box Reset'\n });\n};\n","export const translateBuyerRegionText = (t, allowedBuyerRegion) => {\n switch (allowedBuyerRegion) {\n case 'Sweden':\n return t('vip_buyer_region_text_sweden');\n case 'Nordic':\n return t('vip_buyer_region_text_nordic');\n case 'EU':\n return t('vip_buyer_region_text_eu');\n case 'International':\n return t('vip_buyer_region_text_international');\n default:\n return allowedBuyerRegion;\n }\n};\n","export const getMessagingUrl = toLocalizedUrl =>\n toLocalizedUrl(`${window.origin}/messagingiframe`);\n","// extracted by mini-css-extract-plugin\nexport default {\"shipping-country-select-row\":\"shipping-country-select-row--p9bCi\",\"shippingCountrySelectRow\":\"shipping-country-select-row--p9bCi\"};","import React, { useState } from 'react';\nimport { FixedSizeList } from 'react-window';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport ArrowDownIcon from '@tradera/blueprint/theme/icons2/arrow-down.svg?jsx';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { mapCountryCodeToCountryKey } from 'tradera-utils/countries';\nimport Flag from 'tradera-components/flag/flag';\nimport styles from './shipping-country-select-dropdown.module.scss';\n\nexport const ShippingCountrySelectDropdown = ({\n shippingCountries,\n selectedShippingCountry,\n onSelect\n}) => {\n const { t } = useTranslator();\n const [searchFocus, setSearchFocus] = useState(false);\n const [search, setSearch] = useState('');\n const [isSearchEnabled, setIsSearchEnabled] = useState(false);\n const includesSearch = v => v.toLowerCase().includes(search.toLowerCase());\n const filteredShippingCountries = shippingCountries\n .map(countryCodeIso2 => ({\n countryCodeIso2,\n name: t(mapCountryCodeToCountryKey(countryCodeIso2))\n }))\n .filter(\n ({ name, countryCodeIso2 }) =>\n includesSearch(name) || includesSearch(countryCodeIso2)\n );\n\n const listStyle = {\n height:\n filteredShippingCountries.length < 6\n ? `${(filteredShippingCountries.length || 1) * 35}px`\n : '165px'\n };\n\n const Row = ({ index, style }) => (\n \n \n onSelect(filteredShippingCountries[index].countryCodeIso2)\n }>\n \n {filteredShippingCountries[index].name}\n \n \n );\n\n return (\n <>\n \n {!isSearchEnabled ? (\n <>\n {\n setIsSearchEnabled(true);\n setSearchFocus(true);\n }}>\n {t(\n mapCountryCodeToCountryKey(\n selectedShippingCountry.countryCodeIso2\n )\n )}\n \n \n \n ) : (\n <>\n setSearch(e.target.value)}\n onFocus={() => setSearchFocus(true)}\n onBlur={() => {\n setTimeout(() => {\n setSearchFocus(false);\n }, 100);\n }}\n />\n {\n setSearch('');\n setSearchFocus(false);\n setIsSearchEnabled(false);\n }}>\n \n \n \n )}\n \n \n {isSearchEnabled && (search || searchFocus) && (\n e.preventDefault()}\n style={listStyle}>\n {filteredShippingCountries.length > 0 ? (\n \n {({ height, width }) => (\n \n {Row}\n \n )}\n \n ) : (\n
\n
\n {t('siteHeader_shippingCountryNoResults')}\n
\n
\n )}\n \n )}\n
\n \n );\n};\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { useTranslator } from 'tradera-lang/translate';\nimport {\n selectAvailableShippingCountries,\n selectShippingCountry,\n selectIsLoadingAvailableShippingCountries,\n selectHasLoadedAvailableShippingCountries\n} from 'tradera-state/shipping-region/selectors';\nimport {\n updateShippingRegion,\n getAvailableShippingCountries\n} from 'tradera-state/shipping-region/actions';\nimport { ShippingCountrySelectDropdown } from './shipping-country-select-dropdown';\nimport Load from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\n\nconst PlainShippingCountrySelect = ({\n getAvailableShippingCountries,\n shippingCountry,\n shippingCountries,\n updateShippingRegion,\n showShippingCountries,\n isLoadingAvailableShippingCountries,\n onShippingCountrySelected\n}) => {\n const { t } = useTranslator();\n\n useEffect(getAvailableShippingCountries, [getAvailableShippingCountries]);\n\n return (\n
\n \n {t('siteHeader_shippingCountry')}\n \n
\n {isLoadingAvailableShippingCountries && (\n
\n \n
\n )}\n {showShippingCountries && (\n {\n onShippingCountrySelected(countryCodeIso2);\n updateShippingRegion(countryCodeIso2);\n }}\n />\n )}\n
\n
\n );\n};\n\nPlainShippingCountrySelect.propTypes = {\n shippingCountries: PropTypes.arrayOf(PropTypes.string),\n shippingCountry: PropTypes.object,\n updateShippingRegion: PropTypes.func,\n getAvailableShippingCountries: PropTypes.func.isRequired,\n showShippingCountries: PropTypes.bool,\n isLoadingAvailableShippingCountries: PropTypes.bool,\n onShippingCountrySelected: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n shippingCountry: selectShippingCountry(state),\n shippingCountries: selectAvailableShippingCountries(state),\n isLoadingAvailableShippingCountries: selectIsLoadingAvailableShippingCountries(\n state\n ),\n showShippingCountries:\n selectHasLoadedAvailableShippingCountries(state) &&\n !selectIsLoadingAvailableShippingCountries(state)\n});\n\nconst mapDispatchToProps = {\n updateShippingRegion,\n getAvailableShippingCountries\n};\n\nexport const ShippingCountrySelect = connect(\n mapStateToProps,\n mapDispatchToProps\n)(PlainShippingCountrySelect);\n","import React from 'react';\nimport { LanguageSelect } from './language-select';\nimport { ShippingCountrySelect } from './shipping-country-select';\n\nexport const LocalizationMenu = ({ onBlur, showRegionSelection }) => (\n
\n {showRegionSelection && (\n <>\n \n
\n \n )}\n <>\n \n
\n \n
\n);\n","import { toLocalizedRiotUrl } from './../utils/language';\nimport { logger } from 'packages';\nimport { isServer } from 'tradera-utils/nextjs';\n\nlet history;\n\nif (!isServer) {\n import('../../app_react/history')\n .then(module => {\n history = module.default;\n return history;\n })\n .catch(logger);\n}\n\nconst goToStart = function() {\n history.push(toLocalizedRiotUrl('/selling/'));\n};\n\nconst goToSummary = function(draftId) {\n history.push(toLocalizedRiotUrl('/selling/summary/' + draftId));\n};\n\nconst goToPublished = function(itemId) {\n history.push(toLocalizedRiotUrl('/selling/published/' + itemId));\n};\n\nconst setDraftUrlWithoutReload = function(draftId) {\n window.history.replaceState(\n {},\n document.title,\n toLocalizedRiotUrl('/selling/draft/' + draftId)\n );\n};\n\nexport default {\n goToStart,\n goToSummary,\n goToPublished,\n setDraftUrlWithoutReload\n};\n","const getDisplayRating = rating => {\n if (rating) {\n return rating.toFixed(1);\n }\n};\n\nexport default {\n getDisplayRating\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"rating-stars\":\"rating-stars--f1PWv\",\"ratingStars\":\"rating-stars--f1PWv\",\"rating-stars__overlay\":\"rating-stars__overlay--T-1Qg\",\"ratingStarsOverlay\":\"rating-stars__overlay--T-1Qg\",\"rating-stars__base\":\"rating-stars__base--2IJRQ\",\"ratingStarsBase\":\"rating-stars__base--2IJRQ\",\"light\":\"light--yjb_r\",\"dark\":\"dark--1l3Yr\",\"seller-details\":\"seller-details--E1AEw\",\"sellerDetails\":\"seller-details--E1AEw\"};","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { useUrlLocalizer } from 'tradera-lang/translate';\nimport utils from './rating-utils';\nimport RatingIcon from '@tradera/blueprint/theme/icons2/rating.svg?jsx';\nimport styles from './rating-stars.module.scss';\n\n// Rating is multipled with 20.5 to account for margin between stars and rounding up\nimport ALink from 'tradera-components/alink/alink';\n\nconst RatingStars = ({\n memberAlias,\n memberId,\n rating,\n gaAttributes,\n link,\n dark = false,\n onClick\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const displayRating = utils.getDisplayRating(rating);\n\n const Stars = () => (\n <>\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n
\n \n );\n return link ? (\n \n \n \n \n \n\n
\n \n {displayRating}\n \n
\n
\n \n ) : (\n \n \n
\n \n
\n
{displayRating}
\n \n
\n );\n};\n\nRatingStars.defaultProps = {};\n\nRatingStars.propTypes = {\n memberAlias: PropTypes.string,\n memberId: PropTypes.number,\n rating: PropTypes.number,\n gaAttributes: PropTypes.object,\n dark: PropTypes.bool,\n link: PropTypes.bool\n};\n\nexport default RatingStars;\n","import {\n addRecentSearch,\n removeRecentSearch\n} from 'components/search/helpers/suggestions-api';\nimport { getPersonalisedBrands, getPersonalisedSearches } from './api';\n\nconst setPersonalisedBrandsAction = (items, status) => ({\n type: 'PERSONALISATION/SET_BRANDS',\n items,\n status\n});\n\nconst setPersonalisedSearchesAction = (items, status) => ({\n type: 'PERSONALISATION/SET_SEARCHES',\n items,\n status\n});\n\nconst setPersonalisedBrandsStatusAction = status => ({\n type: 'PERSONALISATION/FETCH_BRANDS_STATUS',\n status\n});\n\nconst setPersonalisedSearchesStatusAction = status => ({\n type: 'PERSONALISATION/FETCH_SEARCHES_STATUS',\n status\n});\n\nconst recentSearchesIsUpdatedAction = () => ({\n type: 'RECENT_SEARCHES_LAST_UPDATED',\n lastUpdated: Date.now()\n});\n\nexport const fetchPersonalisedBrandsIfNeeded = () => async (\n dispatch,\n getState\n) => {\n const { status } = getState().personalisation.brands;\n if (status !== 'NOT_FETCHED') return;\n\n dispatch(setPersonalisedBrandsStatusAction('LOADING'));\n\n const brandsResult = await getPersonalisedBrands();\n\n const newStatus = brandsResult.length > 0 ? 'HAS_DATA' : 'HAS_NO_DATA';\n dispatch(setPersonalisedBrandsAction(brandsResult, newStatus));\n};\n\nexport const fetchPersonalisedSearchesIfNeeded = () => async (\n dispatch,\n getState\n) => {\n const { status } = getState().personalisation.searches;\n if (status !== 'NOT_FETCHED') return;\n\n dispatch(setPersonalisedSearchesStatusAction('LOADING'));\n\n const searchesResult = await getPersonalisedSearches();\n\n const newStatus = searchesResult.length > 0 ? 'HAS_DATA' : 'HAS_NO_DATA';\n dispatch(setPersonalisedSearchesAction(searchesResult, newStatus));\n};\n\nexport const addRecentSearchText = text => async dispatch => {\n addRecentSearch(text);\n dispatch(recentSearchesIsUpdatedAction());\n};\n\nexport const removeRecentSearchText = text => async dispatch => {\n removeRecentSearch(text);\n dispatch(recentSearchesIsUpdatedAction());\n};\n","import ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n axiosWithTokenRefresh,\n defaultJsonRequestHeaders,\n handleError,\n logError\n} from 'tradera-utils/api';\n\nexport const getPersonalisedBrands = () => {\n return axiosWithTokenRefresh()\n .get(`${ENDPOINTS.PERSONALISED_SUGGESTIONS}/brands`, {\n headers: defaultJsonRequestHeaders\n })\n .catch(handleError())\n .catch(logError)\n .then(response => response?.data || []);\n};\n\nexport const getPersonalisedSearches = () => {\n return axiosWithTokenRefresh()\n .get(`${ENDPOINTS.PERSONALISED_SUGGESTIONS}/searches`, {\n headers: defaultJsonRequestHeaders\n })\n .catch(handleError())\n .catch(logError)\n .then(response => response?.data || []);\n};\n","import { useSelector } from 'react-redux';\n\nexport const useIsFeatureEnabled = featureName =>\n useSelector(state => state.environment.featureSwitches[featureName]);\n","import draftActions from './draft-actions';\n\nexport default {\n setLongDescription: longDescription => dispatch => {\n dispatch({\n type: 'SET_LONG_DESCRIPTION',\n payload: longDescription\n });\n dispatch(draftActions.updateDraftCanBeResumed());\n },\n setLongDescriptionFromDraft: longDescription => dispatch => {\n dispatch({\n type: 'SET_LONG_DESCRIPTION_FROM_DRAFT',\n payload: longDescription\n });\n dispatch(draftActions.updateDraftCanBeResumed());\n },\n reset: () => dispatch => {\n dispatch({\n type: 'RESET_LONG_DESCRIPTION'\n });\n dispatch(draftActions.updateDraftCanBeResumed());\n }\n};\n","import React from 'react';\nimport PropType from 'prop-types';\n\nconst ModalFooter = ({ children, className }) => (\n
{children}
\n);\n\nModalFooter.propTypes = {\n children: PropType.node.isRequired,\n className: PropType.string\n};\n\nexport default ModalFooter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useUrlLocalizer, useTranslator } from 'tradera-lang/translate';\nimport CloseNarrowIcon from '@tradera/blueprint/theme/icons/close-narrow.svg?jsx';\nimport SearchIcon from '@tradera/blueprint/theme/icons2/search.svg?jsx';\n\nconst SearchInput = ({\n categoriesElement,\n inputClassName,\n onBlur,\n onClearSearchInput,\n onFocus,\n onFormSubmit,\n onUserInputChange,\n onUserKeyUp,\n searchInputRef,\n searchTerm,\n selectedCategory,\n suggestionsElement,\n placeholderText\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const { t } = useTranslator();\n\n const placeHolderTranslation =\n selectedCategory && selectedCategory.id !== 0 && selectedCategory.name\n ? t('siteHeader_categorySearchPlaceholder', {\n categoryName: selectedCategory.name\n })\n : t('siteHeader_generalSearchPlaceholder');\n\n const showClearButton = searchTerm !== '';\n\n return (\n \n
\n {categoriesElement}\n
\n
\n \n
\n {showClearButton ? (\n \n \n \n ) : (\n \n \n \n )}\n
\n {suggestionsElement}\n
\n \n );\n};\n\nSearchInput.propTypes = {\n categoriesElement: PropTypes.element,\n inputClassName: PropTypes.string,\n onBlur: PropTypes.func,\n onClearSearchInput: PropTypes.func,\n onFocus: PropTypes.func,\n onFormSubmit: PropTypes.func.isRequired,\n onUserInputChange: PropTypes.func,\n onUserKeyUp: PropTypes.func,\n searchInputRef: PropTypes.object,\n searchTerm: PropTypes.string.isRequired,\n selectedCategory: PropTypes.object,\n suggestionsElement: PropTypes.element,\n placeholderText: PropTypes.string\n};\n\nSearchInput.defaultProps = {\n categoriesElement: null,\n inputClassName: '',\n onBlur: () => {},\n onFocus: () => {},\n onUserInputChange: () => {},\n onUserKeyUp: () => {},\n selectedCategory: null,\n suggestionsElement: null,\n placeholderText: null\n};\n\nexport default SearchInput;\n","import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nexport const Expand = ({ children, ...props }) => (\n \n {children}\n \n);\n\nexport const EnterFrom = ({ children, from, ...props }) => (\n \n {children}\n \n);\n\nexport const EnterFade = ({ children, ...props }) => (\n \n {children}\n \n);\n","import React from 'react';\nimport { compose } from 'redux';\nimport PropTypes from 'prop-types';\n\nimport MessagingIcon from '@tradera/blueprint/theme/icons/mail.svg?jsx';\nimport uiActions from 'tradera-state/ui/actions';\nimport { logger } from 'packages';\nimport { withTranslator, withUrlLocalizer } from 'tradera-lang/translate';\n\nimport {\n checkUserMessagingParticipation,\n getMessagingPageLink,\n getMessagingThreadLink\n} from 'tradera-apps/my-tradera/app/helpers/messaging-helpers';\n\nclass MessagingButton extends React.Component {\n state = {\n buttonVisible: false\n };\n\n componentDidMount() {\n // Only show button if participation returns true\n checkUserMessagingParticipation(this.props.sellerId)\n .then(buttonVisible => {\n this.setState({\n buttonVisible\n });\n return undefined;\n })\n .catch(err => {\n this.setState({\n buttonVisible: false\n });\n logger(err);\n });\n }\n\n openMessagingModal = (title, src, participating) => {\n const { dispatch, isLoggedIn } = this.props;\n if (isLoggedIn) {\n dispatch(\n uiActions.openMessagingModal({ title, src, participating })\n );\n } else {\n this.handleLogin(src);\n }\n };\n\n handleLogin = href =>\n this.props.dispatch(uiActions.signIn({ redirectUrl: href }));\n\n render() {\n const {\n buyerId,\n sellerId,\n itemId,\n source,\n mode,\n className,\n memberId,\n toLocalizedUrl,\n t\n } = this.props;\n const { buttonVisible } = this.state;\n\n let href;\n if (buyerId && sellerId) {\n if (mode === 'modal') {\n href = getMessagingThreadLink(buyerId, sellerId, itemId, {\n traderaUserId: memberId,\n singleThread: true,\n openForm: true,\n source\n });\n } else {\n href = getMessagingPageLink(buyerId, sellerId, itemId, {\n traderaUserId: memberId,\n source\n });\n }\n } else {\n href = window.location.pathname;\n }\n\n const BUTTON_LABELS = {\n ask_seller: t('messaging_askTheSeller'),\n contact_seller: t('messaging_contactSeller'),\n contact_buyer: t('messaging_contactBuyer')\n };\n\n // Disable on user's own items\n const disableButton = buyerId === sellerId;\n\n if (buttonVisible) {\n if (mode === 'modal') {\n return (\n \n \n this.openMessagingModal(\n BUTTON_LABELS[source],\n toLocalizedUrl(href),\n buttonVisible\n )\n }\n disabled={disableButton}>\n \n \n {BUTTON_LABELS[source]}\n \n \n {disableButton && (\n \n {t('messaging_contactSelfText')}\n \n )}\n \n );\n } else {\n return (\n \n \n \n {BUTTON_LABELS[source]}\n \n \n );\n }\n } else {\n return null;\n }\n }\n}\nMessagingButton.propTypes = {\n isLoggedIn: PropTypes.bool,\n memberId: PropTypes.string,\n className: PropTypes.string,\n buyerId: PropTypes.string.isRequired,\n sellerId: PropTypes.string.isRequired,\n itemId: PropTypes.string.isRequired,\n source: PropTypes.string.isRequired,\n mode: PropTypes.string,\n t: PropTypes.func.isRequired\n};\n\nMessagingButton.defaultProps = {\n className: '',\n buyerId: '',\n sellerId: '',\n itemId: '',\n source: '',\n mode: 'link'\n};\n\nexport default compose(withUrlLocalizer, withTranslator)(MessagingButton);\n","import draftActions from './draft-actions';\n\nexport default {\n setIsPropertyEditMode: isPropertyEditMode => ({\n type: 'SET_IS_PROPERTY_EDIT_MODE',\n payload: isPropertyEditMode\n }),\n setCreationType: creationType => ({\n type: 'SET_CREATION_TYPE',\n payload: creationType\n }),\n showAllErrors: () => ({\n type: 'SHOW_ALL_ERRORS'\n }),\n hideAllErrors: () => ({\n type: 'HIDE_ALL_ERRORS'\n }),\n setIsEditOfPublishedItem: isEditOfPublishedItem => ({\n type: 'SET_IS_EDIT_OF_PUBLISHED_ITEM',\n payload: isEditOfPublishedItem\n }),\n\n setCategoryRestriction: restriction => dispatch => {\n dispatch({\n type: 'SET_CATEGORY_RESTRICTION',\n payload: restriction\n });\n dispatch(draftActions.updateItemConditionRestrictionForCategory());\n },\n toggleModal: modalId => ({\n type: 'TOGGLE_MODAL',\n payload: modalId\n }),\n showModal: (modalId, modalData) => ({\n type: 'SHOW_MODAL',\n modalId: modalId,\n modalData: modalData\n }),\n hideModal: () => ({\n type: 'HIDE_MODAL'\n }),\n reset: () => ({\n type: 'RESET_SYI'\n }),\n enableAutoSave: () => ({\n type: 'ENABLE_AUTOSAVE'\n }),\n disableAutoSave: () => ({\n type: 'DISABLE_AUTOSAVE'\n })\n};\n","/*! Flight v1.5.0 | (c) Twitter, Inc. | MIT License */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"flight\"] = factory();\n\telse\n\t\troot[\"flight\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(1),\n __webpack_require__(2),\n __webpack_require__(3),\n __webpack_require__(4),\n __webpack_require__(5),\n __webpack_require__(6),\n __webpack_require__(7)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(advice, component, compose, debug, logger, registry, utils) {\n 'use strict';\n\n return {\n advice: advice,\n component: component,\n compose: compose,\n debug: debug,\n logger: logger,\n registry: registry,\n utils: utils\n };\n\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(7)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(utils) {\n 'use strict';\n\n var advice = {\n\n around: function(base, wrapped) {\n return function composedAround() {\n // unpacking arguments by hand benchmarked faster\n var i = 0, l = arguments.length, args = new Array(l + 1);\n args[0] = base.bind(this);\n for (; i < l; i++) {\n args[i + 1] = arguments[i];\n }\n return wrapped.apply(this, args);\n };\n },\n\n before: function(base, before) {\n var beforeFn = (typeof before == 'function') ? before : before.obj[before.fnName];\n return function composedBefore() {\n beforeFn.apply(this, arguments);\n return base.apply(this, arguments);\n };\n },\n\n after: function(base, after) {\n var afterFn = (typeof after == 'function') ? after : after.obj[after.fnName];\n return function composedAfter() {\n var res = (base.unbound || base).apply(this, arguments);\n afterFn.apply(this, arguments);\n return res;\n };\n },\n\n // a mixin that allows other mixins to augment existing functions by adding additional\n // code before, after or around.\n withAdvice: function() {\n ['before', 'after', 'around'].forEach(function(m) {\n this[m] = function(method, fn) {\n var methods = method.trim().split(' ');\n\n methods.forEach(function(i) {\n utils.mutateProperty(this, i, function() {\n if (typeof this[i] == 'function') {\n this[i] = advice[m](this[i], fn);\n } else {\n this[i] = fn;\n }\n\n return this[i];\n });\n }, this);\n };\n }, this);\n }\n };\n\n return advice;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(1),\n __webpack_require__(7),\n __webpack_require__(3),\n __webpack_require__(8),\n __webpack_require__(6),\n __webpack_require__(5),\n __webpack_require__(4)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(advice, utils, compose, withBase, registry, withLogging, debug) {\n 'use strict';\n\n var functionNameRegEx = /function (.*?)\\s?\\(/;\n var ignoredMixin = {\n withBase: true,\n withLogging: true\n };\n\n // teardown for all instances of this constructor\n function teardownAll() {\n var componentInfo = registry.findComponentInfo(this);\n\n componentInfo && Object.keys(componentInfo.instances).forEach(function(k) {\n var info = componentInfo.instances[k];\n // It's possible that a previous teardown caused another component to teardown,\n // so we can't assume that the instances object is as it was.\n if (info && info.instance) {\n info.instance.teardown();\n }\n });\n }\n\n function attachTo(selector/*, options args */) {\n // unpacking arguments by hand benchmarked faster\n var l = arguments.length;\n var args = new Array(l - 1);\n for (var i = 1; i < l; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (!selector) {\n throw new Error('Component needs to be attachTo\\'d a jQuery object, native node or selector string');\n }\n\n var options = utils.merge.apply(utils, args);\n var componentInfo = registry.findComponentInfo(this);\n\n $(selector).each(function(i, node) {\n if (componentInfo && componentInfo.isAttachedTo(node)) {\n // already attached\n return;\n }\n\n (new this).initialize(node, options);\n }.bind(this));\n }\n\n function prettyPrintMixins() {\n //could be called from constructor or constructor.prototype\n var mixedIn = this.mixedIn || this.prototype.mixedIn || [];\n return mixedIn.map(function(mixin) {\n if (mixin.name == null) {\n // function name property not supported by this browser, use regex\n var m = mixin.toString().match(functionNameRegEx);\n return (m && m[1]) ? m[1] : '';\n }\n return (!ignoredMixin[mixin.name] ? mixin.name : '');\n }).filter(Boolean).join(', ');\n };\n\n\n // define the constructor for a custom component type\n // takes an unlimited number of mixin functions as arguments\n // typical api call with 3 mixins: define(timeline, withTweetCapability, withScrollCapability);\n function define(/*mixins*/) {\n // unpacking arguments by hand benchmarked faster\n var l = arguments.length;\n var mixins = new Array(l);\n for (var i = 0; i < l; i++) {\n mixins[i] = arguments[i];\n }\n\n var Component = function() {};\n\n Component.toString = Component.prototype.toString = prettyPrintMixins;\n if (debug.enabled) {\n Component.describe = Component.prototype.describe = Component.toString();\n }\n\n // 'options' is optional hash to be merged with 'defaults' in the component definition\n Component.attachTo = attachTo;\n // enables extension of existing \"base\" Components\n Component.mixin = function() {\n var newComponent = define(); //TODO: fix pretty print\n var newPrototype = Object.create(Component.prototype);\n newPrototype.mixedIn = [].concat(Component.prototype.mixedIn);\n newPrototype.defaults = utils.merge(Component.prototype.defaults);\n newPrototype.attrDef = Component.prototype.attrDef;\n compose.mixin(newPrototype, arguments);\n newComponent.prototype = newPrototype;\n newComponent.prototype.constructor = newComponent;\n return newComponent;\n };\n Component.teardownAll = teardownAll;\n\n // prepend common mixins to supplied list, then mixin all flavors\n if (debug.enabled) {\n mixins.unshift(withLogging);\n }\n mixins.unshift(withBase, advice.withAdvice, registry.withRegistration);\n compose.mixin(Component.prototype, mixins);\n\n return Component;\n }\n\n define.teardownAll = function() {\n registry.components.slice().forEach(function(c) {\n c.component.teardownAll();\n });\n registry.reset();\n };\n\n return define;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(7)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(utils) {\n 'use strict';\n\n var dontLock = ['mixedIn', 'attrDef'];\n\n function setWritability(obj, writable) {\n Object.keys(obj).forEach(function (key) {\n if (dontLock.indexOf(key) < 0) {\n utils.propertyWritability(obj, key, writable);\n }\n });\n }\n\n function mixin(base, mixins) {\n base.mixedIn = Object.prototype.hasOwnProperty.call(base, 'mixedIn') ? base.mixedIn : [];\n\n for (var i = 0; i < mixins.length; i++) {\n if (base.mixedIn.indexOf(mixins[i]) == -1) {\n setWritability(base, false);\n mixins[i].call(base);\n base.mixedIn.push(mixins[i]);\n }\n }\n\n setWritability(base, true);\n }\n\n return {\n mixin: mixin\n };\n\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6)], __WEBPACK_AMD_DEFINE_RESULT__ = function(registry) {\n 'use strict';\n\n // ==========================================\n // Search object model\n // ==========================================\n\n function traverse(util, searchTerm, options) {\n options = options || {};\n var obj = options.obj || window;\n var path = options.path || ((obj == window) ? 'window' : '');\n var props = Object.keys(obj);\n props.forEach(function(prop) {\n if ((tests[util] || util)(searchTerm, obj, prop)) {\n console.log([path, '.', prop].join(''), '->', ['(', typeof obj[prop], ')'].join(''), obj[prop]);\n }\n if (Object.prototype.toString.call(obj[prop]) == '[object Object]' && (obj[prop] != obj) && path.split('.').indexOf(prop) == -1) {\n traverse(util, searchTerm, {obj: obj[prop], path: [path,prop].join('.')});\n }\n });\n }\n\n function search(util, expected, searchTerm, options) {\n if (!expected || typeof searchTerm == expected) {\n traverse(util, searchTerm, options);\n } else {\n console.error([searchTerm, 'must be', expected].join(' '));\n }\n }\n\n var tests = {\n 'name': function(searchTerm, obj, prop) {return searchTerm == prop;},\n 'nameContains': function(searchTerm, obj, prop) {return prop.indexOf(searchTerm) > -1;},\n 'type': function(searchTerm, obj, prop) {return obj[prop] instanceof searchTerm;},\n 'value': function(searchTerm, obj, prop) {return obj[prop] === searchTerm;},\n 'valueCoerced': function(searchTerm, obj, prop) {return obj[prop] == searchTerm;}\n };\n\n function byName(searchTerm, options) {search('name', 'string', searchTerm, options);}\n function byNameContains(searchTerm, options) {search('nameContains', 'string', searchTerm, options);}\n function byType(searchTerm, options) {search('type', 'function', searchTerm, options);}\n function byValue(searchTerm, options) {search('value', null, searchTerm, options);}\n function byValueCoerced(searchTerm, options) {search('valueCoerced', null, searchTerm, options);}\n function custom(fn, options) {traverse(fn, null, options);}\n\n // ==========================================\n // Event logging\n // ==========================================\n\n var ALL = 'all'; //no filter\n\n //log nothing by default\n var logFilter = {\n eventNames: [],\n actions: []\n }\n\n function filterEventLogsByAction(/*actions*/) {\n var actions = [].slice.call(arguments);\n\n logFilter.eventNames.length || (logFilter.eventNames = ALL);\n logFilter.actions = actions.length ? actions : ALL;\n saveLogFilter();\n }\n\n function filterEventLogsByName(/*eventNames*/) {\n var eventNames = [].slice.call(arguments);\n\n logFilter.actions.length || (logFilter.actions = ALL);\n logFilter.eventNames = eventNames.length ? eventNames : ALL;\n saveLogFilter();\n }\n\n function hideAllEventLogs() {\n logFilter.actions = [];\n logFilter.eventNames = [];\n saveLogFilter();\n }\n\n function showAllEventLogs() {\n logFilter.actions = ALL;\n logFilter.eventNames = ALL;\n saveLogFilter();\n }\n\n function saveLogFilter() {\n try {\n if (window.localStorage) {\n localStorage.setItem('logFilter_eventNames', logFilter.eventNames);\n localStorage.setItem('logFilter_actions', logFilter.actions);\n }\n } catch (ignored) {};\n }\n\n function retrieveLogFilter() {\n var eventNames, actions;\n try {\n eventNames = (window.localStorage && localStorage.getItem('logFilter_eventNames'));\n actions = (window.localStorage && localStorage.getItem('logFilter_actions'));\n } catch (ignored) {\n return;\n }\n eventNames && (logFilter.eventNames = eventNames);\n actions && (logFilter.actions = actions);\n\n // reconstitute arrays in place\n Object.keys(logFilter).forEach(function(k) {\n var thisProp = logFilter[k];\n if (typeof thisProp == 'string' && thisProp !== ALL) {\n logFilter[k] = thisProp ? thisProp.split(',') : [];\n }\n });\n }\n\n return {\n\n enable: function(enable) {\n this.enabled = !!enable;\n\n if (enable && window.console) {\n console.info('Booting in DEBUG mode');\n console.info('You can configure event logging with DEBUG.events.logAll()/logNone()/logByName()/logByAction()');\n }\n\n retrieveLogFilter();\n\n window.DEBUG = this;\n },\n\n warn: function (message) {\n if (!window.console) { return; }\n var fn = (console.warn || console.log);\n fn.call(console, this.toString() + ': ' + message);\n },\n\n registry: registry,\n\n find: {\n byName: byName,\n byNameContains: byNameContains,\n byType: byType,\n byValue: byValue,\n byValueCoerced: byValueCoerced,\n custom: custom\n },\n\n events: {\n logFilter: logFilter,\n\n // Accepts any number of action args\n // e.g. DEBUG.events.logByAction(\"on\", \"off\")\n logByAction: filterEventLogsByAction,\n\n // Accepts any number of event name args (inc. regex or wildcards)\n // e.g. DEBUG.events.logByName(/ui.*/, \"*Thread*\");\n logByName: filterEventLogsByName,\n\n logAll: showAllEventLogs,\n logNone: hideAllEventLogs\n }\n };\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(7)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(utils) {\n 'use strict';\n\n var actionSymbols = {\n on: '<-',\n trigger: '->',\n off: 'x '\n };\n\n function elemToString(elem) {\n var tagStr = elem.tagName ? elem.tagName.toLowerCase() : elem.toString();\n var classStr = elem.className ? '.' + (elem.className) : '';\n var result = tagStr + classStr;\n return elem.tagName ? ['\\'', '\\''].join(result) : result;\n }\n\n function log(action, component, eventArgs) {\n if (!window.DEBUG || !window.DEBUG.enabled) {\n return;\n }\n var name, eventType, elem, fn, payload, logFilter, toRegExp, actionLoggable, nameLoggable, info;\n\n if (typeof eventArgs[eventArgs.length - 1] == 'function') {\n fn = eventArgs.pop();\n fn = fn.unbound || fn; // use unbound version if any (better info)\n }\n\n if (eventArgs.length == 1) {\n elem = component.$node[0];\n eventType = eventArgs[0];\n } else if ((eventArgs.length == 2) && typeof eventArgs[1] == 'object' && !eventArgs[1].type) {\n //2 args, first arg is not elem\n elem = component.$node[0];\n eventType = eventArgs[0];\n if (action == \"trigger\") {\n payload = eventArgs[1];\n }\n } else {\n //2+ args, first arg is elem\n elem = eventArgs[0];\n eventType = eventArgs[1];\n if (action == \"trigger\") {\n payload = eventArgs[2];\n }\n }\n\n name = typeof eventType == 'object' ? eventType.type : eventType;\n\n logFilter = DEBUG.events.logFilter;\n\n // no regex for you, actions...\n actionLoggable = logFilter.actions == 'all' || (logFilter.actions.indexOf(action) > -1);\n // event name filter allow wildcards or regex...\n toRegExp = function(expr) {\n return expr.test ? expr : new RegExp('^' + expr.replace(/\\*/g, '.*') + '$');\n };\n nameLoggable =\n logFilter.eventNames == 'all' ||\n logFilter.eventNames.some(function(e) {return toRegExp(e).test(name);});\n\n if (actionLoggable && nameLoggable) {\n info = [actionSymbols[action], action, '[' + name + ']'];\n payload && info.push(payload);\n info.push(elemToString(elem));\n info.push(component.constructor.describe.split(' ').slice(0,3).join(' '));\n console.groupCollapsed && action == 'trigger' && console.groupCollapsed(action, name);\n // IE9 doesn't define `apply` for console methods, but this works everywhere:\n Function.prototype.apply.call(console.info, console, info);\n }\n }\n\n function withLogging() {\n this.before('trigger', function() {\n log('trigger', this, utils.toArray(arguments));\n });\n if (console.groupCollapsed) {\n this.after('trigger', function() {\n console.groupEnd();\n });\n }\n this.before('on', function() {\n log('on', this, utils.toArray(arguments));\n });\n this.before('off', function() {\n log('off', this, utils.toArray(arguments));\n });\n }\n\n return withLogging;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n 'use strict';\n\n function parseEventArgs(instance, args) {\n var element, type, callback;\n var end = args.length;\n\n if (typeof args[end - 1] == 'function') {\n end -= 1;\n callback = args[end];\n }\n\n if (typeof args[end - 1] == 'object') {\n end -= 1;\n }\n\n if (end == 2) {\n element = args[0];\n type = args[1];\n } else {\n element = instance.node;\n type = args[0];\n }\n\n return {\n element: element,\n type: type,\n callback: callback\n };\n }\n\n function matchEvent(a, b) {\n return (\n (a.element == b.element) &&\n (a.type == b.type) &&\n (b.callback == null || (a.callback == b.callback))\n );\n }\n\n function Registry() {\n\n var registry = this;\n\n (this.reset = function() {\n this.components = [];\n this.allInstances = {};\n this.events = [];\n }).call(this);\n\n function ComponentInfo(component) {\n this.component = component;\n this.attachedTo = [];\n this.instances = {};\n\n this.addInstance = function(instance) {\n var instanceInfo = new InstanceInfo(instance);\n this.instances[instance.identity] = instanceInfo;\n this.attachedTo.push(instance.node);\n\n return instanceInfo;\n };\n\n this.removeInstance = function(instance) {\n delete this.instances[instance.identity];\n var indexOfNode = this.attachedTo.indexOf(instance.node);\n (indexOfNode > -1) && this.attachedTo.splice(indexOfNode, 1);\n\n if (!Object.keys(this.instances).length) {\n //if I hold no more instances remove me from registry\n registry.removeComponentInfo(this);\n }\n };\n\n this.isAttachedTo = function(node) {\n return this.attachedTo.indexOf(node) > -1;\n };\n }\n\n function InstanceInfo(instance) {\n this.instance = instance;\n this.events = [];\n\n this.addBind = function(event) {\n this.events.push(event);\n registry.events.push(event);\n };\n\n this.removeBind = function(event) {\n for (var i = 0, e; e = this.events[i]; i++) {\n if (matchEvent(e, event)) {\n this.events.splice(i, 1);\n }\n }\n };\n }\n\n this.addInstance = function(instance) {\n var component = this.findComponentInfo(instance);\n\n if (!component) {\n component = new ComponentInfo(instance.constructor);\n this.components.push(component);\n }\n\n var inst = component.addInstance(instance);\n\n this.allInstances[instance.identity] = inst;\n\n return component;\n };\n\n this.removeInstance = function(instance) {\n //remove from component info\n var componentInfo = this.findComponentInfo(instance);\n componentInfo && componentInfo.removeInstance(instance);\n\n //remove from registry\n delete this.allInstances[instance.identity];\n };\n\n this.removeComponentInfo = function(componentInfo) {\n var index = this.components.indexOf(componentInfo);\n (index > -1) && this.components.splice(index, 1);\n };\n\n this.findComponentInfo = function(which) {\n var component = which.attachTo ? which : which.constructor;\n\n for (var i = 0, c; c = this.components[i]; i++) {\n if (c.component === component) {\n return c;\n }\n }\n\n return null;\n };\n\n this.findInstanceInfo = function(instance) {\n return this.allInstances[instance.identity] || null;\n };\n\n this.getBoundEventNames = function(instance) {\n return this.findInstanceInfo(instance).events.map(function(ev) {\n return ev.type;\n });\n };\n\n this.findInstanceInfoByNode = function(node) {\n var result = [];\n Object.keys(this.allInstances).forEach(function(k) {\n var thisInstanceInfo = this.allInstances[k];\n if (thisInstanceInfo.instance.node === node) {\n result.push(thisInstanceInfo);\n }\n }, this);\n return result;\n };\n\n this.on = function(componentOn) {\n var instance = registry.findInstanceInfo(this), boundCallback;\n\n // unpacking arguments by hand benchmarked faster\n var l = arguments.length, i = 1;\n var otherArgs = new Array(l - 1);\n for (; i < l; i++) {\n otherArgs[i - 1] = arguments[i];\n }\n\n if (instance) {\n boundCallback = componentOn.apply(null, otherArgs);\n if (boundCallback) {\n otherArgs[otherArgs.length - 1] = boundCallback;\n }\n var event = parseEventArgs(this, otherArgs);\n instance.addBind(event);\n }\n };\n\n this.off = function(/*el, type, callback*/) {\n var event = parseEventArgs(this, arguments),\n instance = registry.findInstanceInfo(this);\n\n if (instance) {\n instance.removeBind(event);\n }\n\n //remove from global event registry\n for (var i = 0, e; e = registry.events[i]; i++) {\n if (matchEvent(e, event)) {\n registry.events.splice(i, 1);\n }\n }\n };\n\n // debug tools may want to add advice to trigger\n registry.trigger = function() {};\n\n this.teardown = function() {\n registry.removeInstance(this);\n };\n\n this.withRegistration = function() {\n this.after('initialize', function() {\n registry.addInstance(this);\n });\n\n this.around('on', registry.on);\n this.after('off', registry.off);\n //debug tools may want to add advice to trigger\n window.DEBUG && (false).enabled && this.after('trigger', registry.trigger);\n this.after('teardown', {obj: registry, fnName: 'teardown'});\n };\n\n }\n\n return new Registry;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(4)], __WEBPACK_AMD_DEFINE_RESULT__ = function(debug) {\n 'use strict';\n\n var DEFAULT_INTERVAL = 100;\n\n function canWriteProtect() {\n var writeProtectSupported = debug.enabled && !Object.propertyIsEnumerable('getOwnPropertyDescriptor');\n if (writeProtectSupported) {\n //IE8 getOwnPropertyDescriptor is built-in but throws exeption on non DOM objects\n try {\n Object.getOwnPropertyDescriptor(Object, 'keys');\n } catch (e) {\n return false;\n }\n }\n\n return writeProtectSupported;\n }\n\n var utils = {\n\n isDomObj: function(obj) {\n return !!(obj.nodeType || (obj === window));\n },\n\n toArray: function(obj, from) {\n from = from || 0;\n var len = obj.length, arr = new Array(len - from);\n for (var i = from; i < len; i++) {\n arr[i - from] = obj[i];\n }\n return arr;\n },\n\n // returns new object representing multiple objects merged together\n // optional final argument is boolean which specifies if merge is recursive\n // original objects are unmodified\n //\n // usage:\n // var base = {a:2, b:6};\n // var extra = {b:3, c:4};\n // merge(base, extra); //{a:2, b:3, c:4}\n // base; //{a:2, b:6}\n //\n // var base = {a:2, b:6};\n // var extra = {b:3, c:4};\n // var extraExtra = {a:4, d:9};\n // merge(base, extra, extraExtra); //{a:4, b:3, c:4. d: 9}\n // base; //{a:2, b:6}\n //\n // var base = {a:2, b:{bb:4, cc:5}};\n // var extra = {a:4, b:{cc:7, dd:1}};\n // merge(base, extra, true); //{a:4, b:{bb:4, cc:7, dd:1}}\n // base; //{a:2, b:{bb:4, cc:5}};\n\n merge: function(/*obj1, obj2,....deepCopy*/) {\n // unpacking arguments by hand benchmarked faster\n var l = arguments.length,\n args = new Array(l + 1);\n\n if (l === 0) {\n return {};\n }\n\n for (var i = 0; i < l; i++) {\n args[i + 1] = arguments[i];\n }\n\n //start with empty object so a copy is created\n args[0] = {};\n\n if (args[args.length - 1] === true) {\n //jquery extend requires deep copy as first arg\n args.pop();\n args.unshift(true);\n }\n\n return $.extend.apply(undefined, args);\n },\n\n // updates base in place by copying properties of extra to it\n // optionally clobber protected\n // usage:\n // var base = {a:2, b:6};\n // var extra = {c:4};\n // push(base, extra); //{a:2, b:6, c:4}\n // base; //{a:2, b:6, c:4}\n //\n // var base = {a:2, b:6};\n // var extra = {b: 4 c:4};\n // push(base, extra, true); //Error (\"utils.push attempted to overwrite 'b' while running in protected mode\")\n // base; //{a:2, b:6}\n //\n // objects with the same key will merge recursively when protect is false\n // eg:\n // var base = {a:16, b:{bb:4, cc:10}};\n // var extra = {b:{cc:25, dd:19}, c:5};\n // push(base, extra); //{a:16, {bb:4, cc:25, dd:19}, c:5}\n //\n push: function(base, extra, protect) {\n if (base) {\n Object.keys(extra || {}).forEach(function(key) {\n if (base[key] && protect) {\n throw new Error('utils.push attempted to overwrite \"' + key + '\" while running in protected mode');\n }\n\n if (typeof base[key] == 'object' && typeof extra[key] == 'object') {\n // recurse\n this.push(base[key], extra[key]);\n } else {\n // no protect, so extra wins\n base[key] = extra[key];\n }\n }, this);\n }\n\n return base;\n },\n\n // If obj.key points to an enumerable property, return its value\n // If obj.key points to a non-enumerable property, return undefined\n getEnumerableProperty: function(obj, key) {\n return obj.propertyIsEnumerable(key) ? obj[key] : undefined;\n },\n\n // build a function from other function(s)\n // utils.compose(a,b,c) -> a(b(c()));\n // implementation lifted from underscore.js (c) 2009-2012 Jeremy Ashkenas\n compose: function() {\n var funcs = arguments;\n\n return function() {\n var args = arguments;\n\n for (var i = funcs.length - 1; i >= 0; i--) {\n args = [funcs[i].apply(this, args)];\n }\n\n return args[0];\n };\n },\n\n // Can only unique arrays of homogeneous primitives, e.g. an array of only strings, an array of only booleans, or an array of only numerics\n uniqueArray: function(array) {\n var u = {}, a = [];\n\n for (var i = 0, l = array.length; i < l; ++i) {\n if (u.hasOwnProperty(array[i])) {\n continue;\n }\n\n a.push(array[i]);\n u[array[i]] = 1;\n }\n\n return a;\n },\n\n debounce: function(func, wait, immediate) {\n if (typeof wait != 'number') {\n wait = DEFAULT_INTERVAL;\n }\n\n var timeout, result;\n\n return function() {\n var context = this, args = arguments;\n var later = function() {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n }\n };\n var callNow = immediate && !timeout;\n\n timeout && clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n\n if (callNow) {\n result = func.apply(context, args);\n }\n\n return result;\n };\n },\n\n throttle: function(func, wait) {\n if (typeof wait != 'number') {\n wait = DEFAULT_INTERVAL;\n }\n\n var context, args, timeout, throttling, more, result;\n var whenDone = this.debounce(function() {\n more = throttling = false;\n }, wait);\n\n return function() {\n context = this; args = arguments;\n var later = function() {\n timeout = null;\n if (more) {\n result = func.apply(context, args);\n }\n whenDone();\n };\n\n if (!timeout) {\n timeout = setTimeout(later, wait);\n }\n\n if (throttling) {\n more = true;\n } else {\n throttling = true;\n result = func.apply(context, args);\n }\n\n whenDone();\n return result;\n };\n },\n\n countThen: function(num, base) {\n return function() {\n if (!--num) { return base.apply(this, arguments); }\n };\n },\n\n delegate: function(rules) {\n return function(e, data) {\n var target = $(e.target), parent;\n\n Object.keys(rules).forEach(function(selector) {\n if (!e.isPropagationStopped() && (parent = target.closest(selector)).length) {\n data = data || {};\n e.currentTarget = data.el = parent[0];\n return rules[selector].apply(this, [e, data]);\n }\n }, this);\n };\n },\n\n // ensures that a function will only be called once.\n // usage:\n // will only create the application once\n // var initialize = utils.once(createApplication)\n // initialize();\n // initialize();\n //\n // will only delete a record once\n // var myHanlder = function () {\n // $.ajax({type: 'DELETE', url: 'someurl.com', data: {id: 1}});\n // };\n // this.on('click', utils.once(myHandler));\n //\n once: function(func) {\n var ran, result;\n\n return function() {\n if (ran) {\n return result;\n }\n\n ran = true;\n result = func.apply(this, arguments);\n\n return result;\n };\n },\n\n propertyWritability: function(obj, prop, writable) {\n if (canWriteProtect() && obj.hasOwnProperty(prop)) {\n Object.defineProperty(obj, prop, { writable: writable });\n }\n },\n\n // Property locking/unlocking\n mutateProperty: function(obj, prop, op) {\n var writable;\n\n if (!canWriteProtect() || !obj.hasOwnProperty(prop)) {\n op.call(obj);\n return;\n }\n\n writable = Object.getOwnPropertyDescriptor(obj, prop).writable;\n\n Object.defineProperty(obj, prop, { writable: true });\n op.call(obj);\n Object.defineProperty(obj, prop, { writable: writable });\n\n }\n\n };\n\n return utils;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(7),\n __webpack_require__(6),\n __webpack_require__(4)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(utils, registry, debug) {\n 'use strict';\n\n // common mixin allocates basic functionality - used by all component prototypes\n // callback context is bound to component\n var componentId = 0;\n\n function teardownInstance(instanceInfo) {\n instanceInfo.events.slice().forEach(function(event) {\n var args = [event.type];\n\n event.element && args.unshift(event.element);\n (typeof event.callback == 'function') && args.push(event.callback);\n\n this.off.apply(this, args);\n }, instanceInfo.instance);\n }\n\n function checkSerializable(type, data) {\n try {\n window.postMessage(data, '*');\n } catch (e) {\n debug.warn.call(this, [\n 'Event \"', type, '\" was triggered with non-serializable data. ',\n 'Flight recommends you avoid passing non-serializable data in events.'\n ].join(''));\n }\n }\n\n function warnAboutReferenceType(key) {\n debug.warn.call(this, [\n 'Attribute \"', key, '\" defaults to an array or object. ',\n 'Enclose this in a function to avoid sharing between component instances.'\n ].join(''));\n }\n\n function initAttributes(attrs) {\n var definedKeys = [], incomingKeys;\n\n this.attr = new this.attrDef;\n\n if (debug.enabled && window.console) {\n for (var key in this.attrDef.prototype) {\n definedKeys.push(key);\n }\n incomingKeys = Object.keys(attrs);\n\n for (var i = incomingKeys.length - 1; i >= 0; i--) {\n if (definedKeys.indexOf(incomingKeys[i]) == -1) {\n debug.warn.call(this, 'Passed unused attribute \"' + incomingKeys[i] + '\".');\n break;\n }\n }\n }\n\n for (var key in this.attrDef.prototype) {\n if (typeof attrs[key] == 'undefined') {\n if (this.attr[key] === null) {\n throw new Error('Required attribute \"' + key +\n '\" not specified in attachTo for component \"' + this.toString() + '\".');\n }\n // Warn about reference types in attributes\n if (debug.enabled && typeof this.attr[key] === 'object') {\n warnAboutReferenceType.call(this, key);\n }\n } else {\n this.attr[key] = attrs[key];\n }\n\n if (typeof this.attr[key] == 'function') {\n this.attr[key] = this.attr[key].call(this);\n }\n }\n\n }\n\n function initDeprecatedAttributes(attrs) {\n // merge defaults with supplied options\n // put options in attr.__proto__ to avoid merge overhead\n var attr = Object.create(attrs);\n\n for (var key in this.defaults) {\n if (!attrs.hasOwnProperty(key)) {\n attr[key] = this.defaults[key];\n // Warn about reference types in defaultAttrs\n if (debug.enabled && typeof this.defaults[key] === 'object') {\n warnAboutReferenceType.call(this, key);\n }\n }\n }\n\n this.attr = attr;\n\n Object.keys(this.defaults || {}).forEach(function(key) {\n if (this.defaults[key] === null && this.attr[key] === null) {\n throw new Error('Required attribute \"' + key +\n '\" not specified in attachTo for component \"' + this.toString() + '\".');\n }\n }, this);\n }\n\n function proxyEventTo(targetEvent) {\n return function(e, data) {\n $(e.target).trigger(targetEvent, data);\n };\n }\n\n function withBase() {\n\n // delegate trigger, bind and unbind to an element\n // if $element not supplied, use component's node\n // other arguments are passed on\n // event can be either a string specifying the type\n // of the event, or a hash specifying both the type\n // and a default function to be called.\n this.trigger = function() {\n var $element, type, data, event, defaultFn;\n var lastIndex = arguments.length - 1, lastArg = arguments[lastIndex];\n\n if (typeof lastArg != 'string' && !(lastArg && lastArg.defaultBehavior)) {\n lastIndex--;\n data = lastArg;\n }\n\n if (lastIndex == 1) {\n $element = $(arguments[0]);\n event = arguments[1];\n } else {\n $element = this.$node;\n event = arguments[0];\n }\n\n if (event.defaultBehavior) {\n defaultFn = event.defaultBehavior;\n event = $.Event(event.type);\n }\n\n type = event.type || event;\n\n if (debug.enabled && window.postMessage) {\n checkSerializable.call(this, type, data);\n }\n\n if (typeof this.attr.eventData == 'object') {\n data = $.extend(true, {}, this.attr.eventData, data);\n }\n\n $element.trigger((event || type), data);\n\n if (defaultFn && !event.isDefaultPrevented()) {\n (this[defaultFn] || defaultFn).call(this, event, data);\n }\n\n return $element;\n };\n\n\n this.on = function() {\n var $element, type, callback, originalCb;\n var lastIndex = arguments.length - 1, origin = arguments[lastIndex];\n\n if (typeof origin == 'object') {\n //delegate callback\n originalCb = utils.delegate(\n this.resolveDelegateRules(origin)\n );\n } else if (typeof origin == 'string') {\n originalCb = proxyEventTo(origin);\n } else {\n originalCb = origin;\n }\n\n if (lastIndex == 2) {\n $element = $(arguments[0]);\n type = arguments[1];\n } else {\n $element = this.$node;\n type = arguments[0];\n }\n\n if (typeof originalCb != 'function' && typeof originalCb != 'object') {\n throw new Error('Unable to bind to \"' + type +\n '\" because the given callback is not a function or an object');\n }\n\n callback = originalCb.bind(this);\n callback.target = originalCb;\n callback.context = this;\n\n $element.on(type, callback);\n\n // store every bound version of the callback\n originalCb.bound || (originalCb.bound = []);\n originalCb.bound.push(callback);\n\n return callback;\n };\n\n this.off = function() {\n var $element, type, callback;\n var lastIndex = arguments.length - 1;\n\n if (typeof arguments[lastIndex] == 'function') {\n callback = arguments[lastIndex];\n lastIndex -= 1;\n }\n\n if (lastIndex == 1) {\n $element = $(arguments[0]);\n type = arguments[1];\n } else {\n $element = this.$node;\n type = arguments[0];\n }\n\n if (callback) {\n //this callback may be the original function or a bound version\n var boundFunctions = callback.target ? callback.target.bound : callback.bound || [];\n //set callback to version bound against this instance\n boundFunctions && boundFunctions.some(function(fn, i, arr) {\n if (fn.context && (this.identity == fn.context.identity)) {\n arr.splice(i, 1);\n callback = fn;\n return true;\n }\n }, this);\n $element.off(type, callback);\n } else {\n // Loop through the events of `this` instance\n // and unbind using the callback\n registry.findInstanceInfo(this).events.forEach(function (event) {\n if (type == event.type) {\n $element.off(type, event.callback);\n }\n });\n }\n\n return $element;\n };\n\n this.resolveDelegateRules = function(ruleInfo) {\n var rules = {};\n\n Object.keys(ruleInfo).forEach(function(r) {\n if (!(r in this.attr)) {\n throw new Error('Component \"' + this.toString() + '\" wants to listen on \"' + r + '\" but no such attribute was defined.');\n }\n rules[this.attr[r]] = (typeof ruleInfo[r] == 'string') ? proxyEventTo(ruleInfo[r]) : ruleInfo[r];\n }, this);\n\n return rules;\n };\n\n this.select = function(attributeKey) {\n return this.$node.find(this.attr[attributeKey]);\n };\n\n // New-style attributes\n\n this.attributes = function(attrs) {\n\n var Attributes = function() {};\n\n if (this.attrDef) {\n Attributes.prototype = new this.attrDef;\n }\n\n for (var name in attrs) {\n Attributes.prototype[name] = attrs[name];\n }\n\n this.attrDef = Attributes;\n };\n\n // Deprecated attributes\n\n this.defaultAttrs = function(defaults) {\n utils.push(this.defaults, defaults, true) || (this.defaults = defaults);\n };\n\n this.initialize = function(node, attrs) {\n attrs = attrs || {};\n this.identity || (this.identity = componentId++);\n\n if (!node) {\n throw new Error('Component needs a node');\n }\n\n if (node.jquery) {\n this.node = node[0];\n this.$node = node;\n } else {\n this.node = node;\n this.$node = $(node);\n }\n\n if (this.attrDef) {\n initAttributes.call(this, attrs);\n } else {\n initDeprecatedAttributes.call(this, attrs);\n }\n\n return this;\n };\n\n this.teardown = function() {\n teardownInstance(registry.findInstanceInfo(this));\n };\n }\n\n return withBase;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ }\n/******/ ])\n});\n","import React from 'react';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\nimport { useSelector } from 'react-redux';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { loadScript } from 'tradera-utils/script';\n\nconst LOCALES = {\n sv: 'sv-se',\n en: 'en-us',\n da: 'da-dk',\n de: 'de-de'\n};\n\nconst mapLocale = languageCodeIso2 =>\n languageCodeIso2 in LOCALES ? LOCALES[languageCodeIso2] : LOCALES['sv'];\n\nconst openQualtiveModal = async (config, translate) => {\n const { survey, title, ...surveyOptions } = config;\n const options = {\n title: translate(title ? title : 'qualtiveTitle_default'),\n darkMode: 'never',\n ...surveyOptions\n };\n\n if (!window.qualtive) {\n await loadScript('https://static.qualtive.io/client/web.v1.js');\n }\n window.qualtive?.present(survey, options);\n};\n\nexport const useQualtive = (customAttributes = {}) => {\n const { t } = useTranslator();\n const isQualtiveFeatureToggleEnabled = useSelector(\n state => state.environment?.featureSwitches?.['qualtive-feedback']\n );\n const memberId = useSelector(state => state.member?.memberId);\n const languageCodeIso2 = useSelector(\n state => state.language?.preferred?.languageCodeIso2\n );\n const isQualtiveEnabled =\n isQualtiveFeatureToggleEnabled && GdprSettings.isFunctionalEnabled();\n const config = {\n locale: mapLocale(languageCodeIso2),\n customAttributes\n };\n if (memberId) {\n config.user = { id: memberId };\n }\n\n return {\n isQualtiveEnabled,\n openQualtiveModal: survey => {\n if (isQualtiveEnabled) {\n openQualtiveModal(\n {\n ...config,\n ...survey\n },\n t\n );\n }\n }\n };\n};\n\nexport const withQualtive = WrappedComponent => {\n function WithQualtive(props) {\n const { isQualtiveEnabled, openQualtiveModal } = useQualtive();\n return (\n \n );\n }\n\n WithQualtive.displayName = `withQualtive(${WrappedComponent.displayName ||\n WrappedComponent.name}`;\n\n return WithQualtive;\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as Sentry from '@sentry/react';\n\nclass ApplicationErrorBoundary extends React.Component {\n componentDidCatch() {}\n\n render() {\n const { children, fallback, capture } = this.props;\n\n if (!capture) {\n return children;\n }\n\n return (\n \n {children}\n \n );\n }\n}\n\nApplicationErrorBoundary.propTypes = {\n // Capture function, if false then errors are silently ignored\n capture: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]).isRequired,\n fallback: PropTypes.node\n};\n\nApplicationErrorBoundary.defaultProps = {\n capture: true,\n fallback: null\n};\n\nexport default ApplicationErrorBoundary;\n","import { localStore } from 'utils/storage';\n\nclass ResultSet {\n constructor(result) {\n this._result = result;\n this._result.orderByTimestamp = this.orderByTimestamp.bind(this);\n this._result.orderByValue = this.orderByValue.bind(this);\n this._result.orderByExpire = this.orderByExpire.bind(this);\n }\n\n get() {\n return this._result;\n }\n\n _orderBy(orderProp) {\n function orderByProp(a, b) {\n if (a[orderProp] === b[orderProp]) {\n return 0;\n }\n\n return a[orderProp] < b[orderProp] ? 1 : -1;\n }\n\n return this._result.sort(orderByProp);\n }\n\n orderByTimestamp() {\n return this._orderBy('timestamp');\n }\n\n orderByValue() {\n return this._orderBy('value');\n }\n\n orderByExpire() {\n return this._orderBy('expires');\n }\n}\n\nclass StorageService {\n constructor(namespace, options = {}) {\n this.namespace = namespace || 'default';\n this.datastore = options.datastore || localStore;\n }\n\n getDataSafe() {\n return this.datastore.getItem(this.namespace) || {};\n }\n\n store(data) {\n this.datastore.setItem(this.namespace, data);\n return true;\n }\n\n remove(key) {\n let data = this.getDataSafe(),\n encodedKey = encodeURI(key).toLowerCase();\n\n this.purge(encodedKey, data);\n }\n\n purge(key, data) {\n delete data[key];\n this.store(data);\n return true;\n }\n\n get(key) {\n let data = this.getDataSafe(),\n encodedKey = encodeURI(key).toLowerCase();\n\n if (\n data[encodedKey] &&\n data[encodedKey].expires &&\n data[encodedKey].expires < new Date().getTime()\n ) {\n this.purge(encodedKey, data);\n }\n\n return (data[encodedKey] && data[encodedKey].value) || null;\n }\n\n set(key, value, expires, timestamp) {\n let data = this.getDataSafe(),\n encodedKey = encodeURI(key).toLowerCase();\n\n data[encodedKey] = {\n expires: (expires && expires.getTime()) || null,\n timestamp:\n (timestamp && timestamp.getTime()) || new Date().getTime(),\n value: value\n };\n\n this.datastore.setItem(this.namespace, data);\n\n return data[encodedKey] || null;\n }\n\n removeExpired() {\n let data = this.getDataSafe(),\n prop;\n\n for (prop in data) {\n if (data.hasOwnProperty(prop)) {\n if (\n data[prop].expires &&\n data[prop].expires < new Date().getTime()\n ) {\n this.purge(prop, data);\n }\n }\n }\n }\n\n fetch() {\n function addRow(row, prop, propValue) {\n row.key = decodeURI(prop);\n row.value = propValue.value;\n row.timestamp = propValue.timestamp;\n return row;\n }\n\n let data = this.getDataSafe(),\n rows = [],\n prop;\n\n for (prop in data) {\n if (data.hasOwnProperty(prop)) {\n rows.push(addRow({}, prop, data[prop]));\n }\n }\n\n return new ResultSet(rows).get();\n }\n\n flush() {\n return this.datastore.clearByPrefix(this.namespace);\n }\n}\n\nexport default StorageService;\n","import $ from 'jquery';\nimport './utils/jquery-events';\n\nimport GdprMount from 'tradera-components/alerts/gdpr/gdpr-mount';\nimport MultiCurrencyBoot from 'components/multi-currency/multi-currency-boot';\nimport { MainNavigation } from 'static/script/containers/navigation/main-navigation';\nimport reactAdsLoader from 'tradera-components/ads/boot-react-ads';\n\nexport default async initData => {\n window.$ = window.$ || $;\n GdprMount(initData);\n await MultiCurrencyBoot.boot(initData);\n MainNavigation();\n reactAdsLoader(initData);\n};\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport ALink from 'tradera-components/alink';\nimport LoadingIcon from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\n\nconst noop = () => {};\n\nexport const Button = props => {\n const {\n theme,\n size,\n children,\n link,\n disabled,\n unbutton,\n wide,\n round,\n translucent,\n className,\n branded,\n outline,\n fluid,\n click,\n iconHidden,\n iconFixed,\n href,\n tag,\n loading,\n toggle,\n toggleActive,\n hoverColor,\n input,\n nowrap,\n ...otherProps\n } = props;\n\n const allClasses = {\n color:\n theme && outline\n ? `btn-outline-${theme}`\n : theme\n ? `btn-${theme}`\n : '',\n hover: hoverColor && `btn-hover-${hoverColor}`,\n size: size && `btn-${size}`,\n reset: unbutton && 'unbutton',\n transparent: translucent && 'btn-translucent',\n link: link && 'btn-link',\n wide: wide && 'btn-wide',\n round: round && 'btn-round',\n fluid: fluid && 'btn-fluid',\n loading: loading && 'btn-loading',\n tag: tag && 'btn-tag',\n hiddenIcon: iconHidden && 'btn--icon-hidden',\n fixedIcon: iconFixed && 'btn--icon-fixed',\n nowrap: nowrap && 'text-nowrap text-truncate',\n toggle:\n toggle && toggleActive\n ? 'btn-toggle active'\n : toggle\n ? 'btn-toggle'\n : ''\n };\n\n const buttonClasses = ['btn', className, ...Object.values(allClasses)]\n .filter(Boolean)\n .join(' ');\n\n const onBtnClick = useCallback(\n event => {\n if (typeof click === 'function' && !loading) {\n click(event);\n }\n },\n [click, loading]\n );\n\n if (input) {\n return ;\n }\n\n return href ? (\n \n {children}\n \n ) : (\n \n {children}\n {loading ? (\n \n ) : null}\n \n );\n};\n\nButton.propTypes = {\n theme: PropTypes.oneOf([\n 'branded',\n 'primary',\n 'secondary',\n 'tertiary',\n 'success',\n 'warning',\n 'danger',\n 'dark',\n 'function',\n 'info',\n 'light',\n 'white'\n ]),\n size: PropTypes.oneOf(['xs', 'sm', 'md', 'lg']),\n link: PropTypes.bool,\n disabled: PropTypes.bool,\n unbutton: PropTypes.bool,\n wide: PropTypes.bool,\n round: PropTypes.bool,\n translucent: PropTypes.bool,\n className: PropTypes.string,\n click: PropTypes.func,\n children: PropTypes.node,\n branded: PropTypes.bool,\n outline: PropTypes.bool,\n fluid: PropTypes.bool,\n iconHidden: PropTypes.bool,\n iconFixed: PropTypes.bool,\n href: PropTypes.string,\n tag: PropTypes.bool,\n loading: PropTypes.bool,\n toggle: PropTypes.bool,\n toggleActive: PropTypes.bool,\n hoverColor: PropTypes.string\n};\n\nButton.defaultProps = {\n click: noop,\n disabled: false\n};\n","import campaignCodeActions from './campaign-code-actions';\nimport { webApiClient } from 'tradera-utils/http';\nimport { selectCategoryAttributes } from '../selectors/attribute-selectors';\nimport ThrottledAction from 'tradera-apps/syi/script/app_react/utils/throttled-action';\nimport logger from 'packages/logger';\nimport { selectPreferredLanguage } from 'tradera-state/language/selectors';\n\nconst throttleTimeout = 2000;\nconst suggestionsThrottle = new ThrottledAction(throttleTimeout, true);\nconst imageToColorsThrottle = new ThrottledAction(throttleTimeout, false);\n\nconst INPUT_TYPE_MAP = {\n Button: 'button',\n Color: 'color',\n Dropdown: 'dropdown'\n};\n\nconst COLOR_ATTRIBUTE_ID = 2;\n\nconst transformServerOption = serverOption => {\n return {\n value:\n typeof serverOption === 'string'\n ? serverOption\n : serverOption.value,\n sortOrder: serverOption.sortOrder,\n isActive: false,\n warningLabel: {\n title:\n serverOption.warningLabel !== undefined &&\n serverOption.warningLabel !== null\n ? serverOption.warningLabel.title\n : null,\n text:\n serverOption.warningLabel !== undefined &&\n serverOption.warningLabel !== null\n ? serverOption.warningLabel.text\n : null\n }\n };\n};\n\nconst transformServerAttribute = attribute => {\n return {\n id: attribute.id,\n title: attribute.displayName,\n description: attribute.description,\n sortOrder: attribute.sortOrder,\n backingField: attribute.backingField,\n options: attribute.possibleValues.map(transformServerOption),\n inputType: INPUT_TYPE_MAP[attribute.type],\n isMultiSelect: attribute.isMultiSelect,\n maxNumberOfValues: attribute.maxNumberOfValues,\n minNumberOfValues: attribute.minNumberOfValues,\n numberOfValuesSelected: 0,\n shouldTranslateValues: attribute.shouldTranslateValues,\n preserveOptionsOrder: attribute.preserveOptionsOrder\n };\n};\n\nexport const setAttributesFromDraft = draft => dispatch => {\n dispatch({\n type: 'SET_DRAFT_ATTRIBUTES',\n payload: draft.attributeValues\n });\n};\n\nexport const reset = () => dispatch => {\n dispatch({\n type: 'RESET_ATTRIBUTES'\n });\n};\n\nexport const resetSelectedAttributes = () => dispatch => {\n dispatch({\n type: 'RESET_SELECTED_ATTRIBUTES'\n });\n};\n\nexport const fetchForCategory = categoryId => async (dispatch, getState) => {\n dispatch(reset());\n\n if (!categoryId) {\n return;\n }\n\n try {\n const { languageCodeIso2 } = selectPreferredLanguage(getState());\n const response = await webApiClient.get(\n `/selling/attributes/?categoryId=${categoryId}&locale=${languageCodeIso2}`\n );\n dispatch({\n type: 'SET_CATEGORY_ATTRIBUTES',\n payload: response.data.attributeDefinitions.map(\n transformServerAttribute\n )\n });\n dispatch(updateCategoryAttributesOptionsStatuses());\n dispatch(campaignCodeActions.validateCampaignCode());\n } catch (error) {\n dispatch(reset());\n throw error;\n }\n};\n\nconst updateCategoryAttributesOptionsStatuses = () => dispatch => {\n dispatch({\n type: 'UPDATE_CATEGORY_ATTRIBUTES_OPTIONS_STATUSES'\n });\n};\n\nexport const updateAttribute = (\n attributeId,\n optionValue,\n activate,\n onUpdated\n) => (dispatch, getState) => {\n const {\n maxNumberOfValues,\n numberOfValuesSelected,\n isMultiSelect\n } = selectCategoryAttributes(getState()).find(a => a.id === attributeId);\n\n if (\n activate &&\n isMultiSelect &&\n maxNumberOfValues === numberOfValuesSelected\n ) {\n return;\n }\n\n dispatch({\n type: 'SET_CATEGORY_ATTRIBUTE_OPTION',\n payload: {\n attributeId,\n optionValue,\n activate\n }\n });\n dispatch(campaignCodeActions.validateCampaignCode());\n if (onUpdated) {\n onUpdated();\n }\n};\n\nexport const resetAttribute = attributeId => dispatch => {\n dispatch({\n type: 'SET_CATEGORY_ATTRIBUTE_OPTION',\n payload: {\n attributeId,\n activate: false\n }\n });\n dispatch(campaignCodeActions.validateCampaignCode());\n};\n\nexport const throttledFetchCategoryAttributeSuggestions = (\n categoryId,\n shortDescription\n) => dispatch => {\n const action = () => {\n dispatch(\n fetchCategoryAttributeSuggestions(categoryId, shortDescription)\n );\n };\n suggestionsThrottle.execute(action);\n};\n\nexport const throttledFetchImageAttributeSuggestions = draftImageIds => (\n dispatch,\n getState\n) => {\n const featureSwitches = getState().environment.featureSwitches;\n if (\n !featureSwitches['syi-image-attribute-suggestions'] ||\n !draftImageIds ||\n draftImageIds.length === 0\n ) {\n return;\n }\n const action = () => {\n dispatch(fetchImageAttributeSuggestions(draftImageIds));\n };\n imageToColorsThrottle.execute(action);\n};\n\nexport const resetImageAttributesSuggestions = () => ({\n type: 'RESET_IMAGE_ATTRIBUTES_SUGGESTIONS'\n});\n\nconst fetchImageAttributeSuggestions = draftImageIds => async dispatch => {\n dispatch(resetImageAttributesSuggestions());\n\n const paramKeyPart = 'imageIds=';\n const query = paramKeyPart + draftImageIds.join(`&${paramKeyPart}`);\n\n try {\n const response = await webApiClient.get(`/images/colors?${query}`);\n\n const colors = response.data?.colorValues?.map(cv => cv.color) || [];\n\n dispatch({\n type: 'SET_IMAGE_ATTRIBUTES_SUGGESTIONS',\n payload: {\n suggestedAttributes: [\n {\n id: COLOR_ATTRIBUTE_ID,\n name: 'color',\n values: colors\n }\n ]\n }\n });\n } catch (error) {\n logger(error);\n }\n};\n\nexport const fetchCategoryAttributeSuggestions = (\n categoryId,\n shortDescription\n) => async (dispatch, getState) => {\n const featureSwitches = getState().environment.featureSwitches;\n if (!featureSwitches['syi-attribute-suggestions']) {\n return;\n }\n\n if (!categoryId || !shortDescription) {\n return;\n }\n\n const splitTestGroup = getState().environment.splitTestGroups[\n 'attribute_suggestion_extractor'\n ];\n if (!splitTestEnabled(splitTestGroup)) {\n return;\n }\n const extractorType = getAttributeSuggestionExtractor(splitTestGroup);\n\n try {\n let params = {\n categoryId,\n shortDescription,\n extractorType\n };\n const response = await webApiClient.post(\n '/selling/suggest/attributes',\n params\n );\n\n dispatch({\n type: 'SET_CATEGORY_ATTRIBUTES_SUGGESTIONS',\n payload: {\n suggestedAttributes: response.data.attributeValues.termAttributeValues.map(\n transformServerAttributeSuggestion\n ),\n suggestionsExtractorType: response.data.extractorType\n }\n });\n } catch (error) {\n dispatch({\n type: 'RESET_ATTRIBUTES'\n });\n throw error;\n }\n};\n\nconst splitTestEnabled = splitTest => splitTest !== 'control';\n\nconst getAttributeSuggestionExtractor = splitTest => {\n switch (splitTest) {\n case 'code':\n return 0;\n case 'tradera':\n return 1;\n case 'google':\n return 2;\n default:\n return 0;\n }\n};\n\nconst transformServerAttributeSuggestion = attributeSuggestion => {\n return {\n id: attributeSuggestion.id,\n name: attributeSuggestion.name,\n values: attributeSuggestion.values\n };\n};\n","import React, { useEffect, useState } from 'react';\nimport { memberIdentificationClient } from 'tradera-utils/http';\nimport { Trans, useTranslator } from 'tradera-lang/translate';\nimport { LocalLoader } from 'tradera-components/loader/loader';\nimport qs from 'qs';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\n\nconst STATE = {\n VERIFYING: 'VERIFYING',\n ERROR_UNAVAILABLE: 'ERROR_UNAVAILABLE',\n CONTACT_CUSTOMER_SUPPORT: 'CONTACT_CUSTOMER_SUPPORT'\n};\n\nexport const handleMitIdQueryParam = (t, publishAction, errorAction) => {\n const { identified } = qs.parse(location.search, {\n ignoreQueryPrefix: true\n });\n if (identified === '1') {\n memberIdentificationClient\n .command('MitIdSessionStatus', {})\n .then(({ errors }) => {\n if (errors.length > 0) {\n errors.forEach(error =>\n GtmService.trackAction('MitId', 'Error', error)\n );\n errorAction(\n t(\n 'international_identification_contactCustomerSupportText'\n )\n );\n } else {\n GtmService.trackAction('MitId', 'Success', 'Mobile');\n publishAction(t);\n }\n return;\n })\n .catch(() => {\n GtmService.trackAction('MitId', 'Error', 'ErrorUnavailable');\n errorAction(t('international_identification_errorUnavailable'));\n });\n }\n\n if (identified === '0') {\n GtmService.trackAction('MitId', 'Error', 'MitIdError');\n errorAction(\n t('international_identification_contactCustomerSupportText')\n );\n }\n};\n\nexport const MitId = ({ onVerifyCancel }) => {\n useEffect(() => {\n GtmService.trackAction('MitId', 'Start', 'Mobile');\n memberIdentificationClient\n .command('MitIdCreateSession', { purpose: 'SYI', isMobile: true })\n .then(({ redirectUrl }) => (window.location = redirectUrl))\n .catch(onVerifyCancel);\n }, [onVerifyCancel]);\n return null;\n};\n\nexport const MitIdDesktop = ({ onVerifyComplete, onVerifyCancel }) => {\n const { t } = useTranslator();\n const [isLoading, setIsLoading] = useState(true);\n\n const [verifyingState, setVerifyingState] = useState(STATE.VERIFYING);\n\n useEffect(() => {\n if (verifyingState !== STATE.VERIFYING) {\n return;\n }\n\n GtmService.trackAction('MitId', 'Start', 'Desktop');\n let currentTimeoutId = null;\n const poll = mitIdWindow =>\n new Promise((resolve, reject) => {\n const call = () => {\n currentTimeoutId = setTimeout(() => {\n if (mitIdWindow.closed) {\n return reject({ userClosedWindow: true });\n }\n try {\n // Result will appear when verification is completed.\n memberIdentificationClient\n .command('MitIdSessionStatus', {})\n .then(result => {\n if (result && result.isCompleted) {\n mitIdWindow.close();\n return resolve(result);\n }\n return;\n })\n .catch(() => {\n mitIdWindow.close();\n reject();\n });\n } catch (error) {\n console.error(error);\n } finally {\n if (currentTimeoutId) {\n call();\n }\n }\n }, 2000);\n };\n call();\n });\n setIsLoading(true);\n memberIdentificationClient\n .command('MitIdCreateSession', { purpose: 'SYI', isMobile: false })\n .then(({ redirectUrl }) => {\n const height = 645;\n const width = 450;\n const windowHeight = window.innerHeight;\n const windowWidth = window.innerWidth;\n const top = (window.screenY || 0) + (windowHeight - height) / 2;\n const left = (window.screenX || 0) + (windowWidth - width) / 2;\n const mitIdWindow = window.open(\n redirectUrl,\n '_blank',\n `fullscreen=no,height=${height},width=${width},menubar=no,left=${left},top=${top}`\n );\n return poll(mitIdWindow);\n })\n .then(({ errors }) => {\n setIsLoading(false);\n\n if (errors.length > 0) {\n errors.forEach(error =>\n GtmService.trackAction('MitId', 'Error', error)\n );\n setVerifyingState(STATE.CONTACT_CUSTOMER_SUPPORT);\n } else {\n GtmService.trackAction('MitId', 'Success', 'Desktop');\n onVerifyComplete();\n }\n return;\n })\n .catch(error => {\n setIsLoading(false);\n if (error && error.userClosedWindow) {\n GtmService.trackAction(\n 'MitId',\n 'Aborted',\n 'UserClosedWindow'\n );\n onVerifyCancel();\n } else {\n GtmService.trackAction(\n 'MitId',\n 'Error',\n 'ErrorUnavailable'\n );\n setVerifyingState(STATE.ERROR_UNAVAILABLE);\n }\n });\n return () => {\n currentTimeoutId && clearTimeout(currentTimeoutId);\n currentTimeoutId = null;\n };\n }, [\n verifyingState,\n setVerifyingState,\n setIsLoading,\n onVerifyComplete,\n onVerifyCancel\n ]);\n\n return (\n
\n {isLoading && }\n {verifyingState === STATE.ERROR_UNAVAILABLE && (\n
\n

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

\n onVerifyCancel()}>\n {t('international_identification_return')}\n \n
\n )}\n {verifyingState === STATE.CONTACT_CUSTOMER_SUPPORT && (\n
\n

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

\n

\n }}\n />\n

\n onVerifyCancel()}>\n {t('international_identification_return')}\n \n
\n )}\n
\n );\n};\n","import React from 'react';\n\n// https://github.com/facebook/react/issues/3386#issuecomment-291152357\nconst HighlightWord = ({ text, query = '', icon }) => {\n if (!text) {\n return;\n }\n if (!query) {\n return (\n \n {icon && icon}\n {text}\n \n );\n }\n return (\n \n {icon && icon}\n {text.split(query).reduce((prev, current, i) => {\n if (!i) {\n return [current];\n }\n return prev.concat(\n \n {query}\n ,\n current\n );\n }, [])}\n \n );\n};\n\nexport default HighlightWord;\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport ALink from 'tradera-components/alink';\nimport FilterIcon from '@tradera/blueprint/theme/icons2/filter.svg?jsx';\nimport TimeIcon from '@tradera/blueprint/theme/icons2/time.svg?jsx';\nimport UserIcon from '@tradera/blueprint/theme/icons2/user-fill.svg?jsx';\nimport HighlightWord from './highlight-word';\nimport CloseNarrowIcon from '@tradera/blueprint/theme/icons/close-narrow.svg?jsx';\nimport {\n addRecentSearchText,\n removeRecentSearchText\n} from 'tradera-state/personalisation/actions';\nimport { toSearchString } from 'tradera-utils/url';\n\n// Dont blur input when there's a mouseclick on the search suggestions\nconst preventDefault = evt => {\n evt.preventDefault();\n};\n\n// Without this, the search field dropdown is collapsed. Fixes TWT-993.\nconst fixFlexHeightInIpadMini2Style = { flexBasis: 'auto' };\n\nexport const PreviousSearchesListItem = ({\n changeSearchTerm,\n inSPA,\n isSelected,\n onPreviousSearchRemoved,\n searchTerm,\n selectedCategoryId,\n text\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const dispatch = useDispatch();\n return (\n \n {\n dispatch(addRecentSearchText(text));\n changeSearchTerm(text, event);\n }}\n onMouseDown={preventDefault}\n data-suggestion\n data-previous-suggestion={text}\n data-ga-category=\"User search\"\n data-ga-action=\"Suggestion - Previous Query\"\n data-ga-label={searchTerm}>\n }\n />\n \n {\n dispatch(removeRecentSearchText(text));\n onPreviousSearchRemoved();\n }}\n onMouseDown={preventDefault}\n type=\"reset\">\n \n \n \n );\n};\n\nexport const SearchesSuggestionsListItem = ({\n changeSearchTerm,\n inSPA,\n isSelected,\n item,\n searchTerm,\n selectedCategoryId\n}) => {\n const categoryId = item.category\n ? item.category.id\n : selectedCategoryId\n ? selectedCategoryId\n : 0;\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n changeSearchTerm(item.text, event)}\n onMouseDown={preventDefault}\n data-suggestion\n data-search-suggestion={item.text}\n data-ga-category=\"User search\"\n data-ga-action={`Suggestion - ${\n item.category ? 'Category' : 'Auto Query'\n }`}\n data-ga-label={item.text}>\n \n {item.category ? `inom ${item.category.name}` : ''}\n \n );\n};\n\nexport const ShopsSuggestionsListItem = ({\n changeSearchTerm,\n inSPA,\n isSelected,\n item,\n searchTerm\n}) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const suggestionUrl =\n item.name === 'Musikhjälpen'\n ? toLocalizedUrl('/charity/musikhjalpen')\n : toLocalizedUrl(`/profile/items/${item.memberId}/${item.urlName}`);\n return (\n changeSearchTerm(item.text, event)}\n onMouseDown={preventDefault}\n data-suggestion\n data-shop-suggestion={item.name}\n data-ga-category=\"User search\"\n data-ga-action=\"Suggestion - Shop\"\n data-ga-label={item.name}>\n {t('siteHeader_shop')}\n \n \n );\n};\n\nexport const CharitiesSuggestionsListItem = ({\n changeSearchTerm,\n // inSPA,\n isSelected,\n item,\n searchTerm\n}) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n changeSearchTerm(item.text)}\n onMouseDown={preventDefault}\n data-suggestion\n data-shop-suggestion={item.name}\n data-ga-category=\"User search\"\n data-ga-action=\"Suggestion - Charity\"\n data-ga-label={item.name}>\n \n {t('siteHeader_cause')}\n \n \n \n );\n};\n\nexport const CampaignSuggestionsListItem = ({\n changeSearchTerm,\n // inSPA,\n isSelected,\n item,\n searchTerm\n}) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n changeSearchTerm(item.text, event)}\n onMouseDown={preventDefault}\n data-suggestion\n data-campaign-suggestion={item.headline}\n data-ga-category=\"User search\"\n data-ga-action=\"Suggestion - Campaign\"\n data-ga-label={item.headline}>\n \n {t('siteHeader_campaign')}\n \n \n \n );\n};\n\nexport const AdvancedSearchListItem = ({ isSelected }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n \n \n {t('siteHeader_searchAdvanced')}\n \n );\n};\n\nexport const SellerSearchListItem = ({ isSelected, searchTerm }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const searchUrl = '/search/detailed/member';\n const href = searchTerm\n ? toLocalizedUrl(`${searchUrl}?q=${searchTerm}`)\n : toLocalizedUrl(searchUrl);\n\n return (\n \n \n {t('siteHeader_searchSeller')}\n \n );\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n CampaignSuggestionsListItem,\n PreviousSearchesListItem,\n SearchesSuggestionsListItem,\n ShopsSuggestionsListItem,\n AdvancedSearchListItem,\n SellerSearchListItem,\n CharitiesSuggestionsListItem\n} from './suggestion-list-items';\n\nconst SearchSuggestion = ({\n suggestions,\n inSPA,\n visible,\n onChangeSearchTerm,\n onPreviousSearchRemoved,\n searchTerm,\n selectedCategoryId,\n selectedIndex,\n searchSuggestionsElementRef\n}) => (\n \n
\n {suggestions.map((entry, index) => {\n const componentProps = {\n changeSearchTerm: onChangeSearchTerm,\n inSPA: inSPA,\n isSelected: index === selectedIndex,\n item: entry.item,\n key: entry.key,\n searchTerm: searchTerm,\n selectedCategoryId: selectedCategoryId,\n text: entry.text\n };\n switch (entry.type) {\n case 'previous':\n return (\n \n );\n case 'suggested-campaign':\n return (\n \n );\n case 'suggested-item':\n return (\n \n );\n case 'suggested-shop':\n return (\n \n );\n case 'suggested-charity':\n return (\n \n );\n case 'link-advanced-search':\n return (\n \n );\n case 'link-seller-search':\n return (\n \n );\n default:\n throw new Error(\n 'unhandled entry type: ',\n JSON.stringify(entry)\n );\n }\n })}\n
\n \n);\n\nSearchSuggestion.propTypes = {\n allSuggestions: PropTypes.array,\n isSearchInputFocused: PropTypes.bool,\n onChangeSearchTerm: PropTypes.func,\n onPreviousSearchRemoved: PropTypes.func,\n previousSearches: PropTypes.array,\n searchTerm: PropTypes.string,\n selectedCategoryId: PropTypes.number,\n selectedIndex: PropTypes.number,\n setSearchSuggestionsElement: PropTypes.func\n};\n\nexport default SearchSuggestion;\n","import { PAGE_NAMES as MYT_PAGE_NAMES } from 'tradera-apps/my-tradera/app/constants/page';\n\nexport const SURVEYS = {\n general: {\n survey: 'tradera/hur-tycker-du-att-det-fungerar-att-anvanda-tradera',\n supportURL: 'https://info.tradera.com/'\n },\n language: {\n survey: 'tradera/english-translation---rate-your-experience'\n },\n paynova: {\n survey: 'tradera/hur-tycker-du-att-paynova-fungerar',\n textKey: 'surveys_text_paynova'\n },\n cardVerification: {\n survey: 'tradera/vad-fick-dig-att-avbryta-kortverifieringen'\n },\n bankId: {\n survey: 'tradera/bankid'\n },\n [MYT_PAGE_NAMES.BuyerActiveItems]: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-aktiva-annonser'\n },\n [MYT_PAGE_NAMES.BuyerPurchases]: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-mina-kop'\n },\n [MYT_PAGE_NAMES.BuyerItemsLost]: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-mina-ej-vunna'\n },\n [MYT_PAGE_NAMES.SellerActive]: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-aktiva-annonser-2'\n },\n [MYT_PAGE_NAMES.SellerSold]: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-salda-annonser'\n },\n [MYT_PAGE_NAMES.SellerUnsold]: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-osalda-annonser'\n },\n valuationPage: {\n survey: 'tradera/vad-ar-den-vard-hur-tycker-varderingen-funkar-'\n },\n syiDraftPage: {\n survey: 'tradera/hur-fungerar-det-att-skapa-en-annons'\n },\n combinedShipping: {\n survey: 'tradera/samfrakt---som-sljare-hur-fungerar-det-fr-dig'\n },\n payouts: {\n survey: 'tradera/utbetalningar-hur-fungerar-den-for-dig'\n },\n translationImprovements: {\n survey: 'tradera/versattningar-forbattringsforslag'\n }\n};\n","import React, { Fragment } from 'react';\n\nimport CheckIcon from '@tradera/blueprint/theme/icons2/check.svg?jsx';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport { useTranslator } from 'tradera-lang/translate';\nimport SimpleModal from 'components/modals/simple-modal';\nimport TraderaLogo from 'components/tradera/logo';\nimport './gdpr-modal.scss';\n\nconst GdprModal = props => {\n const { t } = useTranslator();\n const { openGdprSettings, acceptAndHide } = props;\n return (\n {}}>\n \n \n

\n \n

\n

\n \n

\n

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

\n
\n

\n {t('gdprConsent_modal_info')}{' '}\n \n {t('gdprConsent_changeSettings')}\n \n

\n \n \n acceptAndHide(true, true, true, 'Approve All')\n }>\n {' '}\n {t('gdprConsent_approveCookies')}\n \n
\n \n );\n};\n\nexport default GdprModal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { withTranslator } from 'tradera-lang/translate';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\n\nclass GdprSettingsModal extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n gdprSettings: props.gdprSettings\n };\n }\n\n save = () => {\n const { saveHandler } = this.props;\n const {\n gdprSettings: { performance, functional, marketing }\n } = this.state;\n\n let label;\n if (performance && functional && marketing) {\n label = 'Save All';\n } else {\n label =\n 'Save ' +\n [\n performance && 'performance',\n functional && 'functional',\n marketing && 'marketing'\n ]\n .filter(l => l)\n .join(', ');\n }\n\n saveHandler(performance, functional, marketing, label);\n };\n\n handleChange = event => {\n const {\n target: { name, checked }\n } = event;\n this.setState(state => ({\n gdprSettings: {\n ...state.gdprSettings,\n [name]: checked\n }\n }));\n };\n\n render() {\n const { t } = this.props;\n const { gdprSettings } = this.state;\n return (\n \n
\n

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

\n
\n
\n

\n {' '}\n {t('gdprConsent_whatsThis')}{' '}\n \n {t('gdprConsent_readMore')}\n \n

\n
\n
\n
\n
\n \n \n
\n

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

\n
\n {Object.entries(gdprSettings).map(\n ([type, value], index) => (\n
\n
\n \n

\n {t(\n `gdprConsent_categoryTitle_${type}`\n )}\n

\n \n \n
\n

\n {t(`gdprConsent_categoryComment_${type}`)}\n

\n
\n )\n )}\n
\n
\n \n {t('gdprConsent_save')}\n \n
\n \n );\n }\n}\n\nGdprSettingsModal.propTypes = {\n saveHandler: PropTypes.func.isRequired\n};\n\nexport default withTranslator(GdprSettingsModal);\n","import React, { Fragment } from 'react';\nimport { connect } from 'react-redux';\nimport dayjs from 'dayjs';\n\nimport { Analytics, logger } from 'packages';\nimport uiActions from 'tradera-state/ui/actions';\nimport CookieUtil from 'tradera-utils/cookie';\nimport {\n GDPR_CONSENT_COOKIE,\n GDPR_CONSENT_ALERT_DISMISSED\n} from 'tradera-constants/cookies';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\nimport GdprModal from 'tradera-components/alerts/gdpr/gdpr-modal';\nimport GdprSettingsModal from 'tradera-components/alerts/gdpr/gdpr-settings-modal';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\n\nconst GdprContainer = props => {\n const {\n visibleModal,\n visibleSettings,\n closeModal,\n openSettings,\n closeSettings\n } = props;\n\n const isQuantcastConsentEnabled = useIsFeatureEnabled('quantcast-consent');\n\n const openGdprSettings = event => {\n if (event) event.preventDefault();\n openSettings();\n };\n\n const acceptAndHide = (\n performance = true,\n functional = true,\n marketing = true,\n eventLabel\n ) => {\n GdprSettings.set(performance, functional, marketing);\n CookieUtil.createCookie(\n GDPR_CONSENT_ALERT_DISMISSED,\n 1,\n dayjs()\n .add(1, 'years')\n .toDate()\n );\n closeSettings();\n closeModal();\n // Only track event and reload if cookie settings allow tracking\n if (performance) {\n trackEvent(eventLabel)\n .then(() => location.reload(true))\n .catch(error => logger(error));\n }\n };\n\n const trackEvent = (label = 'Save') => {\n return new Promise(resolve => {\n Analytics.trackEvent({\n category: 'Settings',\n action: 'Cookies',\n label,\n hitCallback: resolve\n });\n });\n };\n\n const hasGdprCookie = CookieUtil.hasCookie(GDPR_CONSENT_COOKIE);\n // Default to all toggled on if settings have never been set\n const gdprSettings = hasGdprCookie\n ? {\n performance: GdprSettings.isPerformanceEnabled(),\n functional: GdprSettings.isFunctionalEnabled(),\n marketing: GdprSettings.isMarketingEnabled()\n }\n : {\n performance: true,\n functional: true,\n marketing: true\n };\n\n return !isQuantcastConsentEnabled ? (\n \n {visibleModal && (\n \n )}\n {visibleSettings && (\n \n )}\n \n ) : null;\n};\n\nconst mapStateToProps = state => ({\n visibleModal: state.ui.gdpr.modalOpen,\n visibleSettings: state.ui.gdpr.settingsOpen\n});\n\nconst mapDispatchToProps = dispatch => ({\n closeModal: () => dispatch(uiActions.closeGdprModal()),\n openSettings: () => dispatch(uiActions.openGdprSettings()),\n closeSettings: () => dispatch(uiActions.closeGdprSettings())\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(GdprContainer);\n","export const HOVER_MENUS = {\n WISHLIST: 'Wishlist',\n SELL: 'Selling',\n BUY: 'Buying',\n LOCALIZATION: 'Localization',\n CURRENCY: 'Currency'\n};\n","/**\n * Legacy class replaced by translations. Please don't add anything here, translate all copy instead\n */\nexport default {\n INVOICE_UNPAID: 'Obetald faktura',\n INVOICE_UNPAID_DESCRIPTION: 'Du har väntande faktura(or)',\n INVOICE_OVERDUE: 'Förfallen faktura',\n INVOICE_OVERDUE_DESCRIPTION:\n 'Du har en eller flera förfallna fakturor (registrering av nya inbetalningar är fördröjd).',\n BANK_ACCOUNT_MISSING: 'Kontouppgifter',\n BANK_ACCOUNT_MISSING_DESCRIPTION:\n 'Fyll i dina kontouppgifter för att få betalt när du säljer.',\n PAYOUT_FAILED: 'Misslyckad utbetalning',\n PAYOUT_FAILED_DESCRIPTION:\n 'Vi kunde tyvärr inte betala ut dina pengar. Klicka här för att uppdatera utbetalningsuppgifter.',\n PAYMENT_READY_BANK_ACCOUNT_MISSING: 'Misslyckad utbetalning',\n PAYMENT_READY_BANK_ACCOUNT_MISSING_DESCRIPTION:\n 'Du har en väntande utbetalning. Fyll i dina kontouppgifter för att få pengarna.',\n SWISH_MISSING: 'Swish saknas',\n SWISH_MISSING_DESCRIPTION:\n 'De flesta köpare väljer att betala med Swish. Fyll i ditt Swish-nummer för att inte missa betalningar.',\n ADD_SWISH: 'Lägg till Swish',\n NO_THANKS_SWISH: 'Nej tack till Swish',\n I_UNDERSTAND: 'Jag förstår',\n IFRAME_NOT_SUPPORTED: 'Din browser saknar stöd för iframes',\n COOKIES: {\n HEADER: 'Information om cookies',\n DESC:\n 'Tradera använder cookies (kakor) för att ge dig en bättre upplevelse.',\n READ_MORE: 'Läs mer om vårt användande av cookies.'\n },\n WELCOME_TO_TRADERA: 'Välkommen till Sveriges största marknadsplats!',\n GET_STARTED_BUYING: 'Kom igång med att handla på Tradera',\n GET_STARTED_SELLING: 'Kom igång med att sälja på Tradera',\n VIEW_MORE_VIDEOS: 'Se fler videos',\n DISCOVER: {\n FILTERS: {\n ALL_CATEGORIES: 'Alla kategorier',\n BRANDS: 'Varumärken',\n CONDITION: 'Skick',\n ITEM_TYPE: 'Annonsformat',\n PRICE: 'Pris',\n SELLER_TYPE: 'Typ av säljare',\n COUNTY: 'Område',\n ITEM_STATUS: 'Status',\n SORTING: 'Sortering',\n CLEAR: 'Återställ'\n }\n },\n META: {\n DEFAULT_SITE_NAME: 'Tradera',\n DEFAULT_DESCRIPTION:\n 'Köp och sälj bland auktioner och till fast pris på Tradera.com. Fynda bland massor av auktioner.'\n }\n};\n","const shippingProviders = t => [\n {\n text: t('shippingProviders_schenkerPrivpak'),\n type: SHIPPING_OPTIONS.SCHENKER,\n logoImgUrl: '/static/images/shipping/schenker.svg'\n },\n {\n text: t('shippingProviders_posten'),\n type: SHIPPING_OPTIONS.POSTNORD,\n logoImgUrl: '/static/images/shipping/postnord.svg'\n },\n {\n text: t('shippingProviders_postNordParcel'),\n type: SHIPPING_OPTIONS.POSTNORD_PARCEL,\n logoImgUrl: '/static/images/shipping/postnord.svg'\n },\n {\n text: t('shippingProviders_postNordStamp'),\n type: SHIPPING_OPTIONS.POSTNORD_STAMP,\n logoImgUrl: '/static/images/shipping/postnord.svg'\n },\n {\n text: t('shippingProviders_dhl'),\n type: SHIPPING_OPTIONS.DHL,\n logoImgUrl: '/static/images/shipping/dhl.svg'\n },\n {\n text: t('shippingProviders_bussgods'),\n type: SHIPPING_OPTIONS.BUSSGODS,\n logoImgUrl: '/static/images/shipping/bussgods.svg'\n },\n {\n text: t('shippingProviders_bringDenmark'),\n type: SHIPPING_OPTIONS.BRING_DENMARK,\n logoImgUrl: '/static/images/shipping/bring.svg'\n },\n {\n text: t('shippingProviders_alternative'),\n type: SHIPPING_OPTIONS.ALTERNATIVE,\n logoImgUrl: null\n },\n {\n text: t('shippingProviders_takeaway'),\n type: SHIPPING_OPTIONS.TAKE_AWAY,\n logoImgUrl: null\n },\n {\n text: t('shippingProviders_takeaway'),\n type: SHIPPING_OPTIONS.TAKE_AWAY_ONLY,\n logoImgUrl: null\n },\n {\n text: t('shippingProviders_notSpecified_full'),\n type: SHIPPING_OPTIONS.NOT_SPECIFIED,\n logoImgUrl: null\n }\n];\n\nlet mapInstance = null;\nconst shippingProvidersMap = t => {\n if (mapInstance === null) {\n mapInstance = shippingProviders(t).reduce(\n (obj, provider) => ({\n ...obj,\n [provider.type]: provider\n }),\n {}\n );\n }\n return mapInstance;\n};\n\nexport const SHIPPING_OPTIONS = {\n ALTERNATIVE: 'Alternative',\n BRING_DENMARK: 'BringDenmark',\n BUSSGODS: 'Bussgods',\n DHL: 'DHL',\n FEDEX: 'FedEx',\n NOT_SPECIFIED: 'NotSpecified',\n POSTNORD: 'Posten',\n POSTNORD_PARCEL: 'PostNordParcel',\n POSTNORD_STAMP: 'PostNordStamp',\n SCHENKER: 'SchenkerPrivpak',\n TAKE_AWAY: 'Takeaway',\n TAKE_AWAY_ONLY: 'TakeawayOnly',\n UPS: 'Ups'\n};\n\nexport default {\n get: t => shippingProviders(t),\n map: t => shippingProvidersMap(t)\n};\n","export const selectSyiAttributes = state => state.views.syi.attributes;\n\nexport const selectCategoryAttributes = state =>\n selectSyiAttributes(state).categoryAttributes;\n\nexport const selectSuggestedAttributes = state =>\n selectSyiAttributes(state).suggestedAttributes;\n","import React from 'react';\nimport StampIcon from '@tradera/blueprint/theme/icons2/stamp.svg?jsx';\nimport PackageIcon from '@tradera/blueprint/theme/icons2/package.svg?jsx';\nimport { useTranslator } from 'tradera-lang/translate';\nimport shippingProviders from 'tradera-apps/my-tradera/app/data/shipping-providers';\n\nexport const ShippingProviderIcon = ({ providerName, iconClass, imgClass }) => {\n const { t } = useTranslator();\n const { text, logoImgUrl } = shippingProviders.map(t)[providerName];\n return (\n \n {providerName === 'PostNordStamp' && (\n \n )}\n {providerName === 'PostNordParcel' && (\n \n )}\n \n \n );\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './hover-menu.module.scss';\n\nclass HoverMenu extends Component {\n state = {\n show: false,\n hoverContainer: false\n };\n\n toggleShow = show => {\n window.clearTimeout(this.toggleShowTimeoutId);\n this.toggleShowTimeoutId = window.setTimeout(() => {\n if (this.state.show !== show) {\n this.setState({ show: show });\n }\n }, 100);\n };\n\n componentDidUpdate(prevProps) {\n if (this.props.showMenu !== prevProps.showMenu) {\n this.toggleShow(this.props.showMenu);\n }\n }\n\n render() {\n const { children, className = '' } = this.props;\n\n return (\n this.state.show && (\n {})}>\n \n \n )\n );\n }\n}\n\nHoverMenu.propTypes = {\n showMenu: PropTypes.bool,\n className: PropTypes.string\n};\n\nexport default HoverMenu;\n","import ENDPOINTS from 'tradera-constants/endpoints';\nimport axios from 'axios';\nimport { defaultClient as httpClient } from 'tradera-utils/http';\nimport { axiosConfigs } from 'tradera-utils/api';\n\nconst getCampaignCode = async (\n campaignCode,\n categoryId,\n brandAttributeValues\n) => {\n var requestData = {\n code: campaignCode,\n selectedCategories: categoryId ? [categoryId] : [],\n selectedBrandAttributes: brandAttributeValues\n };\n try {\n const response = await httpClient.post(\n ENDPOINTS.SELLING_CAMPAING_CODE,\n requestData,\n {\n cancelTokenId: 'SELLING_CAMPAIGN_CODE',\n ...axiosConfigs.authenticated\n }\n );\n return response.data;\n } catch (error) {\n if (axios.isCancel(error)) {\n throw 'aborted';\n }\n throw 'Could not get the campaignCode';\n }\n};\n\nconst validate = async (campaignCode, categoryId, brandAttributeValues) => {\n try {\n const data = await getCampaignCode(\n campaignCode,\n categoryId,\n brandAttributeValues\n );\n\n let result = {};\n result.campaignCodeValid = data.validation.isValid;\n result.validationDisplayMessage = data.validation.message;\n result.hasEnded = data.validation.hasEnded;\n if (data.campaign) {\n result.campaignCode = data.campaign.code;\n result.campaignCodeId = data.campaign.id;\n result.campaignCodeMessage = data.campaign.description;\n result.isCustomLengthFeeFree = data.campaign.isCustomLengthFeeFree;\n result.isUnsoldFeeFree = data.campaign.isUnsoldFeeFree;\n result.provisionFactor = data.campaign.provisionFactor;\n result.discountFactor = data.campaign.discountFactor;\n result.maxFeeCap = data.campaign.maxFeeCap;\n result.bannerMobileImageUrl = data.campaign.bannerMobileImageUrl;\n result.bannerTabletImageUrl = data.campaign.bannerTabletImageUrl;\n result.bannerDesktopImageUrl = data.campaign.bannerDesktopImageUrl;\n }\n return result;\n } catch (reason) {\n if (reason === 'aborted') {\n return {\n campaignCodeValid: false,\n validationDisplayMessage: 'Valideringen avbröts.'\n };\n }\n\n return {\n campaignCodeValid: false,\n validationDisplayMessage: 'Kunde inte validera kampanjkoden.'\n };\n }\n};\n\nexport default { validate };\n","/* eslint-disable promise/always-return */\n/* eslint-disable promise/catch-or-return */\nimport campaignService from 'tradera-apps/syi/script/app_react/services/campaign-service';\nimport ThrottledAction from 'tradera-apps/syi/script/app_react/utils/throttled-action';\nimport userData from 'tradera-apps/syi/script/app_react/services/user-data';\nimport feesActions from './fees-actions';\nimport draftActions from './draft-actions';\nimport shippingActions from './shipping-actions';\nimport { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\n\nconst CHARITIES = userData?.charities || [];\nlet throttleTimeout = 2000;\nlet throttledCampaignCodeValidation = new ThrottledAction(throttleTimeout);\nlet delayedValidationTimeoutId = null;\n\nconst findBrandAttributeValues = getState => {\n if (\n !getSyiSlice(getState()).attributes ||\n !getSyiSlice(getState()).attributes.categoryAttributes\n ) {\n return [];\n }\n\n let brandAttributeValues = [];\n getSyiSlice(getState()).attributes.categoryAttributes.forEach(attribute => {\n const brandAttributeId = 3; //Brand Attribute has Id == 3\n if (attribute.id != brandAttributeId) {\n return;\n }\n if (attribute.options.length === 0) {\n return;\n }\n brandAttributeValues = attribute.options.reduce((acc, option) => {\n if (option.isActive) {\n acc.push(option.value);\n }\n return acc;\n }, []);\n });\n return brandAttributeValues;\n};\n\nconst resetCharityCampaign = (dispatch, getState) => {\n const { name, forceFreeShipping: wasForceFreeShipping } = getSyiSlice(\n getState()\n ).charityCampaign;\n if (!name) {\n return;\n }\n dispatch({\n type: 'RESET_CHARITY_CAMPAIGN'\n });\n dispatch({\n type: 'DISABLE_ZERO_DAY_AUCTIONS'\n });\n if (wasForceFreeShipping) {\n dispatch(shippingActions.resetSelected());\n }\n};\n\nconst resetCampaign = dispatch => {\n dispatch(resetCharityCampaign);\n dispatch({\n type: 'RESET_CUSTOM_END_TIME_FEE_FREE_FOR_CAMPAIGN'\n });\n dispatch({\n type: 'UNSET_UNSOLD_FEE_FREE_FOR_CAMPAIGN'\n });\n dispatch({\n type: 'ENABLE_RESTART'\n });\n dispatch({\n type: 'RESET_MAX_FEE_CAP'\n });\n dispatch({\n type: 'RESET_CAMPAIGN_BANNER'\n });\n dispatch(feesActions.resetDiscountFactor());\n dispatch(feesActions.resetCampaignCommission());\n\n dispatch(feesActions.updateCommission());\n dispatch(feesActions.updateMaxCommission());\n dispatch(feesActions.updatePrices());\n};\n\nconst applyCharityFromCampaignCodeId = (\n campaignCodeId,\n campaignCode\n) => dispatch => {\n const charityCampaign = CHARITIES.find(\n charityCampaign => charityCampaign.campaignCodeId === campaignCodeId\n );\n\n if (!charityCampaign) {\n dispatch(resetCharityCampaign);\n return;\n }\n\n dispatch({\n type: 'SET_CHARITY_CAMPAIGN',\n charityCampaign,\n campaignCode\n });\n const {\n allowZeroDayAuctions,\n forceFreeShipping,\n forcePaymentOption\n } = charityCampaign;\n\n if (allowZeroDayAuctions) {\n dispatch({\n type: 'ENABLE_ZERO_DAY_AUCTIONS'\n });\n }\n\n if (forceFreeShipping) {\n dispatch({\n type: 'FORCE_FREE_SHIPPING'\n });\n }\n\n if (forcePaymentOption) {\n dispatch({\n type: 'ENSURE_ANY_PAYMENT_OPTION_FOR_CHARITY'\n });\n }\n\n dispatch(draftActions.setDisplayPromoted(false));\n dispatch(draftActions.setDisplayHighlighted(false));\n};\n\nconst validateCampaignCode = () => (dispatch, getState) => {\n let campaignCode = getSyiSlice(getState()).campaignCode.campaignCode;\n if (!campaignCode || campaignCode.trim().length === 0) {\n return;\n }\n dispatch({\n type: 'VALIDATING_CAMPAIGN_CODE_BY_SEARCHING'\n });\n const isReadOnly = getSyiSlice(getState()).campaignCode.isReadOnly;\n throttledCampaignCodeValidation.execute(function() {\n let category = getSyiSlice(getState()).category;\n const brandAttributeValues = findBrandAttributeValues(getState);\n campaignService\n .validate(\n campaignCode,\n category.draftCategoryId,\n brandAttributeValues\n )\n .then(result => {\n // If the campaign is read-only, ignore if the code is invalid since it has already been used.\n if (isReadOnly) {\n result.campaignCodeValid = true;\n result.campaignCodeMessage = null;\n }\n\n const {\n bannerDesktopImageUrl,\n bannerMobileImageUrl,\n bannerTabletImageUrl,\n campaignCodeId,\n campaignCodeMessage,\n campaignCodeValid,\n discountFactor = null,\n hasEnded,\n isCustomLengthFeeFree,\n isUnsoldFeeFree,\n maxFeeCap,\n provisionFactor = null,\n validationDisplayMessage\n } = result;\n\n const campaignCodeDescription = campaignCodeValid\n ? campaignCodeMessage\n : validationDisplayMessage;\n\n dispatch({\n type: 'SET_CAMPAIGN_VALIDATION_RESULT',\n bannerDesktopImageUrl,\n bannerMobileImageUrl,\n bannerTabletImageUrl,\n campaignCode,\n campaignCodeDescription,\n campaignCodeId,\n campaignCodeValid,\n hasEnded,\n maxFeeCap\n });\n\n if (!campaignCodeValid) {\n dispatch(resetCampaign);\n return;\n }\n\n if (isCustomLengthFeeFree) {\n dispatch({\n type: 'SET_CUSTOM_END_TIME_FEE_FREE_FOR_CAMPAIGN'\n });\n }\n\n if (isUnsoldFeeFree) {\n dispatch({\n type: 'SET_UNSOLD_FEE_FREE_FOR_CAMPAIGN'\n });\n }\n\n dispatch({\n type: 'DISABLE_RESTART'\n });\n\n if (userData.isCompanyUser) {\n dispatch(feesActions.setDiscountFactor(discountFactor));\n dispatch(feesActions.setCampaignCommission(null));\n } else {\n const commissionProcent =\n provisionFactor !== null\n ? `${provisionFactor * 100}`\n : null;\n dispatch(\n feesActions.setCampaignCommission(commissionProcent)\n );\n dispatch(feesActions.setDiscountFactor(null));\n }\n\n dispatch(\n applyCharityFromCampaignCodeId(campaignCodeId, campaignCode)\n );\n\n dispatch(feesActions.updateCommission());\n dispatch(feesActions.updateMaxCommission());\n dispatch(feesActions.updatePrices());\n });\n });\n};\n\nconst saveTypedCampaignCode = inputCampaignCode => (dispatch, getState) => {\n const campaignCode = inputCampaignCode?.trim() || null;\n dispatch({\n type: 'SET_UNVERIFIED_CAMPAIGN_CODE',\n campaignCode\n });\n\n if (delayedValidationTimeoutId) {\n clearTimeout(delayedValidationTimeoutId);\n }\n\n if (campaignCode === null) {\n dispatch(resetCampaign);\n return;\n }\n\n delayedValidationTimeoutId = setTimeout(() => {\n clearTimeout(delayedValidationTimeoutId);\n dispatch(validateCampaignCode());\n delayedValidationTimeoutId = setTimeout(() => {\n if (getSyiSlice(getState()).campaignCode.searching) {\n dispatch({\n type: 'SEARCHING_FOR_CAMPAIGN_CODE_IS_DELAYED'\n });\n }\n }, 100);\n }, 700);\n};\n\nconst setInitialCampaignCode = (\n campaignCode,\n campaignCodeId,\n campaignCodeDescription,\n isChangeItem\n) => dispatch => {\n let isReadOnly = campaignCodeId && isChangeItem;\n\n dispatch({\n type: 'INITIALIZE_CAMPAIGN_CODE_STATE',\n campaignCode,\n campaignCodeId,\n campaignCodeDescription,\n isReadOnly\n });\n dispatch(resetCampaign);\n\n // Always validate because this fetches info about the campaign like free shipping etc.\n // If the campaign is read-only, ignore if the code is invalid since it has already been used.\n dispatch(validateCampaignCode());\n};\n\nconst toggleShowInput = isChecked => dispatch => {\n clearTimeout(delayedValidationTimeoutId);\n dispatch({\n type: 'TOGGLE_CAMPAIGN_CODE_CHECKBOX',\n isChecked: isChecked\n });\n dispatch(resetCampaign);\n};\n\nexport default {\n toggleShowInput,\n setInitialCampaignCode,\n saveTypedCampaignCode,\n validateCampaignCode\n};\n","import React from 'react';\nimport PropType from 'prop-types';\nimport Close from '@tradera/blueprint/theme/icons2/close.svg?jsx';\n\nconst ModalHeader = ({ children, onClose, className = '' }) => (\n {\n onClose();\n e.stopPropagation();\n }}>\n
\n {children}\n
\n \n \n \n \n);\n\nModalHeader.propTypes = {\n children: PropType.node.isRequired,\n onClose: PropType.func,\n className: PropType.string\n};\n\nexport default ModalHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useSelector } from 'react-redux';\n\nconst WaitForConsentApiLoaded = ({ placeHolder, onLoadRender }) => {\n const isTcfLoaded = useSelector(state => state.ads.isTcfLoaded);\n if (!isTcfLoaded) return placeHolder || null; // Return ads placeholder until Tcf is loaded\n return <>{onLoadRender()};\n};\n\nWaitForConsentApiLoaded.propTypes = {\n placeHolder: PropTypes.node,\n onLoadRender: PropTypes.func.isRequired\n};\n\nexport default WaitForConsentApiLoaded;\n","export default function ThrottledAction(minDelayInMs, alwaysDelay) {\n var lastActionTime = 0;\n var timeoutId = null;\n this.execute = function(wrappedAction) {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n var timeNow = Date.now();\n var elapsed = timeNow - lastActionTime;\n if (!alwaysDelay && elapsed > minDelayInMs) {\n wrappedAction();\n lastActionTime = timeNow;\n } else {\n timeoutId = setTimeout(() => {\n wrappedAction();\n }, minDelayInMs);\n }\n };\n}\n","/**\n * Run callback when document DOM content is ready\n *\n * @param {function} callback\n */\nfunction onDOMContentLoaded(callback) {\n if (document.readyState !== 'loading') {\n callback();\n } else {\n document.addEventListener('DOMContentLoaded', callback);\n }\n}\n\n/**\n * Run callback when all window content has loaded\n *\n * @param {function} callback\n */\nfunction onWindowLoad(callback) {\n if (document.readyState === 'complete') {\n callback();\n } else {\n window.addEventListener('load', callback);\n }\n}\n\nexport {\n // Export onDOMContentLoaded as default to cover old uses of onReady\n onDOMContentLoaded as default,\n onDOMContentLoaded,\n onWindowLoad\n};\n","/* eslint-disable promise/always-return */\n/* eslint-disable promise/catch-or-return */\nimport categoryService from 'tradera-services/category-service';\nimport ThrottledAction from 'tradera-apps/syi/script/app_react/utils/throttled-action';\nimport syiActions from './syi-actions';\nimport feesActions from './fees-actions';\nimport {\n fetchForCategory,\n fetchCategoryAttributeSuggestions\n} from './attributes-actions';\n\nimport campaignCodeActions from './campaign-code-actions';\nimport { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\nimport { Analytics } from 'packages';\nimport { webApiClient } from 'tradera-utils/http';\nimport { selectPreferredLanguage } from 'tradera-state/language/selectors';\n\nvar throttleTimeout = 1000;\nvar throttledCategoriesRequest = new ThrottledAction(throttleTimeout, true);\nvar numberOfLevels = 4;\n\nconst loadCategories = (\n shortDescription,\n categoryId,\n index,\n executeImmediately\n) => dispatch => {\n var request = function() {\n dispatch({\n type: 'CATEGORIES_LOADING',\n index: index\n });\n categoryService\n .loadChildCategories(shortDescription, categoryId, index)\n .then(result => {\n dispatch({\n type: 'CATEGORIES_LOADED',\n category: result,\n index: index\n });\n categoryService.prefetchChildren(\n shortDescription,\n result,\n index + 1\n );\n });\n };\n if (executeImmediately) {\n request();\n } else {\n throttledCategoriesRequest.execute(request);\n }\n};\n\nconst closeLevel = index => ({\n type: 'CLOSE_LEVEL',\n index: index\n});\n\nconst resetLevel = index => ({\n type: 'RESET_LEVEL',\n index: index\n});\n\nconst disableLevel = index => ({\n type: 'DISABLE_LEVEL',\n index: index\n});\n\nconst toggleLevelLabel = (index, value) => ({\n type: 'TOGGLE_LEVEL_LABEL',\n index: index,\n value: value\n});\n\nconst selectLevelCategory = (category, index) => ({\n type: 'SELECT_LEVEL_CATEGORY',\n index: index,\n category: category\n});\n\nconst closeAllLevels = () => dispatch => {\n for (let i = 0; i < numberOfLevels; i++) {\n dispatch(closeLevel(i));\n }\n};\n\nexport const updateCategoryRestrictions = categoryId => async (\n dispatch,\n getState\n) => {\n if (!categoryId) {\n dispatch(resetCategoryRestriction());\n return;\n }\n\n try {\n const { languageCodeIso2 } = selectPreferredLanguage(getState());\n const { data } = await webApiClient.get(\n `/selling/category-restriction/${categoryId}?locale=${languageCodeIso2}`\n );\n dispatch(syiActions.setCategoryRestriction(data));\n } catch (error) {\n dispatch(resetCategoryRestriction());\n throw error;\n }\n};\n\nconst resetCategoryRestriction = () =>\n syiActions.setCategoryRestriction({\n displayPaymentOptions: '',\n paymentOptionGroups: []\n });\n\nconst setDraftCategory = (categoryId, categoryPath) => (dispatch, getState) => {\n var slice = getSyiSlice(getState());\n if (!categoryPath) {\n categoryPath = slice.category.levels\n .filter(level => level.selectedCategory)\n .map(level => level.selectedCategory);\n }\n dispatch({\n type: 'SET_DRAFT_CATEGORY',\n categoryId: categoryId,\n categoryPath: categoryPath\n });\n dispatch(campaignCodeActions.validateCampaignCode());\n dispatch(updateCategoryRestrictions(categoryId));\n dispatch(fetchForCategory(categoryId));\n dispatch(\n fetchCategoryAttributeSuggestions(\n categoryId,\n slice.shortDescription.shortDescription\n )\n );\n dispatch(feesActions.updateCommission());\n dispatch(feesActions.updateMaxCommission());\n};\n\nconst resetDraftCategory = () => dispatch => {\n dispatch(setDraftCategory(0, []));\n};\n\nconst loadTopCategories = shortDescription => dispatch => {\n dispatch({\n type: 'CATEGORIES_LOADING',\n index: 0\n });\n\n categoryService.loadTopCategories(shortDescription).then(result => {\n dispatch({\n type: 'CATEGORIES_LOADED',\n category: result,\n index: 0,\n shortDescriptionForRecommendations: shortDescription\n });\n categoryService.prefetchChildren(shortDescription, result, 1);\n });\n};\n\nconst setPath = (shortDescription, categoryPath) => dispatch => {\n if (!categoryPath || !categoryPath.length) {\n dispatch(closeAllLevels());\n return;\n }\n for (let i = 0; i < categoryPath.length; i++) {\n dispatch(closeLevel(i));\n dispatch(selectLevelCategory(categoryPath[i], i));\n if (i < categoryPath.length - 1) {\n dispatch(\n loadCategories(\n shortDescription,\n categoryPath[i].categoryId,\n i + 1,\n true\n )\n );\n }\n }\n for (var i = categoryPath.length; i < numberOfLevels; i++) {\n dispatch(toggleLevelLabel(i, false));\n }\n};\n\nconst setPathFromDraft = () => (dispatch, getState) => {\n let shortDescription = getSyiSlice(getState()).shortDescription;\n let category = getSyiSlice(getState()).category;\n dispatch(\n setPath(shortDescription.shortDescription, category.draftCategoryPath)\n );\n};\n\nconst reset = () => dispatch => {\n dispatch({\n type: 'RESET_CATEGORY'\n });\n dispatch(feesActions.updateCommission());\n};\n\nconst openLevel = (shortDescription, index) => dispatch => {\n dispatch(closeAllLevels());\n if (index === 0) {\n dispatch(loadTopCategories(shortDescription));\n }\n dispatch({\n type: 'OPEN_LEVEL',\n index: index\n });\n};\n\nconst toggleCategories = categoryLevel => dispatch => {\n dispatch({\n type: 'TOGGLE_CATEGORIES',\n index: categoryLevel.index,\n value: !categoryLevel.categoriesVisible\n });\n};\n\nconst selectCategory = (\n shortDescription,\n categoryLevel,\n category\n) => dispatch => {\n if (category.isLeaf) {\n dispatch(closeLevel(categoryLevel.index));\n dispatch(selectLevelCategory(category, categoryLevel.index));\n for (let i = categoryLevel.index + 1; i < numberOfLevels; i++) {\n dispatch(toggleLevelLabel(i, false));\n }\n dispatch(setDraftCategory(category.categoryId));\n } else {\n dispatch(resetDraftCategory());\n for (let i = categoryLevel.index + 1; i < numberOfLevels; i++) {\n dispatch(resetLevel(i));\n dispatch(disableLevel(i));\n dispatch(toggleLevelLabel(i, true));\n }\n dispatch(closeLevel(categoryLevel.index));\n dispatch(selectLevelCategory(category, categoryLevel.index));\n dispatch(\n loadCategories(\n shortDescription,\n category.categoryId,\n categoryLevel.index + 1,\n true\n )\n );\n dispatch(openLevel(shortDescription, categoryLevel.index + 1));\n }\n Analytics.trackEvent({\n category: 'SYI',\n action: `Select Category - Level ${categoryLevel.index + 1}`,\n label: `Suggested Categories - ${categoryLevel.suggestions\n .map(x => x.categoryId)\n .join()}`,\n value: category.categoryId\n });\n};\n\nexport default {\n setDraftCategory,\n loadTopCategories,\n closeAllLevels,\n openLevel,\n toggleCategories,\n selectCategory,\n setPath,\n setPathFromDraft,\n reset\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"overlay\":\"overlay--ZLLD9\"};","import React, { Component } from 'react';\nimport PropType from 'prop-types';\nimport styles from './overlay.module.scss';\n\nclass Overlay extends Component {\n closeOnEscape = e => {\n const { closeModalCallback } = this.props;\n if (e.keyCode === 27) {\n if (closeModalCallback) {\n closeModalCallback(e);\n }\n e.preventDefault();\n }\n };\n\n componentDidMount() {\n window.addEventListener('keydown', this.closeOnEscape);\n }\n\n componentWillUnmount() {\n window.removeEventListener('keydown', this.closeOnEscape);\n }\n\n render() {\n const { children, closeModalCallback, style } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n\nOverlay.propTypes = {\n children: PropType.node,\n closeModalCallback: PropType.func,\n style: PropType.object\n};\n\nexport default Overlay;\n","import { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\n\nexport default {\n toggleAllVisible: () => dispatch => {\n dispatch({\n type: 'TOGGLE_ALL_VISIBLE'\n });\n },\n togglePaymentOption: paymentOption => (dispatch, getState) => {\n paymentOption.selected = !paymentOption.selected;\n var selectedPaymentOptions = [];\n if (\n Array.isArray(\n getSyiSlice(getState()).payment.selectedPaymentOptions\n )\n ) {\n selectedPaymentOptions = getSyiSlice(\n getState()\n ).payment.selectedPaymentOptions.slice();\n }\n\n if (paymentOption.selected) {\n selectedPaymentOptions.push(paymentOption.paymentType);\n } else {\n selectedPaymentOptions = selectedPaymentOptions.filter(\n po => po != paymentOption.paymentType\n );\n }\n selectedPaymentOptions = selectedPaymentOptions.filter(\n po => po != null\n );\n\n dispatch({\n type: 'SET_PAYMENT_OPTIONS',\n selectedPaymentOptions: selectedPaymentOptions\n });\n },\n setSelectedPaymentOptions: selectedPaymentOptions => dispatch => {\n dispatch({\n type: 'SET_PAYMENT_OPTIONS',\n selectedPaymentOptions: selectedPaymentOptions\n });\n },\n reset: () => dispatch => {\n dispatch({\n type: 'SET_PAYMENT_OPTIONS',\n selectedPaymentOptions: []\n });\n }\n};\n","/**\n * Description:\n * module with helper functions to create GPT objects, preferably used in combination with html data attributes as below\n *\n *\n * Sample of how to define a new ad slot:\n *\n // match this towards the \"pos\" in DFP\n *\n */\n\n/**\n * NOTE:\n * It is very important that these adslot sizes [width, height] matches the expected sizes in admanager; if not, the amount of adslots that\n * are filled decreases, with less income from ads as a result.\n * Do not change these sizes unless you are sure what the change will have for effect on ads.\n */\n\n/**\n * @returns array of arrays of 2 elements with [width, height]:\n * @param {string} adFormat - accepts format value of: panorama, wide_skyscraper, half_page, medium_rectangle, mobile_rectangle\n */\nconst mapSingleAdFormatToSizes = adFormat => {\n const viewPortMapping = {\n panorama: [[980, 240], [980, 160], [980, 120], [970, 250], 'fluid'],\n wide_skyscraper: [[160, 600]],\n half_page: [\n [300, 600],\n [250, 600]\n ],\n medium_rectangle: [[300, 250]],\n mobile_rectangle: [[320, 320]],\n mobile_wideboard: [[320, 160]]\n };\n return viewPortMapping[adFormat];\n};\n\n/**\n * @returns array of arrays of 2 elements with slot [width, height]:\n * @param {string} adFormats - accepts one or more ',' separated format values\n */\nconst mapManyAdFormatsToSizes = adFormats => {\n return adFormats\n .split(',')\n .map(adFormat => mapSingleAdFormatToSizes(adFormat))\n .reduce((pre, cur) => pre.concat(cur));\n};\n\n/**\n * @param {string} device - accepts one of: mobile, tablet, desktop, desktop-lg\n * @returns array with first elements: [min width, max width]\n */\nconst mapDeviceNameToViewport = device => {\n let deviceViewportMappings = {\n mobile: [0, 449],\n tablet: [450, 1249],\n desktop: [1250, 0],\n 'desktop-lg': [1600, 0]\n };\n return deviceViewportMappings[device];\n};\n\n/**\n * @param {string} adFormats - accepts one or more ',' separated format values\n * @param {string} device - accepts one of: mobile, tablet, desktop, desktop-lg\n */\nconst createGptSizeMapping = (adFormats, device) => {\n if (!adFormats || !device) {\n console.warn(\n 'Missing some of the required arguments: adFormats, device'\n );\n }\n\n let [minWidth, maxWidth] = mapDeviceNameToViewport(device);\n let sizes = mapManyAdFormatsToSizes(adFormats);\n\n let sizeMap = [\n {\n viewport: [minWidth, 0],\n slot: sizes\n }\n ];\n\n if (maxWidth > 0) {\n sizeMap.push({\n viewport: [maxWidth + 1, 0], // add 1 pixel to make max-width inclusive\n slot: []\n });\n }\n\n if (0 < minWidth) {\n sizeMap.push({\n viewport: [0, 0],\n slot: []\n });\n }\n\n return sizeMap;\n};\n\nexport {\n createGptSizeMapping,\n mapSingleAdFormatToSizes,\n mapManyAdFormatsToSizes,\n mapDeviceNameToViewport\n};\n","import React from 'react';\nimport AccessoriesIcon from '@tradera/blueprint/theme/icons2/category-accessories.svg?jsx';\nimport AntiquesDesignIcon from '@tradera/blueprint/theme/icons2/category-antiques-design.svg?jsx';\nimport ArtIcon from '@tradera/blueprint/theme/icons2/category-art.svg?jsx';\nimport BeautyCareIcon from '@tradera/blueprint/theme/icons2/category-beauty-care.svg?jsx';\nimport BooksMagazinesIcon from '@tradera/blueprint/theme/icons2/category-books-magazines.svg?jsx';\nimport CharityIcon from '@tradera/blueprint/theme/icons2/category-charity.svg?jsx';\nimport ChildrensClothingShoesIcon from '@tradera/blueprint/theme/icons2/category-childrens-clothing-shoes.svg?jsx';\nimport ChildrensItemsIcon from '@tradera/blueprint/theme/icons2/category-childrens-items.svg?jsx';\nimport ClothesIcon from '@tradera/blueprint/theme/icons2/category-clothes.svg?jsx';\nimport CollectiblesIcon from '@tradera/blueprint/theme/icons2/category-collectibles.svg?jsx';\nimport ComputersAccessoriesIcon from '@tradera/blueprint/theme/icons2/category-computers-accessories.svg?jsx';\nimport ConstructionToolsIcon from '@tradera/blueprint/theme/icons2/category-construction-tools.svg?jsx';\nimport ConsumerElectronicsIcon from '@tradera/blueprint/theme/icons2/category-consumer-electronics.svg?jsx';\nimport CurrencyIcon from '@tradera/blueprint/theme/icons2/category-currency.svg?jsx';\nimport DvdVideosIcon from '@tradera/blueprint/theme/icons2/category-dvd-videos.svg?jsx';\nimport GardenPlantsIcon from '@tradera/blueprint/theme/icons2/category-garden-plants.svg?jsx';\nimport HobbyIcon from '@tradera/blueprint/theme/icons2/category-hobby.svg?jsx';\nimport HomeHouseholdIcon from '@tradera/blueprint/theme/icons2/category-home-household.svg?jsx';\nimport JewlryGemstonesIcon from '@tradera/blueprint/theme/icons2/category-jewlry-gemstones.svg?jsx';\nimport MobilePhoneTelecommunicationsIcon from '@tradera/blueprint/theme/icons2/category-mobile-phone-telecommunications.svg?jsx';\nimport MusicIcon from '@tradera/blueprint/theme/icons2/category-music.svg?jsx';\nimport OtherIcon from '@tradera/blueprint/theme/icons2/category-other.svg?jsx';\nimport PhotoCamerasOpticsIcon from '@tradera/blueprint/theme/icons2/category-photo-cameras-optics.svg?jsx';\nimport PostcardsPicturesIcon from '@tradera/blueprint/theme/icons2/category-postcards-pictures.svg?jsx';\nimport ShoesIcon from '@tradera/blueprint/theme/icons2/category-shoes.svg?jsx';\nimport SportsLeisureIcon from '@tradera/blueprint/theme/icons2/category-sports-leisure.svg?jsx';\nimport StampIcon from '@tradera/blueprint/theme/icons2/category-stamp.svg?jsx';\nimport TicketsTravelIcon from '@tradera/blueprint/theme/icons2/category-tickets-travel.svg?jsx';\nimport ToysChildrensItemsIcon from '@tradera/blueprint/theme/icons2/category-toys-childrens-items.svg?jsx';\nimport WatchesIcon from '@tradera/blueprint/theme/icons2/category-watches.svg?jsx';\nimport VehiclesBoatsPartsIcon from '@tradera/blueprint/theme/icons2/category-vehicles-boats-parts.svg?jsx';\nimport VideoComputerGamesIcon from '@tradera/blueprint/theme/icons2/category-video-computer-games.svg?jsx';\nimport HandmadeAppliedArtsIcon from '@tradera/blueprint/theme/icons2/category-handmade-applied-arts.svg?jsx';\nimport PriceIcon from '@tradera/blueprint/theme/icons/price.svg?jsx';\n\nconst categoryIcons = {\n 0: PriceIcon, // Rabattkoder\n 10: VehiclesBoatsPartsIcon,\n 11: BooksMagazinesIcon,\n 12: ComputersAccessoriesIcon,\n 13: DvdVideosIcon,\n 14: PhotoCamerasOpticsIcon,\n 15: StampIcon,\n 16: ClothesIcon,\n 17: ConsumerElectronicsIcon,\n 18: HobbyIcon,\n 19: WatchesIcon,\n 20: AntiquesDesignIcon,\n 21: MusicIcon,\n 22: CurrencyIcon,\n 23: ArtIcon,\n 24: JewlryGemstonesIcon,\n 25: SportsLeisureIcon,\n 26: MobilePhoneTelecommunicationsIcon,\n 27: PostcardsPicturesIcon,\n 28: OtherIcon,\n 29: CollectiblesIcon,\n 30: VideoComputerGamesIcon,\n 31: HomeHouseholdIcon,\n 32: ConstructionToolsIcon,\n 33: ChildrensClothingShoesIcon,\n 34: TicketsTravelIcon,\n 35: CharityIcon,\n 36: HandmadeAppliedArtsIcon,\n 1605: GardenPlantsIcon,\n 1611: ChildrensItemsIcon,\n 1612: AccessoriesIcon,\n 1623: ShoesIcon,\n 340736: BeautyCareIcon,\n 302571: ToysChildrensItemsIcon,\n 343319: ToysChildrensItemsIcon\n};\n\nexport const getCategoryIcon = (categoryId, label) => {\n const IconComponent = categoryIcons[categoryId];\n if (!IconComponent) {\n console.error(\n `IconComponent missing for id: ${categoryId} label: ${label}`\n );\n return null;\n }\n return ;\n};\n","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { memberIdentificationClient } from 'tradera-utils/http';\nimport { Trans, useTranslator } from 'tradera-lang/translate';\nimport { LocalLoader } from 'tradera-components/loader/loader';\n\nconst STATE = {\n VERIFYING: 'VERIFYING',\n ERROR_UNAVAILABLE: 'ERROR_UNAVAILABLE',\n CONTACT_CUSTOMER_SUPPORT: 'CONTACT_CUSTOMER_SUPPORT'\n};\n\nconst addScriptToDom = zignSecWebSDKUrl => {\n const dataAttributeName = 'data-zign-sec-web-sdk-url-script';\n if (document.querySelector(`[${dataAttributeName}]`)) {\n return;\n }\n const js = document.createElement('script');\n js.setAttribute(dataAttributeName, '1');\n js.setAttribute('type', 'text/javascript');\n js.setAttribute('src', zignSecWebSDKUrl);\n document.body.appendChild(js);\n};\n\nexport const DocumentScanning = ({ onVerifyComplete }) => {\n const zignSecWebSDKUrl = useSelector(\n state => state.initData.pageSpecificData.zignSecWebSDKUrl\n );\n const { t } = useTranslator();\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n addScriptToDom(zignSecWebSDKUrl);\n }, [zignSecWebSDKUrl]);\n const [verifyingState, setVerifyingState] = useState(STATE.VERIFYING);\n\n useEffect(() => {\n if (verifyingState !== STATE.VERIFYING) {\n return;\n }\n\n let currentTimeoutId = null;\n const poll = (zs, sessionId) =>\n new Promise(resolve => {\n const call = () => {\n currentTimeoutId = setTimeout(async () => {\n try {\n // Result will appear when verification is completed.\n const { result } = await zs.getSessionStatus(\n sessionId\n );\n\n if (result) {\n return resolve();\n }\n } catch (error) {\n console.error(error);\n } finally {\n if (currentTimeoutId) {\n call();\n }\n }\n }, 2000);\n };\n call();\n });\n setIsLoading(true);\n memberIdentificationClient\n .query('ScanningsCreateWebToken?purpose=SYI')\n .then(async ({ token, relayState }) => {\n setIsLoading(false);\n const zs = new window.ZignSec(token, window.ZsProduct.Scanning);\n\n const r = await zs.openInIframe('zs-root', {\n relay_state: relayState,\n analysis_types: ['document', 'selfie', 'fraud']\n });\n await poll(zs, r.id);\n\n setIsLoading(true);\n return await memberIdentificationClient.command(\n 'ScanningResult',\n {\n sessionId: r.id,\n relayState: relayState\n }\n );\n })\n .then(({ isSuccessful }) => {\n setIsLoading(false);\n\n if (isSuccessful) {\n onVerifyComplete();\n } else {\n setVerifyingState(STATE.CONTACT_CUSTOMER_SUPPORT);\n }\n return;\n })\n .catch(() => {\n setIsLoading(false);\n setVerifyingState(STATE.ERROR_UNAVAILABLE);\n });\n return () => {\n currentTimeoutId && clearTimeout(currentTimeoutId);\n currentTimeoutId = null;\n };\n }, [verifyingState, setVerifyingState, setIsLoading, onVerifyComplete]);\n\n return (\n
\n {isLoading && }\n {verifyingState === STATE.VERIFYING && !isLoading && (\n
\n )}\n {verifyingState === STATE.ERROR_UNAVAILABLE && (\n \n {t('international_identification_errorUnavailable')}\n \n )}\n {verifyingState === STATE.CONTACT_CUSTOMER_SUPPORT && (\n
\n

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

\n

\n }}\n />\n

\n setVerifyingState(STATE.VERIFYING)}>\n {t('international_identification_buttonTryAgain')}\n \n
\n )}\n
\n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"logo\":\"logo--swiNm\"};","import React from 'react';\nimport styles from './mit-id-logo.module.scss';\n\nexport const MitIdLogo = ({ className }) => {\n return (\n \n \n \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"international-identification-modal-dynamic-height\":\"international-identification-modal-dynamic-height--2TA7f\",\"internationalIdentificationModalDynamicHeight\":\"international-identification-modal-dynamic-height--2TA7f\",\"international-identification-modal-delineator\":\"international-identification-modal-delineator--3TYiE\",\"internationalIdentificationModalDelineator\":\"international-identification-modal-delineator--3TYiE\",\"international-identification-modal-mit-id-button\":\"international-identification-modal-mit-id-button--3wBgt\",\"internationalIdentificationModalMitIdButton\":\"international-identification-modal-mit-id-button--3wBgt\"};","import React, { useEffect, useState } from 'react';\nimport { DocumentScanning } from 'tradera-components/international-identification-modal/document-scanning';\nimport draftActions from 'tradera-state/views/syi/actions/draft-actions';\nimport { useDispatch } from 'react-redux';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { closeModal } from 'tradera-state/ui/action-creators';\nimport { memberIdentificationClient } from 'tradera-utils/http';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\nimport ModalContainer from '../../../EbaySweden.TouchWeb/static/script/components/modals/modal-container';\nimport ModalHeader from '../../../EbaySweden.TouchWeb/static/script/components/modals/modal-header';\nimport ModalBody from '../../../EbaySweden.TouchWeb/static/script/components/modals/modal-body';\nimport { LocalLoader } from 'tradera-components/loader';\nimport {\n MitId,\n MitIdDesktop\n} from 'tradera-components/international-identification-modal/mit-id';\nimport { MitIdLogo } from './mit-id-logo';\nimport styles from './international-identification-modal.module.scss';\nimport { isDesktop } from 'tradera-utils/breakpoints';\n\nexport const InternationalIdentificationModal = () => {\n const dispatch = useDispatch();\n const { t } = useTranslator();\n const [validIdentifications, setValidIdentifications] = useState(null);\n const [error, setError] = useState(null);\n const [selectedIdentification, setSelectedIdentification] = useState(null);\n\n useEffect(() => {\n memberIdentificationClient\n .query('getvalididentifications')\n .then(data => {\n setValidIdentifications(data.validIdentifications);\n return;\n })\n .catch(setError);\n }, [setValidIdentifications]);\n\n const selectedIdentificationGui = {\n DocumentScanning: () => (\n {\n dispatch(draftActions.publish(t));\n dispatch(closeModal());\n }}\n />\n ),\n MitId: () =>\n isDesktop() ? (\n {\n dispatch(draftActions.publish(t));\n dispatch(closeModal());\n }}\n onVerifyCancel={() => setSelectedIdentification(null)}\n />\n ) : (\n {\n dispatch(draftActions.publish(t));\n dispatch(closeModal());\n }}\n onVerifyCancel={() => setSelectedIdentification(null)}\n />\n )\n }[selectedIdentification];\n\n return (\n dispatch(closeModal())}>\n dispatch(closeModal())}\n className={`${\n !selectedIdentificationGui\n ? styles.internationalIdentificationModalDynamicHeight\n : ''\n }`}>\n dispatch(closeModal())}>\n {t('international_identification_heading')}\n \n \n {!selectedIdentificationGui && validIdentifications && (\n
\n
\n {t('international_identification_intro_text')}\n
\n {validIdentifications.some(x => x === 'MitId') && (\n <>\n \n setSelectedIdentification('MitId')\n }>\n \n {t(\n 'international_identification_mitid_button'\n )}\n \n
\n \n {t(\n 'international_identification_or'\n )}\n \n
\n
\n \n )}\n \n setSelectedIdentification(\n 'DocumentScanning'\n )\n }>\n {t(\n 'international_identification_other_verifications'\n )}\n \n
\n )}\n {selectedIdentificationGui && selectedIdentificationGui()}\n {!validIdentifications && !error && }\n {error && (\n
\n {t('international_identification_errorUnavailable')}\n
\n )}\n
\n \n
\n );\n};\n\nexport const internationalIdentificationModalId =\n 'internationalIdentificationModalId';\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport LocationIcon from '@tradera/blueprint/theme/icons2/location.svg?jsx';\nimport { useUrlLocalizer } from 'tradera-lang/translate';\nimport { selectShowLocalizationRegionPicker } from 'tradera-state/shipping-region/selectors';\nimport { selectGeolocation } from 'tradera-state/member/selectors';\nimport { dismissLocalizationRegionPicker } from 'tradera-state/shipping-region/reducer';\nimport { onLocalizationShippingRegionSelected } from 'tradera-state/shipping-region/actions';\nimport ApplicationErrorBoundary from 'tradera-components/application-error-boundary/application-error-boundary';\nimport Flag from 'tradera-components/flag/flag';\n\nconst LocalizationRegionPicker = ({\n showLocalizationRegionPicker,\n dismissLocalizationRegionPicker,\n onLocalizationShippingRegionSelected,\n geolocation\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const onClick = () => {\n onLocalizationShippingRegionSelected({\n countryCodeIso2: geolocation.isoCode,\n currencyCode: geolocation.currency,\n toLocalizedUrl\n });\n dismissLocalizationRegionPicker();\n };\n\n return showLocalizationRegionPicker ? (\n \n
\n
\n \n
\n

\n \n Would you like to set your browsing destination\n to
\n \n {geolocation.name}?\n
\n

\n

\n \n Yes, set my location\n \n

\n
\n \n \n \n
\n
\n
\n ) : null;\n};\n\nconst mapStateToProps = state => ({\n showLocalizationRegionPicker: selectShowLocalizationRegionPicker(state),\n geolocation: selectGeolocation(state)\n});\n\nconst mapDispatchToProps = {\n dismissLocalizationRegionPicker,\n onLocalizationShippingRegionSelected\n};\n\nexport const ConnectedLocalizationRegionPicker = connect(\n mapStateToProps,\n mapDispatchToProps\n)(LocalizationRegionPicker);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { HOVER_MENUS } from './hover-menu/constants';\nimport { selectPreferredLanguage } from 'tradera-state/language/selectors';\nimport {\n selectShowLocalizationRegionPicker,\n selectShowRegionSelection\n} from 'tradera-state/shipping-region/selectors';\nimport HoverMenu from './hover-menu/hover-menu';\nimport hoverMenuStyles from './hover-menu/hover-menu.module.scss';\nimport { LocalizationMenu } from 'components/localization/localization-menu';\nimport { ConnectedLocalizationRegionPicker } from './localization-region-picker';\nimport DropdownIcon from '@tradera/blueprint/theme/icons2/dropdown.svg?jsx';\nimport TranslateIcon from '@tradera/blueprint/theme/icons2/translate.svg?jsx';\nimport { getCountryCodeFromLanguage } from 'tradera-utils/languagecode';\nimport Flag from 'tradera-components/flag/flag';\n\nconst PlainLocalizationLink = ({\n onClick,\n onBlur,\n mouseOver,\n mouseOut,\n showMenu,\n preferredLanguage,\n showRegionSelection,\n showLocalizationRegionPicker,\n transparentHeader,\n showIconInsteadOfFlag = false\n}) => {\n const countryCode = getCountryCodeFromLanguage(\n preferredLanguage.languageCodeIso2\n );\n\n return (\n \n mouseOver(HOVER_MENUS.LOCALIZATION)}\n onMouseLeave={mouseOut}>\n {\n GtmService.trackAction(\n 'Top navigation',\n 'Localization menu',\n 'Open/Close'\n );\n onClick(e, HOVER_MENUS.LOCALIZATION);\n }}>\n {showIconInsteadOfFlag ? (\n \n \n \n ) : (\n \n \n \n )}\n \n \n \n {\n onBlur(e, HOVER_MENUS.LOCALIZATION);\n }}\n showRegionSelection={showRegionSelection || false}\n />\n \n
\n \n \n );\n};\n\nconst mapStateToProps = (state, { hideRegionSelection = false }) => ({\n preferredLanguage: selectPreferredLanguage(state),\n showRegionSelection:\n !hideRegionSelection && selectShowRegionSelection(state),\n showLocalizationRegionPicker: selectShowLocalizationRegionPicker(state)\n});\n\nconst mapDispatchToProps = {};\n\nexport const LocalizationLink = connect(\n mapStateToProps,\n mapDispatchToProps\n)(PlainLocalizationLink);\n","// extracted by mini-css-extract-plugin\nexport default {\"hover-localization-menu-footer\":\"hover-localization-menu-footer--1-Xjm\",\"hoverLocalizationMenuFooter\":\"hover-localization-menu-footer--1-Xjm\"};","import React, { useState } from 'react';\nimport { connect } from 'react-redux';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { selectShowRegionSelection } from 'tradera-state/shipping-region/selectors';\nimport { useTranslator } from 'tradera-lang/translate';\nimport DropdownIcon from '@tradera/blueprint/theme/icons2/dropdown.svg?jsx';\nimport { LocalizationMenu } from 'static/script/components/localization/localization-menu';\nimport HoverMenu from 'tradera-components/site-header/hover-menu/hover-menu';\nimport styles from './footer-localization-link.module.scss';\nconst trackAnalytics = visible => {\n const label = visible ? 'Open' : 'Close';\n GtmService.trackAction('Footer', 'Localization menu', label);\n};\n\nconst FooterLocalizationLink = ({ showRegionSelection }) => {\n const { t } = useTranslator();\n const [\n isLocalizationSettingsVisible,\n setLocalizationSettingsVisible\n ] = useState(false);\n\n const onClick = () => {\n const shouldBeVisible = !isLocalizationSettingsVisible;\n trackAnalytics(shouldBeVisible);\n setLocalizationSettingsVisible(shouldBeVisible);\n };\n\n const title = showRegionSelection\n ? t('footer_localization_regionAndlanguage')\n : t('footer_localization_language');\n\n return (\n <>\n setLocalizationSettingsVisible(false)}>\n setLocalizationSettingsVisible(false)}\n showRegionSelection={showRegionSelection || false}\n />\n \n \n {title}\n \n \n \n );\n};\n\nconst mapStateToProps = state => ({\n showRegionSelection: selectShowRegionSelection(state)\n});\n\nexport default connect(mapStateToProps)(FooterLocalizationLink);\n","class ConsentService {\n openUi = () =>\n typeof window.__tcfapi === 'function' &&\n window.__tcfapi('displayConsentUi', 2, () => {});\n}\n\nexport default new ConsentService();\n","// extracted by mini-css-extract-plugin\nexport default {\"link-container\":\"link-container--1ds_S\",\"linkContainer\":\"link-container--1ds_S\"};","import React from 'react';\nimport { useSelector } from 'react-redux';\n\nimport {\n useTranslator,\n useCurrentLanguage,\n useUrlLocalizer\n} from 'tradera-lang/translate';\n\nimport { isSwedishOrUndefined } from 'tradera-utils/languagecode';\nimport ConsentService from 'tradera-utils/consent-service';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\nimport styles from './footer-links.module.scss';\n\nconst FooterLinks = ({ links, callerId }) => {\n const { language } = useCurrentLanguage();\n\n const linksToRender =\n language !== 'sv' ? links.filter(link => !link.onlySwedish) : links;\n\n return (\n <>\n {linksToRender.map(\n ({ text, className, onlySwedish, ...rest }, index) => {\n return (\n \n {text}\n \n );\n }\n )}\n \n );\n};\n\nexport const BuyingLinks = () => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const isNextWebBrandsPageEnabled = useSelector(\n state => !!state.environment.featureSwitches['next-web-brands-page']\n );\n\n const links = [\n {\n href: toLocalizedUrl('/how-to-buy'),\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Så handlar du på Tradera',\n text: t('footer_howToShop'),\n onlySwedish: false\n },\n {\n href: toLocalizedUrl('/kategorier'),\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Kategorier',\n text: t('footer_categories'),\n onlySwedish: false\n },\n {\n href: toLocalizedUrl(\n `/brands${isNextWebBrandsPageEnabled ? '?next=1' : ''}`\n ),\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Populära varumärken',\n text: t('footer_popularBrands'),\n onlySwedish: false\n },\n {\n href: toLocalizedUrl('/inspiration'),\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Inspiration',\n text: t('footer_inspiration'),\n onlySwedish: true\n },\n {\n href: '/info/gronfrakt/',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Grön frakt på Tradera',\n text: t('footer_greenShipping'),\n onlySwedish: true\n }\n ];\n\n return (\n
\n

{t('footer_buyHeading')}

\n
    \n \n
\n
\n );\n};\n\nexport const SellingLinks = () => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const isPennybridgeCharitiesEnabled = useIsFeatureEnabled(\n 'pennybridge-charities'\n );\n\n const links = [\n {\n href: toLocalizedUrl('/how-to-sell'),\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Så säljer du som privatperson',\n text: t('footer_howToSellPrivate'),\n onlySwedish: false\n },\n {\n href: 'https://info.tradera.com/foretag/',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Sälj som företag',\n text: t('footer_howToSellCorporate'),\n onlySwedish: true\n },\n isPennybridgeCharitiesEnabled && {\n href: toLocalizedUrl('/causes'),\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Donera med Tradera',\n text: t('footer_donateWithTradera'),\n onlySwedish: true\n },\n {\n href: '/frakt',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Fraktkalkylator',\n text: t('footer_shippingCalculator'),\n onlySwedish: true\n },\n {\n href: 'https://info.tradera.com/butik-privat/',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Butik',\n text: t('footer_store'),\n onlySwedish: true\n }\n ].filter(Boolean);\n\n return (\n
\n

{t('footer_sellHeading')}

\n
    \n \n
\n
\n );\n};\n\nexport const ContactAndHelpLinks = ({ pageName, openGdprSettings }) => {\n const { t } = useTranslator();\n const { language } = useCurrentLanguage();\n const isQuantcastConsentEnabled = useIsFeatureEnabled('quantcast-consent');\n\n const links = [\n {\n href: 'https://info.tradera.com/sakerhetscenter/regler-pa-tradera/',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Regler på Tradera',\n text: t('footer_traderaRules'),\n onlySwedish: true\n },\n {\n href: 'http://www.mynewsdesk.com/se/tradera',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Press',\n text: t('footer_press'),\n rel: 'nofollow',\n onlySwedish: true\n },\n {\n href: 'https://info.tradera.com/sakerhetscenter',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Säkerhet',\n text: t('footer_security'),\n onlySwedish: true\n },\n {\n href: isSwedishOrUndefined(language)\n ? 'https://info.tradera.com/'\n : 'https://info.tradera.com/en/',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Vanliga frågor',\n text: t('footer_faq'),\n onlySwedish: false\n },\n {\n href: 'https://www.tradera.com/info/blogg/',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Vad är nytt',\n text: t('footer_whatsUp'),\n onlySwedish: true\n },\n {\n href:\n 'http://info.tradera.com/#humany-vanliga-fragor-och-svar=/contact',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Kontakta oss',\n text: t('footer_contactUs'),\n onlySwedish: true\n },\n {\n href:\n pageName === 'SellItem'\n ? '//tradera.humany.net/syi'\n : '//tradera.humany.net/juno',\n text: t('footer_customerService'),\n rel: 'nofollow',\n className: 'd-none',\n onlySwedish: false\n },\n {\n href: '#',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Open GDPR Settings',\n text: t('footer_gdpr_settings'),\n onClick: event => {\n event.preventDefault();\n if (isQuantcastConsentEnabled) {\n ConsentService.openUi();\n } else {\n openGdprSettings();\n }\n },\n onlySwedish: false\n }\n ];\n\n return (\n
\n

{t('footer_contactHelpHeading')}

\n
    \n \n
\n
\n );\n};\n\nexport const CouponCodeLinks = ({ isCouponationNavLinkEnabled }) => {\n const { t } = useTranslator();\n const { language } = useCurrentLanguage();\n const links = [\n {\n href: '/rabattkoder/cdon',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'CDON',\n text: 'CDON',\n onlySwedish: true\n },\n {\n href: '/rabattkoder/ellos',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Ellos',\n text: 'Ellos',\n onlySwedish: true\n },\n {\n href: '/rabattkoder/hotels-com',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Hotels.com',\n text: 'Hotels.com',\n onlySwedish: true\n },\n {\n href: '/rabattkoder/jotex',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Jotex',\n text: 'Jotex',\n onlySwedish: true\n },\n {\n href: '/rabattkoder/nelly',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Nelly',\n text: 'Nelly',\n onlySwedish: true\n }\n ];\n\n return isSwedishOrUndefined(language) ? (\n
\n {isCouponationNavLinkEnabled && (\n <>\n

{t('footer_couponCodes')}

\n
    \n \n
\n \n )}\n
\n ) : null;\n};\n","import React from 'react';\nimport { useTranslator, useCurrentLanguage } from 'tradera-lang/translate';\nimport { isSwedishOrUndefined } from 'tradera-utils/languagecode';\nimport PaypalLogo from '@tradera/blueprint/theme/logos/paypal.svg?jsx';\nimport MastercardLogo from '@tradera/blueprint/theme/logos/mastercard_vertical.svg?jsx';\nimport MaestroLogo from '@tradera/blueprint/theme/logos/maestro_vertical.svg?jsx';\nimport VisaLogo from '@tradera/blueprint/theme/logos/visa.svg?jsx';\nimport GooglePayLogo from '@tradera/blueprint/theme/logos/google-pay.svg?jsx';\nimport ApplePayLogo from '@tradera/blueprint/theme/logos/apple-pay.svg?jsx';\n\nexport const FooterPartners = () => {\n const { t } = useTranslator();\n const { language } = useCurrentLanguage();\n\n const groupedPartners = [\n {\n type: 'payment1',\n partners: [\n {\n logo: (\n \n )\n },\n {\n logo: (\n \n )\n }\n ]\n },\n {\n type: 'payment2',\n partners: [\n {\n logo: (\n \n )\n },\n {\n logo: \n }\n ]\n },\n {\n type: 'payment3',\n partners: [\n {\n logo: (\n \n )\n },\n {\n logo: (\n \n )\n }\n ]\n },\n {\n type: 'shipping1',\n partners: [\n {\n src: '/static/images/shipping/schenker.svg',\n alt: 'DB Schenker logo'\n }\n ]\n },\n {\n type: 'shipping2',\n partners: [\n {\n src: '/static/images/shipping/postnord.svg',\n alt: 'Postnord logo'\n }\n ]\n }\n ];\n\n return !isSwedishOrUndefined(language) ? (\n
\n

{t('footer_partners')}

\n
    \n {groupedPartners.map(group => {\n return (\n
  • \n {group.partners.map(partner => {\n return partner.logo ? (\n partner.logo\n ) : (\n \n );\n })}\n
  • \n );\n })}\n
\n
\n ) : null;\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"site-footer\":\"site-footer--Hop1m\",\"siteFooter\":\"site-footer--Hop1m\",\"wrapper\":\"wrapper--15bXC\",\"icon-row\":\"icon-row--1Hv0p\",\"iconRow\":\"icon-row--1Hv0p\",\"symbol\":\"symbol--tlYV3\",\"logo\":\"logo--vnsX0\",\"play-animation\":\"play-animation--3N0nR\",\"playAnimation\":\"play-animation--3N0nR\",\"counter-clockwise\":\"counter-clockwise--1fr4x\",\"counterClockwise\":\"counter-clockwise--1fr4x\"};","import React from 'react';\nimport { connect } from 'react-redux';\nimport { useInView } from 'react-intersection-observer';\nimport { useTranslator } from 'tradera-lang/translate';\nimport {\n Breakpoint,\n BREAKPOINTS\n} from 'tradera-components/breakpoint/breakpoint';\nimport uiActions from 'tradera-state/ui/actions';\nimport FooterLocalizationLink from './footer-localization-link';\nimport { selectPreferredLanguage } from 'tradera-state/language/selectors';\nimport { isSwedishOrUndefined } from 'tradera-utils/languagecode';\nimport AppstoreLogo from '@tradera/blueprint/theme/logos/appstore.svg?jsx';\nimport FacebookIcon from '@tradera/blueprint/theme/icons2/network-fb.svg?jsx';\nimport GooglePlayLogo from '@tradera/blueprint/theme/logos/googleplay.svg?jsx';\nimport InstagramIcon from '@tradera/blueprint/theme/icons2/network-ig.svg?jsx';\nimport LinkedInIcon from '@tradera/blueprint/theme/icons2/network-linkedin.svg?jsx';\nimport PinterestIcon from '@tradera/blueprint/theme/icons2/network-pin.svg?jsx';\nimport TwitterIcon from '@tradera/blueprint/theme/icons2/network-twitter.svg?jsx';\nimport BankidIcon from '@tradera/blueprint/theme/icons2/bankid.svg?jsx';\nimport TraderaSymbol from '@tradera/blueprint/theme/logos/tradera_symbol.svg?jsx';\n\nimport {\n BuyingLinks,\n SellingLinks,\n ContactAndHelpLinks,\n CouponCodeLinks\n} from './footer-links';\nimport { FooterPartners } from './footer-partners';\n\nimport styles from './site-footer.module.scss';\n\nconst SiteFooter = ({\n pageName,\n isCouponationNavLinkEnabled,\n openGdprSettings,\n isSwedish\n}) => {\n const { t } = useTranslator();\n\n const [symbolRef, inView] = useInView({\n threshold: 0\n });\n\n return (\n \n
\n
\n
\n {/* Köp */}\n \n\n {/* Sälj */}\n \n {/* Kontakt & hjälp */}\n \n {/* Rabattkoder */}\n \n \n
\n
\n
\n
\n {/* Social media */}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n {/* App download */}\n
\n \n \n \n \n \n \n
\n
\n
\n
\n
\n
\n \n \n \n \n {t('footer_userAgreement')}\n \n \n {t('footer_integrityPolicy')}\n \n \n {t('footer_cookies')}\n \n \n {t('footer_aboutTradera')}\n \n \n {t('footer_availableJobs')}\n \n
\n
\n {/* Copyright */}\n
\n

\n © {new Date().getFullYear()} Tradera\n

\n
\n
\n
\n
\n \n
\n \n );\n};\n\nconst mapStateToProps = state => ({\n pageName: state.page.name,\n isSwedish: isSwedishOrUndefined(\n selectPreferredLanguage(state)?.languageCodeIso2\n ),\n isCouponationNavLinkEnabled:\n state.environment.featureSwitches['couponation-nav-link']\n});\n\nconst mapDispatchToProps = dispatch => ({\n openGdprSettings: () => dispatch(uiActions.openGdprSettings())\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SiteFooter);\n","import React from 'react';\nimport PropType from 'prop-types';\n\nconst ModalBody = ({ children, className = '', inlineStyle = {} }) => (\n \n {children}\n \n);\n\nModalBody.propTypes = {\n children: PropType.node.isRequired,\n className: PropType.string\n};\n\nexport default ModalBody;\n","import { defaultClient as httpClient } from 'tradera-utils/http';\nimport ENDPOINTS from 'tradera-constants/endpoints';\n\nconst sendSessionStart = () => {\n httpClient.post(ENDPOINTS.SELLING_SCRIBE_SESSION_START);\n};\n\nconst sendSessionDuration = (duration, madeByTemplate) => {\n httpClient.post(ENDPOINTS.SELLING_SCRIBE_SESSION_DURATION, {\n durationMilliSeconds: duration,\n madeByTemplate: madeByTemplate\n });\n};\n\nconst sendDuration = (measuredName, durationMilliSeconds) => {\n httpClient.post(ENDPOINTS.SELLING_SCRIBE_DURATION, {\n measuredName: measuredName,\n durationMilliSeconds: durationMilliSeconds\n });\n};\n\nconst sendIncrement = name => {\n httpClient.post(ENDPOINTS.SELLING_SCRIBE_INCREMENT, {\n name: name\n });\n};\n\nconst sendValidationErrors = errors => {\n httpClient.post(ENDPOINTS.SELLING_SCRIBE_VALIDATION_ERRORS, {\n errors: errors\n });\n};\n\nexport default {\n sendSessionStart,\n sendSessionDuration,\n sendDuration,\n sendIncrement,\n sendValidationErrors\n};\n","/**\n * description:\n * this is the coolest modal to use at Tradera.com. the width of the content of this modal\n * decides how big this modal should be.\n *\n * To use this modal\n * \n * Header Text\n * This is the body\n * This is my footer\n * \n\n */\n\nimport React from 'react';\nimport PropType from 'prop-types';\n\nconst ModalContainer = ({ children, className = '', style = {} }) => {\n return (\n {\n e.stopPropagation();\n }}>\n {children}\n \n );\n};\n\nModalContainer.propTypes = {\n children: PropType.node.isRequired,\n className: PropType.string,\n style: PropType.object\n};\n\nexport default ModalContainer;\n","(function($) {\n if (!$) {\n return;\n }\n\n const jqueryTrigger = $.event.trigger;\n // trigger signature: function (event, data, elem, onlyHandlers)\n $.event.trigger = function(event, data, elem, onlyHandlers) {\n try {\n // Dispatch regular event, prefixed with 'jquery:'\n const eventPrefix = 'jquery:';\n const prefixedEventName = eventPrefix + event;\n const jsEvent = data\n ? new CustomEvent(prefixedEventName, { detail: data })\n : new CustomEvent(prefixedEventName);\n const elem2dispatchEvent = elem ? elem : window;\n elem2dispatchEvent.dispatchEvent(jsEvent);\n } catch (error) {\n return;\n }\n\n // Dispatch jquery event\n jqueryTrigger(event, data, elem, onlyHandlers);\n };\n})(window.jQuery);\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// We map this way to ensure that each key in lokalise is present in code.\n// This allows us to clean up unnecessary codes in the future.\nexport const mapLanguageCodeToLanguageKey = languageCode => {\n const lokaliseKey = {\n sv: 'language_sv',\n da: 'language_da',\n de: 'language_de',\n en: 'language_en'\n }[languageCode.toLowerCase()];\n if (!lokaliseKey)\n throw `Language ${languageCode} has no mapping to lokalise key`;\n return lokaliseKey;\n};\n","import ENDPOINTS from 'tradera-constants/endpoints';\nimport { defaultClient as httpClient } from 'tradera-utils/http';\n\nconst toInt = n => {\n return Math.round(Number(n)) | 0;\n};\n\nconst calculateShipping = (length, width, height, weight) => {\n length = toInt(length);\n width = toInt(width);\n height = toInt(height);\n weight = toInt(weight);\n\n if (!length || !width || !height || !weight) {\n return Promise.reject();\n }\n\n const params = new URLSearchParams({\n height,\n length,\n weight,\n width\n }).toString();\n\n return httpClient\n .get(`${ENDPOINTS.SELLING_SHIPPING_CALCULATOR}?${params}`)\n .then(response => response.data);\n};\n\nexport default { calculateShipping };\n","import ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n API_ERRORS,\n axiosConfigs,\n axiosWithTokenRefresh,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\nimport { webApiClient } from 'tradera-utils/http';\nimport initData from 'init-data';\n\nexport const getShippingProviders = () => {\n return axiosWithTokenRefresh()\n .get(ENDPOINTS.SHIPPING_PROVIDERS, {\n ...axiosConfigs.authenticated\n })\n .then(finalizeResponse())\n .then(prepareResultForView)\n .catch(\n handleError({\n // Ignore 400 & 401 errors that slip through token refresh\n 400: API_ERRORS.IGNORE_ME,\n 401: API_ERRORS.IGNORE_ME\n })\n );\n};\n\nexport const getShippingProvidersByWeight = fromCountry =>\n webApiClient.get(\n `/selling/shipping-products-for-country-by-weight-span?fromCountryCode=${fromCountry}`,\n axiosConfigs.authenticated\n );\n\nconst GetRestrictionText = texts => {\n return texts.length === 0\n ? null\n : `

${texts[0]}

`;\n};\n\nconst prepareResultForView = result => {\n return result.data.shippingProviders\n .filter(\n shippingProvider =>\n shippingProvider.id !== 'BringDenmark' ||\n initData.featureSwitches['syi-bring']\n )\n .map(shippingProvider => {\n shippingProvider.useAdvancedWidget =\n shippingProvider.products &&\n shippingProvider.products[0].variants &&\n shippingProvider.products[0].variants.length > 1;\n\n const promotedProviders = ['DBSchenker', 'PostNord', 'DHL'];\n\n shippingProvider.promoted =\n promotedProviders.find(p => p === shippingProvider.id) !==\n undefined;\n\n shippingProvider.isObsolete = shippingProvider.isObsolete || false;\n\n const logoUrls = {\n DBSchenker: '/static/images/shipping/schenker.svg',\n PostNord: '/static/images/shipping/postnord.svg',\n PostNordDenmark: '/static/images/shipping/postnord.svg',\n BringDenmark: '/static/images/shipping/bring.svg',\n DHL: '/static/images/shipping/dhl.svg',\n Bussgods: '/static/images/shipping/bussgods.svg',\n Alternative: null,\n AlternativeDenmark: null,\n Posten: null\n };\n shippingProvider.products = shippingProvider.products.map(\n product => {\n product.validationError = null;\n product.cost = null;\n product.selected = false;\n product.visible = product.type !== 'PostNordStamp';\n product.isValid = true;\n product.isStamps = product.type === 'PostNordStamp';\n product.logoImgUrl = logoUrls[shippingProvider.id];\n\n product.variants = product.variants.map(variant => {\n if (product.type == 'PostNordStamp') {\n variant.numberOfStamps =\n variant.price / product.variants[0].price;\n }\n\n variant.restrictionText = GetRestrictionText(\n variant.restrictionTexts\n );\n return variant;\n });\n\n return product;\n }\n );\n\n return shippingProvider;\n });\n};\n","/* eslint-disable promise/catch-or-return */\nimport shippingCalculatorService from 'tradera-apps/syi/script/app_react/services/shipping-calculator-service';\nimport { selectFeatureSwitches } from 'tradera-state/environment/selectors';\nimport {\n getShippingProviders,\n getShippingProvidersByWeight\n} from 'tradera-apps/syi/script/app_react/services/shipping-provider-service';\nimport {\n getPrimaryOrSecondaryProducts,\n getVariant\n} from '../reducers/shipping/shipping-selectors';\nimport { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\n\nconst reset = () => ({\n type: 'RESET_SHIPPING_OPTIONS'\n});\n\nconst resetSelected = () => ({\n type: 'RESET_SELECTED_SHIPPING_OPTIONS'\n});\n\nconst toggleShippingOption = (type, primary) => dispatch => {\n dispatch({\n type: 'TOGGLE_SHIPPING_OPTION',\n payload: {\n type,\n primary\n }\n });\n};\n\nconst setShippingOptionCost = (cost, primary) => ({\n type: 'SET_SHIPPING_OPTION_COST',\n payload: {\n cost,\n primary\n }\n});\n\nconst setShippingOptionVariant = (primary, variant) => dispatch => {\n dispatch({\n type: 'SET_SHIPPING_OPTION_VARIANT',\n payload: {\n primary,\n variant\n }\n });\n};\n\nconst setShippingOptionSelected = options => dispatch => {\n dispatch({\n type: 'SET_SHIPPING_OPTION_SELECTED',\n payload: options\n });\n};\n\nconst setOfferTakeaway = offerTakeaway => async (dispatch, getState) => {\n const shippingByWeightEnabled = selectFeatureSwitches(getState())[\n 'shipping-by-weight'\n ];\n dispatch({\n type: 'SET_TAKEAWAY_SELECTED',\n payload: {\n offerTakeaway,\n shippingByWeightEnabled\n }\n });\n};\n\nconst setOfferShipping = offerShipping => ({\n type: 'SET_SHIPPING_SELECTED',\n payload: {\n offerShipping\n }\n});\n\nconst setSecondaryShippingOptionOpen = open => ({\n type: 'SET_SECONDARY_SHIPPING_OPTION_OPEN',\n payload: { secondaryShippingOptionOpen: open }\n});\n\nconst removeShippingOption = primary => ({\n type: 'REMOVE_SHIPPING_OPTION',\n payload: {\n primary: primary\n }\n});\n\nconst makeSecondaryShippingOptionPrimary = () => ({\n type: 'MAKE_SECONDARY_SHIPPING_OPTION_PRIMARY'\n});\n\nconst clearSuggestedShippingProducts = primary => dispatch => {\n dispatch({\n type: 'CLEAR_SUGGESTED_SHIPPING_PRODUCTS',\n payload: { primary }\n });\n};\n\nconst setSuggestedShippingProducts = (\n shippingProducts,\n primary\n) => dispatch => {\n dispatch({\n type: 'SET_SUGGESTED_SHIPPING_PRODUCTS',\n payload: { shippingProducts, primary }\n });\n};\n\nconst calculateShipping = (\n length,\n width,\n height,\n weight,\n primary\n) => dispatch => {\n shippingCalculatorService\n .calculateShipping(length, width, height, weight)\n .then(data => {\n var shippingProducts = [];\n for (var i = 0; i < data.shippingOptions.length; i++) {\n let providerName = data.shippingOptions[i].providerName;\n let additionalInfo = null;\n\n if (providerName === 'Bussgods' && weight > 35000) {\n additionalInfo =\n 'OBS! Varje kolli får väga max 35 kg. Du kan skicka flera kollin i samma sändning.';\n }\n\n shippingProducts.push({\n type: providerName,\n cost: data.shippingOptions[i].price,\n description: data.shippingOptions[i].description,\n additionalInfo: additionalInfo\n });\n }\n dispatch(setSuggestedShippingProducts(shippingProducts, primary));\n return data;\n });\n};\n\nconst toggleShippingCalculator = primary => (dispatch, getState) => {\n const currentValue = getSyiSlice(getState()).shipping[\n primary\n ? 'showPrimaryShippingCalculator'\n : 'showSecondaryShippingCalculator'\n ];\n dispatch({\n type: 'SET_SHOW_SHIPPING_CALCULATOR',\n payload: { value: !currentValue, primary }\n });\n};\n\nconst setCalculatorDimensions = (dimensions, primary) => dispatch => {\n dispatch({\n type: 'SET_SHIPPING_CALCULATOR_DIMENSIONS',\n payload: { dimensions, primary }\n });\n};\n\nconst setShippingOptionsFromDraft = (shippingOptions = []) => async (\n dispatch,\n getState\n) => {\n if (\n shippingOptions.some(\n shippingOption =>\n shippingOption.type === 'Takeaway' ||\n shippingOption.type === 'TakeawayOnly'\n )\n ) {\n dispatch(setOfferTakeaway(true));\n } else {\n dispatch(setOfferTakeaway(false));\n }\n\n shippingOptions = shippingOptions.filter(\n shippingOption =>\n shippingOption.type !== 'Takeaway' &&\n shippingOption.type !== 'TakeawayOnly'\n );\n\n await dispatch(getShippingProvidersWithProducts());\n\n const removeCostIfCostMatchesSelectedProduct = (shippingOption, i) => {\n if (i > 1 || !shippingOption.productId || !shippingOption.cost) {\n return;\n }\n const shippingState = getSyiSlice(getState()).shipping;\n const variant = getVariant(shippingState, shippingOption);\n if (variant.price === shippingOption.cost) {\n shippingOption.cost = null;\n }\n };\n\n // Clone shipping options before mutating read only properies.\n shippingOptions = shippingOptions.map(shippingOption => ({\n ...shippingOption\n }));\n shippingOptions.forEach(removeCostIfCostMatchesSelectedProduct);\n\n dispatch({\n type: 'SET_SHIPPING_OPTIONS',\n payload: shippingOptions\n });\n\n const setShippingOptionVariantAfterDraft = isPrimary => {\n getPrimaryOrSecondaryProducts(\n getSyiSlice(getState()).shipping,\n isPrimary\n )\n .filter(({ productId }) => !!productId)\n .map(({ price, variants, productId }) => ({\n price,\n productVariant: variants.find(v => v.id === productId)\n }))\n .map(({ productVariant }) =>\n setShippingOptionVariant(isPrimary, productVariant)\n )\n .forEach(dispatch);\n };\n\n setShippingOptionVariantAfterDraft(true);\n setShippingOptionVariantAfterDraft(false);\n};\n\nconst getAndSetShippingOptionsByWeight = (\n shippingOptions = [],\n fromCountry\n) => async (dispatch, getState) => {\n try {\n dispatch({\n type: 'SET_SHIPPING_OPTIONS_LOADING'\n });\n\n const { data } = await getShippingProvidersByWeight(fromCountry);\n const { productsPerWeightSpan } = data;\n\n const bringEnabled = selectFeatureSwitches(getState())['syi-bring'];\n\n dispatch({\n type: 'SET_SHIPPING_OPTIONS_BY_WEIGHT',\n payload: {\n productsPerWeightSpan,\n shippingOptions,\n bringEnabled\n }\n });\n } catch (error) {\n dispatch({\n type: 'SET_SHIPPING_OPTIONS_ERROR'\n });\n }\n};\n\nconst getShippingProvidersWithProducts = () => async (dispatch, getState) => {\n const { shipping } = getSyiSlice(getState());\n\n if (\n (shipping.primaryShippingProviders &&\n shipping.primaryShippingProviders.length > 0) ||\n shipping.isLoadingProvidersWithProducts === true\n ) {\n return;\n }\n\n dispatch({\n type: 'SET_SHIPPING_PROVIDERS_WITH_PRODUCTS_FETCHING'\n });\n\n const shippingProviders = await getShippingProviders();\n\n dispatch({\n type: 'SET_SHIPPING_PROVIDERS_WITH_PRODUCTS',\n payload: shippingProviders\n });\n};\n\nconst setShippingFromcountry = payload => async (dispatch, getState) => {\n dispatch({\n type: 'SET_SHIPPING_FROMCOUNTRY',\n payload\n });\n\n const shippingByWeightEnabled = selectFeatureSwitches(getState())[\n 'shipping-by-weight'\n ];\n if (shippingByWeightEnabled) {\n dispatch(getAndSetShippingOptionsByWeight([], payload.fromCountry));\n } else {\n dispatch(resetSelected());\n }\n};\n\nconst setShippingFromcountryFromDraft = payload => ({\n type: 'SET_SHIPPING_FROMCOUNTRY',\n payload\n});\n\nexport default {\n calculateShipping,\n clearSuggestedShippingProducts,\n getShippingProvidersWithProducts,\n makeSecondaryShippingOptionPrimary,\n removeShippingOption,\n reset,\n resetSelected,\n setCalculatorDimensions,\n setOfferTakeaway,\n setOfferShipping,\n setSecondaryShippingOptionOpen,\n setShippingOptionCost,\n setShippingOptionsFromDraft,\n getAndSetShippingOptionsByWeight,\n setShippingOptionVariant,\n setShippingOptionSelected,\n setSuggestedShippingProducts,\n toggleShippingCalculator,\n toggleShippingOption,\n setShippingFromcountry,\n setShippingFromcountryFromDraft\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"language-select\":\"language-select--2fNZ6\",\"languageSelect\":\"language-select--2fNZ6\",\"language-select-row\":\"language-select-row--14WN1\",\"languageSelectRow\":\"language-select-row--14WN1\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n selectAvailableLanguages,\n selectPreferredLanguage\n} from 'tradera-state/language/selectors';\nimport { setPreferredLanguage } from 'tradera-state/language/actions';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport { SURVEYS } from 'tradera-constants/surveys';\nimport Flag from 'tradera-components/flag/flag';\nimport { getCountryCodeFromLanguage } from 'tradera-utils/languagecode';\nimport { useQualtive } from 'tradera-hooks/use-qualtive';\nimport CheckIcon from '@tradera/blueprint/theme/icons2/check.svg?jsx';\nimport styles from './language-select.module.scss';\n\nexport const PlainLanguageSelect = ({\n languages,\n preferredLanguage,\n setPreferredLanguage,\n onLanguageSelected,\n inProfileMenu\n}) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const { isQualtiveEnabled, openQualtiveModal } = useQualtive();\n\n onLanguageSelected = onLanguageSelected || (() => {});\n const onLanguageChanged = (code, e) => {\n if (preferredLanguage.languageCodeIso2 === code) {\n return;\n }\n setPreferredLanguage(code, toLocalizedUrl);\n onLanguageSelected(code, e);\n };\n return (\n
\n {!inProfileMenu && (\n
\n {t('siteHeader_language')}\n
\n )}\n {languages.map(({ languageCodeIso2, displayName }) => (\n {\n onLanguageChanged(languageCodeIso2, e);\n }}\n data-language-select={languageCodeIso2}>\n \n \n {preferredLanguage.languageCodeIso2 ===\n languageCodeIso2 ? (\n {displayName}\n ) : (\n <>{displayName}\n )}\n \n {preferredLanguage.languageCodeIso2 ===\n languageCodeIso2 && (\n \n )}\n \n ))}\n {isQualtiveEnabled && (\n \n \n {t('siteHeader_languageDisclaimerShort')} \n openQualtiveModal(SURVEYS.language)}>\n {t('siteHeader_languageLeaveFeedBack')}\n \n \n
\n )}\n \n );\n};\n\nPlainLanguageSelect.propTypes = {\n languages: PropTypes.arrayOf(\n PropTypes.shape({\n languageCodeIso2: PropTypes.string,\n displayName: PropTypes.string\n })\n ),\n preferredLanguage: PropTypes.object,\n onLanguageSelected: PropTypes.func,\n setPreferredLanguage: PropTypes.func.isRequired,\n inProfileMenu: PropTypes.bool\n};\n\nconst mapStateToProps = state => ({\n languages: selectAvailableLanguages(state),\n preferredLanguage: selectPreferredLanguage(state)\n});\n\nconst mapDispatchToProps = {\n setPreferredLanguage\n};\n\nexport const LanguageSelect = connect(\n mapStateToProps,\n mapDispatchToProps\n)(PlainLanguageSelect);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { ModalBody, ModalContainer, ModalHeader } from 'components/modals';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\nimport { checkUserMessagingParticipation } from 'tradera-apps/my-tradera/app/helpers/messaging-helpers';\nimport ArrowRightIcon from '@tradera/blueprint/theme/icons/arrow-right.svg?jsx';\nimport CloseIcon from '@tradera/blueprint/theme/icons/close-narrow.svg?jsx';\nimport LoadIcon from '@tradera/blueprint/theme/icons/load.svg?jsx';\nimport { logger } from 'packages';\nimport { withUrlLocalizer } from 'tradera-lang/translate';\nimport { getMessagingUrl } from 'tradera-components/messaging/get-messaging-url';\n\nconst MESSAGING_STATES = {\n LOADING: 'LOADING',\n READY: 'READY'\n};\nconst POST_MESSAGE_TYPE_PREFIX = 'tradera.messaging.';\n\nclass MessagingModal extends React.Component {\n MESSAGING_REMOTE_URL;\n\n constructor(props) {\n super(props);\n this.state = {\n messaging: MESSAGING_STATES.LOADING,\n participating: props.participating || null\n };\n this.MESSAGING_REMOTE_URL = getMessagingUrl(props.toLocalizedUrl);\n }\n\n handleMessage = event => {\n const {\n data: { type },\n origin\n } = event;\n if (this.MESSAGING_REMOTE_URL.indexOf(origin) < 0) {\n return;\n }\n switch (type) {\n // Messages loaded & ready\n case POST_MESSAGE_TYPE_PREFIX + 'ready':\n this.setState({ messaging: MESSAGING_STATES.READY });\n break;\n // Unread threads update\n case POST_MESSAGE_TYPE_PREFIX + 'close':\n this.handleClose();\n break;\n }\n };\n\n handleClose = () => {\n this.props.closeModal();\n };\n\n setIframeRef = element => {\n if (element) {\n this.iframeElement = element;\n }\n // Focus on iframe content window to allow focus to move into iframe\n setTimeout(() => {\n if (this.iframeElement && this.iframeElement.contentWindow) {\n this.iframeElement.contentWindow.focus();\n }\n }, 0);\n };\n\n componentDidMount() {\n if (this.state.participating === null) {\n checkUserMessagingParticipation(this.props.recipientId)\n .then(participating => this.setState({ participating }))\n .catch(logger);\n }\n window.addEventListener('message', this.handleMessage);\n this.setIframeRef();\n }\n\n componentWillUnmount() {\n window.removeEventListener('message', this.handleMessage);\n }\n\n render() {\n const { title, src, item, toLocalizedUrl } = this.props;\n const { participating } = this.state;\n return (\n this.handleClose()}>\n this.handleClose()}>\n {title && (\n this.handleClose()}>\n {title}\n \n )}\n \n {participating === true && (\n \n )}\n {participating === false && (\n this.handleClose()}\n toLocalizedUrl={toLocalizedUrl}\n />\n )}\n {participating === null && }\n \n \n \n );\n }\n}\n\nMessagingModal.propTypes = {\n title: PropTypes.string,\n src: PropTypes.string.isRequired\n};\n\nconst Loader = () => {\n return (\n
\n \n
\n );\n};\n\nconst NotParticipatingMessage = props => {\n const { item, onClose, toLocalizedUrl } = props;\n if (item) {\n return (\n
\n
\n

{item.seller.alias}

\n

\n Butik\n

\n
\n

\n {item.seller.alias} är inte en privat säljare och\n finns för tillfället inte tillgänglig via Traderas\n meddelandetjänst.\n

\n

\n Vi rekommenderar att du kontaktar dem via\n orderinformation för detta köp.\n

\n
\n \n \n \n Orderinformation\n \n \n \n Stäng\n \n
\n
\n \n );\n } else {\n return (\n
\n
\n

\n Säljaren finns för tillfället inte tillgänglig via\n Traderas meddelandetjänst.\n

\n
\n \n \n \n Stäng\n \n
\n \n );\n }\n};\n\nexport default withUrlLocalizer(MessagingModal);\n","export default {\n setError: (propertyName, error) => ({\n type: 'SET_ERROR',\n propertyName: propertyName,\n error: error\n })\n};\n","import axios from 'axios';\nimport { toLocalizedRiotUrl } from './../utils/language';\n\nexport const openAddPhoto = draftId => {\n const url = toLocalizedRiotUrl(`/selling/api/native-apps/add-photo`);\n return axios.post(url, {\n draftId\n });\n};\n","import draftActions from './draft-actions';\nimport syiActions from './syi-actions';\nimport logger from 'packages/logger';\nimport { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\nimport errorActions from 'tradera-state/views/syi/actions/error-actions';\nimport { openAddPhoto } from 'tradera-apps/syi/script/app_react/services/native-app-service';\nimport imageUploadService from 'tradera-apps/syi/script/app_react/services/image-upload-service';\nimport { throttledFetchImageAttributeSuggestions } from './attributes-actions';\n\nconst MAX_IMAGES_FOR_IMAGE_TO_COLORS = 2;\n\nconst setDraftImages = images => dispatch => {\n dispatch({\n type: 'SET_DRAFT_IMAGES',\n payload: images\n });\n\n dispatch(draftActions.updateDraftCanBeResumed());\n\n const removeNullAndUndefinedFilter = n => n;\n const draftImageIds = images\n .slice(0, MAX_IMAGES_FOR_IMAGE_TO_COLORS)\n .map(image => image.draftImage?.imageId)\n .filter(removeNullAndUndefinedFilter);\n if (draftImageIds.length > 0) {\n dispatch(throttledFetchImageAttributeSuggestions(draftImageIds));\n }\n};\n\nconst setUploadedImageInNextFreeSlot = (imageId, imageUrl) => (\n dispatch,\n getState\n) => {\n var slots = getSyiSlice(getState()).images.slots;\n var freeSlotIndex = -1;\n for (var i = 0; i < slots.length; i++) {\n if (!slots[i].imageId) {\n freeSlotIndex = i;\n break;\n }\n }\n if (freeSlotIndex > -1) {\n dispatch({\n type: 'SET_UPLOADED_IMAGE_IN_SLOT',\n slotIndex: freeSlotIndex,\n imageUrl: imageUrl,\n imageId: imageId\n });\n if (freeSlotIndex < MAX_IMAGES_FOR_IMAGE_TO_COLORS) {\n handleAttributeSuggestionsForSlot(dispatch, slots);\n }\n }\n dispatch(draftActions.updateDraftCanBeResumed());\n};\n\nconst setUploadedImageInImageSlot = (slotIndex, imageId, imageUrl) => (\n dispatch,\n getState\n) => {\n dispatch({\n type: 'SET_UPLOADED_IMAGE_IN_SLOT',\n slotIndex: slotIndex,\n imageUrl: imageUrl,\n imageId: imageId\n });\n if (slotIndex < MAX_IMAGES_FOR_IMAGE_TO_COLORS) {\n var slots = getSyiSlice(getState()).images.slots;\n handleAttributeSuggestionsForSlot(dispatch, slots);\n }\n dispatch(draftActions.updateDraftCanBeResumed());\n};\n\nconst removeImageInSlot = slotIndex => (dispatch, getState) => {\n let slots = [...getSyiSlice(getState()).images.slots];\n // move images to the left\n for (var i = slotIndex; i < slots.length - 1; i++) {\n slots[i].imageUrl = slots[i + 1].imageUrl;\n slots[i].imageId = slots[i + 1].imageId;\n slots[i].rotationDegrees = slots[i + 1].rotationDegrees;\n slots[i].isListingImage = slots[i + 1].isListingImage;\n if (slots[i + 1].isListingImage) {\n slots[i].filename = slots[i + 1].filename;\n slots[i].imageGroupId = slots[i + 1].imageGroupId;\n }\n }\n\n // reset last slot\n slots[4].isUploading = false;\n slots[4].imageUrl = null;\n slots[4].imageId = null;\n slots[4].isListingImage = false;\n slots[4].filename = null;\n slots[4].imageGroupId = null;\n\n dispatch({\n type: 'SET_IMAGE_SLOTS',\n slots: slots\n });\n\n if (slotIndex < MAX_IMAGES_FOR_IMAGE_TO_COLORS) {\n handleAttributeSuggestionsForSlot(dispatch, slots);\n }\n dispatch(draftActions.updateDraftCanBeResumed());\n};\n\nconst changeImagePosition = (from, to) => (dispatch, getState) => {\n var slots = getSyiSlice(getState()).images.slots;\n var slot = slots[from];\n slots.splice(from, 1);\n var len = slots.length;\n var newSlots = [];\n for (var i = 0; i < len; i++) {\n if (i == to) {\n newSlots.push(slot);\n }\n newSlots.push(slots[i]);\n }\n if (to == slots.length) {\n newSlots.push(slot);\n }\n dispatch({\n type: 'SET_IMAGE_SLOTS',\n slots: newSlots\n });\n const isImageToColorImageChanged =\n (from >= MAX_IMAGES_FOR_IMAGE_TO_COLORS &&\n to < MAX_IMAGES_FOR_IMAGE_TO_COLORS) ||\n (to >= MAX_IMAGES_FOR_IMAGE_TO_COLORS &&\n from < MAX_IMAGES_FOR_IMAGE_TO_COLORS);\n if (isImageToColorImageChanged) {\n handleAttributeSuggestionsForSlot(dispatch, newSlots);\n }\n};\n\nconst removeImageWithId = imageId => (dispatch, getState) => {\n let slots = getSyiSlice(getState()).images.slots;\n let slotIndex = -1;\n for (var i = slots.length; i-- > 0; ) {\n if (slots[i].imageId === imageId) {\n slotIndex = i;\n break;\n }\n }\n if (slotIndex > -1) {\n dispatch(removeImageInSlot(slotIndex));\n }\n\n dispatch(draftActions.updateDraftCanBeResumed());\n};\n\nconst rotateImage = slotIndex => (dispatch, getState) => {\n var slots = getSyiSlice(getState()).images.slots;\n var rotationDegrees = slots[slotIndex].rotationDegrees || 0;\n rotationDegrees += 90;\n if (rotationDegrees === 360) {\n rotationDegrees = 0;\n }\n dispatch({\n type: 'SET_IMAGE_ROTATION',\n slotIndex: slotIndex,\n rotationDegrees: rotationDegrees\n });\n};\n\nconst setUploadFailed = errorMessage => dispatch => {\n dispatch({\n type: 'SET_IMAGE_UPLOAD_FAILED',\n payload: errorMessage\n });\n};\n\nconst setUploading = numberOfSlots => dispatch => {\n dispatch({\n type: 'SET_IMAGES_UPLOADING',\n numberOfSlots: numberOfSlots\n });\n};\n\nconst prepareUpload = (selectedFilesCount, freeSlotCount) => dispatch => {\n dispatch(errorActions.setError('images', null));\n const numberOfFilesToUpload = Math.min(freeSlotCount, selectedFilesCount);\n dispatch(setUploading(numberOfFilesToUpload));\n};\n\nconst setImageThunk = (freeSlotCount, fileInput, flow) => dispatch => {\n const selectedFilesCount = fileInput.files?.length || 1;\n dispatch(prepareUpload(selectedFilesCount, freeSlotCount));\n imageUploadService.uploadFromFileInput(fileInput, freeSlotCount, flow);\n};\n\nclass MissingDraftId extends Error {}\n\nconst nativeAppOpenAddPhotoThunk = saveNowIfQueued => async (\n dispatch,\n getState\n) => {\n dispatch(setIsUploadingWithApp(true));\n try {\n dispatch(syiActions.disableAutoSave());\n const currentDraftId = getSyiSlice(getState())?.draft?.draftId;\n const draft = await saveNowIfQueued(currentDraftId);\n const draftId = draft?.draftId || currentDraftId;\n if (!draftId) {\n throw new MissingDraftId();\n }\n await openAddPhoto(draftId);\n } catch (error) {\n if (error instanceof MissingDraftId) {\n logger('Missing draftId on app photo upload');\n } else if (!error.request || error.response) {\n // Do not log axios request errors, as they are client dependent (such as offline)\n logger(error);\n }\n dispatch(setUploadFailed('syi_images_photo_with_mobile_error'));\n dispatch(setIsUploadingWithApp(false));\n dispatch(syiActions.enableAutoSave());\n }\n};\n\nconst fetchImagesFromDraft = (draftId, draftSocket) => async dispatch => {\n if (!draftId) {\n logger('DraftChanged event missing draft ID');\n }\n const imagesHaveChanged = await dispatch(\n draftActions.loadImagesFromDraft(draftId)\n );\n if (imagesHaveChanged) {\n dispatch(cancelMobileUpload(draftSocket));\n }\n};\n\nconst setIsUploadingWithApp = isUploadingWithApp => dispatch => {\n dispatch({\n type: 'SET_MOBILE_UPLOAD',\n isUploadingWithApp\n });\n};\n\nconst cancelMobileUpload = draftSocket => dispatch => {\n draftSocket.disconnect();\n dispatch(setIsUploadingWithApp(false));\n dispatch(syiActions.enableAutoSave());\n};\n\nconst handleAttributeSuggestionsForSlot = (dispatch, slots) => {\n const imageIds = [];\n slots.slice(0, MAX_IMAGES_FOR_IMAGE_TO_COLORS).forEach(slot => {\n if (slot.imageId && !slot.isListingImage) {\n imageIds.push(slot.imageId);\n }\n });\n if (imageIds.length > 0) {\n dispatch(throttledFetchImageAttributeSuggestions(imageIds));\n } else {\n dispatch({\n type: 'RESET_IMAGE_ATTRIBUTES_SUGGESTIONS'\n });\n }\n};\n\nconst reset = () => dispatch => {\n dispatch(setDraftImages([]));\n dispatch(draftActions.updateDraftCanBeResumed());\n};\n\nexport default {\n setDraftImages,\n setUploadedImageInNextFreeSlot,\n setUploadedImageInImageSlot,\n removeImageInSlot,\n removeImageWithId,\n changeImagePosition,\n rotateImage,\n setUploadFailed,\n setUploading,\n prepareUpload,\n setImageThunk,\n nativeAppOpenAddPhotoThunk,\n fetchImagesFromDraft,\n cancelMobileUpload,\n setIsUploadingWithApp,\n reset\n};\n","import React from 'react';\n\nconst Flag = ({ countryCodeIso2, ...otherProps }) => {\n return countryCodeIso2 ? (\n \n ) : null;\n};\n\nexport default Flag;\n","import React from 'react';\nimport { Provider } from 'react-redux';\nimport { useTranslator } from 'tradera-lang/translate';\nimport DfpAd from '@tradera/blueprint/components/lib/ads';\nimport ApplicationErrorBoundary from 'tradera-components/application-error-boundary/application-error-boundary';\nimport '@tradera/blueprint/components/lib/ads.css';\nimport WaitForConsentApiLoaded from 'tradera-components/wait-for-consent-api-loaded/wait-for-consent-api-loaded';\nimport { globalStore } from 'tradera-state/configure-store';\n\nconst LocalizedDfpAd = props => {\n const { t } = useTranslator();\n const text = {\n label: t('dfpAd_label')\n };\n const store = globalStore();\n const featureSwitches = store.getState().environment.featureSwitches;\n return (\n \n \n (\n \n )}\n />\n \n \n );\n};\n\nexport default LocalizedDfpAd;\n","import feesActions from './fees-actions';\nimport { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\nimport { resetCharityAndShippingInfo } from 'tradera-state/views/syi/actions/charity-actions';\n\nfunction toIntOrNull(number) {\n var i = parseInt(number);\n if (isFinite(i)) {\n return i;\n }\n return null;\n}\n\nfunction isNullOrUndefined(val) {\n return val === null || val === undefined;\n}\n\nconst setOpeningBid = openingBid => dispatch => {\n dispatch({\n type: 'SET_OPENING_BID',\n payload: toIntOrNull(openingBid)\n });\n};\n\nconst setFixedPrice = fixedPrice => dispatch => {\n dispatch({\n type: 'SET_FIXED_PRICE',\n payload: toIntOrNull(fixedPrice)\n });\n};\n\nconst setReservePrice = reservePrice => dispatch => {\n dispatch({\n type: 'SET_RESERVE_PRICE',\n payload: toIntOrNull(reservePrice)\n });\n dispatch(feesActions.updatePrices());\n};\n\nconst setAuctionBinPrice = auctionBinPrice => dispatch => {\n dispatch({\n type: 'SET_AUCTION_BIN_PRICE',\n payload: toIntOrNull(auctionBinPrice)\n });\n};\n\nconst setAuctionBinPriceVisibility = visible => dispatch => {\n dispatch({\n type: 'SET_AUCTION_BIN_PRICE_VISIBILITY',\n payload: visible\n });\n if (!visible) {\n dispatch(setAuctionBinPrice(null));\n }\n};\n\nconst setReservePriceVisibility = visible => dispatch => {\n dispatch({\n type: 'SET_RESERVE_PRICE_VISIBILITY',\n payload: visible\n });\n if (!visible) {\n dispatch(setReservePrice(null));\n }\n};\n\nconst setCharityDonationVisibility = visible => dispatch => {\n dispatch({\n type: 'SET_CHARITY_DONATION_VISIBILITY',\n payload: visible\n });\n if (!visible) {\n dispatch(resetCharityAndShippingInfo());\n }\n};\n\nconst setEditCharity = editCharity => dispatch => {\n dispatch({\n type: 'SET_EDIT_CHARITY',\n payload: editCharity\n });\n};\n\nconst setIsPureBinSelected = isPureBinSelected => (dispatch, getState) => {\n dispatch({\n type: 'SET_IS_PURE_BIN_SELECTED',\n isPureBinSelected,\n isChangeItem: getSyiSlice(getState()).syi.isEditOfPublishedItem\n });\n if (isPureBinSelected) {\n dispatch(setOpeningBid(null));\n dispatch(setAuctionBinPrice(null));\n dispatch(setReservePrice(null));\n } else {\n dispatch(setFixedPrice(null));\n }\n};\n\nconst setVat = vat => dispatch => {\n dispatch({\n type: 'SET_VAT',\n payload: vat\n });\n};\n\nconst setFromDraft = (\n openingBid,\n fixedPrice,\n reservePrice,\n charityId,\n vat,\n isChangeItem\n) => dispatch => {\n const queryParams = new URLSearchParams(location.search);\n const queryParamCharityId = queryParams.get('charityId');\n let hasOpeningBid = !isNullOrUndefined(openingBid);\n let hasFixedPrice = !isNullOrUndefined(fixedPrice);\n let hasReservePrice = !isNullOrUndefined(reservePrice);\n let hasCharityId =\n !isNullOrUndefined(charityId) ||\n !isNullOrUndefined(queryParamCharityId);\n let isAuction = hasOpeningBid && !hasFixedPrice;\n let isAuctionBin = hasOpeningBid && hasFixedPrice;\n let isPureBin = !hasOpeningBid && hasFixedPrice;\n\n dispatch(setVat(vat));\n\n // TODO: fewer changes to the state makes the page load faster...\n if (isAuction) {\n dispatch(setOpeningBid(openingBid));\n dispatch(setReservePrice(reservePrice));\n dispatch(setAuctionBinPrice(null));\n dispatch(setFixedPrice(null));\n dispatch(setReservePriceVisibility(hasReservePrice));\n dispatch(setAuctionBinPriceVisibility(false));\n dispatch(setCharityDonationVisibility(hasCharityId));\n dispatch(setIsPureBinSelected(false));\n } else if (isAuctionBin) {\n dispatch(setOpeningBid(openingBid));\n dispatch(setReservePrice(reservePrice));\n dispatch(setAuctionBinPrice(fixedPrice));\n dispatch(setFixedPrice(null));\n dispatch(setReservePriceVisibility(hasReservePrice));\n dispatch(setAuctionBinPriceVisibility(true));\n dispatch(setCharityDonationVisibility(hasCharityId));\n dispatch(setIsPureBinSelected(false));\n } else if (isPureBin) {\n dispatch(setOpeningBid(null));\n dispatch(setReservePrice(null));\n dispatch(setAuctionBinPrice(null));\n dispatch(setFixedPrice(fixedPrice));\n dispatch(setReservePriceVisibility(false));\n dispatch(setAuctionBinPriceVisibility(false));\n dispatch(setCharityDonationVisibility(false));\n dispatch(setIsPureBinSelected(true));\n } else {\n dispatch(setOpeningBid(null));\n dispatch(setReservePrice(null));\n dispatch(setAuctionBinPrice(null));\n dispatch(setFixedPrice(null));\n dispatch(setReservePriceVisibility(false));\n dispatch(setAuctionBinPriceVisibility(false));\n dispatch(setCharityDonationVisibility(hasCharityId));\n dispatch(setIsPureBinSelected(false));\n }\n\n dispatch({\n type: 'SET_RESERVE_PRICE_CAN_CHANGE_BUT_NOT_BE_REMOVED',\n payload: isChangeItem && hasReservePrice\n });\n};\n\nconst reset = () => dispatch => {\n dispatch({\n type: 'RESET_PRICES_AND_VAT'\n });\n};\n\nexport default {\n setOpeningBid,\n setFixedPrice,\n setReservePrice,\n setAuctionBinPrice,\n setAuctionBinPriceVisibility,\n setReservePriceVisibility,\n setCharityDonationVisibility,\n setEditCharity,\n setIsPureBinSelected,\n setFromDraft,\n setVat,\n reset\n};\n","const roundToDecimalPlaces = (amount, decimals) =>\n parseFloat(Math.round(amount * 100) / 100).toFixed(decimals);\n\nconst convertAmount = (rate, amountInSek, decimals) => {\n return roundToDecimalPlaces(rate * amountInSek, decimals);\n};\n\nexport default {\n convertAmount,\n roundToDecimalPlaces\n};\n","import React from 'react';\nimport utils from './multi-currency-utils';\n\nclass MultiCurrency extends React.Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n render() {\n const { preferredCurrency, amountInSek } = this.props;\n if (!preferredCurrency || preferredCurrency.code === 'SEK') {\n return null;\n }\n const amountInOtherCurrency = utils.convertAmount(\n preferredCurrency.rate,\n amountInSek,\n preferredCurrency.decimals\n );\n if (amountInOtherCurrency <= 0) {\n return
;\n }\n if (preferredCurrency.symbolPrefix) {\n return (\n
\n ≈ {preferredCurrency.symbolPrefix}\n {amountInOtherCurrency}\n
\n );\n }\n\n return (\n
\n ≈ {amountInOtherCurrency} {preferredCurrency.symbolSuffix}\n
\n );\n }\n}\n\nexport default MultiCurrency;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport MultiCurrency from './multi-currency';\n\nconst MultiCurrencyContainer = props => {\n const { amountInSek, preferredCurrency } = props;\n return (\n \n );\n};\n\nconst mapStateToProps = state => {\n return {\n preferredCurrency: state.multiCurrency.preferredCurrency\n };\n};\n\nexport default connect(mapStateToProps)(MultiCurrencyContainer);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ProviderWithGlobalStore } from 'tradera-state/configure-store';\nimport { logger } from 'packages';\nimport MultiCurrencyContainer from './multi-currency-container';\nimport { component } from 'flightjs';\nimport initData from 'init-data';\n\nconst createFlightListener = (onModalLoad, onModalClose) =>\n function MultiCurrencyFlightListener() {\n this.after('initialize', function() {\n this.on('data:navigation:after-modal-load', onModalLoad);\n this.on('ui:body-container:on-modal-close', onModalClose);\n });\n };\n\nconst renderElement = (element, amountInSek) => {\n try {\n ReactDOM.render(\n \n \n ,\n element\n );\n } catch (e) {\n logger(e);\n }\n};\n\nconst resolveAmountWithoutUnitType = element =>\n element.getAttribute('data-amount-in-sek').replace(/\\D/g, '');\n\nconst appendToStringOnce = (str, appendix) => {\n const withoutAppendix = str.replace(appendix, '');\n return withoutAppendix + appendix;\n};\n\nconst renderAllDisplays = () => {\n const multiCurrencyDisplays = document.querySelectorAll(\n '[data-multi-currency-display]'\n );\n if (multiCurrencyDisplays) {\n for (let i = 0; i < multiCurrencyDisplays.length; i++) {\n const element = multiCurrencyDisplays[i];\n const amountInSek = resolveAmountWithoutUnitType(element);\n element.className = appendToStringOnce(\n element.className,\n ' multi-currency-active'\n );\n renderElement(element, amountInSek);\n }\n }\n};\n\nconst getSynchronizeInputToDisplay = (amountInput, amountDisplay) => {\n if (!amountInput || !amountDisplay) {\n return null;\n }\n amountDisplay.className = appendToStringOnce(\n amountDisplay.className,\n ' multi-currency-active'\n );\n return () => {\n const amountInSek = amountInput.value;\n renderElement(amountDisplay, amountInSek);\n };\n};\n\nconst listenForAmountChangeInInput = (\n inputElementDataId,\n displayElementDataId\n) => {\n const amountInput = document.querySelector(`[${inputElementDataId}]`);\n const amountDisplay = document.querySelector(`[${displayElementDataId}]`);\n\n if (!amountInput || !!amountInput.deregisterMultiCurrencyListeners) {\n return;\n }\n\n const synchronize = getSynchronizeInputToDisplay(\n amountInput,\n amountDisplay\n );\n\n if (synchronize === null) {\n return;\n }\n\n amountInput.addEventListener('keyup', synchronize);\n amountInput.addEventListener('focus', synchronize);\n amountInput.deregisterMultiCurrencyListeners = () => {\n amountInput.removeEventListener('keyup', synchronize);\n amountInput.removeEventListener('focus', synchronize);\n };\n synchronize();\n};\n\nconst removeListeners = inputElementDataId => {\n const amountInput = document.querySelector(`[${inputElementDataId}]`);\n if (!amountInput || !amountInput.deregisterMultiCurrencyListeners) {\n return;\n }\n amountInput.deregisterMultiCurrencyListeners();\n};\n\nconst renderVipModal = () => {\n const onModalLoad = () => {\n renderAllDisplays();\n listenForAmountChangeInInput(\n 'data-submit-bid-amount-field',\n 'data-multi-currency-display-max-bid-input'\n );\n listenForAmountChangeInInput(\n 'data-submit-bid-amount-field',\n 'data-multi-currency-display-bidding-price-input'\n );\n };\n const onModalClose = () => {\n removeListeners('data-submit-bid-amount-field');\n };\n const flightListener = component(\n createFlightListener(onModalLoad, onModalClose)\n );\n flightListener.attachTo(document);\n};\n\nconst renderVipPage = () => {\n listenForAmountChangeInInput(\n 'data-bid-amount-field',\n 'data-multi-currency-display-vip-bid-input'\n );\n};\n\nconst render = () => {\n if (!initData.currencies || initData.currencies.length === 0) {\n return;\n }\n renderVipModal();\n renderVipPage();\n renderAllDisplays();\n};\n\nexport default {\n render\n};\n","import store from 'tradera-state/configure-store';\nimport { setCurrencyIfNotChosen } from 'tradera-state/multi-currency';\nimport multiCurrencyRenderer from './multi-currency-renderer';\n\nlet _booted = false;\n\nconst activateMultiCurrency = () => {\n multiCurrencyRenderer.render();\n};\n\nconst activateDevMultiCurrency = () => {\n multiCurrencyRenderer.render();\n store.dispatch(setCurrencyIfNotChosen('EUR'));\n};\n\nconst boot = async initData => {\n const multiCurrencyEnabled = !!initData.featureSwitches['multi-currency'];\n if (!multiCurrencyEnabled) {\n return;\n }\n if (_booted) {\n return;\n }\n\n _booted = true;\n if (window && window.location.search.indexOf('force-currency-dev') > -1) {\n activateDevMultiCurrency();\n return;\n }\n if (initData.memberCountry === 'Sverige') {\n return;\n }\n\n activateMultiCurrency();\n};\n\nexport default {\n boot\n};\n","let startTime = 0;\n\nconst startSession = () => {\n startTime = new Date().getTime();\n};\n\nconst getElapsedMillis = () => {\n return new Date().getTime() - startTime;\n};\n\nexport default {\n startSession,\n getElapsedMillis\n};\n","import scribe from './scribe';\nimport sessionService from './session-service';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport { defaultClient as httpClient } from 'tradera-utils/http';\n\nfunction trackItemPublished(draft) {\n var isFromTemplate = isDraftFromTemplate(draft);\n scribe.sendSessionDuration(\n sessionService.getElapsedMillis(),\n isFromTemplate\n );\n}\n\nfunction prepareForPublish(draft) {\n draft.shippingOptions = draft.shippingOptions.filter(item => !!item.type);\n draft.descriptionLanguageCodeIso2 =\n draft.descriptionLanguageCodeIso2 || 'sv';\n draft.currency = draft.currency || 'SEK';\n}\n\nfunction isNullOrUndefined(val) {\n return val === null || val === undefined;\n}\n\nfunction isDraftFromTemplate(draft) {\n return draft && !isNullOrUndefined(draft.templateId);\n}\n\nconst publish = async (draft, hasTraderaPayConsent) => {\n prepareForPublish(draft);\n const response = await httpClient.post(ENDPOINTS.SELLING_ITEM_PUBLISH, {\n draft: draft,\n hasTraderaPayConsent: hasTraderaPayConsent\n });\n trackItemPublished(draft);\n if (response.data.errorCode) {\n throw response.data;\n }\n\n return response.data;\n};\n\nexport default {\n publish\n};\n","import imageActions from '../image-actions';\n\nconst handleInvalidImages = (errors, dispatch, translator) => {\n const displayTexts = [];\n let invalidImageCount = 0;\n errors.forEach(error => {\n let invalidImageIds = error.message.split(',');\n invalidImageIds.forEach(id => {\n dispatch(imageActions.removeImageWithId(id));\n invalidImageCount++;\n });\n });\n if (invalidImageCount > 0) {\n displayTexts.push(\n translator('syi_publish_error_invalid_image', {\n count: invalidImageCount\n })\n );\n }\n return displayTexts;\n};\n\nconst translateErrorCode = (error, translator) => {\n switch (error.errorCode) {\n case 'AlreadyPublished':\n return translator('syi_publish_error_alreadypublished');\n case 'BuyItNowPriceNotLargerThanOpeningPrice':\n return translator(\n 'syi_publish_error_buyitnowpricenotlargerthanopeningprice'\n );\n case 'BuyItNowPriceNotLargerThanReservePrice':\n return translator(\n 'syi_publish_error_buyitnowpricenotlargerthanreserveprice'\n );\n case 'BuyItNowPriceTooLarge':\n return translator('syi_publish_error_buyitnowpricetoolarge');\n case 'BuyItNowPriceUnset':\n return translator('syi_publish_error_buyitnowpriceunset');\n case 'CampaignCodeInvalid':\n return translator('syi_publish_error_campaigncodeinvalid');\n case 'CategoryContainsTooManyItems':\n return translator('syi_publish_error_categorycontainstoomanyitems');\n case 'CategoryDoesNotSupportBin':\n return translator('syi_publish_error_categorydoesnotsupportbin');\n case 'CategoryDoesNotSupportUsedItems':\n return translator(\n 'syi_publish_error_categorydoesnotsupportuseditems'\n );\n case 'CategoryIdUnknown':\n return translator('syi_publish_error_categoryidunknown');\n case 'CustomEndDateTooLate':\n return translator('syi_publish_error_customenddatetoolate');\n case 'CustomEndDateTooSoon':\n return translator('syi_publish_error_customenddatetoosoon');\n case 'DisplayHighlightedCannotBeRemoved':\n return translator(\n 'syi_publish_error_displayhighlightedcannotberemoved'\n );\n case 'DisplayPromotedCannotBeRemoved':\n return translator(\n 'syi_publish_error_displaypromotedcannotberemoved'\n );\n case 'DurationNotAllowed':\n return translator('syi_publish_error_durationnotallowed');\n case 'ImagesTooFew':\n return translator('syi_publish_error_imagestoofew');\n case 'ImagesTooMany':\n return translator('syi_publish_error_imagestoomany');\n case 'ItemHasBidsAndCannotBeChanged':\n return translator(\n 'syi_publish_error_itemhasbidsandcannotbechanged'\n );\n case 'LongDescriptionCannotBeEmpty':\n return translator('syi_publish_error_longdescriptioncannotbeempty');\n case 'LongDescriptionTooLong':\n return translator('syi_publish_error_longdescriptiontoolong');\n case 'MemberIsActiveInternationalBuyer':\n return translator(\n 'syi_publish_error_memberisactiveinternationalbuyer'\n );\n case 'MemberIsSuspended':\n return translator('syi_publish_error_memberissuspended');\n case 'MemberNotAllowedToListImmeditateEndingItems':\n return translator(\n 'syi_publish_error_membernotallowedtolistimmeditateendingitems'\n );\n case 'OpeningPriceBelowOne':\n return translator('syi_publish_error_openingpricebelowone');\n case 'OpeningPriceTooLarge':\n return translator('syi_publish_error_openingpricetoolarge');\n case 'OwnReferenceTooLong':\n return translator('syi_publish_error_ownreferencetoolong');\n case 'PriceBelowOne':\n return translator('syi_publish_error_pricebelowone');\n case 'PriceBelowZero':\n return translator('syi_publish_error_pricebelowzero');\n case 'ReservePriceNotLargerThanOpeningPrice':\n return translator(\n 'syi_publish_error_reservepricenotlargerthanopeningprice'\n );\n case 'ReservePriceTooLarge':\n return translator('syi_publish_error_reservepricetoolarge');\n case 'ShippingCostBelowZero':\n return translator('syi_publish_error_shippingcostbelowzero');\n case 'ShippingOptionsCannotBeEmpty':\n return translator('syi_publish_error_shippingoptionscannotbeempty');\n case 'ShippingOptionsCountTooLarge':\n return translator('syi_publish_error_shippingoptionscounttoolarge');\n case 'ShippingOptionsMoreThanOneWithTakeawayOnly':\n return translator(\n 'syi_publish_error_shippingoptionsmorethanonewithtakeawayonly'\n );\n case 'ShortDescriptionCannotBeEmpty':\n return translator(\n 'syi_publish_error_shortdescriptioncannotbeempty'\n );\n case 'ShortDescriptionTooLong':\n return translator('syi_publish_error_shortdescriptiontoolong');\n case 'UnknownError':\n return translator('syi_publish_error_unknownerror');\n }\n\n return error.message;\n};\n\nexport const handleServerValidationError = (errors, dispatch, translator) => {\n const invalidImageErrorCodes = ['DeletedImage', 'MissingImage'];\n const imageErrorFilter = error =>\n invalidImageErrorCodes.includes(error.errorCode);\n const nonImageErrorFilter = error =>\n !invalidImageErrorCodes.includes(error.errorCode);\n\n const imageErrors = errors.filter(imageErrorFilter);\n const nonImageErrors = errors.filter(nonImageErrorFilter);\n\n const imageErrorDisplayTexts = handleInvalidImages(\n imageErrors,\n dispatch,\n translator\n );\n const nonImageErrorDisplayTexts = nonImageErrors.map(error =>\n translateErrorCode(error, translator)\n );\n\n const errorDisplayTexts = imageErrorDisplayTexts.concat(\n nonImageErrorDisplayTexts\n );\n const errorDisplayText = errorDisplayTexts.join(' ').trim();\n dispatch({\n type: 'SET_PUBLISH_FAILED',\n reasonDisplayText: errorDisplayText ? errorDisplayText : null\n });\n};\n","/* eslint-disable promise/always-return */\nimport 'jquery';\nimport publishService from 'tradera-apps/syi/script/app_react/services/publish-service';\nimport navigationService from 'tradera-apps/syi/script/app_react/services/navigation-service';\nimport draftService from 'tradera-apps/syi/script/app_react/services/draft-service';\nimport categoryActions from './category-actions';\nimport syiActions from './syi-actions';\nimport paymentActions from './payment-actions';\nimport imageActions from './image-actions';\nimport priceActions from './price-actions';\nimport { shortDescriptionActions } from './short-description-actions';\nimport { setDescriptionLanguageCodeIso2 } from 'tradera-state/views/syi/reducers/short-description';\nimport longDescriptionActions from './long-description-actions';\nimport shippingActions from './shipping-actions';\nimport campaignCodeActions from './campaign-code-actions';\nimport {\n resetCharityAndShippingInfo,\n setCharityAndFetchInfo,\n setCharityFromDraftAndFetchInfo\n} from 'tradera-state/views/syi/actions/charity-actions';\nimport feesActions from './fees-actions';\nimport {\n setAttributesFromDraft,\n resetImageAttributesSuggestions\n} from './attributes-actions';\nimport scribe from 'tradera-apps/syi/script/app_react/services/scribe';\nimport sessionService from 'tradera-apps/syi/script/app_react/services/session-service';\nimport googleTagManager from 'tradera-apps/syi/script/app_react/services/google-tagmanager';\nimport {\n setAllowedBuyerRegion,\n setAvailableAllowedBuyerRegions\n} from '../reducers/buyer-region';\nimport { handleServerValidationError } from './helpers/server-validation-error-helper';\nimport { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\nimport { selectSuggestedAttributes } from 'tradera-state/views/syi/selectors/attribute-selectors';\nimport initData from 'init-data';\n\nfunction ensureDraftReason(draft) {\n if (!draft.draftReason) {\n draft.draftReason = 'NewItem';\n }\n}\n\nconst setDraft = (draft, params = {}) => (dispatch, getState) => {\n dispatch(syiActions.disableAutoSave());\n ensureDraftReason(draft);\n sessionService.startSession(draft.draftReason);\n\n let isNewDraft =\n getSyiSlice(getState()).draft.draftId != draft.draftId ||\n getSyiSlice(getState()).draft.draftReason != draft.draftReason;\n let isChangeItem = draft.draftReason === 'ChangeItem';\n\n // Do first for actions that depends on this info.\n dispatch(syiActions.setIsEditOfPublishedItem(isChangeItem));\n dispatch(syiActions.hideAllErrors());\n dispatch(categoryActions.reset());\n\n dispatch({\n type: 'SET_DRAFT_PROPERTIES',\n draft: draft\n });\n\n dispatch(\n setAllowedBuyerRegion({\n allowedBuyerRegion: draft.allowedBuyerRegion\n })\n );\n dispatch(setAvailableAllowedBuyerRegions());\n dispatch(setItemCondition(draft.itemCondition));\n dispatch(\n campaignCodeActions.setInitialCampaignCode(\n draft.campaignCode,\n draft.campaignCodeId,\n draft.campaignCodeDescription,\n isChangeItem\n )\n );\n dispatch(setDurationDays(draft.durationDays));\n dispatch(setCustomEndTime(draft.customEndTime));\n\n dispatch(\n categoryActions.setPath(draft.shortDescription, draft.categoryPath)\n );\n\n // Setting short description also loads top categories!\n dispatch(\n shortDescriptionActions.setShortDescription(draft.shortDescription)\n );\n dispatch(setDescriptionLanguageCodeIso2(draft.descriptionLanguageCodeIso2));\n dispatch(setCurrency(draft.currency));\n dispatch(categoryActions.setDraftCategory(draft.categoryId));\n dispatch(\n longDescriptionActions.setLongDescriptionFromDraft(\n draft.longDescription\n )\n );\n dispatch(setDisplayPromoted(draft.displayPromoted));\n dispatch(setDisplayHighlighted(draft.displayHighlighted));\n dispatch(imageActions.setDraftImages(draft.images || []));\n dispatch(resetImageAttributesSuggestions());\n dispatch(\n priceActions.setFromDraft(\n draft.openingBid,\n draft.fixedPrice,\n draft.reservePrice,\n draft.charity?.charityId,\n draft.vat,\n isChangeItem\n )\n );\n\n if (initData.featureSwitches['pennybridge-charities']) {\n if (params.charityId) {\n dispatch(setCharityAndFetchInfo(params.charityId));\n } else if (draft.charity) {\n dispatch(setCharityFromDraftAndFetchInfo(draft.charity));\n }\n }\n dispatch(paymentActions.setSelectedPaymentOptions(draft.paymentOptions));\n dispatch(setAttributesFromDraft(draft));\n\n const shippingOptions = getShippingOptionsFromDraft(\n draft.shippingOptions,\n draft.fromCountry,\n initData.featureSwitches['shipping-from-country']\n );\n\n const fromCountry = getFromCountryFromDraft(\n draft.fromCountry,\n initData.memberCountryCodeIso2,\n initData.featureSwitches['shipping-from-country']\n );\n\n dispatch(\n shippingActions.setShippingFromcountryFromDraft({\n fromCountry\n })\n );\n\n if (initData.featureSwitches['shipping-by-weight']) {\n dispatch(\n shippingActions.getAndSetShippingOptionsByWeight(\n draft.shippingOptions,\n fromCountry\n )\n );\n } else {\n dispatch(shippingActions.setShippingOptionsFromDraft(shippingOptions));\n }\n\n dispatch(syiActions.enableAutoSave());\n\n if (isNewDraft) {\n scribe.sendSessionStart();\n }\n};\n\nexport const getShippingOptionsFromDraft = (\n shippingOptions,\n fromCountry,\n isShippingFromCountryEnabled\n) => {\n return isShippingFromCountryEnabled && fromCountry\n ? shippingOptions\n : (fromCountry && fromCountry === 'SE') || !fromCountry\n ? shippingOptions\n : [];\n};\n\nexport const getFromCountryFromDraft = (\n fromCountry,\n memberCountryCodeIso2,\n isShippingFromCountryEnabled\n) => {\n return isShippingFromCountryEnabled && fromCountry\n ? fromCountry\n : isShippingFromCountryEnabled && memberCountryCodeIso2 === 'DK'\n ? memberCountryCodeIso2\n : 'SE';\n};\n\nconst setIsLoading = isLoading => ({\n type: 'SET_DRAFT_IS_LOADING',\n payload: isLoading\n});\n\nconst loadDraft = (dispatch, draftId) => {\n dispatch(setIsLoading(true));\n return draftService\n .loadDraft(draftId)\n .then(result => {\n dispatch(setDraft(result));\n return result;\n })\n .catch(result => {\n navigationService.goToStart();\n throw result;\n })\n .finally(() => dispatch(setIsLoading(false)));\n};\n\nconst loadDrafts = () => dispatch => {\n return draftService.loadDrafts().then(drafts => {\n let resumableDrafts = [];\n\n drafts.forEach(draft => {\n if (\n canBeResumed(\n draft.draftId,\n draft.draftReason,\n draft.shortDescription,\n draft.longDescription,\n [{ imageUrl: draft.imageUrl }]\n )\n ) {\n resumableDrafts.push(draft);\n }\n });\n\n dispatch(setResumableDrafts(resumableDrafts));\n return resumableDrafts;\n });\n};\n\nconst loadImagesFromDraft = draftId => async (dispatch, getState) => {\n const browserDraftImageUrls = (getSyiSlice(getState()).images.slots || [])\n .map(image => image.imageUrl)\n .filter(Boolean);\n\n const serverDraft = await draftService.loadDraft(draftId);\n const serverDraftImages = serverDraft.images || [];\n const serverDraftImageUrls = serverDraftImages.map(image => image.imageUrl);\n\n const changedImages = browserDraftImageUrls\n .filter(x => !serverDraftImageUrls.includes(x))\n .concat(\n serverDraftImageUrls.filter(x => !browserDraftImageUrls.includes(x))\n );\n const imagesHaveChanged = changedImages.length > 0;\n if (imagesHaveChanged) {\n dispatch(imageActions.setDraftImages(serverDraftImages));\n }\n return imagesHaveChanged;\n};\n\nconst canBeResumed = (\n draftId,\n draftReason,\n shortDescription,\n longDescription,\n images\n) => {\n if (!draftId) {\n return false;\n }\n\n if (draftReason !== 'NewItem') {\n return false;\n }\n\n var hasShortDescription =\n shortDescription && shortDescription.trim().length > 0;\n var hasLongDescription =\n longDescription && longDescription.trim().length > 0;\n var hasImage =\n Array.isArray(images) && images.some(image => !!image.imageUrl);\n return hasShortDescription || hasLongDescription || hasImage;\n};\n\nconst updateDraftCanBeResumed = () => (dispatch, getState) => {\n let draft = getSyiSlice(getState()).draft;\n let shortDescription = getSyiSlice(getState()).shortDescription\n .shortDescription;\n let longDescription = getSyiSlice(getState()).longDescription\n .longDescription;\n let imageSlots = getSyiSlice(getState()).images.slots;\n\n // TODO: avoid duplication by using canBeResumed\n if (!draft.draftId) {\n return false;\n }\n\n if (draft.draftReason !== 'NewItem') {\n return false;\n }\n\n var hasShortDescription =\n shortDescription && shortDescription.trim().length > 0;\n var hasLongDescription =\n longDescription && longDescription.trim().length > 0;\n var hasImage =\n Array.isArray(imageSlots) && imageSlots.some(image => !!image.imageUrl);\n let canBeResumed = hasShortDescription || hasLongDescription || hasImage;\n\n dispatch({\n type: 'SET_DRAFT_CAN_BE_RESUMED',\n payload: canBeResumed\n });\n};\n\nconst setResumableDrafts = drafts => dispatch => {\n dispatch({\n type: 'SET_DRAFTS',\n payload: drafts\n });\n};\n\nconst setCustomEndTime = customEndTime => (dispatch, getState) => {\n const price = getSyiSlice(getState()).price;\n const hasOpeningBid = !!price.openingBid;\n const hasAuctionBinPrice = !!price.auctionBinPrice;\n const isAuctionBin = hasOpeningBid && hasAuctionBinPrice;\n const isPureBin = !hasOpeningBid && hasAuctionBinPrice;\n dispatch({\n type: 'SET_CUSTOM_END_TIME',\n payload: customEndTime,\n isPureBin,\n isAuctionBin,\n isChangeItem: getSyiSlice(getState()).syi.isEditOfPublishedItem\n });\n dispatch(feesActions.updatePrices());\n};\n\nconst setDurationDays = durationDays => (dispatch, getState) => {\n const price = getSyiSlice(getState()).price;\n const hasOpeningBid = !!price.openingBid;\n const hasAuctionBinPrice = !!price.auctionBinPrice;\n const isAuctionBin = hasOpeningBid && hasAuctionBinPrice;\n const isPureBin = !hasOpeningBid && hasAuctionBinPrice;\n dispatch({\n type: 'SET_DURATION_DAYS',\n payload: durationDays,\n isPureBin,\n isAuctionBin,\n isChangeItem: getSyiSlice(getState()).syi.isEditOfPublishedItem\n });\n dispatch(feesActions.updatePrices());\n};\n\nconst resetDurationAndEndTime = () => (dispatch, getState) => {\n const price = getSyiSlice(getState()).price;\n const hasOpeningBid = !!price.openingBid;\n const hasAuctionBinPrice = !!price.auctionBinPrice;\n const isAuctionBin = hasOpeningBid && hasAuctionBinPrice;\n const isPureBin = !hasOpeningBid && hasAuctionBinPrice;\n dispatch({\n type: 'RESET_DURATION_AND_END_TIME',\n isPureBin,\n isAuctionBin\n });\n dispatch(feesActions.updatePrices());\n};\n\nconst setRestart = restart => ({\n type: 'SET_RESTART',\n payload: restart\n});\n\nconst setDisplayPromoted = displayPromoted => dispatch => {\n dispatch({\n type: 'SET_DISPLAY_PROMOTED',\n payload: displayPromoted || false\n });\n dispatch(feesActions.updatePrices());\n};\n\nconst setDisplayHighlighted = displayHighlighted => dispatch => {\n dispatch({\n type: 'SET_DISPLAY_HIGHLIGHTED',\n payload: displayHighlighted || false\n });\n dispatch(feesActions.updatePrices());\n};\n\nconst setReference = reference => ({\n type: 'SET_REFERENCE',\n payload: reference\n});\n\nconst trackAttributeSuggestions = (\n draftSelectedAttributes,\n suggestedAttributes,\n suggestionEngine,\n completionTimeInSeconds,\n isNewDraft\n) => {\n const comparer = (a, b) => a.localeCompare(b);\n\n draftSelectedAttributes.forEach(attribute => {\n const label = [\n suggestionEngine,\n attribute.id,\n attribute.backingField,\n attribute.values?.sort(comparer).join(','),\n suggestedAttributes\n .find(sa => sa.id === attribute.id)\n ?.values?.sort(comparer)\n .join(','),\n completionTimeInSeconds,\n !!isNewDraft\n ];\n const analyticsData = {\n category: 'MachineLearning',\n action: 'SyiAttributeSuggestion',\n label: label.join(';')\n };\n googleTagManager.trackEvent(analyticsData);\n });\n};\n\nconst publish = translator => (dispatch, getState) => {\n dispatch({ type: 'SET_PUBLISH_PENDING' });\n\n const state = getSyiSlice(getState());\n const { displayHighlighted, displayPromoted } = state.extraFeatures;\n const reservePrice = state.price.reservePrice;\n const customEndTime = draftService.getCustomEndTime(state.itemDuration);\n const draft = draftService.buildDraftFromState(state);\n var splitTestGroups = getState().environment.splitTestGroups;\n var featureSwitches = getState().environment.featureSwitches;\n\n publishService\n .publish(draft, state.memberConsent.hasTraderaPayConsent)\n .then(result => {\n if (displayHighlighted) {\n googleTagManager.trackAddonBeforePublish('Highlight');\n }\n if (displayPromoted) {\n googleTagManager.trackAddonBeforePublish('Rank up');\n }\n if (reservePrice) {\n googleTagManager.trackAddonBeforePublish('Reserve price');\n }\n if (customEndTime) {\n googleTagManager.trackAddonBeforePublish('End time');\n }\n\n if (featureSwitches['syi-attribute-suggestions']) {\n const draftSelectedAttributes =\n draft.attributeValues.termAttributeValues;\n const suggestedAttributes =\n selectSuggestedAttributes(getState()) || [];\n trackAttributeSuggestions(\n draftSelectedAttributes,\n suggestedAttributes,\n splitTestGroups['attribute_suggestion_extractor'],\n Math.round(sessionService.getElapsedMillis() / 1000),\n state.draft.isNewDraft\n );\n }\n\n dispatch(setDraft({}));\n navigationService.goToPublished(result.itemId);\n })\n .catch(result => {\n let response = result.responseJSON;\n if (\n hasResponseErrorCode(response, [\n 'DraftAlreadyPublished',\n 'DraftBelongsToAnotherMember'\n ])\n ) {\n dispatch(setDraft({}));\n navigationService.goToStart();\n } else if (hasResponseErrorCode(response, ['ValidationError'])) {\n handleServerValidationError(\n response.errors || [],\n dispatch,\n translator\n );\n } else {\n dispatch({ type: 'SET_PUBLISH_FAILED' });\n dispatch(syiActions.toggleModal('error-modal-publish-failed'));\n }\n });\n};\n\nconst hasResponseErrorCode = (responseOrNull, arrayOfErrorCodesToCheck) =>\n responseOrNull &&\n arrayOfErrorCodesToCheck.includes(responseOrNull.errorCode);\n\nconst loadDraftIfMissing = draftId => (dispatch, getState) => {\n var draft = getSyiSlice(getState()).draft;\n const isAlreadyLoaded = draft.draftId === draftId;\n if (isAlreadyLoaded) {\n return Promise.resolve(draft);\n }\n return loadDraft(dispatch, draftId);\n};\n\nconst loadDefaultDraft = ({ charityId }) => dispatch => {\n dispatch(syiActions.reset());\n dispatch(categoryActions.reset());\n dispatch(resetCharityAndShippingInfo());\n dispatch(setDraft(draftService.loadDefaultDraft(), { charityId }));\n dispatch(shippingActions.resetSelected());\n};\n\nconst loadDefaultTemplateDraft = () => dispatch => {\n dispatch(syiActions.reset());\n dispatch(categoryActions.reset());\n dispatch(resetCharityAndShippingInfo());\n var template = draftService.loadDefaultTemplateDraft();\n template.templateId = 'new';\n dispatch(setDraft(template));\n};\n\nconst useDraftAsTemplate = () => dispatch => {\n dispatch({\n type: 'SET_DRAFT_REASON',\n payload: 'Template'\n });\n dispatch({\n type: 'SET_DRAFT_ID',\n payload: null\n });\n};\n\nconst setDraftVersion = version => dispatch => {\n dispatch({\n type: 'SET_DRAFT_VERSION',\n payload: version\n });\n};\n\nexport const triggerSave = () => (dispatch, getState) =>\n saveDraft(dispatch, getState);\n\nconst saveDraft = (dispatch, getState) => {\n let draft = draftService.buildDraftFromState(getSyiSlice(getState()));\n let version = getSyiSlice(getState()).draft.version || 0;\n return draftService\n .saveDraft(draft)\n .then(result => {\n if (draft.draftId !== result.draftId) {\n dispatch({\n type: 'SET_DRAFT_ID',\n payload: result.draftId\n });\n }\n if (version > 0 && version + 1 !== result.version) {\n // Unexpected version. The draft is being edited somewhere else.\n }\n const wasNewDraftWithoutId = !draft.draftId && !!result.draftId;\n if (wasNewDraftWithoutId) {\n navigationService.setDraftUrlWithoutReload(result.draftId);\n }\n // Must happen after new URL is set for re-render to happen.\n dispatch(setDraftVersion(result.version));\n return result;\n })\n .catch(result => {\n let response = result.responseJSON;\n if (\n hasResponseErrorCode(response, [\n 'DraftAlreadyPublished',\n 'DraftBelongsToAnotherMember'\n ])\n ) {\n dispatch(setDraft({}));\n navigationService.goToStart();\n } else if (result.status == 404) {\n dispatch(setDraft({}));\n navigationService.goToStart();\n }\n throw result;\n });\n};\n\nconst setUsedAllowed = isAllowed => ({\n type: 'SET_ITEM_CONDITION_SELECTION_ERROR',\n payload: isAllowed ? null : 'syi_validation_used_not_allowed_for_category'\n});\n\nconst setItemCondition = condition => dispatch => {\n dispatch({\n type: 'SET_ITEM_CONDITION',\n payload: condition\n });\n dispatch(updateItemConditionRestrictionForCategory());\n};\n\nconst updateItemConditionRestrictionForCategory = () => (\n dispatch,\n getState\n) => {\n const condition = getSyiSlice(getState()).itemCondition.itemCondition;\n const isUsed = condition === 'Used';\n if (isUsed) {\n const isAllowed = isUsedAllowed(getState);\n dispatch(setUsedAllowed(isAllowed));\n } else {\n dispatch(setUsedAllowed(true));\n }\n};\n\nconst isUsedAllowed = getState => {\n const categoryRestriction = getSyiSlice(getState()).syi.categoryRestriction;\n return !categoryRestriction || categoryRestriction.allowUsed !== false;\n};\n\nconst resetItemCondition = () => ({\n type: 'RESET_ITEM_CONDITION'\n});\n\nconst publishAdditionalDescription = text => (dispatch, getState) => {\n if (text && text.length > 0) {\n dispatch({\n type: 'ADD_ADDITIONAL_DESCRIPTION',\n payload: text\n });\n }\n dispatch({ type: 'SET_PUBLISH_PENDING' });\n let draft = draftService.buildDraftFromState(getSyiSlice(getState()));\n publishService\n .publish(draft)\n .then(result => {\n navigationService.goToPublished(result.itemId);\n dispatch(setDraft({}));\n })\n .catch(() => {\n dispatch({ type: 'SET_PUBLISH_FAILED' });\n });\n};\n\nconst resetDraft = () => ({ type: 'RESET_DRAFT' });\n\nconst resetDrafts = () => dispatch => {\n dispatch({\n type: 'SET_DRAFTS',\n payload: null\n });\n};\n\nconst setCurrency = currency => ({\n type: 'SET_CURRENCY',\n payload: { currency }\n});\n\nexport default {\n setDraft,\n loadDraft,\n loadDrafts,\n loadImagesFromDraft,\n canBeResumed,\n updateDraftCanBeResumed,\n setCustomEndTime,\n setDurationDays,\n resetDurationAndEndTime,\n setRestart,\n setDisplayPromoted,\n setDisplayHighlighted,\n setReference,\n publish,\n loadDraftIfMissing,\n loadDefaultDraft,\n loadDefaultTemplateDraft,\n useDraftAsTemplate,\n saveDraft,\n setItemCondition,\n resetItemCondition,\n publishAdditionalDescription,\n resetDraft,\n resetDrafts,\n updateItemConditionRestrictionForCategory,\n setIsLoading\n};\n","/**\n * Inject a script in the head with given text content\n *\n * @param {string} text\n * @param {object} [attributes]\n * @returns {HTMLElement} - The injected script element\n */\nfunction injectScript(text, attributes) {\n const scriptElement = document.createElement('script');\n Array.from(Object.entries(attributes)).forEach(([name, value]) => {\n scriptElement.setAttribute(name, value);\n });\n scriptElement.appendChild(document.createTextNode(text));\n document.head.appendChild(scriptElement);\n return scriptElement;\n}\n\nfunction loadScript(src, options = {}) {\n const optionsWithDefaults = {\n timeout: options.timeout || 0\n };\n return new Promise((resolve, reject) => {\n if (document.querySelector(`head > script[src=\"${src}\"]`) !== null) {\n resolve();\n return;\n }\n\n const script = document.createElement('script');\n\n let timeoutTimer;\n if (optionsWithDefaults.timeout > 0) {\n timeoutTimer = setTimeout(() => {\n script.onload = null;\n script.onerror = null;\n document.head.removeChild(script);\n reject(new Error('SCRIPT_LOAD_TIMEOUT'));\n }, optionsWithDefaults.timeout);\n }\n\n script.src = src;\n script.async = true;\n script.onload = () => {\n if (timeoutTimer) clearTimeout(timeoutTimer);\n resolve();\n };\n script.onerror = error => {\n if (timeoutTimer) clearTimeout(timeoutTimer);\n reject(error);\n };\n document.head.appendChild(script);\n });\n}\n\nexport { injectScript, loadScript };\n","import React from 'react';\nimport { render } from 'react-dom';\n\nimport { ProviderWithGlobalStore } from 'tradera-state/configure-store';\nimport GdprContainer from 'tradera-components/alerts/gdpr/gpdr-container';\n\nconst GdprMount = initData => {\n if (initData.isNativeAppContext || initData.isHybridAppContext) {\n return;\n }\n const domNode = document.querySelector(\n '[data-component-cookie-notification]'\n );\n if (domNode) {\n render(\n \n \n ,\n domNode\n );\n }\n};\n\nexport default GdprMount;\n","export function filterCategories(categories, filter) {\n if (categories && filter.length > 0) {\n return categories\n .slice()\n .map(category => {\n const categoryNodes =\n category.categoryNodes\n ?.slice()\n .filter(node =>\n node.title\n .toLowerCase()\n .includes(filter.toLowerCase())\n ) || [];\n return {\n ...category,\n categoryNodes\n };\n })\n .filter(category => category.categoryNodes.length > 0);\n }\n return categories;\n}\n","/*\n * OBSOLETE - use google tag manager service instead:\n * src\\EbaySweden.TouchWeb\\static\\script\\app\\ui\\google-tagmanager-service.js\n *\n */\n\nexport default new (function() {\n var timers = {};\n var sentCounter = {};\n\n function pushToDataLayer(payload) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push(payload);\n }\n\n this.trackAddonAfterPublish = function(addOnfeatureName) {\n const isPageOpenedFromMail =\n window.location.pathname.indexOf('/selling/features') > -1;\n const label = isPageOpenedFromMail\n ? 'After Publish Mail'\n : 'After Publish';\n this.trackEvent({\n category: 'Listing AddOns',\n action: addOnfeatureName,\n label: label\n });\n };\n\n this.trackAddonBeforePublish = function(addOnfeatureName) {\n this.trackEvent({\n category: 'Listing AddOns',\n action: addOnfeatureName,\n label: 'Before Publish'\n });\n };\n\n this.trackPageView = function() {\n pushToDataLayer({ event: 'trackPageview' });\n };\n\n this.trackTiming = function(analyticsData) {\n pushToDataLayer({\n event: 'timing',\n timingCategory: analyticsData.category || '',\n timingVar: analyticsData.variable || '',\n timingValue: analyticsData.value || '',\n timingLabel: analyticsData.label || ''\n });\n };\n\n this.startTimer = function(name) {\n timers[name] = new Date().getTime();\n sentCounter[name] = 0;\n };\n\n this.sendTimer = function(name, analyticsData) {\n var duration = +new Date().getTime() - timers[name];\n\n analyticsData.label = Math.round(duration / 1000) + ' s';\n\n this.trackSellItemEvent(analyticsData);\n\n sentCounter[name] += 1;\n };\n\n this.sendTimerOnce = function(name, analyticsData) {\n if (sentCounter[name] === 0) {\n this.sendTimer(name, analyticsData);\n }\n };\n\n this.trackEvent = function(analyticsData) {\n pushToDataLayer({\n event: 'trackEvent',\n eventCategory: analyticsData.category || '',\n eventAction: analyticsData.action || '',\n eventLabel: analyticsData.label || '',\n eventValue: analyticsData.value || '0'\n });\n };\n})();\n","import config from './config';\nimport eventBroadcaster from './event-broadcaster';\nimport scribe from './scribe';\nimport { logger } from 'packages';\nimport axios from 'axios';\n\nexport default new (function() {\n var allowedFileExtensions = ['.jpeg', '.jpg', '.png', '.gif'];\n var maxFileSize = 1024 * 1024 * 20;\n\n this.isMultifileSupported = function() {\n return typeof window.FormData !== 'undefined';\n };\n\n this.uploadFiles = function(files, maxNumberOfFiles, imageFlow) {\n for (let i = 0; i < files.length && i < maxNumberOfFiles; i++) {\n const file = files[i];\n var validationResult = validateFile(file);\n if (validationResult) {\n notifyImageValidationFailed(validationResult);\n return;\n }\n }\n for (let i = 0; i < files.length && i < maxNumberOfFiles; i++) {\n const file = files[i];\n uploadFileWithFormData(file, imageFlow);\n }\n };\n\n this.uploadFromFileInput = function(\n fileInput,\n maxNumberOfFiles,\n imageFlow\n ) {\n if (typeof window.FormData === 'undefined') {\n uploadFileWithDom(fileInput, imageFlow);\n fileInput.value = '';\n } else {\n for (\n var i = 0;\n i < fileInput.files.length && i < maxNumberOfFiles;\n i++\n ) {\n var file = fileInput.files[i];\n var validationResult = validateFile(file);\n if (validationResult) {\n fileInput.value = '';\n notifyImageValidationFailed(validationResult);\n return;\n }\n }\n for (\n let i = 0;\n i < fileInput.files.length && i < maxNumberOfFiles;\n i++\n ) {\n let file = fileInput.files[i];\n uploadFileWithFormData(file, imageFlow);\n }\n fileInput.value = '';\n }\n };\n\n this.uploadCroppedImageFile = async function(\n imageFile,\n imageFlow,\n slotIndex\n ) {\n if (imageFile.type && imageFile.type.startsWith('image/')) {\n var validationResult = validateFile(imageFile);\n if (validationResult) {\n notifyImageValidationFailed(validationResult);\n return;\n }\n return uploadFileWithFormData(imageFile, imageFlow, slotIndex);\n }\n };\n\n async function uploadFileWithFormData(file, imageFlow, replaceIndex) {\n let startTime = new Date().getTime();\n var formData = new FormData();\n formData.append('imageFile', file);\n\n const url = config[imageFlow + 'ImagesUrl'];\n try {\n const response = await axios.post(url, formData);\n notifyImageUploaded(\n response.data.imageId,\n response.data.imageUrl,\n replaceIndex\n );\n let endTime = new Date().getTime();\n scribe.sendDuration(\n 'image_upload_client_time',\n endTime - startTime\n );\n } catch (error) {\n if (error.response) {\n notifyImageUploadFailed(file);\n } else if (error.request) {\n // The request was made but no response was received\n notifyImageUploadFailed(file);\n logger('Image upload failed. Reason: No response');\n } else {\n // Something happened in setting up the request that triggered an Error\n notifyImageUploadFailed(file);\n logger('Image upload failed. Reason: ' + error.message);\n }\n }\n }\n\n function uploadFileWithDom(fileInput, imageFlow) {\n var iframe_name = 'iframe_' + new Date().getTime();\n var iframe = document.createElement('iframe');\n var form = document.createElement('form');\n var input = document.createElement('input');\n form.setAttribute('name', 'upload_form');\n form.setAttribute('id', 'upload_form');\n form.setAttribute('style', 'height: 0px;');\n form.setAttribute('method', 'post');\n form.setAttribute('action', config[imageFlow + 'ImagesUrl']); // e.g. \"draft\" + \"ImagesUrl\"\n form.setAttribute('enctype', 'multipart/form-data');\n form.setAttribute('target', iframe_name);\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', 'iframe');\n input.setAttribute('value', 'true');\n iframe.setAttribute('name', iframe_name);\n iframe.setAttribute('style', 'height: 0px;');\n iframe.setAttribute('id', iframe_name);\n\n form.appendChild(input);\n\n var fileInputParent = fileInput.parentNode;\n form.appendChild(fileInput);\n\n document.body.appendChild(iframe);\n document.body.appendChild(form);\n form.submit();\n\n fileInputParent.appendChild(fileInput); // Restore input node\n document.body.removeChild(form);\n\n // Only one file is supported using this method.\n var theFile = fileInput.value;\n\n iframe.onload = function(e) {\n try {\n var responseText = $(\n e.target.contentDocument.body.innerHTML\n ).text();\n var response = $.parseJSON(responseText);\n notifyImageUploaded(response.imageId, response.imageUrl);\n } catch (err) {\n notifyImageUploadFailed(theFile);\n logger('Image upload with DOM failed.');\n fileInput.value = '';\n }\n\n document.body.removeChild(iframe);\n };\n }\n\n function endsWith(str, suffix) {\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n }\n\n function hasValidFileExtension(filename) {\n return allowedFileExtensions.some(fileExt =>\n endsWith(filename.toUpperCase(), fileExt.toUpperCase())\n );\n }\n\n function hasValidFileSize(fileSize) {\n return fileSize < maxFileSize;\n }\n\n function validateFile(file) {\n if (file === undefined) {\n return 'syi_validation_images_upload_error'; //'Något blev fel vid uppladdningen av filen';\n }\n if (!hasValidFileExtension(file.name)) {\n return 'syi_validation_images_upload_wrong_type'; //'Filen du laddade upp är av fel typ.';\n }\n if (!hasValidFileSize(file.size)) {\n return 'syi_validation_images_upload_too_large'; //'Filen du laddade upp är för stor.';\n }\n return false;\n }\n\n function notifyImageUploaded(imageId, imageUrl, replaceIndex) {\n eventBroadcaster.trigger(\n 'imageUploaded',\n imageId,\n imageUrl,\n replaceIndex\n );\n }\n\n function notifyImageUploadFailed(file) {\n eventBroadcaster.trigger('imageUploadFailed', file);\n }\n\n function notifyImageValidationFailed(displayMessage) {\n eventBroadcaster.trigger('imageValidationFailed', displayMessage);\n }\n})();\n","import config from 'tradera-apps/syi/script/app_react/services/config';\nimport userData from 'tradera-apps/syi/script/app_react/services/user-data';\nimport { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\n\nconst updatePrices = () => (dispatch, getState) => {\n const priceInfo = {\n auctionCommission: 0,\n fixedPriceCommission: 0,\n featureFees: [],\n feesTotal: 0\n };\n\n const state = getSyiSlice(getState());\n\n const commissionShare = 0.1;\n const commissionMinimum = config.commissionMinimum;\n const commissionCap = config.commissionCap;\n\n if (state.price.openingBid) {\n priceInfo.auctionCommission = Math.min(\n Math.max(\n state.price.openingBid * commissionShare,\n commissionMinimum\n ),\n commissionCap\n );\n }\n\n if (state.price.fixedPrice) {\n priceInfo.fixedPriceCommission = Math.min(\n Math.max(\n state.price.fixedPrice * commissionShare,\n commissionMinimum\n ),\n commissionCap\n );\n }\n\n if (state.price.reservePrice) {\n priceInfo.featureFees.push({\n description: 'Reservationspris',\n price: 40\n });\n }\n\n if (\n typeof state.itemDuration.customEndTimeHour === 'string' &&\n typeof state.itemDuration.customEndTimeMinute === 'string'\n ) {\n priceInfo.featureFees.push({\n description: 'Vald sluttid',\n price: state.itemDuration.customEndTimePrice\n });\n }\n\n if (state.extraFeatures.displayHighlighted) {\n priceInfo.featureFees.push({\n description: 'Highlight',\n price: config.highlightFeaturePrice\n });\n }\n\n if (state.extraFeatures.displayPromoted) {\n priceInfo.featureFees.push({\n description: 'Rank up',\n price: 45\n });\n }\n\n priceInfo.feesTotal = priceInfo.featureFees.reduce(\n (memo, fee) => memo + fee.price,\n 0\n );\n\n dispatch({\n type: 'SET_CHOSEN_EXTRA_FEATURES',\n payload: priceInfo.featureFees\n });\n};\n\nconst setDiscountFactor = discountFactor => ({\n type: 'SET_DISCOUNT_FACTOR',\n discountFactor: discountFactor\n});\n\nconst resetDiscountFactor = () => ({\n type: 'RESET_DISCOUNT_FACTOR'\n});\n\nconst setCampaignCommission = campaignCommissionProcent => ({\n type: 'SET_CAMPAIGN_COMMISSION_PROCENT',\n campaignCommissionProcent: campaignCommissionProcent\n});\n\nconst resetCampaignCommission = () => ({\n type: 'RESET_CAMPAIGN_COMMISSION_PROCENT'\n});\n\nconst updateMaxCommission = () => (dispatch, getState) => {\n let maxFeeCap = getSyiSlice(getState()).campaignCode.maxFeeCap;\n const isDomainNameCategory =\n getSyiSlice(getState()).category.draftCategoryId ===\n config.domainNameCategoryId;\n if (maxFeeCap === null || isDomainNameCategory) {\n dispatch({\n type: 'SET_MAX_COMMISSION_COST',\n payload: {\n maxCommissionCost: isDomainNameCategory\n ? undefined\n : config.commissionCap,\n isCategoryWithNoCommissionCap: isDomainNameCategory\n }\n });\n } else {\n dispatch({\n type: 'SET_MAX_COMMISSION_COST',\n payload: {\n maxCommissionCost: maxFeeCap,\n isCategoryWithNoCommissionCap: false\n }\n });\n }\n};\n\nconst updateCommission = () => (dispatch, getState) => {\n let campaignCommissionProcent = getSyiSlice(getState()).fees\n .campaignCommissionProcent;\n if (campaignCommissionProcent === null) {\n const isDomainNameCategory =\n getSyiSlice(getState()).category.draftCategoryId ===\n config.domainNameCategoryId;\n if (userData.isCompanyUser) {\n let companyMinCommissionProcent = 5;\n let companyMaxCommissionProcent = 8;\n let discountFactor = getSyiSlice(getState()).fees.discountFactor;\n if (discountFactor !== null) {\n companyMinCommissionProcent =\n companyMinCommissionProcent * (1 - discountFactor);\n companyMaxCommissionProcent =\n companyMaxCommissionProcent * (1 - discountFactor);\n }\n\n let commissionProcent = '0';\n if (companyMaxCommissionProcent > 0) {\n commissionProcent = isDomainNameCategory\n ? companyMaxCommissionProcent.toString()\n : companyMinCommissionProcent +\n ' - ' +\n companyMaxCommissionProcent;\n }\n\n dispatch({\n type: 'SET_COMMISSION_PROCENT',\n commissionProcent: commissionProcent\n });\n dispatch({\n type: 'SET_IS_VARIABLE_COMMISSION',\n payload: true\n });\n } else {\n const isCourseLiteratureCategory = [\n 302937,\n 302942,\n 302951,\n 302934,\n 302949,\n 302943,\n 302948,\n 342944,\n 302941,\n 302936,\n 302938,\n 302946,\n 302944,\n 302945,\n 302950,\n 302940,\n 302947,\n 302935,\n 1123\n ].includes(getSyiSlice(getState()).category.draftCategoryId);\n dispatch({\n type: 'SET_COMMISSION_PROCENT',\n commissionProcent: isCourseLiteratureCategory ? '0' : '10'\n });\n dispatch({\n type: 'SET_IS_VARIABLE_COMMISSION',\n payload: false\n });\n }\n } else {\n dispatch({\n type: 'SET_COMMISSION_PROCENT',\n commissionProcent: campaignCommissionProcent\n });\n dispatch({\n type: 'SET_IS_VARIABLE_COMMISSION',\n payload: false\n });\n }\n};\n\nexport default {\n updatePrices,\n updateCommission,\n setDiscountFactor,\n resetDiscountFactor,\n setCampaignCommission,\n resetCampaignCommission,\n updateMaxCommission\n};\n","/* eslint-disable promise/always-return */\n/* eslint-disable promise/catch-or-return */\nimport { touchWebClient } from 'tradera-utils/http';\n\nvar _cache = {};\nvar _title = '';\n\nfunction existsInCache(categoryId) {\n return typeof _cache[categoryId] !== 'undefined';\n}\n\nconst clearCache = title => {\n if ((!_title && !title) || _title === title) {\n return;\n }\n _cache = {};\n};\n\nconst loadTopCategories = title => {\n return new Promise((resolve, reject) => {\n clearCache(title);\n _title = title;\n\n if (_cache.topCategories) {\n resolve(_cache.topCategories);\n } else {\n touchWebClient\n .post('/selling/toplevelcategorysuggestions', {\n title: title || ''\n })\n .then(function(result) {\n _cache.topCategories = result.data;\n resolve(result.data);\n })\n .catch(reject);\n }\n });\n};\n\nconst loadChildCategories = (title, categoryId, level) => {\n return new Promise((resolve, reject) => {\n _title = title;\n if (!categoryId) {\n reject();\n return;\n }\n\n if (existsInCache(categoryId)) {\n resolve(_cache[categoryId]);\n } else {\n const levelToSearch = level + 1;\n const params = {\n title: title || '',\n categoryId: categoryId,\n levelToSearch\n };\n touchWebClient\n .post('/selling/categorysuggestions', params, {\n cancelTokenId: `cancel-category-level-search-${levelToSearch}`\n })\n .then(function(result) {\n _cache[categoryId] = result.data;\n resolve(result.data);\n })\n .catch(reject);\n }\n });\n};\n\nconst prefetchChildren = (title, categories, level) => {\n _title = title;\n var allCategories = categories.categories.concat(categories.suggestions);\n var ids = allCategories\n .filter(function(c) {\n return !existsInCache(c.categoryId);\n })\n .map(function(c) {\n return c.categoryId;\n });\n\n if (ids.length === 0) {\n return;\n }\n\n var params = {\n title: _title || '',\n categoryIds: ids,\n levelToSearch: level + 1\n };\n\n touchWebClient\n .post('/selling/childcategorysuggestions', params)\n .then(function(result) {\n Object.values(result.data).forEach(categoryInfo => {\n _cache[categoryInfo.categoryId] = categoryInfo;\n });\n });\n};\n\nexport default {\n clearCache,\n loadTopCategories,\n loadChildCategories,\n prefetchChildren\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport CartIcon from '@tradera/blueprint/theme/icons2/cart.svg?jsx';\nimport { useUrlLocalizer } from 'tradera-lang/translate';\n\nconst CartLink = ({ formattedCartItems, cartSum, transparentHeader }) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const cartUrl = toLocalizedUrl('/shopping/cart');\n return (\n
\n \n \n {formattedCartItems}\n \n
\n \n
\n
\n {cartSum} kr\n
\n \n
\n );\n};\n\nCartLink.propTypes = {\n formattedCartItems: PropTypes.number,\n cartSum: PropTypes.number\n};\n\nexport default React.memo(CartLink);\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { Button } from 'tradera-components/atoms/button/button';\n\nconst DropDownMenuHamburger = ({ active, className, onClick, tabIndex }) => {\n const { t } = useTranslator();\n return (\n \n \n \n \n \n {t('siteHeader_dropDownMenuHamburger')}\n \n \n );\n};\n\nexport default DropDownMenuHamburger;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst MenuItemSeparator = ({ label, className, style }) => (\n \n {label}\n \n);\n\nMenuItemSeparator.defaultProps = {\n className: '',\n style: {}\n};\n\nMenuItemSeparator.propTypes = {\n label: PropTypes.node,\n className: PropTypes.string,\n style: PropTypes.object\n};\n\nexport default MenuItemSeparator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ALink from 'tradera-components/alink/alink';\n\nconst MenuItemButton = ({\n className,\n containerClass,\n follow,\n gaAttributes,\n inSPA,\n label,\n link,\n onClick\n}) => {\n return (\n
  • \n \n \n {label}\n \n —>\n \n
  • \n );\n};\n\nMenuItemButton.defaultProps = {\n className: '',\n containerClass: 'site-dropdown__item-default',\n follow: true\n};\n\nMenuItemButton.propTypes = {\n notify: PropTypes.number,\n link: PropTypes.string,\n bold: PropTypes.bool,\n border: PropTypes.bool,\n label: PropTypes.node,\n gaAttributes: PropTypes.object\n};\n\nexport default MenuItemButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ALink from 'tradera-components/alink/alink';\n\nconst MenuItem = ({\n alerts,\n bold,\n border,\n className,\n follow,\n gaAttributes,\n icon,\n imageContainerClassName,\n imageUrl,\n inSPA,\n label,\n link,\n notify,\n notificationDot,\n onClick\n}) => {\n const containerClass = `site-dropdown__item d-flex flex-row align-items-center ${\n alerts?.length > 0 ? 'flex-wrap' : ''\n } ${className} `;\n\n return (\n
  • \n {link ? (\n \n \n \n ) : (\n
    \n \n
    \n )}\n
  • \n );\n};\n\nconst MenuItemContent = ({\n icon,\n imageContainerClassName,\n bold,\n imageUrl,\n label,\n notify,\n alerts,\n notificationDot\n}) => {\n return (\n <>\n {icon && (\n \n {icon}\n \n )}\n \n {label}\n \n\n \n\n {alerts}\n \n );\n};\n\nconst NotificationDot = ({ notify, notificationDot }) => {\n if (notify > 0) {\n return (\n \n \n {notify}\n \n \n );\n }\n\n switch (notificationDot) {\n case 'info':\n case 'success':\n case 'warning':\n case 'danger':\n return (\n \n \n \n );\n default:\n return null;\n }\n};\n\nMenuItem.propTypes = {\n bold: PropTypes.bool,\n border: PropTypes.bool,\n gaAttributes: PropTypes.object,\n inSPA: PropTypes.bool,\n label: PropTypes.node,\n link: PropTypes.string,\n notify: PropTypes.number\n};\n\nMenuItem.defaultProps = {\n bold: false,\n border: false,\n className: 'site-dropdown__item-default',\n follow: true,\n inSPA: false,\n notify: 0\n};\n\nexport default MenuItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ArrowUpIcon from '@tradera/blueprint/theme/icons2/arrow-up.svg?jsx';\nimport ArrowDownIcon from '@tradera/blueprint/theme/icons2/arrow-down.svg?jsx';\n\nclass ExpandableMenuItem extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n expanded: this.props.defaultExpanded\n };\n }\n\n toggleOpen = () => {\n this.setState(\n prevState => ({\n expanded: !prevState.expanded\n }),\n () => {\n const { onOpen = () => {}, onClose = () => {} } = this.props;\n if (this.state.expanded) {\n onOpen();\n } else {\n onClose();\n }\n }\n );\n };\n\n componentDidUpdate(prevProps) {\n if (prevProps.defaultExpanded !== this.props.defaultExpanded) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ expanded: prevProps.defaultExpanded });\n }\n }\n\n render() {\n const {\n imageUrl,\n icon,\n label,\n className,\n imageContainerClassName,\n border,\n children,\n href\n } = this.props;\n const { expanded } = this.state;\n\n return (\n \n {\n if (children) {\n e.preventDefault();\n this.toggleOpen();\n }\n }}\n aria-expanded={expanded.toString()}\n className={`site-dropdown__transparent-a p-0 m-0 d-flex flex-row align-items-center site-dropdown__item ${\n className ? className : ''\n }`}>\n {icon && (\n \n {icon}\n \n )}\n {label}\n \n {expanded ? (\n \n ) : (\n \n )}\n \n \n {expanded &&
      {children}
    }\n \n );\n }\n}\n\nExpandableMenuItem.defaultProps = {\n defaultExpanded: false,\n border: true\n};\n\nExpandableMenuItem.propTypes = {\n imageUrl: PropTypes.string,\n icon: PropTypes.node,\n label: PropTypes.node,\n className: PropTypes.string,\n imageContainerClassName: PropTypes.string,\n border: PropTypes.bool,\n onOpen: PropTypes.func,\n onClose: PropTypes.func\n};\n\nexport default ExpandableMenuItem;\n","import { useEffect, useRef } from 'react';\nimport {\n BREAKPOINTS,\n useBreakpoint\n} from 'tradera-components/breakpoint/breakpoint';\n\nexport const useMenuHeightFix = () => {\n const menuContentRef = useRef();\n const currentBreakpoint = useBreakpoint();\n\n useEffect(() => {\n if (!menuContentRef.current) return;\n const element = menuContentRef.current.parentElement;\n const marginBottom = currentBreakpoint === BREAKPOINTS.XL ? 7 : 0;\n const marginTop = element.getBoundingClientRect().top;\n const marginY = marginTop + marginBottom;\n element.style.maxHeight = `calc(100vh - ${marginY}px)`;\n }, [currentBreakpoint]);\n return menuContentRef;\n};\n","/**\n * Factory for the dropdown menu\n */\nimport React from 'react';\nimport MediaQuery from 'react-responsive';\n\nimport { BREAKPOINT_SIZES, BREAKPOINTS } from 'tradera-constants/breakpoints';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport { filterCategories } from 'tradera-helpers/filter-categories-helper';\nimport MenuItemSeparator from 'tradera-components/site-header/dropdown-menu-item-separator';\nimport MenuItemButton from 'tradera-components/site-header/dropdown-menu-item-button';\nimport MenuItem from 'tradera-components/site-header/dropdown-menu-item';\nimport ExpandableMenuItem from 'tradera-components/site-header/dropdown-menu-item-expandable';\nimport ALink from 'tradera-components/alink/alink';\nimport CategoryIcon from '@tradera/blueprint/theme/icons2/category.svg?jsx';\nimport EndingSoonIcon from '@tradera/blueprint/theme/icons2/branded-ending.svg?jsx';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport PenIcon from '@tradera/blueprint/theme/icons2/pen.svg?jsx';\nimport RecommendedIcon from '@tradera/blueprint/theme/icons2/branded-recommended.svg?jsx';\nimport SearchIcon from '@tradera/blueprint/theme/icons2/search.svg?jsx';\nimport BrandIcon from '@tradera/blueprint/theme/icons2/sale.svg?jsx';\nimport UserIcon from '@tradera/blueprint/theme/icons2/user.svg?jsx';\nimport CategoryCharityIcon from '@tradera/blueprint/theme/icons2/category-charity.svg?jsx';\nimport ValuationIcon from '@tradera/blueprint/theme/icons2/valuation.svg?jsx';\nimport InspirationIcon from '@tradera/blueprint/theme/icons2/inspiration.svg?jsx';\nimport { getCategoryIcon } from 'tradera-helpers/category-icon-helper';\nimport { useMenuHeightFix } from 'tradera-hooks/use-menu-height-fix';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\n\nconst getGaAttributes = label => ({\n 'data-ga-category': 'Top navigation',\n 'data-ga-action': 'Category menu',\n 'data-ga-label': `Link - ${label}`\n});\n\nconst DropdownMenuContent = ({ categories, inSPA, isLoggedIn, onClick }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const isNextWebBrandsPageEnabled = useIsFeatureEnabled(\n 'next-web-brands-page'\n );\n const isPennybridgeCharitiesEnabled = useIsFeatureEnabled(\n 'pennybridge-charities'\n );\n const isValuationPageEnabled = useIsFeatureEnabled('valuation-page');\n const mediaProps = { maxWidth: BREAKPOINT_SIZES[BREAKPOINTS.MD].max };\n\n const sourceCategories =\n categories.list.length > 0\n ? categories.list\n : categories.topLevelCategories;\n // Only show rebate codes for non logged in users.\n const categoryList = sourceCategories\n .map(category => ({ ...category, open: false }))\n .filter(category => !isLoggedIn || (isLoggedIn && category.id !== 0));\n\n const menuContentRef = useMenuHeightFix();\n\n return (\n
      \n {/* NOTE: Notifications are disabled for burger button for desktop due to hidden cart and messaging, see DropDownMenuHamburger */}\n \n {!isLoggedIn && (\n <>\n }\n inSPA={false}\n label={t('siteHeader_howTo')}\n link={toLocalizedUrl('/how-to-buy')}\n onClick={onClick}\n />\n }\n inSPA={false}\n label={t('siteHeader_register')}\n link=\"/register\"\n onClick={onClick}\n />\n }\n inSPA={false}\n label={t('siteHeader_createItem')}\n link={toLocalizedUrl('/selling')}\n onClick={onClick}\n />\n \n )}\n \n\n }\n inSPA={false}\n label={\n isLoggedIn\n ? t('siteHeader_recommendedForYou')\n : t('siteHeader_recommendedAnonymous')\n }\n link={toLocalizedUrl('/ma/endless-recommendation/selected')}\n onClick={onClick}\n />\n }\n inSPA={inSPA}\n label={t('siteHeader_lastChance')}\n link={toLocalizedUrl('/campaign/sista-chansen?sortBy=TimeLeft')}\n onClick={onClick}\n />\n }\n inSPA={!isNextWebBrandsPageEnabled}\n label={t('siteHeader_brands')}\n link={toLocalizedUrl(\n `/brands${isNextWebBrandsPageEnabled ? '?next=1' : ''}`\n )}\n onClick={onClick}\n />\n {isPennybridgeCharitiesEnabled && (\n }\n inSPA={inSPA}\n label={t('siteHeader_donateWithTradera')}\n link={toLocalizedUrl('/causes')}\n onClick={onClick}\n />\n )}\n {isValuationPageEnabled && (\n }\n inSPA={inSPA}\n label={t('siteHeader_valuation')}\n link={toLocalizedUrl('/valuation')}\n onClick={onClick}\n />\n )}\n\n \n \n \n {t('siteHeader_categoriesAll')}\n \n \n }\n />\n \n {!isLoggedIn && (\n }\n inSPA={false}\n label={t('siteHeader_inspiration')}\n link={toLocalizedUrl('/inspiration/')}\n onClick={onClick}\n />\n )}\n {/* NOTE: Fix for iPhone menu making bottom element unclickable */}\n \n \n \n
    \n );\n};\n\nclass CategoryMenuItems extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n filter: '',\n filteredCategories: props.categoryList\n };\n }\n\n handleFilterChange = event => {\n this.filterCategories(event.target.value.trim());\n };\n\n handleFilterKey = event => {\n const { key, target } = event;\n switch (key) {\n case 'Escape':\n event.stopPropagation();\n if (this.state.filter === '') {\n event.target.blur();\n }\n this.filterCategories('');\n break;\n case 'Enter':\n event.stopPropagation();\n target.blur();\n break;\n }\n };\n\n filterCategories = filter => {\n this.setState({\n filter,\n filteredCategories: filterCategories(\n this.props.categoryList,\n filter\n )\n });\n };\n\n componentDidUpdate(prevProps) {\n if (\n this.props.categoryList[0]?.categoryNodes !==\n prevProps.categoryList[0]?.categoryNodes\n ) {\n this.filterCategories(this.state.filter);\n }\n }\n\n render() {\n const { inSPA, searchPlaceholder, onClick } = this.props;\n const { filter, filteredCategories } = this.state;\n return (\n <>\n \n
    \n \n \n
    \n
    \n }\n className=\"bg-white\"\n />\n {filteredCategories.map(\n category =>\n category && (\n \n )\n )}\n \n );\n }\n}\n\nconst CategoryMenuItem = ({\n category: { id, title, categoryNodes, open, href },\n inSPA = false,\n onClick\n}) => {\n if (!categoryNodes) {\n return (\n \n );\n }\n return (\n \n {categoryNodes.map(categoryNode => {\n if (categoryNode.isTopLevel) {\n return (\n ${categoryNode.title}`\n )}\n inSPA={inSPA}\n label={categoryNode.title}\n link={categoryNode.href}\n onClick={onClick}\n />\n );\n }\n\n return (\n ${categoryNode.title}`\n )}\n inSPA={inSPA}\n label={categoryNode.title}\n link={categoryNode.href}\n onClick={onClick}\n />\n );\n })}\n \n );\n};\n\nexport default DropdownMenuContent;\n","import React from 'react';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nconst TopLevelCategories = ({ topLevelCategories }) => {\n return topLevelCategories?.map(c => (\n \n {c.title}\n \n ));\n};\n\nconst SeoLinks = ({ isLoggedIn, topLevelCategories }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n
    \n {topLevelCategories?.length >= 0 && (\n \n )}\n {!isLoggedIn && (\n \n {t('siteHeader_inspiration')}\n \n )}\n
    \n );\n};\n\nexport { SeoLinks };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { TransitionGroup } from 'react-transition-group';\nimport MediaQuery from 'react-responsive';\nimport { RemoveScroll } from 'react-remove-scroll';\n\nimport categoryActions from 'tradera-state/categories/actions';\nimport uiActions from 'tradera-state/ui/actions';\nimport { BREAKPOINTS, BREAKPOINT_SIZES } from 'tradera-constants/breakpoints';\nimport { logger } from 'packages';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport {\n EnterFade,\n EnterFrom\n} from 'tradera-components/transitions/transitions';\nimport ApplicationErrorBoundary from 'tradera-components/application-error-boundary/application-error-boundary';\nimport Overlay from 'components/modals/overlay';\nimport DropDownMenuHamburger from './dropdown-menu-burger';\nimport DropdownMenuContent from './dropdown-menu-content';\nimport { SeoLinks } from './seo-links';\n\nconst trackAnalytics = label => {\n try {\n GtmService.trackAction('Top navigation', 'Category menu', label);\n } catch (error) {\n logger(error);\n }\n};\n\nconst DropdownMenu = ({\n className,\n inSPA,\n isLoggedIn,\n transparentHeader,\n tabIndex\n}) => {\n const dropdownMenu = useSelector(state => state.ui.categoryDropdownMenu);\n const categories = useSelector(state => state.categories);\n const expanded = dropdownMenu.open === 'open';\n const dispatch = useDispatch();\n\n const onClick = () => {\n if (expanded) {\n dispatch(uiActions.closeCategoryDropdownMenu());\n trackAnalytics('Menu close');\n } else {\n dispatch(uiActions.closeProfileMenu());\n if (!categories.isFetching && categories.list.length === 0) {\n dispatch(categoryActions.fetchCategoryList());\n }\n dispatch(uiActions.openCategoryDropdownMenu());\n\n trackAnalytics('Menu open');\n }\n };\n\n const onItemClick = () => {\n dispatch(uiActions.closeCategoryDropdownMenu());\n };\n\n const sideMenuMediaProps = {\n maxWidth: BREAKPOINT_SIZES[BREAKPOINTS.LG].max\n };\n const dropdownMenuMediaProps = {\n minWidth: BREAKPOINT_SIZES[BREAKPOINTS.LG].max\n };\n\n const renderChild = () => (\n \n
    \n \n
    \n
    \n );\n\n return (\n \n \n \n {expanded && (\n \n {\n onClick();\n }}\n tabIndex=\"-1\"\n />\n \n )}\n \n \n );\n};\n\nDropdownMenu.propTypes = {\n className: PropTypes.string,\n isLoggedIn: PropTypes.bool,\n expanded: PropTypes.bool\n};\n\nDropdownMenu.defaultProps = {\n className: ''\n};\n\nexport default DropdownMenu;\n","import React from 'react';\nimport NewAccountIcon from '@tradera/blueprint/theme/icons2/new-account.svg?jsx';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport { useSelector } from 'react-redux';\nimport { selectIsSwedishVisitor } from 'tradera-state/shipping-region/selectors';\nimport { selectIsForeignLanguageActivated } from 'tradera-state/language/selectors';\nimport { selectIsOutsideSweden } from 'tradera-state/member';\n\nconst SignUpLink = ({ clickAction, transparentHeader }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const register = t('siteHeader_register');\n const isForeignVisitor = useSelector(\n state =>\n (!selectIsSwedishVisitor(state) ||\n selectIsForeignLanguageActivated(state)) &&\n selectIsOutsideSweden(state)\n );\n const url = isForeignVisitor\n ? toLocalizedUrl('/register/foreign-private')\n : toLocalizedUrl('/register');\n\n return (\n \n \n \n {register}\n \n \n );\n};\n\nexport default React.memo(SignUpLink);\n","import { Component } from 'react';\nimport ReactDOM from 'react-dom';\n\nexport default class ModalPortal extends Component {\n constructor() {\n super();\n this.el = document.createElement('div');\n this.notificationPortalRoot = document.getElementById('modal-portal');\n }\n\n componentDidMount() {\n if (this.notificationPortalRoot) {\n this.notificationPortalRoot.appendChild(this.el);\n }\n }\n\n componentWillUnmount() {\n if (this.notificationPortalRoot) {\n this.notificationPortalRoot.removeChild(this.el);\n }\n }\n\n render() {\n const { children } = this.props;\n return ReactDOM.createPortal(children, this.el);\n }\n}\n","/* eslint-disable react/no-danger */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport IconPushSplashDefault from './push-splash-icon.svg';\nimport IconWishlist from './push-wishlist-icon.svg';\nimport IconSelling from './push-selling-icon.svg';\nimport * as pushNotificationActions from 'tradera-state/push-notifications/push-notifications-slice';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { useDispatch } from 'react-redux';\nimport { useTranslator } from 'tradera-lang/translate';\nimport CheckIcon from '@tradera/blueprint/theme/icons2/check.svg?jsx';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\n\nconst PushNotificationModal = ({\n modalType,\n gaLabel,\n title,\n description,\n tagGroups,\n closeModal\n}) => {\n const dispatch = useDispatch();\n const { t } = useTranslator();\n\n const trackGa = gaLabel => {\n GtmService.trackAction('Settings', 'Notifications', gaLabel);\n };\n\n const handleAccept = async () => {\n trackGa(gaLabel);\n closeModal();\n try {\n dispatch(pushNotificationActions.addTagGroups(tagGroups));\n dispatch(pushNotificationActions.setShownModalTrue(modalType));\n } catch (error) {\n // error, do not do anything\n }\n };\n\n const handleReject = async () => {\n closeModal();\n trackGa('Decline - Opt-in alert');\n dispatch(pushNotificationActions.setShownModalTrue(modalType));\n };\n\n let icon = IconPushSplashDefault;\n\n if (modalType === 'wishlistReminders') {\n icon = IconWishlist;\n } else if (modalType === 'selling') {\n icon = IconSelling;\n }\n\n return (\n \n
    \n \"\"\n

    {t(title)}

    \n \n
    \n
    \n \n {t('pushModal_btn_no')}\n \n
    \n
    \n \n {' '}\n {t('pushModal_btn_yes')}\n \n
    \n
    \n
    \n
    \n );\n};\n\nPushNotificationModal.propTypes = {\n modalType: PropTypes.string.isRequired,\n gaLabel: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n tagGroups: PropTypes.array.isRequired,\n closeModal: PropTypes.func.isRequired\n};\n\nexport default PushNotificationModal;\n","export default \"//static.tradera.net/touchweb/static/output/images/push-splash-icon.4a7e4939.svg\";","export default \"//static.tradera.net/touchweb/static/output/images/push-wishlist-icon.77df35d5.svg\";","export default \"//static.tradera.net/touchweb/static/output/images/push-selling-icon.f032a8b4.svg\";","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"item--btWVc\",\"link\":\"link--1sGjM\",\"icon\":\"icon--3Zoct\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useUrlLocalizer } from 'tradera-lang/translate';\nimport styles from './hover-menu-item.module.scss';\n\nconst HoverMenuItem = ({\n icon,\n label,\n link,\n border,\n follow,\n onClick,\n gaAttributes\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n
  • \n \n \n {icon}\n \n {label}\n \n
  • \n );\n};\n\nHoverMenuItem.propTypes = {\n icon: PropTypes.node,\n label: PropTypes.node,\n link: PropTypes.string,\n border: PropTypes.bool,\n follow: PropTypes.bool,\n onClick: PropTypes.func,\n gaAttributes: PropTypes.object\n};\n\nexport default HoverMenuItem;\n","// extracted by mini-css-extract-plugin\nexport default {\"separator\":\"separator--1xa0y\"};","import React from 'react';\nimport styles from './hover-menu-separator.module.scss';\n\nconst HoverMenuItemSeparator = () =>
  • ;\n\nexport default HoverMenuItemSeparator;\n","export const getMenuGaAttributes = (category, action, label) => ({\n 'data-ga-category': category,\n 'data-ga-action': action,\n 'data-ga-label': `Link - ${label}`\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport HoverMenu from './hover-menu/hover-menu';\nimport hoverMenuStyles from './hover-menu/hover-menu.module.scss';\nimport HoverMenuItem from './hover-menu/hover-menu-item';\nimport HoverMenuItemSeparator from './hover-menu/hover-menu-separator';\nimport { getMenuGaAttributes } from './site-header.analytics.js';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\n\nimport AuctionIcon from '@tradera/blueprint/theme/icons2/auction.svg?jsx';\nimport AuctionLostIcon from '@tradera/blueprint/theme/icons2/bid-lost.svg?jsx';\nimport WinningIcon from '@tradera/blueprint/theme/icons2/winning.svg?jsx';\nimport RatingPositiveIcon from '@tradera/blueprint/theme/icons2/rating-positive.svg?jsx';\n\nconst getGaAttributes = label =>\n getMenuGaAttributes('Top navigation', 'Buying menu', label);\n\nconst BuyMenu = ({ showMenu }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n \n }\n gaAttributes={getGaAttributes('Ongoing auctions')}\n />\n }\n gaAttributes={getGaAttributes('Won / Bought')}\n />\n }\n gaAttributes={getGaAttributes('Lost')}\n />\n \n }\n gaAttributes={getGaAttributes('Rate seller')}\n />\n \n );\n};\n\nBuyMenu.propTypes = {\n showMenu: PropTypes.bool\n};\n\nexport default BuyMenu;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport BuyIcon from '@tradera/blueprint/theme/icons2/buy.svg?jsx';\nimport BuyMenu from './buy-menu';\nimport { HOVER_MENUS } from './hover-menu/constants';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\n\nconst BuyingLink = ({\n onClick,\n mouseOver,\n mouseOut,\n onBlur,\n transparentHeader,\n showMenu\n}) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const buyingText = t('siteHeader_buying');\n return (\n mouseOver(HOVER_MENUS.BUY)}\n onMouseLeave={mouseOut}>\n {\n onClick(e, HOVER_MENUS.BUY);\n }}\n onBlur={onBlur}>\n \n \n {buyingText}\n \n \n \n \n );\n};\n\nBuyingLink.propTypes = {\n onClick: PropTypes.func,\n mouseOver: PropTypes.func,\n mouseOut: PropTypes.func,\n showMenu: PropTypes.bool\n};\n\nexport default React.memo(BuyingLink);\n","import React from 'react';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\n\nconst ToBuyLink = ({ isLoggedIn, transparentHeader }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const howTo = t('siteHeader_howTo');\n\n return (\n \n \n \n\n \n {howTo}\n \n \n );\n};\n\nexport default ToBuyLink;\n","import React from 'react';\nimport PenIcon from '@tradera/blueprint/theme/icons2/pen.svg?jsx';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\n\nconst NewListingLink = ({ transparentHeader }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const newListingLink = t('siteHeader_newListing');\n\n return (\n \n \n\n \n {newListingLink}\n \n \n );\n};\n\nexport default NewListingLink;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport ExpandableMenuItem from 'tradera-components/site-header/dropdown-menu-item-expandable';\nimport { selectPreferredLanguage } from 'tradera-state/language/selectors';\n\nimport { LanguageSelect } from 'static/script/components/localization/language-select';\nimport TranslateIcon from '@tradera/blueprint/theme/icons2/translate.svg?jsx';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { mapLanguageCodeToLanguageKey } from 'tradera-utils/map-language-code-to-language-key';\n\nexport const PlainLocalizationMenuItem = ({ onToggle, preferredLanguage }) => {\n const { t } = useTranslator();\n\n return (\n }\n onOpen={onToggle}\n onClose={onToggle}>\n \n \n );\n};\n\nPlainLocalizationMenuItem.propTypes = {\n onToggle: PropTypes.func.isRequired,\n preferredLanguage: PropTypes.object\n};\n\nconst mapStateToProps = state => ({\n preferredLanguage: selectPreferredLanguage(state)\n});\n\nexport const LocalizationMenuItem = connect(mapStateToProps)(\n PlainLocalizationMenuItem\n);\n","export const mapCurrencyCodeToCountryCode = currencyCode => {\n const countryCode = {\n sek: 'SE',\n usd: 'US',\n jpy: 'JP',\n gbp: 'GB',\n nok: 'NO',\n eur: 'EU',\n dkk: 'DK'\n }[currencyCode.toLowerCase()];\n if (!countryCode)\n throw `CurrencyCode ${currencyCode} has no mapping to country code`;\n return countryCode;\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"row\":\"row--1I9zj\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n selectCurrencies,\n selectPreferredCurrency,\n setPreferredCurrency\n} from 'tradera-state/multi-currency';\nimport Flag from 'tradera-components/flag/flag';\nimport { mapCurrencyCodeToCountryCode } from 'tradera-utils/map-currency-code-to-country-code';\nimport styles from './currency-select.module.scss';\nimport { useTranslator } from 'tradera-lang/translate';\nimport CheckIcon from '@tradera/blueprint/theme/icons2/check.svg?jsx';\n\nexport const PlainCurrencySelect = ({\n currencies,\n preferredCurrency,\n onCurrencySelected,\n onBlur,\n inProfileMenu\n}) => {\n const { t } = useTranslator();\n return (\n
    \n {!inProfileMenu && (\n
    \n {t('siteHeader_currency')}\n
    \n )}\n {currencies.map(({ code, shortName, longName }) => (\n {\n onCurrencySelected(code, e);\n onBlur();\n }}>\n \n \n {preferredCurrency.code === code ? (\n \n {shortName} - {longName}\n \n ) : (\n <>\n {shortName} - {longName}\n \n )}\n \n {preferredCurrency.code === code && (\n \n )}\n \n ))}\n
    \n );\n};\n\nPlainCurrencySelect.propTypes = {\n currencies: PropTypes.arrayOf(\n PropTypes.shape({\n code: PropTypes.string,\n shortName: PropTypes.string,\n longName: PropTypes.string\n })\n ),\n preferredCurrency: PropTypes.shape({\n code: PropTypes.string\n }),\n onCurrencySelected: PropTypes.func.isRequired,\n onBlur: PropTypes.func.isRequired,\n inProfileMenu: PropTypes.bool\n};\n\nconst mapStateToProps = state => ({\n currencies: selectCurrencies(state),\n preferredCurrency: selectPreferredCurrency(state)\n});\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n onCurrencySelected: (code, e) => {\n dispatch(setPreferredCurrency(code));\n ownProps.onCurrencySelected && ownProps.onCurrencySelected(code, e);\n }\n});\n\nexport const CurrencySelect = connect(\n mapStateToProps,\n mapDispatchToProps\n)(PlainCurrencySelect);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport ExpandableMenuItem from 'tradera-components/site-header/dropdown-menu-item-expandable';\nimport { CurrencySelect } from 'static/script/components/localization/currency-select';\nimport CurrencyIcon from '@tradera/blueprint/theme/icons2/currency.svg?jsx';\nimport { useTranslator } from 'tradera-lang/translate';\nimport {\n selectShowCurrencySelection,\n selectPreferredCurrency\n} from 'tradera-state/multi-currency';\n\nexport const PlainCurrencyMenuItem = ({\n onToggle,\n showCurrencySelection,\n preferredCurrency\n}) => {\n const { t } = useTranslator();\n\n return showCurrencySelection ? (\n }\n onOpen={onToggle}\n onClose={onToggle}>\n {}} inProfileMenu={true} />\n \n ) : null;\n};\n\nconst mapStateToProps = state => ({\n showCurrencySelection: selectShowCurrencySelection(state),\n preferredCurrency: selectPreferredCurrency(state)\n});\n\nexport const CurrencyMenuItem = connect(mapStateToProps)(PlainCurrencyMenuItem);\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport PenIcon from '@tradera/blueprint/theme/icons2/pen.svg?jsx';\nimport SwishIcon from '@tradera/blueprint/theme/icons/swish.svg?jsx';\nimport WarningIcon from '@tradera/blueprint/theme/icons/warning.svg?jsx';\n\nconst trackPaymentOnboarding = (action, label) => {\n GtmService.trackAction('Tradera Payment Onboarding', action, label);\n};\n\nconst InvoiceUnpaidAlert = () => {\n const { t } = useTranslator();\n return (\n
    \n {t('siteheader_invoiceUnpaidDescription')}\n
    \n );\n};\n\nconst InvoiceOverdueAlert = () => {\n const { t } = useTranslator();\n return (\n
    \n \n \n {t('siteheader_invoiceOverdueTitle')}\n
    \n {t('siteheader_invoiceOverdueDescription')}\n
    \n
    \n );\n};\n\nconst BankAccountMissingAlert = () => {\n const { t } = useTranslator();\n trackPaymentOnboarding(\n 'Bank account Onboarding Alert',\n 'Will add from - Account menu alert'\n );\n return (\n
    \n \n \n {t('siteheader_bankAccountMissingTitle')}\n
    \n {t('siteheader_bankAccountMissingDescription')}\n
    \n
    \n );\n};\n\nconst PayoutFailedAlert = () => {\n const { t } = useTranslator();\n return (\n
    \n \n \n {t('siteheader_payoutFailedTitle')}\n
    \n {t('siteheader_payoutFailedDescription')}\n
    \n
    \n );\n};\n\nconst PayoutReadyBankAccountMissingAlert = () => {\n const { t } = useTranslator();\n trackPaymentOnboarding(\n 'Bank account Onboarding Alert',\n 'Will add from - Account menu alert - Failed payment'\n );\n return (\n
    \n
    \n \n \n \n {t('siteheader_paymentReadBankAccountMissingTitle')}\n \n
    \n {t('siteheader_paymentReadBankAccountMissingDescription')}\n
    \n
    \n
    \n );\n};\n\nconst SwishMissingAlert = ({ dismissSwish, enableSwishUrl }) => {\n const { t } = useTranslator();\n trackPaymentOnboarding(\n 'Swish Onboarding Alert',\n 'Show on - Account menu alert'\n );\n return (\n
    \n
    \n \n \n {t('siteheader_swishMissingTitle')}\n
    \n {t('siteheader_swishMissingDescription')}\n
    \n
    \n {\n e.preventDefault();\n location.href = enableSwishUrl;\n trackPaymentOnboarding(\n 'Swish Onboarding Alert',\n 'Will add from - Account menu alert'\n );\n }}>\n \n {t('siteheader_addSwish')}\n \n {\n e.preventDefault();\n dismissSwish();\n trackPaymentOnboarding(\n 'Swish Onboarding Alert',\n 'Dismissed from - Account menu alert'\n );\n }}>\n {t('siteheader_swishNoThanks')}\n
    \n \n );\n};\n\nconst HyperwalletPayeeVerificationAlert = () => {\n const { t } = useTranslator();\n return (\n
    \n
    \n \n \n \n {t('siteheader_hyperwalletPayeeVerificationTitle')}\n \n
    \n {t('siteheader_hyperwalletPayeeVerificationDescription')}\n
    \n
    \n {\n e.preventDefault();\n location.href = '/my/PayeeVerification';\n }}>\n {t('siteheader_hyperwalletPayeeVerificationMoreInfo')}\n \n
    \n );\n};\n\nconst HyperwalletPayeeVerificationReviewAlert = () => {\n const { t } = useTranslator();\n return (\n {\n e.preventDefault();\n location.href = '/my/PayeeVerificationCompleted';\n }}>\n \n \n \n {t('siteheader_hyperwalletPayeeVerificationReviewTitle')}\n \n
    \n {t('siteheader_hyperwalletPayeeVerificationReviewDescription')}\n
    \n \n );\n};\n\nconst OnboardToTraderaPayAlert = () => {\n const { t } = useTranslator();\n return (\n {\n e.preventDefault();\n location.href = '/my/Payments';\n }}>\n
    \n \n \n {t('siteheader_onboardToTraderaPayTitle')}\n
    \n {t('siteheader_onboardToTraderaPayDescription')}\n
    \n
    \n {\n e.preventDefault();\n location.href = '/my/Payments';\n }}>\n {t('siteheader_onboardToTraderaPayMoreInfo')}\n \n \n );\n};\n\nexport {\n InvoiceUnpaidAlert,\n InvoiceOverdueAlert,\n BankAccountMissingAlert,\n PayoutFailedAlert,\n PayoutReadyBankAccountMissingAlert,\n SwishMissingAlert,\n HyperwalletPayeeVerificationAlert,\n HyperwalletPayeeVerificationReviewAlert,\n OnboardToTraderaPayAlert\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport RatingStars from 'tradera-components/rating-stars/rating-stars';\nimport ALink from 'tradera-components/alink/alink';\n\nconst getGaLinkAttributes = label => ({\n 'data-ga-category': 'Top navigation',\n 'data-ga-action': 'Account menu',\n 'data-ga-label': `Link - ${label}`\n});\n\nconst getGaButtonAttributes = label => ({\n 'data-ga-category': 'Top navigation',\n 'data-ga-action': 'Account menu',\n 'data-ga-label': `Button - ${label}`\n});\n\nconst ProfileCard = ({\n closeProfileMenu,\n memberAlias,\n memberId,\n rating,\n imageUrl,\n cleanedMemberAlias\n}) => {\n const [imageAvailable, setImageAvailable] = useState(true);\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n
    \n {imageUrl && imageAvailable && (\n {\n setImageAvailable(false);\n }}\n />\n )}\n
    \n \n {imageUrl\n ? t('siteHeader_changeCoverImage')\n : t('siteHeader_addCoverImage')}\n \n \n {memberAlias}\n \n {rating && (\n
    \n \n
    \n )}\n
    \n );\n};\n\nProfileCard.propTypes = {\n memberAlias: PropTypes.string,\n memberId: PropTypes.number,\n rating: PropTypes.number,\n imageUrl: PropTypes.string\n};\n\nexport default ProfileCard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport MediaQuery from 'react-responsive';\nimport { useDispatch } from 'react-redux';\n\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport { BREAKPOINT_SIZES, BREAKPOINTS } from 'tradera-constants/breakpoints';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { getMenuGaAttributes } from 'tradera-components/site-header/site-header.analytics';\n\nimport { useQualtive } from 'tradera-hooks/use-qualtive';\nimport { SURVEYS } from 'tradera-constants/surveys';\nimport uiActions from 'tradera-state/ui/actions';\nimport MenuItemSeparator from 'tradera-components/site-header/dropdown-menu-item-separator';\nimport MenuItem from 'tradera-components/site-header/dropdown-menu-item';\nimport ExpandableMenuItem from 'tradera-components/site-header/dropdown-menu-item-expandable';\nimport { LocalizationMenuItem } from './expandable-localization-menu-item.jsx';\nimport { CurrencyMenuItem } from './expandable-currency-menu-item.jsx';\nimport {\n InvoiceUnpaidAlert,\n InvoiceOverdueAlert,\n BankAccountMissingAlert,\n PayoutFailedAlert,\n PayoutReadyBankAccountMissingAlert,\n SwishMissingAlert,\n HyperwalletPayeeVerificationAlert,\n HyperwalletPayeeVerificationReviewAlert,\n OnboardToTraderaPayAlert\n} from './profile-menu-alerts';\nimport ProfileCard from '../profile/profile-card';\nimport AuctionIcon from '@tradera/blueprint/theme/icons2/auction.svg?jsx';\nimport AuctionLostIcon from '@tradera/blueprint/theme/icons2/bid-lost.svg?jsx';\nimport BookmarkIcon from '@tradera/blueprint/theme/icons2/bookmark.svg?jsx';\nimport BuyIcon from '@tradera/blueprint/theme/icons2/buy.svg?jsx';\nimport ChatIcon from '@tradera/blueprint/theme/icons2/chat.svg?jsx';\nimport DateIcon from '@tradera/blueprint/theme/icons2/date.svg?jsx';\nimport DocumentIcon from '@tradera/blueprint/theme/icons2/document.svg?jsx';\nimport HeartIcon from '@tradera/blueprint/theme/icons2/heart.svg?jsx';\nimport HomeIcon from '@tradera/blueprint/theme/icons2/home.svg?jsx';\nimport ListIcon from '@tradera/blueprint/theme/icons2/list.svg?jsx';\nimport LogoutIcon from '@tradera/blueprint/theme/icons2/logout.svg?jsx';\nimport PackageIcon from '@tradera/blueprint/theme/icons2/package.svg?jsx';\nimport PenIcon from '@tradera/blueprint/theme/icons2/pen.svg?jsx';\nimport RatingPositiveIcon from '@tradera/blueprint/theme/icons2/rating-positive.svg?jsx';\nimport SaleIcon from '@tradera/blueprint/theme/icons2/sale.svg?jsx';\nimport SettingsIcon from '@tradera/blueprint/theme/icons2/settings.svg?jsx';\nimport SoldIcon from '@tradera/blueprint/theme/icons2/sold.svg?jsx';\nimport StarIcon from '@tradera/blueprint/theme/icons2/star.svg?jsx';\nimport UnsoldIcon from '@tradera/blueprint/theme/icons2/unsold.svg?jsx';\nimport UserIcon from '@tradera/blueprint/theme/icons2/user.svg?jsx';\nimport WalletIcon from '@tradera/blueprint/theme/icons2/wallet.svg?jsx';\nimport WinningIcon from '@tradera/blueprint/theme/icons2/winning.svg?jsx';\nimport WriteIcon from '@tradera/blueprint/theme/icons2/write.svg?jsx';\nimport { useMenuHeightFix } from 'tradera-hooks/use-menu-height-fix';\nimport initData from 'init-data';\nimport { localStore } from 'utils/storage';\nimport { STORAGE_KEYS } from 'tradera-constants/storage';\n\nconst mediaBelowLarge = { maxWidth: BREAKPOINT_SIZES[BREAKPOINTS.MD].max };\n\nconst getGaAttributes = label =>\n getMenuGaAttributes('Top navigation', 'Account menu', label);\n\nconst trackOnClick = label => {\n GtmService.trackAction('Top navigation', 'Account menu', `Link - ${label}`);\n};\n\nconst trackExpandItemClick = label => {\n GtmService.trackAction('Top navigation', 'Account menu', label);\n};\n\nconst ProfileMenuContent = ({\n cleanedMemberAlias,\n dismissSwish,\n logOut,\n memberAlias,\n memberDetailedSellerRatingAverage,\n memberHeroImage = {},\n memberId,\n showMessagingLink,\n showPayments1Menu,\n showPayments2Menu,\n systemMessages,\n threadsUnread\n}) => {\n const { t } = useTranslator();\n const dispatch = useDispatch();\n const { toLocalizedUrl } = useUrlLocalizer();\n const isTraderaShopEnabled = useIsFeatureEnabled('tradera-shop');\n const menuContentRef = useMenuHeightFix();\n const { isQualtiveEnabled, openQualtiveModal } = useQualtive();\n const isSellerListEnabled = useIsFeatureEnabled('my-tradera-seller-list');\n\n const closeProfileMenu = () => dispatch(uiActions.closeProfileMenu());\n\n return (\n <>\n
    \n \n
    \n
      \n }\n border\n gaAttributes={getGaAttributes('My Tradera Overview')}\n />\n {showMessagingLink && (\n <>\n }\n border\n notify={threadsUnread}\n follow={false}\n gaAttributes={getGaAttributes('Messages')}\n />\n \n )}\n \n }\n border\n gaAttributes={getGaAttributes(\n 'Create new listing - from top'\n )}\n />\n \n }\n border>\n }\n border\n gaAttributes={getGaAttributes('Wishlist')}\n />\n }\n border\n gaAttributes={getGaAttributes('Saved searches')}\n />\n\n {isSellerListEnabled ? (\n }\n gaAttributes={getGaAttributes('Seller list')}\n />\n ) : (\n }\n gaAttributes={getGaAttributes(\n 'Favorite seller'\n )}\n />\n )}\n \n }\n border>\n }\n border\n gaAttributes={getGaAttributes('Ongoing auctions')}\n />\n }\n border\n gaAttributes={getGaAttributes('Won / Bought')}\n />\n }\n border\n gaAttributes={getGaAttributes('Lost')}\n />\n }\n gaAttributes={getGaAttributes('Rate seller')}\n />\n \n }\n border>\n }\n border\n gaAttributes={getGaAttributes('Active listings')}\n />\n }\n border\n gaAttributes={getGaAttributes('Sold listings')}\n />\n }\n border\n gaAttributes={getGaAttributes('Unsold listings')}\n />\n }\n border\n gaAttributes={getGaAttributes('Picklist')}\n />\n }\n border\n gaAttributes={getGaAttributes('Create new listing')}\n />\n }\n border\n gaAttributes={getGaAttributes('Listing templates')}\n />\n }\n border\n gaAttributes={getGaAttributes('Rate buyer')}\n />\n {isTraderaShopEnabled && (\n }\n gaAttributes={getGaAttributes(\n 'To Tradera Shop'\n )}\n />\n )}\n \n \n \n }\n inSPA={true}\n onClick={closeProfileMenu}\n border\n gaAttributes={getGaAttributes('My profile')}\n />\n }\n inSPA={true}\n onClick={closeProfileMenu}\n border\n gaAttributes={getGaAttributes('Ratings')}\n />\n }\n border\n gaAttributes={getGaAttributes('Notifications')}\n />\n \n }\n notificationDot={systemMessages.InvoiceUnpaid && 'warning'}\n alerts={[\n systemMessages.InvoiceUnpaid && (\n \n ),\n systemMessages.InvoiceOverdue && (\n \n )\n ]}\n border\n gaAttributes={getGaAttributes('Invoices')}\n />\n {showPayments1Menu && (\n }\n alerts={[\n systemMessages.OnboardToTraderaPay && (\n \n )\n ]}\n border\n gaAttributes={getGaAttributes('Payouts')}\n />\n )}\n {showPayments2Menu && (\n \n {t('siteheader_payments')}\n {initData.hasWallet &&\n !localStore.getItem(\n STORAGE_KEYS.BATCH_PAYOUTS_ALERT_DISMISSED\n ) && (\n \n {t('siteHeader_updated')}\n \n )}\n \n }\n link={\n initData.hasWallet\n ? toLocalizedUrl('/my/payouts')\n : toLocalizedUrl('/my/Payments2')\n }\n className=\"site-dropdown__item-with-icon\"\n icon={}\n alerts={[\n systemMessages.BankAccountMissing && (\n \n ),\n systemMessages.PayoutReadyBankAccountMissing && (\n \n ),\n systemMessages.PayoutFailed && (\n \n ),\n systemMessages.SwishNumberMissing && (\n \n ),\n systemMessages.HyperwalletPayeeVerificationRequired && (\n \n ),\n systemMessages.HyperwalletPayeeVerificationUnderReview && (\n \n )\n ]}\n border\n gaAttributes={getGaAttributes('Payouts')}\n />\n )}\n }\n border\n gaAttributes={getGaAttributes('Settings')}\n />\n \n \n \n {isQualtiveEnabled && (\n }\n onClick={() => {\n openQualtiveModal(SURVEYS.general, t);\n trackOnClick('Leave feedback Qualtive');\n }}\n />\n )}\n }\n border\n gaAttributes={getGaAttributes('Customer service')}\n />\n \n }\n gaAttributes={getGaAttributes('Logout')}\n />\n {/* NOTE: Fix for iPhone menu making bottom element unclickable */}\n \n
    \n \n );\n};\n\nProfileMenuContent.propTypes = {\n cleanedMemberAlias: PropTypes.string,\n dismissSwish: PropTypes.func,\n logOut: PropTypes.func,\n memberAlias: PropTypes.string,\n memberDetailedSellerRatingAverage: PropTypes.number,\n memberHeroImage: PropTypes.object,\n memberId: PropTypes.number,\n showMessagingLink: PropTypes.bool,\n showPayments1Menu: PropTypes.bool,\n showPayments2Menu: PropTypes.bool,\n systemMessages: PropTypes.object,\n threadsUnread: PropTypes.number\n};\nProfileMenuContent.defaultProps = {\n systemMessages: {}\n};\n\nexport default ProfileMenuContent;\n","import React from 'react';\nimport MenuItemSeparator from 'tradera-components/site-header/dropdown-menu-item-separator';\nimport MenuItem from 'tradera-components/site-header/dropdown-menu-item';\nimport ExpandableMenuItem from 'tradera-components/site-header/dropdown-menu-item-expandable';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { getMenuGaAttributes } from 'tradera-components/site-header/site-header.analytics';\nimport STRINGS from 'static/script/constants/strings';\nimport { getReturnUrl } from 'tradera-utils/login';\nimport logger from 'logger';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport { useQualtive } from 'tradera-hooks/use-qualtive';\nimport { SURVEYS } from 'tradera-constants/surveys';\nimport { getInitData } from 'packages/init-data';\n\nimport ChatIcon from '@tradera/blueprint/theme/icons2/chat.svg?jsx';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport { useMenuHeightFix } from 'tradera-hooks/use-menu-height-fix';\n\nconst onIframeLoad = (e, closeMenu) => {\n const iframe = e.target;\n if (iframe) {\n const iframeDocument =\n iframe.contentDocument || iframe.contentWindow.document;\n if (iframeDocument) {\n iframeDocument.body.addEventListener('keydown', e => {\n if (e.keyCode === 27) {\n closeMenu();\n }\n });\n }\n }\n};\n\nconst handleBotClick = () => {\n const botWidget = document.querySelector('.humany-trigger');\n if (botWidget) {\n botWidget.click();\n }\n};\n\nconst getGaAttributes = label =>\n getMenuGaAttributes('Top navigation', 'Login menu', label);\n\nconst trackOnClick = label => {\n GtmService.trackAction('Top navigation', 'Login menu', `Link - ${label}`);\n};\n\nconst SignInMenuContent = ({ closeMenu, redirectUrl }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const initData = getInitData();\n const menuContentRef = useMenuHeightFix();\n const { isQualtiveEnabled, openQualtiveModal } = useQualtive();\n return (\n <>\n onIframeLoad(e, closeMenu)}>\n

    {STRINGS.IFRAME_NOT_SUPPORTED}

    \n \n }\n border={false}>\n }\n gaAttributes={getGaAttributes('Forgot')}\n />\n }\n gaAttributes={getGaAttributes('Help pages')}\n />\n }\n gaAttributes={getGaAttributes('Customer service')}\n />\n\n }\n onClick={async () => {\n try {\n const { default: AddHumanyBot } = await import(\n /* webpackChunkName: \"humany-bot\" */ 'static/script/components/humany/humany-bot'\n );\n AddHumanyBot(initData);\n handleBotClick();\n } catch (e) {\n logger(e);\n }\n\n trackOnClick('Chat with JUNO');\n }}\n />\n {isQualtiveEnabled && (\n }\n onClick={() => {\n openQualtiveModal(SURVEYS.general);\n trackOnClick('Leave feedback Qualtive');\n }}\n />\n )}\n {/* NOTE: Fix for iPhone menu making bottom element unclickable */}\n \n \n \n );\n};\n\nexport default SignInMenuContent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport { RemoveScroll } from 'react-remove-scroll';\n\nimport {\n Breakpoint,\n BREAKPOINTS\n} from 'tradera-components/breakpoint/breakpoint';\nimport {\n EnterFrom,\n EnterFade\n} from 'tradera-components/transitions/transitions';\nimport ApplicationErrorBoundary from 'tradera-components/application-error-boundary/application-error-boundary';\nimport Overlay from 'components/modals/overlay';\nimport ProfileMenuContent from './profile-menu-content';\nimport SignInMenuContent from './sign-in-menu-content';\n\nconst ProfileMenu = props => {\n const {\n className,\n dismissSwish,\n expanded,\n handleExpand,\n logOut,\n member,\n redirectUrl,\n showMessagingLink,\n systemMessages,\n threadsUnread,\n transparentHeader\n } = props;\n\n const {\n cleanedMemberAlias,\n isLoggedIn,\n memberAlias,\n memberDetailedSellerRatingAverage,\n memberHeroImage,\n memberId\n } = member;\n\n const showPayments1Menu =\n member.paymentSettings && member.paymentSettings.showPayments1Menu;\n\n const showPayments2Menu =\n member.paymentSettings && member.paymentSettings.showPayments2Menu;\n\n const renderChild = () => (\n \n
    \n {isLoggedIn ? (\n \n ) : (\n \n )}\n
    \n
    \n );\n\n return (\n \n \n \n );\n};\n\nProfileMenu.defaultProps = {\n expanded: false\n};\n\nProfileMenu.propTypes = {\n className: PropTypes.string,\n dismissSwish: PropTypes.func.isRequired,\n expanded: PropTypes.bool,\n logOut: PropTypes.func.isRequired,\n member: PropTypes.shape({\n cleanedMemberAlias: PropTypes.string,\n isLoggedIn: PropTypes.bool.isRequired,\n memberAlias: PropTypes.string,\n memberDetailedSellerRatingAverage: PropTypes.number,\n memberHeroImage: PropTypes.object,\n memberId: PropTypes.number\n }),\n showMessagingLink: PropTypes.bool,\n systemMessages: PropTypes.object,\n threadsUnread: PropTypes.number\n};\n\nexport default ProfileMenu;\n","import React from 'react';\nimport UserIcon from '@tradera/blueprint/theme/icons2/user-fill.svg?jsx';\n\nconst Profile = ({ isLoggedIn, facebookId }) =>\n isLoggedIn && facebookId ? (\n \n ) : (\n <>\n \n \n );\n\nexport default Profile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport DropdownIcon from '@tradera/blueprint/theme/icons2/dropdown.svg?jsx';\nimport { useTranslator } from 'tradera-lang/translate';\nimport MessageIcon from '@tradera/blueprint/theme/icons2/message.svg?jsx';\nimport Profile from 'tradera-components/site-header/profile';\n\nconst ProfileLink = ({\n facebookId,\n handleProfileClick,\n isLoggedIn,\n memberAlias,\n menuExpanded,\n systemMessageCount,\n threadsUnread,\n transparentHeader\n}) => {\n const { t } = useTranslator();\n const logInText = t('siteHeader_logIn');\n const tooltip = isLoggedIn ? t('siteHeader_myTradera') : logInText;\n const text = isLoggedIn ? memberAlias : logInText;\n\n let badgeType = 'primary';\n if (systemMessageCount > 0) {\n badgeType = 'danger';\n }\n const multipleBadges = threadsUnread > 0 && systemMessageCount > 0;\n\n return (\n \n \n \n {(threadsUnread > 0 || systemMessageCount > 0) && (\n \n {threadsUnread > 0 && (\n \n \n {threadsUnread < 100 ? threadsUnread : '99+'}\n \n )}\n {systemMessageCount > 0 && (\n 0\n ? 'border-left border-white system-count--messaging'\n : 'system-count'\n }`}>\n {systemMessageCount}\n \n )}\n \n )}\n \n {text}\n \n {isLoggedIn && (\n \n )}\n \n \n );\n};\n\nProfileLink.propTypes = {\n facebookId: PropTypes.string,\n handleProfileClick: PropTypes.func,\n isLoggedIn: PropTypes.bool,\n menuExpanded: PropTypes.bool,\n memberAlias: PropTypes.string,\n systemMessageCount: PropTypes.number,\n threadsUnread: PropTypes.number\n};\n\nexport default ProfileLink;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport uiActions from 'tradera-state/ui/actions';\nimport ProfileMenu from '../profile-menu/profile-menu';\nimport ProfileLink from './profile-link';\nimport { useUrlLocalizer } from 'tradera-lang/translate';\n\nconst ProfileMenuLink = props => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const handleLoginClick = (redirectUrl = false) =>\n props.signIn(toLocalizedUrl(redirectUrl));\n\n // Prevent Default and show login, if not logged in\n const preventNavigationAndShowLogin = (event, redirect) => {\n const {\n member: { isLoggedIn }\n } = props;\n if (!isLoggedIn) {\n event.preventDefault();\n handleLoginClick(redirect);\n }\n };\n\n const handleProfileClick = evt => {\n const {\n member: { isLoggedIn },\n pageName,\n profileMenu,\n openProfileMenu,\n closeProfileMenu,\n closeCategoryDropdownMenu\n } = props;\n\n if (profileMenu.open === 'open') {\n closeProfileMenu();\n } else {\n closeCategoryDropdownMenu();\n\n // not logged in\n if (!isLoggedIn) {\n preventNavigationAndShowLogin(evt, false);\n return;\n } else {\n openProfileMenu();\n }\n }\n\n if (pageName.includes('MyTradera')) {\n window.scrollTo(0, 0);\n }\n };\n\n const {\n dismissSwish,\n featureSwitches,\n logOut,\n messagingThreads,\n member,\n profileMenu,\n systemMessages,\n systemMessageCount,\n transparentHeader\n } = props;\n\n const { open: profileMenuOpen = false } = profileMenu;\n\n const showMessagingLink = featureSwitches['messaging'];\n\n const { threadsUnread } = messagingThreads;\n\n const { redirectUrl } = profileMenu;\n\n return (\n <>\n \n \n \n );\n};\n\nconst mapStateToProps = state => ({\n featureSwitches: state.environment.featureSwitches,\n member: state.member,\n messagingThreads: state.ui.badges.messaging,\n pageName: state.page.type,\n profileMenu: state.ui.profileMenu,\n showHeaderSearch: state.ui.showHeaderSearch,\n systemMessages: state.ui.systemMessages,\n systemMessageCount: state.ui.badges.system\n});\n\nconst mapDispatchToProps = dispatch => {\n return {\n closeCategoryDropdownMenu: () =>\n dispatch(uiActions.closeCategoryDropdownMenu()),\n closeProfileMenu: () => dispatch(uiActions.closeProfileMenu()),\n dismissSwish: () => dispatch(uiActions.dismissSwish()),\n logOut: () => dispatch(uiActions.logOut()),\n openProfileMenu: () => dispatch(uiActions.openProfileMenu()),\n signIn: redirectUrl => dispatch(uiActions.signIn({ redirectUrl }))\n };\n};\n\nProfileMenuLink.propTypes = {\n dismissSwish: PropTypes.func,\n featureSwitches: PropTypes.object,\n member: PropTypes.object,\n messagingThreads: PropTypes.object,\n pageName: PropTypes.string,\n systemMessages: PropTypes.object,\n systemMessageCount: PropTypes.number\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ProfileMenuLink);\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport SearchIcon from '@tradera/blueprint/theme/icons2/search.svg?jsx';\n\nconst SearchButton = ({ showSearch, onClick }) => {\n const { t } = useTranslator();\n\n return (\n \n \n \n );\n};\n\nexport { SearchButton };\n","// extracted by mini-css-extract-plugin\nexport default {\"international-shipping-modal-container\":\"international-shipping-modal-container--1Emfe\",\"internationalShippingModalContainer\":\"international-shipping-modal-container--1Emfe\",\"international-shipping-modal-body-country\":\"international-shipping-modal-body-country--1IU5f\",\"internationalShippingModalBodyCountry\":\"international-shipping-modal-body-country--1IU5f\",\"international-shipping-modal-header\":\"international-shipping-modal-header--2E4PO\",\"internationalShippingModalHeader\":\"international-shipping-modal-header--2E4PO\",\"international-shipping-modal-table\":\"international-shipping-modal-table--2Cobx\",\"internationalShippingModalTable\":\"international-shipping-modal-table--2Cobx\"};","import React from 'react';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\nimport ModalContainer from 'static/script/components/modals/modal-container';\nimport ModalHeader from 'static/script/components/modals/modal-header';\nimport ModalBody from 'static/script/components/modals/modal-body';\nimport { connect } from 'react-redux';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport { closeModal } from 'tradera-state/ui/action-creators';\nimport { mapCountryCodeToCountryKey } from 'tradera-utils/countries';\nimport { selectShippingCountry } from 'tradera-state/shipping-region/selectors';\nimport { ShippingProviderIcon } from 'tradera-components/shipping/shipping-provider-icon';\nimport MessagingButton from 'tradera-components/messaging/messaging-button';\nimport Flag from 'tradera-components/flag/flag';\nimport { translateBuyerRegionText } from 'tradera-apps/tradera/components/vip-shared/shipping-options/translate-buyer-region-text';\nimport styles from './international-shipping-modal.module.scss';\n\nconst InternationalShippingModal = props => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n let sortedRows = props.internationalShipping.rows\n .map(row => ({\n ...row,\n country: t(mapCountryCodeToCountryKey(row.toCountryCodeIso2))\n }))\n .sort((a, b) => (a.country > b.country ? 1 : -1));\n const ownCountryRow = sortedRows.find(\n row =>\n row.toCountryCodeIso2.toLowerCase() ===\n props.shippingCountryCode.toLowerCase()\n ) || {\n country: t(mapCountryCodeToCountryKey(props.shippingCountryCode)),\n toCountryCodeIso2: props.shippingCountryCode\n };\n sortedRows = removeDuplicateOwnCountryRowIfOnlyRow(\n props.shippingCountryCode,\n sortedRows\n );\n\n const buyerRegionText = translateBuyerRegionText(\n t,\n props.internationalShipping.allowedBuyerRegion\n );\n\n return (\n \n
    {t('internationalShippingModal_title')}
    \n
    \n \n \n {props.internationalShipping.title}\n \n \n {t('internationalShippingModal_readMore')}\n \n
    \n
    \n {buyerRegionText}\n {props.internationalShipping.fromCountryCodeIso2 &&\n props.internationalShipping.fromCountryCodeIso2 !==\n props.shippingCountryCode && (\n <>\n {t('vip_from_country_text', {\n shippingOptionCountry: t(\n mapCountryCodeToCountryKey(\n props.internationalShipping\n .fromCountryCodeIso2\n )\n )\n })}\n \n \n )}\n
    \n \n }\n body={\n props.internationalShipping.providers.length ? (\n \n \n \n \n {t(\n 'internationalShippingModal_destination'\n )}\n \n {props.internationalShipping.providers.map(\n provider => {\n return (\n \n {getProviderCell(provider, t)}\n \n );\n }\n )}\n \n \n \n \n {sortedRows.map(row => (\n \n ))}\n \n \n ) : (\n
    \n {t('internationalShippingModal_noShippingInfo')}\n \n {getMessagingCell(\n props.internationalShipping.messagingLink,\n props.internationalShipping.ownItem,\n t\n )}\n \n
    \n )\n }\n />\n );\n};\n\nconst Modal = ({ closeModal, header, body }) => (\n \n \n \n {header}\n \n \n {body}\n \n \n \n);\n\nconst getMessagingCell = (\n { buyerId, sellerId, itemId, source, isLoggedIn, memberId },\n ownItem,\n t\n) =>\n !isLoggedIn ? (\n \n {t('internationalShippingModal_logIn')}\n \n ) : ownItem ? (\n ''\n ) : (\n \n );\n\nconst getValueCell = (row, provider, isOwnRow, messagingLink, ownItem, t) => {\n const getEmptyCell = () =>\n isOwnRow ? getMessagingCell(messagingLink, ownItem, t) : '-';\n\n return row[provider] || row[provider] === 0 ? (\n \n {t('internationalShippingModal_currency', {\n price: row[provider].shippingCost\n })}\n \n {row[provider].shippingWeight < 1\n ? ` ${row[provider].shippingWeight * 1000} g`\n : ` ${row[provider].shippingWeight} kg`}\n \n \n ) : (\n getEmptyCell()\n );\n};\n\nconst getProviderIcon = provider => (\n \n);\nconst providerImageMap = {\n DHL: () => getProviderIcon('DHL'),\n BringDenmark: () => getProviderIcon('BringDenmark'),\n Bussgods: () => getProviderIcon('Bussgods'),\n Posten: () => getProviderIcon('Posten'),\n PostNordParcel: () => getProviderIcon('PostNordParcel'),\n PostNordStamp: () => getProviderIcon('PostNordStamp'),\n Schenker: () => getProviderIcon('Schenker'),\n SchenkerPrivpak: () => getProviderIcon('SchenkerPrivpak'),\n Alternative: t => t('internationalShippingModal_other')\n};\n\nconst getProviderCell = (provider, t) =>\n providerImageMap[provider] ? providerImageMap[provider](t) : provider;\n\nconst removeDuplicateOwnCountryRowIfOnlyRow = (ownShippingCountryCode, rows) =>\n rows.length === 1 && rows[0].toCountryCodeIso2 === ownShippingCountryCode\n ? []\n : rows;\n\nconst ShippingRow = ({\n row,\n providers,\n t,\n isOwnRow,\n messagingLink,\n ownItem\n}) => (\n \n \n \n {row.country}\n {isOwnRow && (\n \n )}\n \n \n {providers.map((provider, i) => {\n return (\n \n {getValueCell(\n row,\n provider,\n isOwnRow,\n messagingLink,\n ownItem,\n t\n )}\n \n );\n })}\n \n);\n\nconst mapStateToProps = state => ({\n internationalShipping: state.internationalShipping,\n shippingCountryCode: selectShippingCountry(state)?.countryCodeIso2\n});\n\nconst mapDispatchToProps = {\n closeModal\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(InternationalShippingModal);\n\nexport { InternationalShippingModal };\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport InternationalShippingModal from 'tradera-components/international-shipping-modal/international-shipping-modal';\nimport { INTERNATIONAL_SHIPPING_MODAL_ID } from 'tradera-components/international-shipping-modal/constants';\nimport {\n InternationalIdentificationModal,\n internationalIdentificationModalId\n} from 'tradera-components/international-identification-modal/international-identification-modal';\n\nconst ModalRenderer = props => (\n
    \n {\n {\n [INTERNATIONAL_SHIPPING_MODAL_ID]: (\n \n ),\n [internationalIdentificationModalId]: (\n \n )\n }[props.currentModal]\n }\n
    \n);\n\nexport default connect(state => state.ui.modals)(ModalRenderer);\n\nexport { ModalRenderer };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport HoverMenu from './hover-menu/hover-menu';\nimport HoverMenuItem from './hover-menu/hover-menu-item';\nimport { getMenuGaAttributes } from './site-header.analytics.js';\nimport { useTranslator } from 'tradera-lang/translate';\n\nimport HeartIcon from '@tradera/blueprint/theme/icons2/heart.svg?jsx';\nimport BookmarkIcon from '@tradera/blueprint/theme/icons2/bookmark.svg?jsx';\nimport StarIcon from '@tradera/blueprint/theme/icons2/star.svg?jsx';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\n\nconst getGaAttributes = label =>\n getMenuGaAttributes('Top navigation', 'Watchlist menu', label);\n\nconst WatchListMenu = ({ showMenu }) => {\n const { t } = useTranslator();\n const isSellerListEnabled = useIsFeatureEnabled('my-tradera-seller-list');\n return (\n \n }\n gaAttributes={getGaAttributes('Wishlist')}\n />\n }\n gaAttributes={getGaAttributes('Saved searches')}\n />\n {isSellerListEnabled ? (\n }\n gaAttributes={getGaAttributes('Seller list')}\n />\n ) : (\n }\n gaAttributes={getGaAttributes('Favorite seller')}\n />\n )}\n \n );\n};\n\nWatchListMenu.propTypes = {\n showMenu: PropTypes.bool\n};\n\nexport default WatchListMenu;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport HeartIcon from '@tradera/blueprint/theme/icons2/heart.svg?jsx';\nimport WatchlistMenu from './watch-list-menu';\nimport { HOVER_MENUS } from './hover-menu/constants';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\n\nconst WishlistLink = ({\n onClick,\n mouseOver,\n mouseOut,\n onBlur,\n transparentHeader,\n showMenu\n}) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const wishlistText = t('siteHeader_wishlist');\n return (\n mouseOver(HOVER_MENUS.WISHLIST)}\n onMouseLeave={mouseOut}>\n {\n onClick(e, HOVER_MENUS.WISHLIST);\n }}\n onBlur={onBlur}>\n \n \n \n {wishlistText}\n \n \n \n
    \n );\n};\n\nWishlistLink.propTypes = {\n onClick: PropTypes.func,\n mouseOver: PropTypes.func,\n mouseOut: PropTypes.func,\n showMenu: PropTypes.bool\n};\n\nexport default React.memo(WishlistLink);\n","import React from 'react';\nimport AuctionIcon from '@tradera/blueprint/theme/icons2/auction.svg?jsx';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\n\nconst OngoingAuctionsLink = () => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n\n return (\n \n \n \n );\n};\n\nexport default OngoingAuctionsLink;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport HoverMenu from './hover-menu/hover-menu';\nimport hoverMenuStyles from './hover-menu/hover-menu.module.scss';\nimport HoverMenuItem from './hover-menu/hover-menu-item';\nimport HoverMenuItemSeparator from './hover-menu/hover-menu-separator';\nimport { getMenuGaAttributes } from './site-header.analytics.js';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport PenIcon from '@tradera/blueprint/theme/icons2/pen.svg?jsx';\nimport WriteIcon from '@tradera/blueprint/theme/icons2/write.svg?jsx';\nimport SaleIcon from '@tradera/blueprint/theme/icons2/sale.svg?jsx';\nimport ListIcon from '@tradera/blueprint/theme/icons2/list.svg?jsx';\nimport PackageIcon from '@tradera/blueprint/theme/icons2/package.svg?jsx';\nimport RatingPositiveIcon from '@tradera/blueprint/theme/icons2/rating-positive.svg?jsx';\nimport SoldIcon from '@tradera/blueprint/theme/icons2/sold.svg?jsx';\nimport UnsoldIcon from '@tradera/blueprint/theme/icons2/unsold.svg?jsx';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\n\nconst getGaAttributes = label =>\n getMenuGaAttributes('Top navigation', 'Selling menu', label);\n\nconst SellMenu = ({ showMenu }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const isTraderaShopEnabled = useIsFeatureEnabled('tradera-shop');\n return (\n \n }\n gaAttributes={getGaAttributes('Create new listing')}\n />\n }\n gaAttributes={getGaAttributes('Listing templates')}\n />\n \n }\n gaAttributes={getGaAttributes('Active listings')}\n />\n }\n gaAttributes={getGaAttributes('Sold listings')}\n />\n }\n gaAttributes={getGaAttributes('Unsold listings')}\n />\n }\n gaAttributes={getGaAttributes('Picklist')}\n />\n \n }\n gaAttributes={getGaAttributes('Rate buyer')}\n />\n {isTraderaShopEnabled && (\n <>\n \n }\n gaAttributes={getGaAttributes('To Tradera Shop')}\n />\n \n )}\n \n );\n};\n\nSellMenu.propTypes = {\n showMenu: PropTypes.bool\n};\n\nexport default SellMenu;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport SaleIcon from '@tradera/blueprint/theme/icons2/sale.svg?jsx';\nimport SellMenu from './sell-menu';\nimport { HOVER_MENUS } from './hover-menu/constants';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\n\nconst SellingLink = ({\n onClick,\n mouseOver,\n mouseOut,\n onBlur,\n transparentHeader,\n showMenu\n}) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const selling = t('siteHeader_selling');\n\n return (\n mouseOver(HOVER_MENUS.SELL)}\n onMouseLeave={mouseOut}>\n {\n onClick(e, HOVER_MENUS.SELL);\n }}\n onBlur={onBlur}>\n \n \n {selling}\n \n \n \n \n );\n};\n\nSellingLink.propTypes = {\n onClick: PropTypes.func,\n mouseOver: PropTypes.func,\n mouseOut: PropTypes.func,\n showMenu: PropTypes.bool\n};\n\nexport default React.memo(SellingLink);\n","import React from 'react';\nimport { cssTransition, ToastContainer } from 'react-toastify';\nimport AlertIcon from '@tradera/blueprint/theme/icons2/alert.svg?jsx';\nimport CheckIcon from '@tradera/blueprint/theme/icons2/check.svg?jsx';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\n\nimport 'react-toastify/dist/ReactToastify.css';\n\nvar SlideFade = /*#__PURE__*/ cssTransition({\n enter: 'Toastify--animate Toastify__slideFade-enter',\n exit: 'Toastify--animate Toastify__slideFade-exit'\n});\nconst options = {\n className: 'bp',\n transition: SlideFade,\n hideProgressBar: true,\n theme: 'colored',\n closeOnClick: false,\n draggablePercent: 40,\n autoClose: 5000,\n pauseOnFocusLoss: false,\n icon: ({ type }) =>\n ({\n // default, - no icon.\n info: ,\n success: ,\n warning: ,\n error: \n }[type]),\n closeButton({ closeToast }) {\n return (\n
    \n \n
    \n );\n }\n};\n\nexport const TraderaToastContainer = () => {\n return ;\n};\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { HOVER_MENUS } from './hover-menu/constants';\nimport HoverMenu from './hover-menu/hover-menu';\nimport hoverMenuStyles from './hover-menu/hover-menu.module.scss';\nimport DropdownIcon from '@tradera/blueprint/theme/icons2/dropdown.svg?jsx';\nimport { CurrencySelect } from 'components/localization/currency-select';\nimport { selectPreferredCurrency } from 'tradera-state/multi-currency';\n\nconst PlainCurrencyLink = ({\n onClick,\n onBlur,\n mouseOver,\n mouseOut,\n showMenu,\n transparentHeader,\n preferredCurrency\n}) => {\n return (\n mouseOver(HOVER_MENUS.CURRENCY)}\n onMouseLeave={mouseOut}>\n {\n GtmService.trackAction(\n 'Top navigation',\n 'Currency menu',\n 'Open/Close'\n );\n onClick(e, HOVER_MENUS.CURRENCY);\n }}>\n {preferredCurrency.shortName}\n \n \n \n
    \n {\n onBlur(e, HOVER_MENUS.CURRENCY);\n }}\n inProfileMenu={false}\n />\n
    \n \n \n );\n};\n\nconst mapStateToProps = state => ({\n preferredCurrency: selectPreferredCurrency(state)\n});\n\nconst mapDispatchToProps = {};\n\nexport const CurrencyLink = connect(\n mapStateToProps,\n mapDispatchToProps\n)(PlainCurrencyLink);\n","import React, { Component } from 'react';\nimport { compose } from 'redux';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport Sticky from 'react-stickynode';\nimport { selectShowCurrencySelection } from 'tradera-state/multi-currency';\nimport { isDesktop, isMobile, isTablet } from 'tradera-utils/breakpoints';\nimport {\n isMobile as isMobileBreakpoint,\n withBreakpoint\n} from 'tradera-components/breakpoint/breakpoint';\nimport { HOVER_MENUS } from './hover-menu/constants';\nimport cookieUtil from 'tradera-utils/cookie';\nimport { onWindowLoad } from 'utils/on-ready';\nimport { actions as memberStateActions } from 'tradera-state/member';\nimport uiActions from 'tradera-state/ui/actions';\nimport { withUrlLocalizer } from 'tradera-lang/translate';\nimport TraderaLogo from 'components/tradera/logo?jsx';\nimport TraderaAppLogo from '@tradera/blueprint/theme/logos/tradera-app-logo.svg?jsx';\nimport CartLink from 'tradera-components/site-header/cart-link';\nimport DropdownMenu from 'tradera-components/site-header/dropdown-menu';\nimport SignUpLink from 'tradera-components/site-header/sign-up-link';\nimport ALink from 'tradera-components/alink/alink';\nimport { SearchInSpa, SearchOutsideSpa } from 'components/search/search';\nimport ModalPortal from 'tradera-components/portals/modal-portal';\nimport PushNotificationModal from 'tradera-components/push-notification-modal/push-notification-modal';\nimport { LocalizationLink } from './localization-link';\nimport BuyingLink from './buying-link';\nimport HowToLink from './how-to-link';\nimport NewListingLink from './new-listing-link';\nimport ProfileMenuLink from './profile-menu-link';\nimport { SearchButton } from './search-button';\n\nimport ModalRenderer from 'tradera-components/modal-renderer/modal-renderer';\nimport MessagingModal from 'tradera-components/messaging/messaging-modal';\nimport WishlistLink from 'tradera-components/site-header/wishlist-link';\nimport OngoingAuctionsLink from 'tradera-components/site-header/ongoing-auctions-link';\nimport SellingLink from 'tradera-components/site-header/selling-link';\nimport { TraderaToastContainer } from 'tradera-components/toasts/tradera-toast-container';\nimport { CurrencyLink } from 'tradera-components/site-header/currency-link';\n\nclass SiteHeader extends Component {\n static propTypes = {\n cartItemCount: PropTypes.number,\n cartSum: PropTypes.number,\n closeMessagingModal: PropTypes.func,\n currentCategoryId: PropTypes.number,\n fetchMessagingNotifications: PropTypes.func,\n getGeolocation: PropTypes.func,\n inSPA: PropTypes.bool,\n searchQuery: PropTypes.string,\n setCurrentCategoryId: PropTypes.func,\n showHeaderSearch: PropTypes.bool\n };\n\n static defaultProps = {\n inSPA: false\n };\n\n constructor(props) {\n super(props);\n this.state = {\n sticky: false,\n autoFocusSearch: false\n };\n }\n\n componentDidMount() {\n const {\n featureSwitches,\n isLoggedIn,\n fetchMessagingNotifications,\n getGeolocation\n } = this.props;\n getGeolocation();\n\n if (featureSwitches['messaging'] && isLoggedIn) {\n fetchMessagingNotifications();\n }\n\n // Scroll up one pixel to show fixed header on mobile\n onWindowLoad(() => {\n // Toggle on sticky behavior on window load to force reflow and show sticky header on mobile & Firefox\n this.setState({ sticky: true });\n });\n }\n\n handleClickSearch = () => {\n const { openSearchForm, closeSearchForm, showSearch } = this.props;\n if (showSearch) {\n closeSearchForm();\n } else {\n openSearchForm();\n }\n this.setState(prevState => ({\n ...prevState,\n autoFocusSearch: !prevState.showSearch\n }));\n };\n\n handleMouseOverMenu = menu => {\n if (isDesktop()) {\n this.setState({\n activeHoverMenu: menu\n });\n }\n };\n\n handleMouseOutMenu = () => {\n this.setState({\n activeHoverMenu: false\n });\n };\n\n // Event handler for menu button:\n // Mobile: link, no menu open\n // Tablet: not a link, menu open\n // Desktop: link, menu open\n handleMenuClick = (event, menu) => {\n if (\n isMobile() &&\n menu !== HOVER_MENUS.LOCALIZATION &&\n menu !== HOVER_MENUS.CURRENCY\n ) {\n return;\n }\n\n // Prevent click for tablet to allow tap to open\n if (isTablet()) {\n event.preventDefault();\n }\n // Force focus so touch devices can get a blur event\n event.target.focus();\n this.setState(state => ({\n activeHoverMenu: state.activeHoverMenu === menu ? false : menu\n }));\n };\n\n // Event handler for non-linked menu button that always open a menu\n handleAlwaysOpenMenuClick = (event, menu) => {\n event.preventDefault();\n event.target.focus();\n this.setState(state => ({\n activeHoverMenu: state.activeHoverMenu === menu ? false : menu\n }));\n };\n\n handleMenuBlur = () => {\n this.setState({\n activeHoverMenu: false\n });\n };\n\n handleRegisterClick = () => {\n const { isLoggedIn } = this.props;\n\n if (!isLoggedIn) {\n const cookieName = 'signup_referral_path';\n const expireDate = new Date();\n const value = window.location.href;\n expireDate.setTime(expireDate.getTime() + 10 * 60 * 1000);\n cookieUtil.createCookie(cookieName, value, expireDate);\n }\n };\n\n render() {\n const {\n cartItemCount,\n cartSum,\n closeMessagingModal,\n closeNotificationOptinModal,\n currentBreakpoint,\n inSPA,\n isLoggedIn,\n messagingModal,\n notificationOptinModal,\n pageName,\n showSearch,\n showCurrencySelection,\n showHeaderSearch,\n toLocalizedUrl\n } = this.props;\n const { sticky } = this.state;\n const formattedCartItems = cartItemCount;\n const hasCartItems = formattedCartItems > 0;\n const stickyEnabledOnPage = !pageName?.includes('MyTradera');\n const isMobile = isMobileBreakpoint(currentBreakpoint);\n\n const hideElements =\n !showHeaderSearch && pageName?.includes('StartPage');\n const transparentHeader = hideElements && !isMobile;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n {inSPA ? (\n \n ) : (\n \n )}\n \n \n
      \n
    • \n \n
    • \n
    • \n \n
    • \n {isLoggedIn && (\n \n \n \n )}\n
    • \n {isLoggedIn ? (\n \n ) : (\n \n )}\n
    • \n {isLoggedIn && (\n
    • \n \n
    • \n )}\n {isLoggedIn && (\n
    • \n \n
    • \n )}\n\n {hasCartItems && (\n
    • \n \n
    • \n )}\n
    • \n \n
    • \n {!isLoggedIn && (\n
    • \n \n
    • \n )}\n {!isLoggedIn && (\n
    • \n \n
    • \n )}\n {!isLoggedIn && showCurrencySelection && (\n
    • \n \n
    • \n )}\n
    \n \n \n \n {messagingModal.open === 'open' && (\n \n \n \n )}\n {notificationOptinModal.open === 'open' && (\n \n \n \n )}\n \n \n \n );\n }\n}\n\nconst mapStateToProps = state => {\n return {\n cartItemCount: state.ui.cartItemCount,\n cartSum: state.ui.cartSum,\n categoryPath: state.page.categoryPath,\n currentCategoryId: state.page.currentCategoryId,\n featureSwitches: state.environment.featureSwitches,\n hasSearch: state.ui.hasSearch,\n isLoggedIn: state.member.isLoggedIn,\n messagingModal: state.ui.messagingModal,\n notificationOptinModal: state.ui.notificationOptinModal,\n pageName: state.page.type,\n searchParams: state.discover.searchParams,\n searchUrl: state.discover.searchUrl,\n showCurrencySelection: selectShowCurrencySelection(state),\n showHeaderSearch: state.ui.showHeaderSearch,\n showSearch: state.ui.showSearchForm,\n systemMessageCount: state.ui.badges.system,\n systemMessages: state.ui.systemMessages\n };\n};\n\nconst mapDispatchToProps = {\n closeCategoryDropdownMenu: uiActions.closeCategoryDropdownMenu,\n closeMessagingModal: uiActions.closeMessagingModal,\n closeNotificationOptinModal: uiActions.closeNotificationOptinModal,\n closeSearchForm: uiActions.closeSearchForm,\n fetchMessagingNotifications: uiActions.fetchMessagingNotifications,\n getGeolocation: memberStateActions.getGeolocation,\n openSearchForm: uiActions.openSearchForm\n};\n\nexport default compose(\n withBreakpoint,\n withUrlLocalizer,\n connect(mapStateToProps, mapDispatchToProps)\n)(SiteHeader);\n\nexport { SiteHeader };\n","// extracted by mini-css-extract-plugin\nexport default {\"hover-menu-container\":\"hover-menu-container--3e5t9\",\"hoverMenuContainer\":\"hover-menu-container--3e5t9\",\"hover-menu-area-content\":\"hover-menu-area-content--IkpxV\",\"hoverMenuAreaContent\":\"hover-menu-area-content--IkpxV\",\"hover-menu-area\":\"hover-menu-area--3eHR4\",\"hoverMenuArea\":\"hover-menu-area--3eHR4\",\"align-right\":\"align-right--Ny_i9\",\"alignRight\":\"align-right--Ny_i9\",\"align-sm25-lg50\":\"align-sm25-lg50--3uG5u\",\"alignSm25Lg50\":\"align-sm25-lg50--3uG5u\",\"align-sm43-lg50\":\"align-sm43-lg50--2qBNG\",\"alignSm43Lg50\":\"align-sm43-lg50--2qBNG\"};","import React from 'react';\nimport { render } from 'react-dom';\n\nimport { logger } from 'packages';\nimport { ProviderWithGlobalStore } from 'tradera-state/configure-store';\nimport SiteHeader from 'tradera-components/site-header/site-header';\nimport SiteFooter from 'tradera-components/site-footer/site-footer';\n\nconst headerElement = document.querySelector('[data-site-header-slim]');\nconst footerElement = document.querySelector('[data-site-footer]');\n\nconst MainNavigation = () => {\n if (headerElement) {\n try {\n render(\n \n \n ,\n headerElement\n );\n } catch (e) {\n logger(e);\n }\n }\n\n if (footerElement) {\n try {\n render(\n \n \n ,\n footerElement\n );\n } catch (e) {\n logger(e);\n }\n }\n};\n\nexport { MainNavigation };\n","import draftActions from './draft-actions';\nimport { throttledFetchCategoryAttributeSuggestions } from './attributes-actions';\nimport { selectCategory } from 'tradera-state/views/syi/selectors/category-selectors';\nimport {\n setShortDescription,\n resetShortDescription\n} from '../reducers/short-description';\n\nexport const shortDescriptionActions = {\n setShortDescription: shortDescription => (dispatch, getState) => {\n dispatch(setShortDescription(shortDescription));\n dispatch(draftActions.updateDraftCanBeResumed());\n dispatch(\n throttledFetchCategoryAttributeSuggestions(\n selectCategory(getState()).draftCategoryId,\n shortDescription\n )\n );\n },\n reset: () => dispatch => {\n dispatch(resetShortDescription());\n dispatch(draftActions.updateDraftCanBeResumed());\n }\n};\n","export const selectCategory = state => state.views.syi.category;\n","import observable from '@riotjs/observable';\nexport default observable(new (function() {})());\n","import axios from 'axios';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport { logger } from 'packages/index';\nimport { STORAGE_KEYS } from 'tradera-constants/storage';\nimport StorageService from '../../../app/data/storage-service';\n\nconst previousSearchService = new StorageService(STORAGE_KEYS.SEARCH_RECENT);\nlet CancelToken = axios.CancelToken;\nlet cancel;\n\nexport const getSuggestions = async ({\n searchTerm = '',\n limitPrevious = 7,\n enablePrevious = false,\n enableSuggestions = false\n}) => {\n const generateSuggestionId = (categoryId, term) =>\n categoryId ? categoryId + '-' + term : term;\n\n let previousSearchResults = [],\n suggestedResults = {\n searches: [],\n shops: [],\n charities: [],\n campaigns: []\n };\n\n // ------------------------------\n // get suggestion data\n if (enablePrevious) {\n previousSearchResults = getPreviousSearches(searchTerm, limitPrevious);\n }\n\n if (enableSuggestions) {\n suggestedResults = await getSuggestionsFromBackend(searchTerm);\n }\n\n // ------------------------------\n // merge lists\n const withDuplicates = [].concat(\n previousSearchResults.map((item, index) => ({\n key: `previous_search-${index}`,\n type: 'previous',\n text: item.key,\n id: generateSuggestionId(null, index)\n })),\n suggestedResults.searches.map((item, index) => ({\n key: `suggested_search-${index}`,\n type: 'suggested-item',\n categories: item.categories,\n item,\n text: item.text,\n id: generateSuggestionId(\n item.category ? item.category.id : null,\n item.text\n )\n }))\n );\n const uniqueMap = new Map();\n withDuplicates.forEach(item => {\n if (uniqueMap.has(item.id)) return;\n uniqueMap.set(item.id, item);\n });\n const uniqueResults = Array.from(uniqueMap.values());\n\n const shopResults = suggestedResults.shops.map((item, key) => ({\n key: `suggested_shop-${key}`,\n type: 'suggested-shop',\n item,\n memberId: item.memberId,\n name: item.name,\n urlName: item.urlName,\n inSPA: false, // Turned off until profile pages are SPAified\n id: key\n }));\n\n const suggestedCharitiesResults = suggestedResults.charities || [];\n const charitiesResults = suggestedCharitiesResults.map((item, key) => ({\n key: `suggested_charity-${key}`,\n type: 'suggested-charity',\n item,\n name: item.name,\n slug: item.slug,\n inSPA: false, // Turned off until profile pages are SPAified\n id: key\n }));\n\n const suggestedCampaignResults = suggestedResults.campaigns || [];\n const campaignResults = suggestedCampaignResults.map((item, key) => ({\n key: `suggested_campaign-${key}`,\n type: 'suggested-campaign',\n item,\n capaignId: item.campaignId,\n name: item.name,\n urlName: item.urlName,\n inSPA: false, // Turned off until profile pages are SPAified\n id: key\n }));\n\n const allSuggestions = [\n ...campaignResults,\n ...uniqueResults,\n ...shopResults,\n ...charitiesResults,\n {\n key: 'advanced-search',\n type: 'link-advanced-search'\n },\n {\n key: 'seller-search',\n type: 'link-seller-search'\n }\n ];\n return allSuggestions;\n};\n\n// --------------------------------------------\n// backend suggestions\n// --------------------------------------------\n\nconst normalizeSearches = (searches = []) => {\n return searches.reduce((acc, search) => {\n if (search.categories) {\n search.categories.map(category => {\n acc.push({\n text: search.text,\n category: category\n });\n });\n } else {\n acc.push({\n text: search.text,\n category: null\n });\n }\n return acc;\n }, []);\n};\n\nconst getSuggestionsFromBackend = async searchTerm => {\n if (cancel !== undefined) {\n cancel();\n }\n try {\n const response = await axios.get(ENDPOINTS.SEARCH_SUGGESTIONS, {\n cancelToken: new CancelToken(function executor(c) {\n cancel = c;\n }),\n params: {\n q: searchTerm\n }\n });\n\n const {\n campaigns = [],\n searches,\n shops = [],\n charities = []\n } = response.data;\n return {\n campaigns,\n searches: normalizeSearches(searches) || [],\n shops,\n charities\n };\n } catch (error) {\n if (!('response' in error) && !axios.isCancel(error)) {\n logger(error);\n }\n return { searches: [], shops: [] };\n }\n};\n\n// --------------------------------------------\n// previous searches\n// --------------------------------------------\n\n// function needed by state\nconst getPreviousSearches = (searchTerm, limit = 7) => {\n const previousResults =\n previousSearchService.fetch().orderByTimestamp() || [];\n let output =\n searchTerm.length === 0\n ? previousResults\n : previousResults.filter(item => item.key.includes(searchTerm));\n return output.splice(0, limit);\n};\n\nexport const addRecentSearch = searchTerm => {\n if (!searchTerm) {\n return;\n }\n const prettySearchTerm = searchTerm\n .toString()\n .replace(//g, ' ')\n .trim();\n if (prettySearchTerm.length > 2) {\n let recentCount = previousSearchService.get(prettySearchTerm) || 0;\n recentCount += 1;\n previousSearchService.set(prettySearchTerm, recentCount);\n }\n};\n\nexport const removeRecentSearch = searchTerm => {\n if (!searchTerm || searchTerm.length < 3) {\n return;\n }\n previousSearchService.remove(searchTerm);\n};\n"],"sourceRoot":""}