{"version":3,"sources":["webpack:///./src/frontend/state/ui/initial-state.js","webpack:///./src/frontend/state/views/syi/reducers/price.js","webpack:///./src/frontend/constants/cookies.js","webpack:///./src/frontend/utils/gdpr-settings.js","webpack:///./src/frontend/state/bank-id/modal-state.js","webpack:///./src/frontend/state/views/syi/reducers/templates.js","webpack:///./src/frontend/utils/location.js","webpack:///./src/frontend/state/views/syi/reducers/campaign-code.js","webpack:///./src/frontend/state/views/syi/reducers/bankid.js","webpack:///./src/frontend/state/views/checkout/reducer.js","webpack:///./src/frontend/state/views/syi/reducers/template.js","webpack:///./src/frontend/state/views/syi/reducers/payment.js","webpack:///./src/frontend/state/shipping-region/initial-state.js","webpack:///./src/frontend/constants/endpoints.js","webpack:///./src/frontend/state/views/syi/reducers/draft.js","webpack:///./src/frontend/utils/cache.js","webpack:///./src/frontend/state/discover/action-types.js","webpack:///./src/frontend/state/ui/action-types.js","webpack:///./src/frontend/state/page/action-types.js","webpack:///./src/frontend/state/language/action-types.js","webpack:///./src/frontend/state/views/syi/reducers/long-description.js","webpack:///./src/EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/services/draft-service.js","webpack:///./src/frontend/state/push-notifications/constants.js","webpack:///./src/frontend/state/multi-currency/helpers.js","webpack:///./src/frontend/state/views/syi/reducers/next-shipping/ensure-good-shipping-options.js","webpack:///./src/frontend/state/categories/initial-state.js","webpack:///./src/frontend/state/bank-id/action-types.js","webpack:///./src/frontend/state/discover/api.js","webpack:///./src/frontend/state/views/syi/reducers/short-description.js","webpack:///./src/frontend/state/views/syi/reducers/errors.js","webpack:///./src/frontend/state/multi-currency/action-types.js","webpack:///./src/EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/utils/language.js","webpack:///./src/frontend/state/push-notifications/helpers.js","webpack:///./src/frontend/state/push-notifications/push-notifications-slice.js","webpack:///./src/frontend/state/ads/action-types.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/logger.js","webpack:///./src/frontend/state/ui/helpers.js","webpack:///./src/frontend/state/ui/reducer.js","webpack:///./src/frontend/state/categories/action-types.js","webpack:///./src/frontend/state/views/syi/reducers/item-condition.js","webpack:///./src/frontend/constants/state.js","webpack:///./src/frontend/state/views/syi/reducers/edit.js","webpack:///./src/frontend/apps/tradera/components/discover/helpers/search-gtm.js","webpack:///./node_modules/moment/locale sync ^\\.\\/(se)$","webpack:///./src/frontend/state/shipping-region/reducer.js","webpack:///./src/frontend/utils/api.js","webpack:///./src/frontend/state/views/syi/reducers/extra-features.js","webpack:///./src/frontend/state/items/initial-state.js","webpack:///./src/frontend/state/member/action-types.js","webpack:///./src/frontend/state/configure-store.js","webpack:///./src/frontend/state/items/actions.js","webpack:///./src/frontend/state/views/start-page/reducer.js","webpack:///./src/frontend/state/views/syi/reducers/item-duration.js","webpack:///./src/frontend/constants/storage.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/storage.js","webpack:///./src/frontend/state/views/syi/reducers/next-shipping/index.js","webpack:///./src/frontend/state/views/syi/reducers/buyer-region.js","webpack:///./src/frontend/utils/cookie.js","webpack:///./src/frontend/state/member/reducer.js","webpack:///./src/frontend/state/items/api.js","webpack:///./src/frontend/state/views/syi/reducers/fees.js","webpack:///./src/EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/utils/array-utils.js","webpack:///./src/frontend/state/views/checkout/initial-state.js","webpack:///./src/EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/services/config.js","webpack:///./src/frontend/state/ads/reducer.js","webpack:///./src/frontend/state/bank-id/initial-state.js","webpack:///./src/frontend/state/bank-id/reducer.js","webpack:///./src/frontend/state/categories/reducer.js","webpack:///./src/frontend/state/discover/helpers.js","webpack:///./src/frontend/state/discover/reducer.js","webpack:///./src/frontend/state/environment/action-types.js","webpack:///./src/frontend/state/environment/reducer.js","webpack:///./src/frontend/state/init-data/action-types.js","webpack:///./src/frontend/state/init-data/reducer.js","webpack:///./src/frontend/state/items/reducer.js","webpack:///./src/frontend/state/language/reducer.js","webpack:///./src/frontend/state/multi-currency/reducer.js","webpack:///./src/frontend/state/page/reducer.js","webpack:///./src/frontend/state/views/syi/reducers/attributes.js","webpack:///./src/frontend/state/views/syi/reducers/member-consent.js","webpack:///./src/frontend/state/views/syi/reducer.js","webpack:///./src/frontend/state/views/syi/reducers/drafts.js","webpack:///./src/frontend/state/views/syi/reducers/language.js","webpack:///./src/frontend/state/views/reducer.js","webpack:///./src/frontend/state/root-reducer.js","webpack:///./src/frontend/state/views/syi/reducers/next-shipping/next-shipping-selectors.js","webpack:///./src/frontend/state/views/syi/reducers/category.js","webpack:///./src/frontend/state/views/syi/reducers/syi.js","webpack:///./src/EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/services/user-data.js","webpack:///./src/frontend/state/views/syi/reducers/images.js","webpack:///./src/frontend/state/items/action-types.js","webpack:///./src/frontend/state/ui/actions.js","webpack:///./src/frontend/state/ui/api.js","webpack:///./src/frontend/state/views/syi/reducers/next-shipping/get-selected-shipping-options.js","webpack:///./src/frontend/state/ads/actions.js","webpack:///./src/frontend/state/discover/actions.js","webpack:///./src/frontend/state/page/actions.js","webpack:///./src/frontend/apps/tradera/components/discover/constants/constants.js","webpack:///./src/frontend/state/views/syi/reducers/charity.js","webpack:///./src/frontend/state/views/view-item/reducer.js","webpack:///./src/frontend/state/views/syi/reducers/next-shipping/validate.js","webpack:///./src/frontend/state/views/syi/reducers/next-shipping/validate-valid-shipping-price.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/messaging-helpers.js","webpack:///./src/frontend/utils/login.js","webpack:///./src/frontend/state/views/syi/reducers/scroll.js","webpack:///./src/frontend/state/discover/initial-state.js","webpack:///./src/frontend/state/views/view-item/initial-state.js","webpack:///./src/frontend/state/views/start-page/initial-state.js","webpack:///./src/frontend/state/get-initial-state.js","webpack:///./src/frontend/state/ads/initial-state.js","webpack:///./src/frontend/state/environment/initial-state.js","webpack:///./src/frontend/state/member/initial-state.js","webpack:///./src/frontend/state/multi-currency/initial-state.js","webpack:///./src/frontend/state/language/initial-state.js","webpack:///./src/frontend/state/page/initial-state.js","webpack:///./src/frontend/state/views/initial-state.js"],"names":["initData","gdpr","modalOpen","cookieUtil","readCookie","GDPR_CONSENT_ALERT_DISMISSED","settingsOpen","hasSearch","itemLayout","DEFAULT_COOKIES","key","messagingBadges","cache","read","CACHE_KEYS","MESSAGING_BADGES","threads","threadsUnread","siteLayout","systemMessages","SYSTEM_MESSAGES","categoryDropdownMenu","open","CONSTANTS","MODAL","CLOSED","badges","messaging","system","itemSettings","item","messagingModal","title","src","participating","recipientId","notificationOptinModal","modalType","gaLabel","description","tagGroups","profileMenu","redirectUrl","quickView","items","itemIds","currentItem","showHeaderSearch","pageName","featureSwitches","showSearchForm","BankAccountMissing","InvoiceOverdue","InvoiceUnpaid","PayoutFailed","PayoutReadyBankAccountMissing","SwishNumberMissing","videoModal","video","isValidPrice","number","str","String","_","isFinite","isInt","validate","newState","isPureBinSelected","openingBid","fixedPriceValidationError","fixedPrice","isNaN","validateFixedPrice","openingBidValidationError","reservePriceValidationError","showReservePrice","reservePrice","auctionBinPrice","validateReservePrice","auctionBinValidationError","showAuctionBinPrice","validateAuctionBinPrice","validationError","initialState","selectableVats","config","selectableVatValues","reservePriceCanChangeButNotBeRemoved","vat","isReservePriceHiddenForCharity","state","action","type","assign","payload","ITEM_LAYOUT","default","length","SITE_LAYOUT","MYTRADERA_DEFAULT_COOKIES","LIST_VIEW_TYPE","ITEMS_PER_PAGE","SHOW_FILTERS","GDPR_CONSENT_COOKIE","LANGUAGE_TOOLTIP_DISMISSED_COOKIE","SHIPPING_COUNTRY","REGION_PICKER_DISMISSED","COOKIE_CATEGORIES","Essential","Performance","Functional","Marketing","CATEGORIZED_COOKIES","test","s","COOKIE_DEFAULT_CATEGORY","GdprSettings","CookieUtil","this","cookieCategory","decodedCookie","decodeURI","RegExp","isCategoryEnabled","performance","functional","marketing","cookie","createCookie","join","moment","add","toDate","modalState","START","COMPLETED","ERROR","IN_PROGRESS","arrayUtils","shallowCopyArrayObjects","index","template","templateId","images","image","name","templateName","shortDescription","imageUrl","imageRotationDegrees","draftImage","rotationDegrees","reload","force","location","reloadLocalized","code","window","href","toLocalizedUrl","defaultCampaignProperties","campaignCode","campaignCodeId","campaignCodeDescription","maxFeeCap","campaignCodeChecked","firstTimeSubscribe","validCampaign","timeoutId","loading","searching","campaignCodeValid","searchingDelayed","searchingDelayedTimeoutId","isReadOnly","bannerMobileImageUrl","bannerTabletImageUrl","bannerDesktopImageUrl","hasEnded","nullIfUndefined","val","ensureValidCampaignCodeId","isChecked","initialStateBankIdRequirementExcluded","showBankIdProgress","showBankIdError","authenticationStarted","errorMessage","initialBankIdForBinRequired","userData","supportsVerification","bankIdForBinRequired","maskedPersonalNumber","initModuleGlobals","checkoutSlice","createSlice","reducers","receiveCheckout","buyerMember","purchaseOrder","sellerMember","shippingOptions","isFetching","hasError","purchaseOrderId","isPaid","receivePaymentOptions","paymentOptions","payment","setBankIdOpen","bankId","setBankIdStatus","status","setCheckoutSummary","checkoutSummary","setFetching","setHasError","setPaymentFetching","setPaymentHasError","setCheckoutSummaryFetching","setCheckoutSummaryHasError","setSelectedPayment","selectedPayment","setSelectedShipping","selectedShipping","actions","createReducer","saveAsDialogOpen","templatesLimitReachedDialogOpen","ignoreProperties","SET_SAVE_AS_DIALOG_OPEN","SET_TEMPLATES_LIMIT_REACHED_DIALOG_OPEN","RESET_IGNORE_PROPERTIES","ADD_IGNORE_PROPERTIES","union","REMOVE_IGNORE_PROPERTIES","difference","_paymentOptions","_paymentOptionsPresentationData","braintree","isBraintreeOnly","selectedPaymentOptions","hasKlarnaOnAllItems","hasAnyValidPayment","po","shapePaymentOptions","filteredPaymentOptions","paymentOption","presentationData","pd","value","paymentType","selected","uiCheckedPaymentOptions","selectedPaymentOption","secureOnly","isSecure","takeawaySelected","displayPaymentOptions","text","paymentOptionsTop","top","paymentOptionGroups","visible","showToggle","forceBraintreeIfNeeded","isCreditCard","helpModalId","isPhone","hasFee","isKlarna","hasInvoice","hasTransfer","klarna","allVisible","klarnaRequired","enabled","isFunctionalEnabled","isLoggedIn","availableShippingCountries","isLoadingAvailableShippingCountries","hasLoadedAvailableShippingCountries","shippingCountry","countryCodeIso2","localizationRegionPickerEnabled","hasCookie","AVAILABLE_SHIPPING_COUNTRIES","availableShippingCountriesUrl","BANK_ID_AUTHENTICATE","bankIdAuthenticateUrl","BANK_ID_PROGRESS","bankIdProgressUrl","BRAND_PAGE","brandPageUrl","CAMPAIGN","campaignId","replace","CMS_API","cmsApiUrl","CHARITY_EARNINGS_TICKER","charityEarningsTickerUrl","FAVORITE_SELLER_ADD","favoriteSellerAddUrl","FAVORITE_SELLER_REMOVE","favoriteSellerRemoveUrl","GET_CATEGORY_LIST","getCategoryListUrl","GET_ITEM","getItemUrl","GEO_PUBLIC_API_URL","geoPublicApiUrl","ITEM_DESCRIPTION","itemId","itemDescriptionUrl","ITEM_DISCOUNT_QUOTA","settingsQuotaUrl","LAST_CHANCE","lastChanceUrl","LOGIN_STATE","loginStateUrl","MEMBER_SYSTEM_MESSAGES","memberSystemMessagesUrl","MESSAGING_EMAIL_SETTINGS","messagingEmailSettingsUrl","MESSAGING_NOTIFICATIONS","messagingNotificationsUrl","MESSAGING_PARTICIPATION","messagingParticipationUrl","MESSAGING_SET_PARTICIPATION","messagingSetParticipationUrl","ORDER_CHECKOUT_CONFIRMATION","orderCheckoutConfirmationtUrl","ORDER_CHECKOUT_COMPLETE_PAYMENT","orderCheckoutCompletePaymentUrl","ORDER_CHECKOUT_INIT_PAYMENT","orderCheckoutInitializePaymentUrl","ORDER_CHECKOUT_PAYMENT_OPTIONS","orderCheckoutPaymentUrl","ORDER_CHECKOUT_PAYMENT_STATUS","orderCheckoutPaymentStatusUrl","ORDER_CHECKOUT_VIEW","orderCheckoutViewUrl","ORDER_CHECKOUT_PAYMENT","PAYMENT_SWISH_OPTOUT","paymentSwishOptoutUrl","SAVED_SEARCH_ADD","savedSearchAddUrl","SAVED_SEARCH_NOTIFICATION","savedSearchNotificationUrl","SAVED_SEARCH_REMOVE","savedSearchRemoveUrl","SEARCH","searchBaseUrl","SEARCH_SUGGESTIONS","searchSuggestionsUrl","SELLING_ATTRIBUTES","sellingAttributesUrl","SELLING_CATEGORY_RESTRICTIONS","sellingCategoryRestrictionsUrl","SETTINGS","settingsUrl","SHIPPING_BAGS_ORDER","SHIPPING_BAGS_ORDER_COUNT_FOR_ITEM","SHIPPING_BAGS_ORDER_COUNT_TOTAL","SHIPPING_PROVIDERS","shippingProvidersUrl","WEB_API","webApiUrl","WISHLIST_ADD","wishlistAddUrl","WISHLIST_REMOVE","wishlistRemoveUrl","isLoading","newDraft","referenceIsReadonly","draft","reference","draftId","draftReason","memberId","restart","publishedPromoted","publishedHighlighted","createdDate","lastModifiedDate","publishedDate","publishedAsItemType","additionalDescriptions","metadata","version","newAdditionalDescriptions","push","message","isEqual","toISOString","RECENTLY_VIEWED_ITEMS","store","keyPrefix","cached","getItem","expires","data","removeItem","ttl","setItem","clearByPrefix","caches","getItemsByPrefix","now","localStore","ADD_ITEM_ON_DISPLAY","ADD_SEARCH_RESULTS","CHANGE_SORT_VALUE","HANDLE_SEARCH_RESULTS_ERROR","LOCATION_CHANGE","RECEIVE_SEARCH_RESULTS","REMOVE_ITEM_ON_DISPLAY","REQUEST_SEARCH_RESULTS","SET_ACTIVE_CATEGORY","SET_ACTIVE_FILTER","SET_CATEGORY_PATH","SET_CURRENT_CATEGORY_ID","SET_SINGLE_FILTER","STOP_REQUEST_SEARCH_RESULTS","TOGGLE_HEADER_SEARCH","OPEN_GDPR_MODAL","CLOSE_GDPR_MODAL","OPEN_GDPR_SETTINGS","CLOSE_GDPR_SETTINGS","OPEN_QUICK_VIEW","CLOSE_QUICK_VIEW","OPEN_VIDEO_MODAL","CLOSE_VIDEO_MODAL","OPEN_MESSAGING_MODAL","CLOSE_MESSAGING_MODAL","OPEN_NOTIFICATION_OPTIN_MODAL","CLOSE_NOTIFICATION_OPTIN_MODAL","UPDATE_SYSTEM_MESSAGES","UPDATE_MESSAGING_NOTIFICATIONS","OPEN_PROFILE_MENU","CLOSE_PROFILE_MENU","OPEN_CATEGORY_DROPDOWN_MENU","CLOSE_CATEGORY_DROPDOWN_MENU","OPEN_SEARCH_FORM","CLOSE_SEARCH_FORM","REQUEST_ITEM_SETTINGS","OPEN_ITEM_SETTINGS","CLOSE_ITEM_SETTINGS","LOG_OUT","SET_PAGE_TYPE","SET_PAGE_META","SET_PREFERRED","DISMISS_TOOLTIP","DISMISS_OPTOUT_TOOLTIP","textWithHtml","elm","document","createElement","innerHTML","textContent","innerText","ensureString","longDescription","isCurrentDescriptionFromDraft","fromDraftCounter","defaultDrafts","sellingGlobalData","postJson","url","$","ajax","contentType","dataType","isNullOrUndefined","isNull","isUndefined","getType","hasOpeningPrice","hasFixedPrice","getCustomEndTime","itemDuration","isString","customEndTimeHour","customEndTimeMinute","deleteDrafts","draftIds","deferred","Deferred","post","toLocalizedRiotUrl","done","resolve","fail","reject","promise","isPureBin","isAuctionBin","getDefaultTemplateValue","propertyName","newTemplate","loadDraft","get","then","result","loadDrafts","loadDefaultDraft","clone","newItem","loadDefaultTemplateDraft","loadDraftFromTemplate","success","resetUnwantedProperties","error","saveDraft","applicationId","ensureApplicationId","ensureBraintree","errorCode","buildDraftFromState","syiSlice","MemberId","categoryId","category","draftCategoryId","categoryPath","draftCategoryPath","slots","i","slot","imageId","isListingImage","listingImage","filename","imageGroupId","resolveImages","price","durationDays","customEndTime","shipping","selectedShippingOptions","itemCondition","allowedBuyerRegion","buyerRegion","selectedBuyerRegion","displayPromoted","extraFeatures","displayHighlighted","charityId","charity","allowZeroDayAuctions","attributeValues","termAttributeValues","attributes","categoryAttributes","attribute","values","options","acc","option","isActive","id","backingField","userGenerated","deleteDraft","MODAL_TYPES","wishlistReminders","selling","CHANNEL_TAG_GROUPS","buyingListingOutbid","buyingListingWon","sellingListingFirstBid","sellingListingAllBids","sellingListingSold","sellingPaymentReceived","resolveCode","currencyCodeOrNull","currencies","currency","resolveCurrency","optionHasError","ensureGoodShippingOptions","list","RESET","START_AUTH","SET_ERROR","CLOSE","getSearchResults","endpoint","params","a","baseURL","process","utilizeCancelToken","cancel","cancelToken","axios","paramsSerializer","qs","stringify","arrayFormat","checkResponseVersion","response","finalizeResponse","handleError","step1","step2","step3","step4","errors","tmp","e1","step1Errors","e2","step2Errors","e3","step3Errors","e4","step4Errors","undefined","SET_PREFERRED_CURRENCY","SET_CURRENCY_IF_NOT_CHOSEN","language","getLanguage","querySelector","getAttribute","getUrbanSdk","UA","UACache","sdk","isSupported","getTagGroupsFromUrbanAirship","channel","group","groupTags","tag","tags","has","logger","isPushEnabled","getState","member","pushNotificationsSlice","initDone","pushSupported","optedIn","shownModals","setInitDone","setPushSupported","setOptedInValue","setTagGroupsValue","setShownModalTrue","STORAGE_KEYS","WEB_PUSH_SHOWN_MODALS","setAllShownModals","setEnabled","init","dispatch","canRegister","set","optIn","register","namedUser","toString","optOut","saveTagsToUrbanAirshipAndUpdateState","tagGroupValue","tagGroupsToSet","pushNotifications","t","channelTags","addTagGroups","tagGroupsToAdd","removeTagGroups","tagGroupsToRemove","SET_ADS","component","logInfo","e","msg","_log","logError","logLevel","eventName","trace","stack","trigger","getSystemMessageAlertCount","HyperwalletPayeeVerificationRequired","toggleHeaderSearch","openGdprModal","closeGdprModal","openGdprSettings","closeGdprSettings","openQuickView","OPEN","closeQuickView","openVideoModal","videoId","pageType","closeVideoModal","openMessagingModal","closeMessagingModal","openNotificationOptinModal","closeNotificationOptinModal","updateSystemMessages","updateMessagingNotifications","write","openProfileMenu","closeProfileMenu","openCategoryDropdownMenu","closeCategoryDropdownMenu","openSearchForm","closeSearchForm","logOut","getInitialState","openItemSettings","closeItemSettings","def","actionTypes","REQUEST_CATEGORY_LIST","RECEIVE_CATEGORY_LIST","HANDLE_CATEGORY_LIST_ERROR","selectionError","MENU","GRID","LIST","draftBeforeChange","filterNameMappings","itemType","sellerType","county","countyBox","itemStatus","shoeTypes","subDepartments","shoeSizes","brandTags","sortBy","Layout","categorySelected","categoryHorizontalSelected","trackAction","label","GtmService","getFilterLabel","trackFilter","filter","trackNavigation","trackAccordion","trackButton","trackLink","trackPriceFilter","fromPrice","toPrice","lbl","trackPageView","metaTitle","reverseCategoryPath","c","trackGtmEvent","keywords","ga_page_title","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","keys","Object","module","exports","shippingRegionSlice","setShippingCountry","country","setDefaultShippingCountry","setAvailableShippingCountries","shippingCountries","beginLoadingAvailableShippingOptions","dismissLocalizationRegionPicker","reducer","prepare","Date","getTime","API_ERRORS","IGNORE_ME","ABORTED","CANCELLED","NETWORK","TIMEOUT","VERSION_MISMATCH","LOGGED_OUT","axiosConfigs","authenticated","withCredentials","headers","Accept","isMissingAuthToken","responseString","JSON","parse","responseStatus","axiosWithTokenRefresh","axiosInstance","instance","create","interceptors","use","request","ENDPOINTS","newError","cancelTokens","tokenId","CancelToken","source","token","checkResponseLoggedOut","statusHandlers","isCancel","shippingBags","cacheOrder","recent","DEFAULT_ACTION","SET_IS_FETCHING_GEOLOCATION","SET_GEOLOCATION","FAILED_LOADING_GEOLOCATION","reduxStore","configureStore","browserHistory","middlewares","createStore","rootReducer","ReduxThunk","search","compose","applyMiddleware","observe","select","onChange","currentState","handleChange","nextState","unsubscribe","subscribe","hot","accept","nextRootReducer","require","replaceReducer","enableWebPackHotModuleReplacementForReducers","globalStore","searchActions","receiveSearchResults","pathname","queryParams","stripItmFromQueryParameters","formatQueryParams","toQueryParameters","discoverResponse","uiActions","fetchSystemMessages","pushNotificationActions","getSyiSlice","views","syi","ProviderWithGlobalStore","props","ADD","addRecentlyViewed","getStore","ADD_RECENTLY_VIEWED","wishlist","page","existsInWishList","onSignedOutError","signIn","WISHLIST","exists","gtmCore","Analytics","trackEvent","postWishlistItem","removeWishList","REMOVE_WISHLIST","updateItem","UPDATE_ITEM","startPageSlice","requestConfig","receiveConfig","hasResult","receiveTrendingTags","trendingBrands","sortByIndex","trendingSearches","b","defaultDraft","locale","makeDaysOptions","min","max","maxDays","numberOfDays","days","dateText","toDisplayText","makeHourOptions","hour","makeMinuteOptions","minute","toDaysText","toDateText","format","resolveSummaryText","isChangeItem","getCustomEndTimeError","newCustomEndTimeError","endDate","earliestEndDate","isBefore","newStateWithoutCampaignRelatedProps","selectedDaysText","selectedDateText","summaryText","customEndTimeError","isCustomEndTimeVisible","daysOptions","hourOptions","minuteOptions","customEndTimePrice","isCustomEndTimeHiddenForCampaign","isRestartAvailable","split","draftService","date","getHours","getMinutes","COOKIE_NOTIFICATION","ITEMS_CLICK","ITEMS_IN_VIEWPORT","SAVE_SEARCH_HINT","SEARCH_RECENT","SELLING_DONT_ASK_FOR_SCHENKER_PRINTER","SELLING_DONT_ASK_FOR_SCHENKER_UPSELL","WEB_PUSH_ACCEPTED","CACHE_MESSAGING_BADGES","CACHE_RECENTLY_VIEWED_ITEMS","CACHE_SYSTEM_MESSAGES","APPLE_ID_USER","STORAGE_VALUES","SAVE_SEARCH_HINT_CLICKED","Storage","storage","setFilter","prefix","clear","MemoryStorage","size","defaultStorage","testStorage","localStorage","gdprSettings","primaryShippingProviders","secondaryShippingProviders","secondaryShippingOptionOpen","suggestedInvalidProducts","hasSuggestedProductDescriptions","invalidShippingCosts","takeawayDeliveryAccepted","showMoreOptions","showMoreSecondaryOptions","weight","isLoadingProvidersWithProducts","getProviderByProductType","providers","productType","provider","products","product","SET_SUGGESTED_SHIPPING_PRODUCTS","getAllProducts","suggestedProduct","shippingProducts","p","cost","calculatorSuggestion","additionalInfo","RESET_SHIPPING_OPTIONS","primaryShippingOption","secondaryShippingOption","RESET_SELECTED_SHIPPING_OPTIONS","selectedVariant","productId","getSelectedShippingOptions","SET_SHIPPING_OPTIONS","updateProviderProducts","updateProductIfType","typeToBeVisible","updateVisibilities","isObject","promoted","TOGGLE_SHIPPING_OPTION","primary","productProvider","previousValue","SET_SHIPPING_OPTION_COST","getProduct","isBulkySelected","SET_SHIPPING_OPTION_VARIANT","variant","SET_TAKEAWAY_SELECTED","SET_SECONDARY_SHIPPING_OPTION_OPEN","REMOVE_SHIPPING_OPTION","getPrimaryOrSecondaryProducts","MAKE_SECONDARY_SHIPPING_OPTION_PRIMARY","FORCE_FREE_SHIPPING","SHOW_MORE_SHIPPING_OPTIONS","isPrimary","TOGGLE_MORE_SHIPPING_OPTIONS","TOGGLE_PRODUCT_EXTRA_INFO_VISIBILITY","isExtraInfoVisible","SET_SHIPPING_PRODUCT_BULKY_SELECTED","SET_SHIPPING_PROVIDERS_WITH_PRODUCTS","SET_SHIPPING_PROVIDERS_WITH_PRODUCTS_FETCHING","availableAllowedBuyerRegions","findIndexOfRegion","regionValue","r","pageSpecificData","allowedBuyerRegions","selectedBuyerRegionText","availableAllowedBuyerRegionsForEditWithBids","isSetAllowedBuyerRegionToAtLeastEuEnabled","isTraderaPayEnabled","hasSetAllowedBuyerRegionAtLeastEu","buyerRegionSlice","setAllowedBuyerRegion","region","regionOrDefault","where","setAllowedBuyerRegionAtLeastEu","euIndex","setAvailableAllowedBuyerRegions","availableRegions","draftState","regionState","regions","selectedRegion","filters","Sweden","Nordic","EU","International","expiresStr","constructor","Number","Infinity","toUTCString","cookieKey","cookieValue","path","domain","secure","_getGdprSettings","convertToExpiresStr","encodeURIComponent","segment","decodeURIComponent","isFetchingGeolocation","geolocation","getItemDiscountQuota","postItemSettings","onDisplay","discountRate","formData","commissionProcent","discountFactor","campaignCommissionProcent","maxCommissionCostText","commissionCap","isVariableCommission","chosenExtraFeatures","hasChosenExtraFeatures","isUnsoldFeeFree","isCategoryWithNoCommissionCap","arrayOfObjects","newArray","each","object","newObject","property","BANK_ID_STATUS","COMPLETE","sellingGlobalConfig","imageSizeX","imageSizeY","maxTemplates","domainNameCategoryId","URL_BASE","RIOT_MOUNTPOINT","getInitData","isAutoStartAllowed","autoStartToken","onCompleteCallback","onCloseCallback","retryCount","normalize","responseData","normalized","activeBrands","activeFilters","attributeFilters","currentCategoryId","fallbackItemsById","filterCategories","filterPrice","headerText","internalSearch","internalSearchBar","introText","itemsById","itemsOnDisplayById","mainText","pagination","totalFallbackItems","totalItems","categoryFilter","parameter","normalizeFilters","singleOptionFilters","selectedValue","ACTIVE_FILTER_STATES","priceRangeFilter","itemsOnDisplay","fallbackItems","draftAttributes","displayAttributes","createDisplayAttributes","tav","attributeId","categoryAttribute","findTitleForAttributeId","updateDisplayAttributes","RESET_ATTRIBUTES","SET_CATEGORY_ATTRIBUTES","SET_DRAFT_ATTRIBUTES","SET_CATEGORY_ATTRIBUTE_OPTION","isMultiSelect","numberOfValuesSelected","optionValue","activate","UPDATE_CATEGORY_ATTRIBUTES_OPTIONS_STATUSES","draftTermAttributes","draftTermAttribute","shouldGiveConsent","isSyiMemberConsentEnabled","showLegacyConsent","hasTraderaPayConsent","consent","hasValidationError","SET_TRADERAPAY_CONSENT","combineReducers","isSyiAttributesEnabled","attributesWithoutValue","minNumberOfValues","lastTitle","pop","bankid","traderaStateBankId","drafts","edit","fees","preferredLanguage","memberConsent","scroll","templates","checkout","viewItem","startPage","ads","gpt","adSenseQuery","adSenseShoppingPublisherId","categories","discover","requestSearchResults","handleSearchResultsError","setSingleFilter","addItemOnDisplay","removeItemOnDisplay","setCategoryPath","setCurrentCategoryId","showOrHideAllowedBuyerRegionFilter","displayAllowedBuyerRegionFilter","isoCode","memberActionTypes","environment","newCache","newCacheOrder","updatedRecent","recentItem","unshift","setPreferred","preferred","available","languageCodeIso2","dismissTooltip","showTooltip","dismissOptoutTooltip","showOptoutTooltip","multiCurrency","setPreferredCurrency","preferredCurrency","currencyCode","shippingRegion","ui","getAllProviders","onlyPrimary","createInitialState","suggestionsAvailable","levels","Array","anyLevelOpen","showExplanation","previousDraftCategoryId","prevoiusDraftCategoryPath","shortDescriptionForRecommendations","level","suggestions","suggestionsVisible","categoriesVisible","moreButtonVisible","hideButtonVisible","selectedCategory","isOpen","disabled","newLevels","isLeaf","isPropertyEditMode","creationType","allErrorsVisible","isEditOfPublishedItem","editedImageIndex","publishPending","publishFailed","publishFailedReasonDisplayText","publishedItemPendingVip","publishedItem","openModal","openModalData","autoSaveEnabled","draftCanBeResumed","itemUpdating","itemUpdated","publishDelayed","reasonDisplayText","categoryRestriction","newValue","modalId","modalData","uploadError","imageCount","any","resolveFirstEmpty","foundFirst","firstEmpty","resetUploadError","setImageCount","withUrl","isUploading","newslots","slotIndex","removeLastLoading","numberOfLoading","setLoadingOnFreeSlots","numberOfSlots","remove","openedFrom","restOfPayload","itemActions","gtm","getReturnUrl","updateItemLayout","defaultCookie","updateSiteLayout","400","401","fetchedMessages","fetchMessagingNotifications","messagingNotifications","dismissSwish","summaryDisplayName","takeAwayOption","reduxContainer","pageMeta","pageActions","setPageMeta","adsActions","newPage","searchQuery","q","itemsToAdd","fetchSearchResults","searchResults","setSingleFilterValue","setPageType","meta","MODALS","FILTER_MODAL","CATEGORY_MODAL","forceFreeShipping","isSchenkerPaidBySchenker","toUpperCase","viewItemSlice","setTranslatedDescription","translatedDescription","translatedDescriptionLoading","translatedDescriptionLoadingError","showTranslatedDescription","show","beginLoadingTranslatedDescription","failedLoadingTranslatedDescription","hasAnyNonValidOption","hasAnyValidOption","weightIsInvalid","so","isAdvanced","useAdvancedWidget","isValid","isWeightValid","weightValidationError","checkUserMessagingParticipation","sellerId","fetch","sellerResponse","json","participates","setUserMessagingParticipation","messagingSettings","method","credentials","body","userResponse","getUserMessagingEmailSetting","setUserMessagingEmailSetting","setting","getMessagingThreadLink","u1","u2","l","optionsWithDefaults","singleThread","openForm","Math","addQueryPrefix","getMessagingPageLink","redirectURL","scrollY","getInitialCategoryId","viewItemPageResponse","campaign","itemTitle","startPageResponse","initializers","args","initialize","gptData","memberCountry","debug","discoverEnabled","enableTimeMetrics","enableFastClick","isHybridAppContext","isNativeAppContext","splitTests","cleanedMemberAlias","facebookId","memberAlias","memberDetailedSellerRatingAverage","memberEmail","memberFirstName","memberHeroImage","memberLastName","paymentSettings","initialCurrencyCode","availableLanguages","defaultLanguage","availableIsoCodes","shouldDisplayInHeader","shouldAlwaysDisplayInMenu","lang","allCategories","breadcrumbs","canonicalLink","metaDescription","metaRobots","getStartPageState","getViewItemState","getCheckoutState"],"mappings":"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","file":"script/chunks/chunk.6.39bfbac928.js","sourcesContent":["import CONSTANTS from 'tradera-constants/state';\nimport {\n DEFAULT_COOKIES,\n GDPR_CONSENT_ALERT_DISMISSED\n} from 'tradera-constants/cookies';\nimport cookieUtil from 'tradera-utils/cookie';\nimport { cache, CACHE_KEYS } from 'tradera-utils/cache';\n\nexport default initData => {\n const gdpr = {\n modalOpen: cookieUtil.readCookie(GDPR_CONSENT_ALERT_DISMISSED) === null,\n settingsOpen: false\n };\n const { hasSearch } = initData;\n const itemLayout =\n cookieUtil.readCookie(DEFAULT_COOKIES['ITEM_LAYOUT'].key) ||\n DEFAULT_COOKIES['ITEM_LAYOUT'].default;\n const messagingBadges = cache.read(CACHE_KEYS.MESSAGING_BADGES) || {\n threads: 0,\n threadsUnread: 0\n };\n const siteLayout =\n cookieUtil.readCookie(DEFAULT_COOKIES['SITE_LAYOUT'].key) ||\n DEFAULT_COOKIES['SITE_LAYOUT'].default;\n const systemMessages = cache.read(CACHE_KEYS.SYSTEM_MESSAGES) || {};\n\n return {\n categoryDropdownMenu: { open: CONSTANTS.MODAL.CLOSED },\n badges: {\n messaging: messagingBadges,\n system: 0\n },\n gdpr,\n hasSearch,\n itemLayout: itemLayout,\n itemSettings: {\n open: CONSTANTS.MODAL.CLOSED,\n item: {}\n },\n messagingModal: {\n open: CONSTANTS.MODAL.CLOSED,\n title: '',\n src: '',\n participating: false,\n recipientId: '',\n item: null\n },\n notificationOptinModal: {\n open: CONSTANTS.MODAL.CLOSED,\n modalType: null,\n gaLabel: null,\n title: null,\n description: null,\n tagGroups: []\n },\n profileMenu: { open: CONSTANTS.MODAL.CLOSED, redirectUrl: false },\n quickView: {\n open: CONSTANTS.MODAL.CLOSED,\n items: {},\n itemIds: [],\n currentItem: 0\n },\n siteLayout,\n showHeaderSearch: !(\n initData.pageName &&\n initData.pageName.includes('StartPage') &&\n initData.featureSwitches &&\n initData.featureSwitches['start-page-contentful']\n ),\n showSearchForm: hasSearch,\n systemMessages: {\n BankAccountMissing: false,\n InvoiceOverdue: false,\n InvoiceUnpaid: false,\n PayoutFailed: false,\n PayoutReadyBankAccountMissing: false,\n SwishNumberMissing: false,\n ...systemMessages\n },\n videoModal: {\n open: CONSTANTS.MODAL.CLOSED,\n video: ''\n }\n };\n};\n","import 'underscore';\nimport config from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/services/config';\n\nfunction isValidPrice(number) {\n var str = new String(number);\n if (!_.isFinite(parseInt(str))) {\n return false;\n } else if (str.indexOf('.') > -1) {\n return false;\n } else if (str.indexOf(',') > -1) {\n return false;\n }\n return true;\n}\n\nfunction isInt(number) {\n return number % 1 === 0;\n}\n\nfunction validateOpeningBid(isPureBinSelected, openingBid) {\n if (isPureBinSelected) {\n return null;\n }\n\n if (openingBid && !isInt(openingBid)) {\n return 'Du får bara ange belopp i hela kronor';\n }\n\n var maxPrice = 10000000;\n var minPrice = 1;\n\n if (!isValidPrice(openingBid)) {\n return 'Ange utropspris';\n }\n\n if (openingBid > maxPrice) {\n return 'Utropspris får inte vara större än 10 000 000 kr';\n }\n\n if (openingBid < minPrice) {\n return 'Utropspris måste minst vara 1 kr';\n }\n\n return null;\n}\n\nfunction validateReservePrice(\n isPureBinSelected,\n showReservePrice,\n openingBid,\n reservePrice,\n auctionBinPrice\n) {\n if (isPureBinSelected) {\n return null;\n }\n\n if (showReservePrice && !reservePrice) {\n return 'Belopp saknas';\n }\n\n if (reservePrice && !isInt(reservePrice)) {\n return 'Du får bara ange belopp i hela kronor';\n }\n\n var maxPrice = 10000000;\n\n if (reservePrice && !isValidPrice(reservePrice)) {\n return 'Ogiltigt reservationspris. Måste vara större än utropspris';\n }\n\n let reservePriceIsLessThanOpeningBid =\n reservePrice && reservePrice <= openingBid;\n if (reservePriceIsLessThanOpeningBid) {\n return 'Reservationspris måste vara större än utropspris';\n }\n\n let reservePriceIsGreaterThanAuctionBinPrice =\n reservePrice && auctionBinPrice && reservePrice >= auctionBinPrice;\n if (reservePriceIsGreaterThanAuctionBinPrice) {\n return 'Reservationspris måste vara mindre än \"Köp-nu\"-pris';\n }\n\n if (reservePrice > maxPrice) {\n return 'Reservationspris får inte vara större än 10 000 000 kr';\n }\n\n return null;\n}\n\nfunction validateAuctionBinPrice(\n isPureBinSelected,\n showAuctionBinPrice,\n openingBid,\n reservePrice,\n auctionBinPrice\n) {\n if (isPureBinSelected) {\n return null;\n }\n\n if (showAuctionBinPrice && !auctionBinPrice) {\n return 'Belopp saknas';\n }\n\n if (auctionBinPrice && !isInt(auctionBinPrice)) {\n return 'Du får bara ange belopp i hela kronor';\n }\n let auctionBinPriceIsLessThanOpeningBid =\n auctionBinPrice && auctionBinPrice <= openingBid;\n if (auctionBinPriceIsLessThanOpeningBid) {\n return '\"Köp nu\"-pris måste vara större än utropspris';\n }\n\n let reservePriceIsGreaterThanAuctionBinPrice =\n reservePrice && auctionBinPrice && reservePrice >= auctionBinPrice;\n if (reservePriceIsGreaterThanAuctionBinPrice) {\n return '\"Köp nu\"-pris måste vara större än reservationspris';\n }\n return null;\n}\n\nfunction validateFixedPrice(isPureBinSelected, fixedPrice) {\n if (!isPureBinSelected) {\n return null;\n }\n\n if (fixedPrice && !isInt(fixedPrice)) {\n return 'Du får bara ange belopp i hela kronor';\n }\n\n var maxPrice = 10000000;\n var minPrice = 1;\n\n if (!isValidPrice(fixedPrice)) {\n return 'Ange fast pris';\n }\n if (!isNaN(fixedPrice)) {\n if (parseInt(fixedPrice) > maxPrice) {\n return 'Pris får inte vara större än 10 000 000 kr';\n }\n\n if (parseInt(fixedPrice) < minPrice) {\n return 'Pris måste minst vara 1 kr';\n }\n }\n return null;\n}\n\nfunction validate(newState) {\n newState.fixedPriceValidationError = validateFixedPrice(\n newState.isPureBinSelected,\n newState.fixedPrice\n );\n newState.openingBidValidationError = validateOpeningBid(\n newState.isPureBinSelected,\n newState.openingBid\n );\n newState.reservePriceValidationError = validateReservePrice(\n newState.isPureBinSelected,\n newState.showReservePrice,\n newState.openingBid,\n newState.reservePrice,\n newState.auctionBinPrice\n );\n newState.auctionBinValidationError = validateAuctionBinPrice(\n newState.isPureBinSelected,\n newState.showAuctionBinPrice,\n newState.openingBid,\n newState.reservePrice,\n newState.auctionBinPrice\n );\n newState.validationError =\n newState.fixedPriceValidationError ||\n newState.openingBidValidationError ||\n newState.reservePriceValidationError ||\n newState.auctionBinValidationError\n ? 'Ogiltigt pris'\n : null;\n return newState;\n}\n\nvar initialState = {\n openingBid: null,\n auctionBinPrice: null,\n fixedPrice: null,\n reservePrice: null,\n showAuctionBinPrice: false,\n showReservePrice: false,\n isPureBinSelected: null,\n openingBidValidationError: null,\n auctionBinValidationError: null,\n reservePriceValidationError: null,\n fixedPriceValidationError: null,\n selectableVats: config.selectableVatValues,\n reservePriceCanChangeButNotBeRemoved: false,\n vat: null,\n isReservePriceHiddenForCharity: false\n};\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_OPENING_BID':\n return validate(\n _.assign({}, state, { openingBid: action.payload })\n );\n case 'SET_AUCTION_BIN_PRICE':\n return validate(\n _.assign({}, state, { auctionBinPrice: action.payload })\n );\n case 'SET_FIXED_PRICE':\n return validate(\n _.assign({}, state, { fixedPrice: action.payload })\n );\n case 'SET_RESERVE_PRICE':\n return validate(\n _.assign({}, state, { reservePrice: action.payload })\n );\n case 'SET_AUCTION_BIN_PRICE_VISIBILITY':\n return validate(\n _.assign({}, state, { showAuctionBinPrice: action.payload })\n );\n case 'SET_RESERVE_PRICE_VISIBILITY':\n return validate(\n _.assign({}, state, { showReservePrice: action.payload })\n );\n case 'SET_IS_PURE_BIN_SELECTED':\n return validate(\n _.assign({}, state, {\n isPureBinSelected: action.isPureBinSelected\n })\n );\n case 'SET_VAT':\n return validate(_.assign({}, state, { vat: action.payload }));\n case 'RESET_PRICES_AND_VAT':\n return validate(\n _.assign({}, state, {\n openingBid: null,\n auctionBinPrice: null,\n fixedPrice: null,\n vat: null\n })\n );\n case 'SET_RESERVE_PRICE_CAN_CHANGE_BUT_NOT_BE_REMOVED':\n return validate(\n _.assign({}, state, {\n reservePriceCanChangeButNotBeRemoved: action.payload\n })\n );\n case 'HIDE_RESERVE_PRICE_FOR_CHARITY':\n return _.assign({}, state, {\n isReservePriceHiddenForCharity: true,\n showReservePrice: false,\n reservePrice: initialState.reservePrice\n });\n case 'UNHIDE_RESERVE_PRICE_FOR_CHARITY':\n return _.assign({}, state, {\n isReservePriceHiddenForCharity: false\n });\n default:\n return state;\n }\n};\n","/**\n * @returns {object} list of default cookies that could be set in Touchweb\n * @desc\n * key: Cookie Name\n * default: Default Value if not set\n * length: Time to be stored (months)\n */\nexport const DEFAULT_COOKIES = {\n ITEM_LAYOUT: {\n key: 'Srp_Item_Layout',\n default: 'layout-grid',\n length: 365\n },\n SITE_LAYOUT: {\n key: 'Srp_Site_Layout',\n default: 'site-width-default',\n length: 365\n }\n};\n\nexport const MYTRADERA_DEFAULT_COOKIES = {\n LIST_VIEW_TYPE: {\n key: 'MyTradera_ListViewType',\n default: 'Basic',\n length: 365\n },\n ITEMS_PER_PAGE: {\n key: 'MyTradera_ItemsPerPage',\n default: '25',\n length: 365\n },\n SHOW_FILTERS: {\n key: 'MyTradera_ShowFiltersToolbar',\n default: 'hidden',\n length: 365\n }\n};\n\nexport const GDPR_CONSENT_COOKIE = 'gdpr_consent_v1';\nexport const GDPR_CONSENT_ALERT_DISMISSED = 'gdpr_dismissed_v1';\nexport const LANGUAGE_TOOLTIP_DISMISSED_COOKIE = 'language_tooltip_dismissed';\nexport const SHIPPING_COUNTRY = 'shipping_country';\nexport const REGION_PICKER_DISMISSED = 'region_picker_dismissed';\n\nexport const COOKIE_CATEGORIES = {\n Essential: 1,\n Performance: 2,\n Functional: 3,\n Marketing: 4\n};\n\n/**\n * all cookies that are used by tradera must be categorized in the array below.\n */\nexport const CATEGORIZED_COOKIES = {\n test: COOKIE_CATEGORIES.Essential, // Unit test cookie\n s: COOKIE_CATEGORIES.Functional, // saved search\n [GDPR_CONSENT_COOKIE]: COOKIE_CATEGORIES.Essential,\n [GDPR_CONSENT_ALERT_DISMISSED]: COOKIE_CATEGORIES.Essential,\n [DEFAULT_COOKIES.ITEM_LAYOUT.key]: COOKIE_CATEGORIES.Functional,\n [DEFAULT_COOKIES.SITE_LAYOUT.key]: COOKIE_CATEGORIES.Functional,\n UserPreferences: COOKIE_CATEGORIES.Functional,\n signup_referral_path: COOKIE_CATEGORIES.Functional,\n 'mobile-opt-in-tags': COOKIE_CATEGORIES.Functional,\n preferred_currency: COOKIE_CATEGORIES.Functional,\n currency_selected_by_user: COOKIE_CATEGORIES.Functional,\n sold_view_picklist: COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.ITEMS_PER_PAGE.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.SHOW_FILTERS.key]: COOKIE_CATEGORIES.Functional,\n ITEMS_PER_PAGE: COOKIE_CATEGORIES.Functional,\n LIST_VIEW_TYPE: COOKIE_CATEGORIES.Functional,\n SHOW_FILTERS: COOKIE_CATEGORIES.Functional,\n [LANGUAGE_TOOLTIP_DISMISSED_COOKIE]: COOKIE_CATEGORIES.Functional,\n [REGION_PICKER_DISMISSED]: COOKIE_CATEGORIES.Functional,\n [SHIPPING_COUNTRY]: COOKIE_CATEGORIES.Functional\n};\n\nexport const COOKIE_DEFAULT_CATEGORY = 3;\n","/***\n *\n * Keep track of users' GDPR settings.\n *\n */\nimport moment from 'moment';\n\nimport CookieUtil from 'tradera-utils/cookie';\nimport {\n GDPR_CONSENT_COOKIE,\n COOKIE_CATEGORIES\n} from 'tradera-constants/cookies';\n\nclass GdprSettings {\n constructor(cookieUtil = CookieUtil) {\n this.cookieUtil = cookieUtil;\n }\n\n /**\n *\n * @param {int} cookieCategory use the constant COOKIE_CATEGORIES to get different values.\n */\n isCategoryEnabled(cookieCategory) {\n if (cookieCategory === COOKIE_CATEGORIES.Essential) {\n return true;\n }\n let decodedCookie = decodeURI(\n this.cookieUtil.readCookie(GDPR_CONSENT_COOKIE)\n );\n if (decodedCookie === null || decodedCookie.length === 0) {\n return true;\n }\n\n let categoryPattern = new RegExp(`,${cookieCategory}:1`);\n return categoryPattern.test(decodedCookie);\n }\n\n isPerformanceEnabled() {\n return this.isCategoryEnabled(COOKIE_CATEGORIES.Performance);\n }\n\n isFunctionalEnabled() {\n return this.isCategoryEnabled(COOKIE_CATEGORIES.Functional);\n }\n\n isMarketingEnabled() {\n return this.isCategoryEnabled(COOKIE_CATEGORIES.Marketing);\n }\n\n set(performance, functional, marketing) {\n const cookie = [\n `${COOKIE_CATEGORIES.Essential}:1`,\n `${COOKIE_CATEGORIES.Performance}:${performance ? '1' : '0'}`,\n `${COOKIE_CATEGORIES.Functional}:${functional ? '1' : '0'}`,\n `${COOKIE_CATEGORIES.Marketing}:${marketing ? '1' : '0'}`\n ];\n\n this.cookieUtil.createCookie(\n GDPR_CONSENT_COOKIE,\n cookie.join(','),\n moment()\n .add(1, 'years')\n .toDate(),\n '/'\n );\n return this;\n }\n}\n\nexport default new GdprSettings();\nexport { GdprSettings };\n","const modalState = {\n CLOSED: 'CLOSED',\n START: 'START',\n COMPLETED: 'COMPLETED',\n ERROR: 'ERROR',\n IN_PROGRESS: 'IN_PROGRESS'\n};\n\nexport default modalState;\n","import arrayUtils from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/utils/array-utils';\nimport 'underscore';\n\nvar initialState = null;\n\nexport default (state, action) => {\n state = state || initialState;\n\n switch (action.type) {\n case 'SET_TEMPLATES':\n if (action.payload) {\n state = arrayUtils.shallowCopyArrayObjects(action.payload);\n } else {\n state = null;\n }\n break;\n case 'UPDATE_TEMPLATE_IN_LIST':\n if (state) {\n state = arrayUtils.shallowCopyArrayObjects(state);\n let index = _.findIndex(\n state,\n template =>\n template.templateId == action.template.templateId\n );\n if (index > -1) {\n const images = action.template.images;\n const image = images.length > 0 ? images[0] : {};\n state[index].templateId = action.template.templateId;\n state[index].name = action.template.templateName;\n state[index].shortDescription =\n action.template.shortDescription;\n state[index].imageUrl = image.imageUrl;\n state[index].imageRotationDegrees =\n image.draftImage && image.draftImage.rotationDegrees;\n }\n }\n break;\n }\n return state;\n};\n","import { toLocalizedUrl } from 'tradera-utils/url';\n\n/**\n * Hide location.reload to be able to stub it with sinon\n * see https://developer.mozilla.org/en-US/docs/Web/API/Location/reload\n */\nexport const reload = (force = false) => location.reload(force);\n\nexport const reloadLocalized = code =>\n (window.location.href = toLocalizedUrl(window.location.href, code));\n\n// Export object for Sinon stubbing\nexport default {\n reload,\n reloadLocalized\n};\n","import 'underscore';\n\nvar defaultCampaignProperties = {\n campaignCode: '',\n campaignCodeId: null,\n campaignCodeDescription: null,\n maxFeeCap: null\n};\n\nvar initialState = _.assign({}, defaultCampaignProperties, {\n campaignCodeChecked: false,\n firstTimeSubscribe: true,\n validCampaign: false,\n timeoutId: null,\n loading: false,\n searching: false,\n campaignCodeValid: false,\n searchingDelayed: false,\n validationError: null,\n searchingDelayedTimeoutId: null,\n isReadOnly: false,\n bannerMobileImageUrl: null,\n bannerTabletImageUrl: null,\n bannerDesktopImageUrl: null,\n hasEnded: false\n});\n\nfunction nullIfUndefined(val) {\n return val ? val : null;\n}\n\nfunction ensureValidCampaignCodeId(campaignCodeId) {\n // Cannot publish when campaignCodeId is zero.\n // Fix server side when Riot SYI is used by 100% of members.\n if (campaignCodeId === 0) {\n return null;\n }\n return nullIfUndefined(campaignCodeId);\n}\n\nfunction validate(state) {\n if (state.campaignCodeChecked) {\n state.validationError = state.campaignCodeValid\n ? null\n : 'Ogiltig kampanjkod';\n } else {\n state.validationError = null;\n }\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'INITIALIZE_CAMPAIGN_CODE_STATE': {\n state = _.assign(\n {},\n state,\n _.assign({}, defaultCampaignProperties, {\n campaignCode: action.campaignCode,\n campaignCodeId: ensureValidCampaignCodeId(\n action.campaignCodeId\n ),\n campaignCodeDescription: nullIfUndefined(\n action.campaignCodeDescription\n ),\n campaignCodeValid: !!action.campaignCodeId,\n campaignCodeChecked: !!action.campaignCode,\n isReadOnly: action.isReadOnly,\n hasEnded: action.hasEnded\n })\n );\n break;\n }\n\n case 'SET_CAMPAIGN': {\n state = _.assign(\n {},\n state,\n _.assign({}, defaultCampaignProperties, {\n campaignCode: action.campaignCode,\n campaignCodeId: ensureValidCampaignCodeId(\n action.campaignCodeId\n ),\n campaignCodeDescription: nullIfUndefined(\n action.campaignCodeDescription\n ),\n campaignCodeValid: !!action.campaignCodeId,\n bannerMobileImageUrl: null,\n bannerTabletImageUrl: null,\n bannerDesktopImageUrl: null\n })\n );\n break;\n }\n\n case 'SET_CAMPAIGN_VALIDATION_RESULT': {\n if (state.campaignCode === action.campaignCode) {\n state = _.assign(\n {},\n state,\n _.assign({}, defaultCampaignProperties, {\n campaignCode: action.campaignCode,\n campaignCodeId: ensureValidCampaignCodeId(\n action.campaignCodeId\n ),\n campaignCodeDescription: nullIfUndefined(\n action.campaignCodeDescription\n ),\n campaignCodeValid: action.campaignCodeValid,\n maxFeeCap: nullIfUndefined(action.maxFeeCap),\n bannerMobileImageUrl: action.bannerMobileImageUrl,\n bannerTabletImageUrl: action.bannerTabletImageUrl,\n bannerDesktopImageUrl: action.bannerDesktopImageUrl,\n hasEnded: action.hasEnded,\n searching: false,\n searchingDelayed: false\n })\n );\n }\n break;\n }\n\n case 'RESET_MAX_FEE_CAP': {\n state = _.assign({}, state, {\n maxFeeCap: initialState.maxFeeCap\n });\n break;\n }\n\n case 'RESET_CAMPAIGN_BANNER': {\n state = _.assign({}, state, {\n bannerMobileImageUrl: initialState.bannerMobileImageUrl,\n bannerTabletImageUrl: action.bannerTabletImageUrl,\n bannerDesktopImageUrl: action.bannerDesktopImageUrl\n });\n break;\n }\n\n case 'TOGGLE_CAMPAIGN_CODE_CHECKBOX': {\n if (action.isChecked) {\n state = _.assign({}, state, {\n campaignCodeChecked: true,\n searching: false,\n searchingDelayed: false\n });\n } else {\n state = _.assign({}, state, {\n campaignCodeChecked: false,\n campaignCode: initialState.campaignCode,\n campaignCodeId: initialState.campaignCodeId,\n campaignCodeDescription: null,\n searching: false,\n searchingDelayed: false,\n hasEnded: false\n });\n }\n break;\n }\n\n case 'VALIDATING_CAMPAIGN_CODE_BY_SEARCHING': {\n state = _.assign({}, state, {\n searching: true\n });\n break;\n }\n\n case 'SEARCHING_FOR_CAMPAIGN_CODE_IS_DELAYED': {\n state = _.assign({}, state, {\n searchingDelayed: true\n });\n break;\n }\n }\n validate(state);\n return state;\n};\n","import 'underscore';\nimport userData from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/services/user-data';\n\nvar initialStateBankIdRequirementExcluded;\nvar initialState;\n\nconst initModuleGlobals = () => {\n if (initialState) {\n return initialState;\n }\n initialStateBankIdRequirementExcluded = {\n showBankIdProgress: false,\n showBankIdError: false,\n authenticationStarted: false,\n errorMessage: ''\n };\n initialState = _.assign({}, initialStateBankIdRequirementExcluded, {\n initialBankIdForBinRequired: userData.initialBankIdForBinRequired,\n supportsVerification: userData.supportsVerification,\n bankIdForBinRequired: userData.bankIdForBinRequired,\n maskedPersonalNumber: userData.maskedPersonalNumber\n });\n};\n\nexport default (state, action) => {\n initModuleGlobals();\n state = state || initialState;\n switch (action.type) {\n case 'RESET_BANKID_AUTHENTICATION_STATE':\n return _.assign({}, initialState, {\n initialBankIdForBinRequired: state.initialBankIdForBinRequired,\n bankIdForBinRequired: state.bankIdForBinRequired,\n supportsVerification: state.supportsVerification\n });\n case 'SHOW_BANKID_PROGRESS':\n return _.assign({}, state, { showBankIdProgress: true });\n case 'SET_BANKID_AUTHENTICATION_STARTED':\n return _.assign({}, state, { authenticationStarted: true });\n case 'SET_BANKID_AUTHENTICATION_ENDED':\n return _.assign({}, state, { authenticationStarted: false });\n case 'SET_BANKID_ERROR_MESSAGE':\n return _.assign({}, state, {\n errorMessage: action.payload,\n showBankIdError: true\n });\n case 'SET_BANKID_NOT_REQUIRED':\n return _.assign({}, state, {\n initialBankIdForBinRequired: false,\n bankIdForBinRequired: false,\n supportsVerification: false\n });\n default:\n return state;\n }\n};\n","import { createSlice } from '@reduxjs/toolkit';\n\nconst checkoutSlice = createSlice({\n name: 'checkout',\n initialState: {},\n reducers: {\n receiveCheckout: (state, { payload }) => {\n const {\n buyerMember,\n purchaseOrder,\n sellerMember,\n shippingOptions\n } = payload;\n state.buyerMember = { ...buyerMember };\n state.sellerMember = { ...sellerMember };\n state.items = purchaseOrder.items;\n state.shippingOptions = shippingOptions;\n state.isFetching = false;\n state.hasError = false;\n state.purchaseOrderId = purchaseOrder.purchaseOrderId;\n state.isPaid = purchaseOrder.isPaid;\n },\n receivePaymentOptions: (state, { payload }) => {\n const { paymentOptions } = payload;\n state.payment.paymentOptions = paymentOptions;\n state.payment.isFetching = false;\n },\n setBankIdOpen: (state, { payload }) => {\n state.bankId.open = payload;\n },\n setBankIdStatus: (state, { payload }) => {\n state.bankId.status = payload;\n },\n setCheckoutSummary: (state, { payload }) => {\n state.checkoutSummary = {\n ...payload,\n isFetching: false,\n hasError: false\n };\n },\n setFetching: (state, { payload }) => {\n state.isFetching = payload;\n state.hasError = false;\n },\n setHasError: (state, { payload }) => {\n state.hasError = payload;\n state.isFetching = false;\n },\n setPaymentFetching: (state, { payload }) => {\n state.payment.isFetching = payload;\n state.payment.hasError = false;\n },\n setPaymentHasError: (state, { payload }) => {\n state.payment.hasError = payload;\n state.payment.isFetching = false;\n },\n setCheckoutSummaryFetching: (state, { payload }) => {\n state.checkoutSummary.isFetching = payload;\n state.checkoutSummary.hasError = false;\n },\n setCheckoutSummaryHasError: (state, { payload }) => {\n state.checkoutSummary.hasError = payload;\n state.checkoutSummary.isFetching = false;\n },\n setSelectedPayment: (state, { payload }) => {\n state.payment.selectedPayment = payload;\n },\n setSelectedShipping: (state, { payload }) => {\n state.selectedShipping = payload;\n }\n }\n});\n\nexport const {\n receiveCheckout,\n receivePaymentOptions,\n setBankIdOpen,\n setBankIdStatus,\n setCheckoutSummary,\n setFetching,\n setHasError,\n setCheckoutSummaryFetching,\n setCheckoutSummaryHasError,\n setPaymentFetching,\n setPaymentHasError,\n setSelectedPayment,\n setSelectedShipping\n} = checkoutSlice.actions;\n\nexport default checkoutSlice.reducer;\n","import 'underscore';\nimport { createReducer } from '@reduxjs/toolkit';\n\nconst initialState = {\n saveAsDialogOpen: false,\n templatesLimitReachedDialogOpen: false,\n ignoreProperties: []\n};\n\nexport default createReducer(initialState, {\n SET_SAVE_AS_DIALOG_OPEN: (state, action) => {\n state.saveAsDialogOpen = action.payload;\n },\n SET_TEMPLATES_LIMIT_REACHED_DIALOG_OPEN: (state, action) => {\n state.templatesLimitReachedDialogOpen = action.payload;\n },\n RESET_IGNORE_PROPERTIES: state => {\n state.ignoreProperties = [];\n },\n ADD_IGNORE_PROPERTIES: (state, action) => {\n state.ignoreProperties = _.union(\n state.ignoreProperties,\n action.payload\n );\n },\n REMOVE_IGNORE_PROPERTIES: (state, action) => {\n state.ignoreProperties = _.difference(\n state.ignoreProperties,\n action.payload\n );\n }\n});\n","import 'underscore';\nimport userData from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/services/user-data';\n\nvar _paymentOptions;\nvar _paymentOptionsPresentationData;\nvar initialState;\n\nconst initModuleGlobals = () => {\n if (initialState) {\n return initialState;\n }\n\n _paymentOptions = userData.paymentOptions;\n _paymentOptionsPresentationData = [\n { text: 'Kontant vid avhämtning', value: 'Cash' },\n {\n text: 'PayPal',\n value: 'Paypal',\n isCreditCard: true,\n isSecure: true,\n helpModalId: 'info-modal-payment-paypal'\n },\n {\n text: 'Manuell överföring till bankkonto',\n value: 'Account',\n top: true,\n helpModalId: 'info-modal-payment-account'\n },\n {\n text: 'Swish',\n value: 'Swish',\n isPhone: true,\n helpModalId: 'info-modal-payment-swish'\n },\n { text: 'PlusGiro / Bankgiro', value: 'Plusgiro' },\n { text: 'Mot postförskott', value: 'Postforskott', hasFee: true },\n {\n text: 'Till mitt bankkonto via Klarna',\n value: 'KlarnaCheckout',\n top: true,\n isKlarna: true,\n hasInvoice: true,\n hasTransfer: true,\n isCreditCard: true,\n isSecure: true,\n helpModalId: 'info-modal-payment-klarna'\n },\n { text: 'Braintree', value: 'Braintree' }\n ];\n\n initialState = {\n displayPaymentOptions: '',\n paymentOptionGroups: [],\n selectedPaymentOptions: userData.braintree.isBraintreeOnly\n ? ['Braintree']\n : [],\n hasKlarnaOnAllItems: userData.klarna.hasKlarnaOnAllItems,\n validationError: null,\n secureOnly: false,\n uiCheckedPaymentOptions: [],\n takeawaySelected: false\n };\n};\n\nfunction validate(newState) {\n if (userData.braintree && userData.braintree.isBraintreeOnly) {\n if (\n newState.selectedPaymentOptions.length === 1 &&\n newState.selectedPaymentOptions[0] === 'Braintree'\n ) {\n newState.validationError = null;\n } else {\n newState.validationError = 'Utkastet har fel betalsätt';\n }\n } else if (newState.hasKlarnaOnAllItems) {\n newState.validationError = null;\n } else {\n var paymentOptions = newState.selectedPaymentOptions;\n var hasAnyValidPayment = _.some(paymentOptions, po => po);\n newState.validationError = hasAnyValidPayment ? null : 'Ange betalsätt';\n }\n return newState;\n}\n\nfunction forceBraintreeIfNeeded(state) {\n if (userData.braintree && userData.braintree.isBraintreeOnly) {\n state.selectedPaymentOptions = ['Braintree'];\n state.uiCheckedPaymentOptions = ['Braintree'];\n }\n}\n\nfunction shapePaymentOptions(state) {\n var filteredPaymentOptions = _.map(_paymentOptions, function(\n paymentOption\n ) {\n var presentationData = _.find(_paymentOptionsPresentationData, function(\n pd\n ) {\n return pd.value == paymentOption.paymentType;\n });\n paymentOption.selected = _.find(state.uiCheckedPaymentOptions, function(\n selectedPaymentOption\n ) {\n return selectedPaymentOption == paymentOption.paymentType;\n });\n return _.assign(presentationData, paymentOption);\n })\n .filter(function(paymentOption) {\n if (state.secureOnly) {\n return (\n paymentOption &&\n !!paymentOption.value &&\n paymentOption.isSecure\n );\n }\n return paymentOption && !!paymentOption.value;\n })\n .filter(function(paymentOption) {\n return state.takeawaySelected || paymentOption.value !== 'Cash';\n })\n .filter(function(paymentOption) {\n return (\n !state.hasKlarnaOnAllItems ||\n paymentOption.value !== 'KlarnaCheckout'\n );\n });\n\n state.displayPaymentOptions = _.filter(filteredPaymentOptions, function(\n po\n ) {\n return po.selected;\n })\n .map(function(po) {\n return po.text;\n })\n .join(', ');\n var paymentOptionsTop = _.filter(filteredPaymentOptions, function(po) {\n return po.top || po.selected;\n });\n state.selectedPaymentOptions = _.filter(filteredPaymentOptions, function(\n paymentOption\n ) {\n if (!paymentOption || !paymentOption.value) {\n return false;\n }\n if (state.secureOnly) {\n return paymentOption.selected && paymentOption.isSecure;\n }\n return paymentOption.selected;\n }).map(function(paymentOption) {\n return paymentOption.value;\n });\n state.paymentOptionGroups = [\n {\n visible: true,\n paymentOptions: paymentOptionsTop,\n showToggle:\n _.filter(filteredPaymentOptions, function(po) {\n return !po.top && !po.selected;\n }).length > 0\n },\n {\n visible: paymentOptionsTop.length === 0,\n paymentOptions: _.filter(filteredPaymentOptions, function(po) {\n return !po.top && !po.selected;\n }),\n showToggle: false\n }\n ];\n forceBraintreeIfNeeded(state);\n}\n\nexport default (state, action) => {\n initModuleGlobals();\n if (!state) {\n shapePaymentOptions(initialState);\n state = validate(initialState);\n }\n switch (action.type) {\n case 'SET_PAYMENT_OPTIONS': {\n const newState = {\n ...state,\n uiCheckedPaymentOptions: action.selectedPaymentOptions\n };\n shapePaymentOptions(newState);\n return validate(newState);\n }\n case 'TOGGLE_ALL_VISIBLE': {\n const newState = { ...state };\n newState.allVisible = !newState.allVisible;\n return validate(newState);\n }\n case 'SET_CATEGORY_RESTRICTION': {\n const newState = {\n ...state,\n secureOnly: action.payload.klarnaRequired\n };\n shapePaymentOptions(newState);\n return validate(newState);\n }\n case 'SET_CATEGORY_WARNING': {\n const newState = {\n ...state\n };\n return validate(newState);\n }\n case 'SET_TAKEAWAY_SELECTED': {\n const newState = {\n ...state,\n takeawaySelected: action.payload.takeawaySelected\n };\n shapePaymentOptions(newState);\n return validate(newState);\n }\n case 'ENSURE_ANY_PAYMENT_OPTION_FOR_CHARITY': {\n const newState = { ...state };\n const hasAnyValidPayment = _.some(\n newState.selectedPaymentOptions,\n po => po\n );\n if (!hasAnyValidPayment) {\n newState.selectedPaymentOptions = ['Account'];\n newState.uiCheckedPaymentOptions = ['Account'];\n }\n shapePaymentOptions(newState);\n return validate(newState);\n }\n default:\n return state;\n }\n};\n","import { REGION_PICKER_DISMISSED } from 'tradera-constants/cookies';\nimport cookieUtil from 'tradera-utils/cookie';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\n\nexport default initData => {\n const enabled =\n initData &&\n initData.featureSwitches &&\n initData.featureSwitches['shipping-country-select'] &&\n GdprSettings.isFunctionalEnabled() &&\n !initData.isLoggedIn;\n\n const localizationRegionPickerEnabled =\n initData &&\n initData.featureSwitches &&\n initData.featureSwitches['localization-region-picker'] &&\n GdprSettings.isFunctionalEnabled() &&\n !cookieUtil.hasCookie(REGION_PICKER_DISMISSED) &&\n !initData.isLoggedIn;\n\n return {\n enabled,\n availableShippingCountries: [],\n isLoadingAvailableShippingCountries: false,\n hasLoadedAvailableShippingCountries: false,\n shippingCountry: { countryCodeIso2: 'SE', name: 'Sverige' },\n localizationRegionPickerEnabled\n };\n};\n","import initData from 'init-data';\n\nexport default {\n AVAILABLE_SHIPPING_COUNTRIES: initData.availableShippingCountriesUrl,\n BANK_ID_AUTHENTICATE: initData.bankIdAuthenticateUrl,\n BANK_ID_PROGRESS: initData.bankIdProgressUrl,\n BRAND_PAGE: initData.brandPageUrl,\n CAMPAIGN: campaignId =>\n '/campaign/api/{campaignId}'.replace('{campaignId}', campaignId),\n CMS_API: initData.cmsApiUrl,\n CHARITY_EARNINGS_TICKER: initData.charityEarningsTickerUrl,\n FAVORITE_SELLER_ADD: initData.favoriteSellerAddUrl,\n FAVORITE_SELLER_REMOVE: initData.favoriteSellerRemoveUrl,\n GET_CATEGORY_LIST: initData.getCategoryListUrl,\n GET_ITEM: initData.getItemUrl,\n GEO_PUBLIC_API_URL: initData.geoPublicApiUrl,\n ITEM_DESCRIPTION: itemId =>\n initData.itemDescriptionUrl.replace('$itemId', itemId),\n ITEM_DISCOUNT_QUOTA: initData.settingsQuotaUrl,\n LAST_CHANCE: initData.lastChanceUrl,\n LOGIN_STATE: initData.loginStateUrl,\n MEMBER_SYSTEM_MESSAGES: initData.memberSystemMessagesUrl,\n MESSAGING_EMAIL_SETTINGS: initData.messagingEmailSettingsUrl,\n MESSAGING_NOTIFICATIONS: initData.messagingNotificationsUrl,\n MESSAGING_PARTICIPATION: initData.messagingParticipationUrl,\n MESSAGING_SET_PARTICIPATION: initData.messagingSetParticipationUrl,\n ORDER_CHECKOUT_CONFIRMATION: initData.orderCheckoutConfirmationtUrl,\n ORDER_CHECKOUT_COMPLETE_PAYMENT: initData.orderCheckoutCompletePaymentUrl,\n ORDER_CHECKOUT_INIT_PAYMENT: initData.orderCheckoutInitializePaymentUrl,\n ORDER_CHECKOUT_PAYMENT_OPTIONS: initData.orderCheckoutPaymentUrl,\n ORDER_CHECKOUT_PAYMENT_STATUS: initData.orderCheckoutPaymentStatusUrl,\n ORDER_CHECKOUT_VIEW: initData.orderCheckoutViewUrl,\n ORDER_CHECKOUT_PAYMENT: initData.orderCheckoutPaymentUrl,\n PAYMENT_SWISH_OPTOUT: initData.paymentSwishOptoutUrl,\n SAVED_SEARCH_ADD: initData.savedSearchAddUrl,\n SAVED_SEARCH_NOTIFICATION: initData.savedSearchNotificationUrl,\n SAVED_SEARCH_REMOVE: initData.savedSearchRemoveUrl,\n SEARCH: initData.searchBaseUrl,\n SEARCH_SUGGESTIONS: initData.searchSuggestionsUrl,\n SELLING_ATTRIBUTES: initData.sellingAttributesUrl,\n SELLING_CATEGORY_RESTRICTIONS: initData.sellingCategoryRestrictionsUrl,\n SETTINGS: initData.settingsUrl,\n SHIPPING_BAGS_ORDER: '/api/webapi/selling/add-shipping-bags-order',\n SHIPPING_BAGS_ORDER_COUNT_FOR_ITEM: itemId =>\n `/api/webapi/selling/shipping-bags-order/${itemId}`,\n SHIPPING_BAGS_ORDER_COUNT_TOTAL:\n '/api/webapi/selling/shipping-bags-order-count ',\n SHIPPING_PROVIDERS: initData.shippingProvidersUrl,\n WEB_API: initData.webApiUrl,\n WISHLIST_ADD: initData.wishlistAddUrl,\n WISHLIST_REMOVE: initData.wishlistRemoveUrl\n};\n","import moment from 'moment';\nimport 'underscore';\nimport arrayUtils from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/utils/array-utils';\n\nvar initialState = {\n isLoading: false\n};\n\nexport default (state, action) => {\n state = state || initialState;\n var newDraft = null;\n switch (action.type) {\n case 'SET_DRAFT_PROPERTIES': {\n const referenceIsReadonly =\n action.draft.reference &&\n action.draft.reference.indexOf('Sello artnr') >= 0;\n newDraft = _.assign(initialState, action.payload, {\n draftId: action.draft.draftId,\n draftReason: action.draft.draftReason,\n memberId: action.draft.memberId,\n itemId: action.draft.itemId,\n restart: action.draft.restart,\n publishedPromoted: action.draft.publishedPromoted,\n publishedHighlighted: action.draft.publishedHighlighted,\n createdDate: action.draft.createdDate,\n lastModifiedDate: action.draft.lastModifiedDate,\n publishedDate: action.draft.publishedDate,\n publishedAsItemType: action.draft.publishedAsItemType,\n reference: action.draft.reference,\n referenceIsReadonly: referenceIsReadonly,\n additionalDescriptions: action.draft.additionalDescriptions,\n metadata: action.draft.metadata,\n templateId: action.draft.templateId,\n templateName: action.draft.templateName,\n version: action.draft.version\n });\n break;\n }\n case 'SET_DRAFT_ID':\n newDraft = _.assign({}, state, { draftId: action.payload });\n break;\n case 'SET_RESTART':\n newDraft = _.assign({}, state, { restart: action.payload });\n break;\n case 'SET_REFERENCE':\n newDraft = _.assign({}, state, { reference: action.payload });\n break;\n case 'ADD_ADDITIONAL_DESCRIPTION':\n var newAdditionalDescriptions = arrayUtils.shallowCopyArrayObjects(\n state.additionalDescriptions || []\n );\n newAdditionalDescriptions.push({ message: action.payload });\n newDraft = _.assign({}, state, {\n additionalDescriptions: newAdditionalDescriptions\n });\n break;\n case 'SET_DRAFT_REASON':\n newDraft = _.assign({}, state, { draftReason: action.payload });\n break;\n case 'SET_DRAFT_VERSION':\n newDraft = _.assign({}, state, { version: action.payload });\n break;\n case 'RESET_DRAFT':\n newDraft = { ...initialState };\n break;\n case 'SET_DRAFT_IS_LOADING':\n newDraft = { ...state, isLoading: action.payload };\n break;\n default:\n return state;\n }\n if (!_.isEqual(state, newDraft)) {\n newDraft.lastModifiedDate = moment().toISOString();\n }\n return newDraft;\n};\n\n/**\nTODO: Do this:\n\nimport arrayUtils from '../../utils/array-utils';\nimport { createReducer } from '@reduxjs/toolkit';\n\nvar initialState = {};\n\nexport default createReducer(initialState, {\n SET_DRAFT_PROPERTIES: (state, action) => {\n const referenceIsReadonly =\n action.draft.reference &&\n action.draft.reference.indexOf('Sello artnr') >= 0;\n\n state = { ...action.draft, referenceIsReadonly };\n },\n SET_DRAFT_ID: (state, action) => {\n state.draftId = action.payload;\n },\n SET_RESTART: (state, action) => {\n state.restart = action.payload;\n },\n SET_REFERENCE: (state, action) => {\n state.reference = action.payload;\n },\n\n ADD_ADDITIONAL_DESCRIPTION: (state, action) => {\n var newAdditionalDescriptions = arrayUtils.shallowCopyArrayObjects(\n state.additionalDescriptions || []\n );\n newAdditionalDescriptions.push({ message: action.payload });\n state.additionalDescriptions = newAdditionalDescriptions;\n },\n\n SET_DRAFT_REASON: (state, action) => {\n state.draftReason = action.payload;\n },\n\n SET_DRAFT_VERSION: (state, action) => {\n state.version = action.payload;\n },\n\n RESET_DRAFT: () => {\n return { ...initialState };\n }\n});\n\n */\n","import { localStore } from 'utils/storage';\n\n// Remember to add prefix+key to STORAGE_KEYS in config/storage!\nconst CACHE_PREFIX = 'cache.';\nconst CACHE_KEYS = {\n MESSAGING_BADGES: 'messagingBadges',\n RECENTLY_VIEWED_ITEMS: 'recentlyViewedItems',\n SYSTEM_MESSAGES: 'systemMessages'\n};\nconst DEFAULT_TTL = 10 * 60 * 1000;\n\nclass CacheHandler {\n constructor(store, keyPrefix) {\n this.store = store;\n this.keyPrefix = keyPrefix;\n }\n\n /**\n * Read item from the cache, return null if expired or non existent\n *\n * @param {string} key\n * @returns {null|*}\n */\n read(key) {\n const cached = this.store.getItem(this.keyPrefix + key);\n if (cached) {\n if (cached.expires > Date.now()) {\n return cached.data;\n } else {\n this.store.removeItem(this.keyPrefix + key);\n }\n }\n return null;\n }\n\n /**\n * Write an item to the cache with expiry time\n *\n * @param {string} key\n * @param data\n * @param {int} [ttl]\n * @returns {CacheHandler}\n */\n write(key, data, ttl = DEFAULT_TTL) {\n this.store.setItem(this.keyPrefix + key, {\n expires: Date.now() + ttl,\n data\n });\n return this;\n }\n\n /**\n * Remove item regardless of expiry time\n *\n * @param {string} key\n * @returns {CacheHandler}\n */\n remove(key) {\n this.store.removeItem(this.keyPrefix + key);\n return this;\n }\n\n /**\n * Remove all items regardless of expiry time\n *\n * @returns {CacheHandler}\n */\n removeAll() {\n this.store.clearByPrefix(this.keyPrefix);\n return this;\n }\n\n /**\n * Remove item if expired, keep otherwise\n *\n * @param {string} key\n * @returns {CacheHandler}\n */\n expire(key) {\n const cached = this.store.getItem(this.keyPrefix + key);\n if (cached) {\n if (cached.expires <= Date.now()) {\n this.store.removeItem(this.keyPrefix + key);\n }\n }\n return null;\n }\n\n /**\n * Remove expired items\n *\n * @returns {CacheHandler}\n */\n expireAll() {\n const caches = this.store.getItemsByPrefix(this.keyPrefix);\n const now = Date.now();\n for (let [key, cached] of Object.entries(caches)) {\n if (cached.expires <= now) {\n this.store.removeItem(key);\n }\n }\n return this;\n }\n}\n\n// Standard cache with GDPR-compliant localStore and standard cache prefix\nconst cache = new CacheHandler(localStore, CACHE_PREFIX);\n\nexport { CACHE_KEYS, CacheHandler, cache };\n","export default {\n ADD_ITEM_ON_DISPLAY: 'SEARCH/ADD_ITEM_ON_DISPLAY',\n ADD_SEARCH_RESULTS: 'SEARCH/ADD_SEARCH_RESULTS',\n CHANGE_SORT_VALUE: 'SEARCH/CHANGE_SORT_VALUE',\n HANDLE_SEARCH_RESULTS_ERROR: 'SEARCH/HANDLE_SEARCH_RESULTS_ERROR',\n LOCATION_CHANGE: 'SEARCH/ROUTER_DISPATCHED_ROUTE_CHANGE',\n RECEIVE_SEARCH_RESULTS: 'SEARCH/RECEIVE_SEARCH_RESULTS',\n REMOVE_ITEM_ON_DISPLAY: 'SEARCH/REMOVE_ITEM_ON_DISPLAY',\n REQUEST_SEARCH_RESULTS: 'SEARCH/REQUEST_SEARCH_RESULTS',\n SET_ACTIVE_CATEGORY: 'SEARCH/SET_ACTIVE_CATEGORY',\n SET_ACTIVE_FILTER: 'SEARCH/SET_ACTIVE_FILTER',\n SET_CATEGORY_PATH: 'SEARCH/SET_CATEGORY_PATH',\n SET_CURRENT_CATEGORY_ID: 'SEARCH/SET_CURRENT_CATEGORY_ID',\n SET_SINGLE_FILTER: 'SEARCH/SET_SINGLE_FILTER_VALUE',\n STOP_REQUEST_SEARCH_RESULTS: 'SEARCH/STOP_REQUEST_SEARCH_RESULTS'\n};\n","export default {\n TOGGLE_HEADER_SEARCH: 'UI/TOGGLE_HEADER_SEARCH',\n OPEN_GDPR_MODAL: 'UI/OPEN_GDPR_MODAL',\n CLOSE_GDPR_MODAL: 'UI/CLOSE_GDPR_MODAL',\n OPEN_GDPR_SETTINGS: 'UI/OPEN_GDPR_SETTINGS',\n CLOSE_GDPR_SETTINGS: 'UI/CLOSE_GDPR_SETTINGS',\n OPEN_QUICK_VIEW: 'UI/OPEN_QUICK_VIEW',\n CLOSE_QUICK_VIEW: 'UI/CLOSE_QUICK_VIEW',\n OPEN_VIDEO_MODAL: 'UI/OPEN_VIDEO_MODAL',\n CLOSE_VIDEO_MODAL: 'UI/CLOSE_VIDEO_MODAL',\n OPEN_MESSAGING_MODAL: 'UI/OPEN_MESSAGING_MODAL',\n CLOSE_MESSAGING_MODAL: 'UI/CLOSE_MESSAGING_MODAL',\n OPEN_NOTIFICATION_OPTIN_MODAL: 'UI/OPEN_NOTIFICATION_OPTIN_MODAL',\n CLOSE_NOTIFICATION_OPTIN_MODAL: 'UI/CLOSE_NOTIFICATION_OPTIN_MODAL',\n ITEM_LAYOUT: 'UI/ITEM_LAYOUT',\n UPDATE_SYSTEM_MESSAGES: 'UI/UPDATE_SYSTEM_MESSAGES',\n UPDATE_MESSAGING_NOTIFICATIONS: 'UI/UPDATE_MESSAGING_NOTIFICATIONS',\n OPEN_PROFILE_MENU: 'UI/OPEN_PROFILE_MENU',\n CLOSE_PROFILE_MENU: 'UI/CLOSE_PROFILE_MENU',\n OPEN_CATEGORY_DROPDOWN_MENU: 'UI/OPEN_CATEGORY_DROPDOWN_MENU',\n CLOSE_CATEGORY_DROPDOWN_MENU: 'UI/CLOSE_CATEGORY_DROPDOWN_MENU',\n OPEN_SEARCH_FORM: 'UI/OPEN_SEARCH_FORM',\n CLOSE_SEARCH_FORM: 'UI/CLOSE_SEARCH_FORM',\n REQUEST_ITEM_SETTINGS: 'UI/REQUEST_ITEM_SETTINGS',\n OPEN_ITEM_SETTINGS: 'UI/OPEN_ITEM_SETTINGS',\n CLOSE_ITEM_SETTINGS: 'UI/CLOSE_ITEM_SETTINGS',\n SITE_LAYOUT: 'UI/SITE_LAYOUT',\n // General action types without prefix that many reducers can listen to\n LOG_OUT: 'LOG_OUT'\n};\n","export default {\n SET_PAGE_TYPE: 'PAGE/SET_PAGE_TYPE',\n SET_PAGE_META: 'PAGE/SET_PAGE_META'\n};\n","export default {\n SET_PREFERRED: 'LANGUAGE/SET_PREFERRED',\n DISMISS_TOOLTIP: 'LANGUAGE/DISMISS_TOOLTIP',\n DISMISS_OPTOUT_TOOLTIP: 'LANGUAGE/DISMISS_OPTOUT_TOOLTIP'\n};\n","import 'underscore';\n\nfunction validate(textWithHtml) {\n var elm = document.createElement('div');\n elm.innerHTML = textWithHtml || '';\n if (elm.textContent) {\n return elm.textContent.trim() !== '' ? null : 'Beskrivning saknas';\n } else if (elm.innerText) {\n return elm.innerText.trim() !== '' ? null : 'Beskrivning saknas';\n }\n return 'Beskrivning saknas';\n}\n\n// By ensuring that shortDescription is always a string makes\n// it easy to know when it has really changed to something significant.\nfunction ensureString(s) {\n return !s ? '' : s;\n}\n\nvar initialState = {\n longDescription: null,\n validationError: null,\n isCurrentDescriptionFromDraft: false,\n fromDraftCounter: 0\n};\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_LONG_DESCRIPTION_FROM_DRAFT':\n return _.assign({}, state, {\n isCurrentDescriptionFromDraft: true,\n longDescription: ensureString(action.payload),\n validationError: validate(action.payload),\n fromDraftCounter: state.fromDraftCounter + 1\n });\n case 'SET_LONG_DESCRIPTION':\n return _.assign({}, state, {\n isCurrentDescriptionFromDraft: false,\n longDescription: ensureString(action.payload),\n validationError: validate(action.payload)\n });\n case 'RESET_LONG_DESCRIPTION': {\n const defaultValue = null;\n return _.assign({}, state, {\n isCurrentDescriptionFromDraft: false,\n longDescription: defaultValue,\n validationError: validate(defaultValue)\n });\n }\n default:\n return state;\n }\n};\n","/* eslint-disable promise/always-return */\n/* eslint-disable promise/catch-or-return */\nimport 'underscore';\nimport userData from './user-data';\nimport { toLocalizedRiotUrl } from './../utils/language';\n\nvar initData = window.sellingGlobalData || {};\nvar defaultDrafts = initData.defaultDrafts;\n\nfunction postJson(url, draft) {\n return $.ajax({\n type: 'POST',\n contentType: 'application/json',\n url: url,\n data: JSON.stringify(draft),\n dataType: 'json'\n });\n}\n\nfunction resetUnwantedProperties(draft) {\n draft.itemId = 0;\n}\n\nfunction isNullOrUndefined(val) {\n return _.isNull(val) || _.isUndefined(val);\n}\n\nfunction getType(draft) {\n var hasOpeningPrice = !isNullOrUndefined(draft.openingBid);\n var hasFixedPrice = !isNullOrUndefined(draft.fixedPrice);\n if (hasOpeningPrice && !hasFixedPrice) {\n return 'Auction';\n }\n\n if (hasOpeningPrice && hasFixedPrice) {\n return 'AuctionBin';\n }\n\n if (!hasOpeningPrice && hasFixedPrice) {\n return 'PureBin';\n }\n\n return 'Unknown';\n}\n\nfunction ensureApplicationId(draft) {\n if (!draft.metadata) {\n draft.metadata = {};\n }\n draft.metadata.applicationId = 'SYI-Riot';\n}\n\nfunction ensureBraintree(draft) {\n if (\n userData.braintree.isBraintreeOnly &&\n draft.paymentOptions.length == 0\n ) {\n draft.paymentOptions.push('Braintree');\n }\n}\n\nconst isPureBin = function(draft) {\n return draft && getType(draft) === 'PureBin';\n};\n\nconst isAuctionBin = function(draft) {\n return draft && getType(draft) === 'AuctionBin';\n};\n\nconst getDefaultTemplateValue = function(propertyName) {\n return defaultDrafts.newTemplate[propertyName];\n};\n\nconst loadDraft = function(draftId) {\n var deferred = $.Deferred();\n\n if (!draftId) {\n deferred.reject();\n } else {\n $.get(toLocalizedRiotUrl('/selling/api/drafts/' + draftId))\n .then(function(data) {\n deferred.resolve(data.draft);\n })\n .fail(function(result) {\n deferred.reject(result);\n });\n }\n\n return deferred.promise();\n};\n\nconst loadDrafts = function() {\n var deferred = $.Deferred();\n\n $.get(toLocalizedRiotUrl('/selling/api/drafts/'))\n .then(function(data) {\n deferred.resolve(data.items);\n })\n .fail(function(result) {\n deferred.reject(result);\n });\n\n return deferred.promise();\n};\n\nconst loadDefaultDraft = function() {\n return _.clone(defaultDrafts.newItem);\n};\n\nconst loadDefaultTemplateDraft = function() {\n return _.clone(defaultDrafts.newTemplate);\n};\n\nconst loadDraftFromTemplate = function(templateId) {\n var deferred = $.Deferred();\n\n postJson(toLocalizedRiotUrl('/selling/api/drafts/from-template'), {\n templateId: templateId\n })\n .success(function(data) {\n let draft = data.draft;\n resetUnwantedProperties(draft);\n draft.draftReason = 'Template';\n deferred.resolve(draft);\n })\n .error(function() {\n deferred.reject('Could not load the draft from the template');\n });\n\n return deferred.promise();\n};\n\nconst saveDraft = function(draft) {\n var deferred = $.Deferred();\n if (draft.draftReason === 'Template') {\n // Drafts for Templates cannot be saved\n deferred.reject('Cannot save Template draft');\n return deferred.promise();\n }\n\n ensureApplicationId(draft);\n ensureBraintree(draft);\n\n postJson(toLocalizedRiotUrl('/selling/api/drafts'), draft)\n .success(data => {\n if (data.errorCode) {\n deferred.reject(data);\n } else if (data.draftId) {\n deferred.resolve(data);\n } else {\n deferred.reject(data);\n }\n })\n .error(result => {\n deferred.reject(result);\n });\n return deferred.promise();\n};\n\nconst resolveImages = syiSlice => {\n var slots = syiSlice.images.slots;\n var images = [];\n for (var i = 0; i < slots.length; i++) {\n var slot = slots[i];\n if (slot.imageId == null) {\n continue;\n }\n if (slot.isListingImage) {\n images.push({\n draftImage: null,\n listingImage: {\n imageId: slot.imageId,\n rotationDegrees: slot.rotationDegrees,\n filename: slot.filename,\n imageGroupId: slot.imageGroupId\n },\n imageUrl: slot.imageUrl\n });\n } else {\n images.push({\n draftImage: {\n imageId: slot.imageId,\n rotationDegrees: slot.rotationDegrees\n },\n listingImage: null,\n imageUrl: slot.imageUrl\n });\n }\n }\n return images;\n};\n\nconst getCustomEndTime = itemDuration => {\n if (\n !_.isString(itemDuration.customEndTimeHour) ||\n !_.isString(itemDuration.customEndTimeMinute)\n ) {\n return null;\n }\n\n return (\n itemDuration.customEndTimeHour + ':' + itemDuration.customEndTimeMinute\n );\n};\n\nconst buildDraftFromState = syiSlice => {\n var draft = {};\n draft.draftId = syiSlice.draft.draftId;\n draft.draftReason = syiSlice.draft.draftReason;\n draft.MemberId = syiSlice.draft.memberId;\n draft.itemId = syiSlice.draft.itemId;\n draft.restart = syiSlice.draft.restart;\n draft.publishedPromoted = syiSlice.draft.publishedPromoted;\n draft.publishedHighlighted = syiSlice.draft.publishedHighlighted;\n draft.createdDate = syiSlice.draft.createdDate;\n draft.lastModifiedDate = syiSlice.draft.lastModifiedDate;\n draft.publishedDate = syiSlice.draft.publishedDate;\n draft.publishedAsItemType = syiSlice.draft.publishedAsItemType;\n draft.reference = syiSlice.draft.reference;\n draft.additionalDescriptions = syiSlice.draft.additionalDescriptions; //TODO\n draft.metadata = syiSlice.draft.metadata;\n if (syiSlice.draft.templateId) {\n draft.templateId = syiSlice.draft.templateId;\n }\n if (syiSlice.draft.templateName) {\n draft.templateName = syiSlice.draft.templateName;\n }\n\n draft.shortDescription = syiSlice.shortDescription.shortDescription;\n draft.longDescription = syiSlice.longDescription.longDescription;\n draft.categoryId = syiSlice.category.draftCategoryId;\n // categoryPath is needed on frontend for when cancelling edit of property.\n draft.categoryPath = syiSlice.category.draftCategoryPath;\n draft.images = resolveImages(syiSlice);\n draft.openingBid = syiSlice.price.openingBid;\n draft.reservePrice = syiSlice.price.reservePrice;\n draft.fixedPrice = syiSlice.price.isPureBinSelected\n ? syiSlice.price.fixedPrice\n : syiSlice.price.auctionBinPrice;\n draft.vat = syiSlice.price.vat;\n\n draft.durationDays = syiSlice.itemDuration.durationDays;\n draft.customEndTime = getCustomEndTime(syiSlice.itemDuration);\n draft.shippingOptions = syiSlice.shipping.selectedShippingOptions;\n draft.paymentOptions = syiSlice.payment.selectedPaymentOptions;\n\n draft.itemCondition = syiSlice.itemCondition.itemCondition;\n draft.allowedBuyerRegion = syiSlice.buyerRegion.selectedBuyerRegion;\n\n draft.campaignCode = syiSlice.campaignCode.campaignCode;\n draft.campaignCodeId = syiSlice.campaignCode.campaignCodeId;\n\n draft.displayPromoted = syiSlice.extraFeatures.displayPromoted;\n draft.displayHighlighted = syiSlice.extraFeatures.displayHighlighted;\n\n draft.charityId = syiSlice.charity.charityId;\n draft.allowZeroDayAuctions = syiSlice.charity.allowZeroDayAuctions;\n draft.version = syiSlice.draft.version;\n\n draft.attributeValues = {\n termAttributeValues: syiSlice.attributes.categoryAttributes.map(\n attribute => {\n const values = attribute.options.reduce((acc, option) => {\n if (option.isActive) {\n acc.push(option.value);\n }\n return acc;\n }, []);\n return {\n id: attribute.id,\n backingField: attribute.backingField,\n userGenerated: true,\n values\n };\n }\n )\n };\n\n return draft;\n};\n\nconst deleteDraft = function(draftId) {\n return deleteDrafts([draftId]);\n};\n\nconst deleteDrafts = function(draftIds) {\n var deferred = $.Deferred();\n\n $.post(toLocalizedRiotUrl('/selling/api/drafts/delete'), {\n draftIds: draftIds\n })\n .done(function() {\n deferred.resolve();\n })\n .fail(function() {\n deferred.reject('Could not delete the draft');\n });\n\n return deferred.promise();\n};\n\nexport default {\n isPureBin,\n isAuctionBin,\n getDefaultTemplateValue,\n loadDraft,\n loadDrafts,\n loadDefaultDraft,\n loadDefaultTemplateDraft,\n loadDraftFromTemplate,\n saveDraft,\n buildDraftFromState,\n deleteDraft,\n deleteDrafts,\n getCustomEndTime\n};\n","export const MODAL_TYPES = {\n default: 'default',\n wishlistReminders: 'wishlistReminders',\n selling: 'selling'\n};\n\nexport const CHANNEL_TAG_GROUPS = {\n wishlistReminders: [\n 'wishlist_reminder_3_min_optin',\n 'wishlist_reminder_15_min_optin'\n ],\n buyingListingOutbid: ['member_outbid_optin'],\n buyingListingWon: ['member_won_optin'],\n sellingListingFirstBid: ['selling_first_bid_optin'],\n sellingListingAllBids: ['selling_new_bid_optin'],\n sellingListingSold: ['selling_sold_optin'],\n sellingPaymentReceived: ['selling_payment_received_optin']\n};\n","const resolveCode = (enabled, currencyCodeOrNull, currencies) => {\n const currency = resolveCurrency(enabled, currencyCodeOrNull, currencies);\n return currency ? currency.code : null;\n};\n\nconst resolveCurrency = (enabled, currencyCodeOrNull, currencies) => {\n if (!enabled || !currencyCodeOrNull) {\n return null;\n }\n const result = (currencies || []).find(\n currency => currency.code === currencyCodeOrNull\n );\n if (result) {\n return result;\n }\n return null;\n};\n\nexport { resolveCode, resolveCurrency };\n","const optionHasError = option => !option.type;\n\nexport const ensureGoodShippingOptions = shippingOptions => {\n shippingOptions = shippingOptions || [];\n return shippingOptions.find(optionHasError) ? [] : shippingOptions;\n};\n","export default {\n list: [],\n isFetching: false,\n error: null\n};\n","export default {\n RESET: 'BANK-ID/RESET',\n START_AUTH: 'BANK-ID/START_AUTH',\n IN_PROGRESS: 'BANK-ID/BANKID_IN_PROGRESS',\n COMPLETED: 'BANK-ID/BANKID_COMPLETED',\n SET_ERROR: 'BANK-ID/SET_ERROR',\n CLOSE: 'BANK-ID/CLOSE'\n};\n","import axios from 'axios';\nimport qs from 'qs';\nimport {\n utilizeCancelToken,\n checkResponseVersion,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\nimport { logger } from 'packages';\n\n/**\n *\n * @param {string} endpoint\n * @param {object} params\n * @param {string} baseURL\n * @param version\n * @returns {Promise<*>}\n */\nexport const getSearchResults = async (\n endpoint,\n params,\n baseURL = '',\n version\n) => {\n if (!params) {\n if (process && process.env && process.env.NODE_ENV !== 'production') {\n logger(\n 'getSearchResults must have queryParams as the first argument',\n true\n );\n }\n return;\n }\n\n const { cancel, cancelToken } = utilizeCancelToken('fetchCategoryList');\n if (cancel) cancel();\n\n return axios\n .get(`${endpoint}.json`, {\n cancelToken,\n baseURL,\n params,\n paramsSerializer: function(params) {\n return qs.stringify(params, { arrayFormat: 'repeat' });\n }\n })\n .then(version ? checkResponseVersion(version) : response => response)\n .then(finalizeResponse())\n .catch(handleError());\n};\n","import 'underscore';\n\nvar initialState = {\n shortDescription: null,\n validationError: null\n};\n\nfunction validate(newState) {\n newState.validationError =\n newState.shortDescription && newState.shortDescription.trim() !== ''\n ? null\n : 'Rubrik saknas';\n return newState;\n}\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_SHORT_DESCRIPTION':\n return validate(\n _.assign({}, state, { shortDescription: action.payload })\n );\n case 'RESET_SHORT_DESCRIPTION':\n return validate(_.assign({}, state, { shortDescription: null }));\n default:\n return state;\n }\n};\n","var initialState = {\n shortDescription: null,\n longDescription: null,\n categoryId: null,\n images: null,\n openingBid: null,\n reservePrice: null,\n fixedPrice: null,\n durationDays: null,\n customEndTime: null,\n shippingOptions: null,\n paymentOptions: null,\n itemCondition: null,\n step1: true,\n step2: true,\n step3: true,\n step4: true\n};\n\nexport default (state, action) => {\n var step1Errors = function(state) {\n return (\n !!state.shortDescription ||\n !!state.categoryId ||\n !!state.images ||\n !!state.longDescription ||\n !!state.itemCondition\n );\n };\n\n var step2Errors = function(state) {\n return (\n !!state.openingBid ||\n !!state.reservePrice ||\n !!state.fixedPrice ||\n !!state.durationDays ||\n !!state.customEndTime\n );\n };\n\n var step3Errors = function(state) {\n return !!state.shippingOptions;\n };\n\n var step4Errors = function(state) {\n return !!state.paymentOptions;\n };\n\n state = state || initialState;\n switch (action.type) {\n case 'SET_ERRORS':\n state = _.assign({}, action.errors);\n break;\n case 'SET_ERROR':\n var tmp = {};\n tmp[action.propertyName] = action.error;\n state = _.assign({}, state, tmp);\n break;\n default:\n return state;\n }\n\n const e1 = step1Errors(state);\n const e2 = step2Errors(state);\n const e3 = step3Errors(state);\n const e4 = step4Errors(state);\n state = _.assign({}, state, {\n step1: e1 || undefined,\n step2: e2 || undefined,\n step3: e3 || undefined,\n step4: e4 || undefined\n });\n\n return state;\n};\n","export default {\n SET_PREFERRED_CURRENCY: 'CURRENCY/SET_PREFERRED_CURRENCY',\n SET_CURRENCY_IF_NOT_CHOSEN: 'CURRENCY/SET_CURRENCY_IF_NOT_CHOSEN'\n};\n","import { toLocalizedUrl } from 'tradera-utils/url';\n\nexport const toLocalizedRiotUrl = url => toLocalizedUrl(url, getLanguage());\n\nlet language;\nexport const getLanguage = () => {\n if (language === '' || language === null || language === undefined) {\n language = document.querySelector('html').getAttribute('lang');\n }\n\n return language;\n};\n","import { CHANNEL_TAG_GROUPS } from 'tradera-state/push-notifications/constants';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\nimport logger from 'packages/logger';\n\n/**\n * get the urban airship sdk.\n * @returns obj if null then no sdk object available\n */\nexport const getUrbanSdk = () => {\n return new Promise(resolve => {\n // script from urban airship not loaded\n if (!window.UA) {\n return resolve(null);\n }\n\n // is already loaded?\n if (window.UACache) {\n return resolve(window.UACache);\n }\n\n UA.then(async sdk => {\n if (sdk !== null && !sdk.isSupported) {\n sdk = null;\n }\n window.UACache = sdk;\n return resolve(window.UACache);\n }).catch(() => {\n // browser is most likely not supported, return null\n window.UACache = null;\n return resolve(null);\n });\n });\n};\n\nexport const getTagGroupsFromUrbanAirship = async () => {\n try {\n const sdk = await getUrbanSdk();\n if (sdk.channel === null) {\n return null;\n }\n\n // check what tag groups are active\n let tagGroups = {};\n for (const [group, groupTags] of Object.entries(CHANNEL_TAG_GROUPS)) {\n for (const tag of groupTags) {\n tagGroups[group] = sdk.channel.tags.has(tag) === true;\n if (tagGroups[group] === true) {\n break;\n }\n }\n }\n return tagGroups;\n } catch (error) {\n logger(error);\n }\n};\n\nexport const isPushEnabled = getState => {\n const {\n member,\n initData: { featureSwitches }\n } = getState();\n\n // something blocking notifications modal from being shown?\n if (\n !GdprSettings.isFunctionalEnabled() ||\n !member.isLoggedIn ||\n featureSwitches['web-push-notifications'] !== true\n ) {\n return false;\n }\n return true;\n};\n","/**\n * HOW IT WORKS\n *\n * urban airship has something called channels. A tradera member subscribes to a channel to get push notifications.\n * each channel has tags that indicate what kind of push notifications the member wants to receive. In the case of the wish list\n * reminder that particular setting subscribes the user to 2 different notifications: reminder 15 minutes before auction ends\n * and reminder 3 minutes before the auction ends. In order to be able to have 1 push notification setting that subscribes\n * to multiple push notifications at tradera we call these tag groups.\n *\n *\n * Urban airship docs:\n * https://docs.airship.com/reference/libraries/web-notify-sdk/latest/index.html\n *\n * web_version_2:\n * Version 1 of push notifications was just targetted at wish list reminders, 3 min and 15 min. When this release was done\n * the code did subscribe the user to all notifications even though the user only wanted to signup for wish list reminders.\n * Since the app push notifier only sent wishlist reminders for web push it was not a problem that the user was subscribed to all\n * kinds of notifications. In the next release when tradera wanted to offer all sorts of push notifications but wanted the users\n * to on their own sign up then we had to update all the current subscriptions. Since this is not possible via the urban airship\n * to update channels via the REST API and then see the updated reflected in the Web SDK we had to introduce the tag web_version_2\n * that indicates if the user has updated their push notification settings.\n *\n * opt-in dialog sample usage:\n * import uiActions from 'tradera-state/ui/actions';\n * import { MODAL_TYPES } from 'tradera-constants/push-notifications';\n *\n * uiActions.openNotificationOptinModal(\n * MODAL_TYPES.wishlistReminders\n * )\n *\n */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport logger from 'packages/logger';\nimport {\n CHANNEL_TAG_GROUPS,\n MODAL_TYPES\n} from 'tradera-state/push-notifications/constants';\nimport { localStore } from 'utils/storage';\nimport { STORAGE_KEYS } from 'tradera-constants/storage';\nimport {\n getUrbanSdk,\n getTagGroupsFromUrbanAirship,\n isPushEnabled\n} from './helpers';\n\nconst pushNotificationsSlice = createSlice({\n name: 'pushNotifications',\n initialState: {\n enabled: false,\n initDone: false,\n pushSupported: false,\n optedIn: false,\n tagGroups: {\n wishlistReminders: false,\n buyingListingOutbid: false,\n buyingListingWon: false,\n sellingListingFirstBid: false,\n sellingListingAllBids: false,\n sellingListingSold: false,\n sellingPaymentReceived: false\n },\n shownModals: {\n [MODAL_TYPES.wishlistReminders]: false,\n [MODAL_TYPES.default]: false,\n [MODAL_TYPES.selling]: false\n }\n },\n reducers: {\n setInitDone(state) {\n state.initDone = true;\n },\n setPushSupported(state, actions) {\n state.pushSupported = actions.payload;\n if (!state.pushSupported) {\n state.optedIn = false;\n }\n },\n setOptedInValue(state, action) {\n state.optedIn = action.payload;\n },\n setTagGroupsValue(state, action) {\n const tagGroups = action.payload;\n state.tagGroups = { ...state.tagGroups, ...tagGroups };\n },\n setShownModalTrue(state, action) {\n const modalType = action.payload;\n state.shownModals[modalType] = true;\n localStore.setItem(\n STORAGE_KEYS.WEB_PUSH_SHOWN_MODALS,\n state.shownModals\n );\n },\n setAllShownModals(state, action) {\n const shownModals = action.payload;\n state.shownModals = shownModals;\n localStore.setItem(\n STORAGE_KEYS.WEB_PUSH_SHOWN_MODALS,\n state.shownModals\n );\n },\n setEnabled(state, action) {\n const enabled = action.payload;\n state.enabled = enabled;\n }\n }\n});\n\nconst actions = pushNotificationsSlice.actions;\nexport const { setShownModalTrue } = actions;\nexport default pushNotificationsSlice.reducer;\n\n/**\n * this should be called as soon as the store is mounted\n */\nexport const init = () => async (dispatch, getState) => {\n let sdk = null;\n try {\n sdk = await getUrbanSdk();\n } catch (error) {\n // not able to init sdk\n }\n dispatch(\n actions.setPushSupported(\n sdk !== null && sdk.canRegister && sdk.isSupported\n )\n );\n\n if (sdk !== null && sdk.channel !== null) {\n dispatch(actions.setOptedInValue(sdk.channel.optedIn));\n\n // has this user been upgraded to version 2?\n if (!sdk.channel.tags.has('web_version_2')) {\n await sdk.channel.tags.set([\n 'wishlist_reminder_3_min_optin',\n 'wishlist_reminder_15_min_optin',\n 'web_version_2'\n ]);\n }\n const tagGroups = await getTagGroupsFromUrbanAirship();\n dispatch(actions.setTagGroupsValue(tagGroups));\n }\n dispatch(actions.setEnabled(sdk !== null && isPushEnabled(getState)));\n\n // load modal shown settings from local store\n const shownModals = localStore.getItem(STORAGE_KEYS.WEB_PUSH_SHOWN_MODALS);\n if (shownModals !== null) {\n dispatch(actions.setAllShownModals(shownModals));\n }\n dispatch(actions.setInitDone());\n};\n\nexport const optIn = () => async (dispatch, getState) => {\n try {\n const memberId = getState().member.memberId;\n const sdk = await getUrbanSdk();\n const channel = await sdk.register();\n await channel.namedUser.set(memberId.toString());\n dispatch(actions.setOptedInValue(true));\n return channel;\n } catch (error) {\n return null;\n }\n};\n\nexport const optOut = () => async dispatch => {\n try {\n const sdk = await getUrbanSdk();\n if (sdk !== null && sdk.channel !== null) {\n await sdk.channel.optOut();\n }\n dispatch(actions.setOptedInValue(false));\n } catch (error) {\n return null;\n }\n};\n\nconst saveTagsToUrbanAirshipAndUpdateState = async (\n channel,\n tagGroups,\n tagGroupValue,\n dispatch,\n getState\n) => {\n // check what tag groups to set and not set\n const tagGroupsToSet = { ...getState().pushNotifications.tagGroups };\n for (let t of tagGroups) {\n tagGroupsToSet[t] = tagGroupValue;\n }\n\n // get the actual tags that we want to get push notifications for and\n // register these tags in urban airship\n let channelTags = ['web_version_2'];\n for (const [group, enabled] of Object.entries(tagGroupsToSet)) {\n if (enabled) {\n channelTags = [...channelTags, ...CHANNEL_TAG_GROUPS[group]];\n }\n }\n\n dispatch(actions.setTagGroupsValue(tagGroupsToSet));\n await channel.tags.set(channelTags);\n};\n\nexport const addTagGroups = tagGroupsToAdd => async (dispatch, getState) => {\n try {\n // no sdk? then do nothing\n const sdk = await getUrbanSdk();\n if (sdk === null) {\n return;\n }\n\n let channel = sdk.channel;\n if (channel === null) {\n channel = await dispatch(optIn());\n if (channel === null) {\n dispatch(actions.setPushSupported(false));\n // seems user clicked on block notifications in the browser, abort\n return;\n }\n }\n\n saveTagsToUrbanAirshipAndUpdateState(\n channel,\n tagGroupsToAdd,\n true,\n dispatch,\n getState\n );\n } catch (error) {\n logger(error);\n }\n};\n\nexport const removeTagGroups = tagGroupsToRemove => async (\n dispatch,\n getState\n) => {\n try {\n // no sdk and no subscription? then do nothing\n const sdk = await getUrbanSdk();\n if (sdk === null || sdk.channel === null) {\n return;\n }\n saveTagsToUrbanAirshipAndUpdateState(\n sdk.channel,\n tagGroupsToRemove,\n false,\n dispatch,\n getState\n );\n } catch (error) {\n logger(error);\n }\n};\n","export default {\n SET_ADS: 'ADS/SET_ADS'\n};\n","import $ from 'static/script/libs/jquery';\nimport { component } from 'flightjs';\n\nfunction Logger() {\n this.logInfo = function(e, msg) {\n this._log(e, msg, 'js-info');\n };\n\n this.logError = function(e, msg) {\n this._log(e, msg, 'js-onerror');\n };\n\n this._log = function(e, msg, logLevel) {\n let errorMsg;\n\n if (e.message) {\n errorMsg = e.name + ': ' + e.message;\n } else {\n errorMsg = e;\n }\n\n let payload = {\n eventName: logLevel,\n message: msg + ' ' + errorMsg,\n trace: e.stack || ''\n };\n\n $(document).trigger('data:scribe', payload);\n };\n}\n\nexport default component(Logger);\n","/**\n * Count the number of system messages that should cause alerts and badges\n *\n * @param {object} systemMessages\n * @returns {number}\n */\nconst getSystemMessageAlertCount = (systemMessages = {}) => {\n return (\n (systemMessages.InvoiceOverdue ? 1 : 0) +\n (systemMessages.PayoutFailed ? 1 : 0) +\n (systemMessages.PayoutReadyBankAccountMissing ? 1 : 0) +\n (systemMessages.SwishNumberMissing ? 1 : 0) +\n (systemMessages.HyperwalletPayeeVerificationRequired ? 1 : 0)\n );\n};\n\nexport { getSystemMessageAlertCount };\n","import CONSTANTS from 'tradera-constants/state';\nimport { cache, CACHE_KEYS } from 'tradera-utils/cache';\nimport actionTypes from './action-types';\nimport getInitialState from './initial-state';\nimport { getSystemMessageAlertCount } from './helpers';\n\nconst MESSAGING_NOTIFICATIONS_CACHE_TTL = 30 * 1000;\n\nexport default (state = {}, action) => {\n const toggleHeaderSearch = () => ({\n ...state,\n showHeaderSearch:\n action.payload === undefined\n ? !state.showHeaderSearch\n : !!action.payload\n });\n\n const openGdprModal = () => ({\n ...state,\n gdpr: {\n ...state.gdpr,\n modalOpen: true\n }\n });\n\n const closeGdprModal = () => ({\n ...state,\n gdpr: {\n ...state.gdpr,\n modalOpen: false\n }\n });\n\n const openGdprSettings = () => ({\n ...state,\n gdpr: {\n ...state.gdpr,\n settingsOpen: true\n }\n });\n\n const closeGdprSettings = () => ({\n ...state,\n gdpr: {\n ...state.gdpr,\n settingsOpen: false\n }\n });\n\n const openQuickView = () => {\n const {\n itemIds = state.quickView.itemIds,\n itemId = state.quickView.itemId\n } = action.payload;\n return {\n ...state,\n quickView: {\n ...state.quickView,\n open: CONSTANTS.MODAL.OPEN,\n itemIds: itemIds,\n currentItem: itemId\n }\n };\n };\n\n const closeQuickView = () => {\n return {\n ...state,\n quickView: {\n ...state.quickView,\n open: CONSTANTS.MODAL.CLOSED\n }\n };\n };\n\n const openVideoModal = () => {\n const { videoId, title, pageType } = action.payload;\n return {\n ...state,\n videoModal: {\n ...state.videoModal,\n open: CONSTANTS.MODAL.OPEN,\n videoId: videoId,\n title: title,\n pageType: pageType\n }\n };\n };\n\n const closeVideoModal = () => {\n return {\n ...state,\n videoModal: {\n ...state.videoModal,\n open: CONSTANTS.MODAL.CLOSED\n }\n };\n };\n\n /*\n Changes made to messaging modal will affect My Tradera as well!\n TODO - test this!\n */\n const openMessagingModal = () => {\n const {\n title = state.messagingModal.title,\n src = state.messagingModal.src,\n participating = state.messagingModal.participating,\n recipientId = state.messagingModal.recipientId,\n item = state.messagingModal.item\n } = action.payload;\n return {\n ...state,\n messagingModal: {\n open: CONSTANTS.MODAL.OPEN,\n title: title,\n src: src,\n participating: participating,\n recipientId: recipientId,\n item: item\n }\n };\n };\n\n const closeMessagingModal = () => {\n return {\n ...state,\n messagingModal: {\n open: CONSTANTS.MODAL.CLOSED\n }\n };\n };\n\n const openNotificationOptinModal = () => {\n const {\n modalType,\n gaLabel,\n title,\n description,\n tagGroups\n } = action.payload;\n return {\n ...state,\n notificationOptinModal: {\n open: CONSTANTS.MODAL.OPEN,\n modalType,\n gaLabel,\n title,\n description,\n tagGroups\n }\n };\n };\n\n const closeNotificationOptinModal = () => {\n return {\n ...state,\n notificationOptinModal: {\n open: CONSTANTS.MODAL.CLOSED\n }\n };\n };\n\n const itemLayout = () => {\n if (state.itemLayout === action.payload) {\n return state;\n } else {\n return {\n ...state,\n itemLayout: action.payload\n };\n }\n };\n\n const siteLayout = () => {\n if (state.siteLayout === action.payload) {\n return state;\n } else {\n return {\n ...state,\n siteLayout: action.payload\n };\n }\n };\n\n const updateSystemMessages = () => {\n return {\n ...state,\n systemMessages: {\n ...state.systemMessages,\n ...action.payload\n },\n badges: {\n ...state.badges,\n system: getSystemMessageAlertCount(action.payload)\n }\n };\n };\n\n const updateMessagingNotifications = () => {\n cache.write(\n CACHE_KEYS.MESSAGING_BADGES,\n action.payload,\n MESSAGING_NOTIFICATIONS_CACHE_TTL\n );\n return {\n ...state,\n badges: {\n ...state.badges,\n messaging: action.payload\n }\n };\n };\n\n const openProfileMenu = () => {\n const { payload } = action;\n return {\n ...state,\n profileMenu: {\n open: CONSTANTS.MODAL.OPEN,\n redirectUrl: payload || false\n }\n };\n };\n\n const closeProfileMenu = () => {\n return {\n ...state,\n profileMenu: {\n ...state.profileMenu,\n open: CONSTANTS.MODAL.CLOSED\n }\n };\n };\n\n const openCategoryDropdownMenu = () => {\n return {\n ...state,\n categoryDropdownMenu: {\n open: CONSTANTS.MODAL.OPEN\n }\n };\n };\n\n const closeCategoryDropdownMenu = () => {\n return {\n ...state,\n categoryDropdownMenu: {\n open: CONSTANTS.MODAL.CLOSED\n }\n };\n };\n\n const openSearchForm = () => {\n return {\n ...state,\n showSearchForm: true\n };\n };\n\n const closeSearchForm = () => {\n return {\n ...state,\n showSearchForm: false\n };\n };\n\n const logOut = () => {\n const { badges } = getInitialState({});\n return {\n ...state,\n badges\n };\n };\n\n const openItemSettings = () => {\n const { payload } = action;\n return {\n ...state,\n itemSettings: {\n open: CONSTANTS.MODAL.OPEN,\n ...payload\n }\n };\n };\n\n const closeItemSettings = () => {\n return {\n ...state,\n itemSettings: {\n open: CONSTANTS.MODAL.CLOSED\n }\n };\n };\n\n const def = () => state;\n\n const reducers = {\n [actionTypes.TOGGLE_HEADER_SEARCH]: toggleHeaderSearch,\n [actionTypes.OPEN_GDPR_MODAL]: openGdprModal,\n [actionTypes.CLOSE_GDPR_MODAL]: closeGdprModal,\n [actionTypes.OPEN_GDPR_SETTINGS]: openGdprSettings,\n [actionTypes.CLOSE_GDPR_SETTINGS]: closeGdprSettings,\n [actionTypes.OPEN_QUICK_VIEW]: openQuickView,\n [actionTypes.CLOSE_QUICK_VIEW]: closeQuickView,\n [actionTypes.OPEN_VIDEO_MODAL]: openVideoModal,\n [actionTypes.CLOSE_VIDEO_MODAL]: closeVideoModal,\n [actionTypes.OPEN_MESSAGING_MODAL]: openMessagingModal,\n [actionTypes.CLOSE_MESSAGING_MODAL]: closeMessagingModal,\n [actionTypes.OPEN_NOTIFICATION_OPTIN_MODAL]: openNotificationOptinModal,\n [actionTypes.CLOSE_NOTIFICATION_OPTIN_MODAL]: closeNotificationOptinModal,\n [actionTypes.ITEM_LAYOUT]: itemLayout,\n [actionTypes.UPDATE_SYSTEM_MESSAGES]: updateSystemMessages,\n [actionTypes.UPDATE_MESSAGING_NOTIFICATIONS]: updateMessagingNotifications,\n [actionTypes.OPEN_PROFILE_MENU]: openProfileMenu,\n [actionTypes.CLOSE_PROFILE_MENU]: closeProfileMenu,\n [actionTypes.OPEN_CATEGORY_DROPDOWN_MENU]: openCategoryDropdownMenu,\n [actionTypes.CLOSE_CATEGORY_DROPDOWN_MENU]: closeCategoryDropdownMenu,\n [actionTypes.OPEN_SEARCH_FORM]: openSearchForm,\n [actionTypes.CLOSE_SEARCH_FORM]: closeSearchForm,\n [actionTypes.OPEN_ITEM_SETTINGS]: openItemSettings,\n [actionTypes.CLOSE_ITEM_SETTINGS]: closeItemSettings,\n [actionTypes.SITE_LAYOUT]: siteLayout,\n [actionTypes.LOG_OUT]: logOut\n };\n\n return !action || !action.type || !reducers[action.type]\n ? def()\n : reducers[action.type]();\n};\n","export default {\n REQUEST_CATEGORY_LIST: 'CATEGORIES/REQUEST_CATEGORY_LIST',\n RECEIVE_CATEGORY_LIST: 'CATEGORIES/RECEIVE_CATEGORY_LIST',\n HANDLE_CATEGORY_LIST_ERROR: 'CATEGORIES/HANDLE_CATEGORY_LIST_ERROR'\n};\n","import 'underscore';\n\nvar initialState = {\n itemCondition: null,\n validationError: null,\n selectionError: null\n};\n\nfunction validate(newState) {\n newState.validationError =\n newState.itemCondition == null ||\n newState.itemCondition.trim() == '' ||\n newState.itemCondition === 'Undefined'\n ? 'Skick måste anges'\n : newState.selectionError;\n\n return newState;\n}\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_ITEM_CONDITION':\n return validate(\n _.assign({}, state, { itemCondition: action.payload })\n );\n case 'RESET_ITEM_CONDITION':\n return validate(_.assign({}, initialState));\n case 'SET_ITEM_CONDITION_SELECTION_ERROR':\n return validate(\n _.assign({}, state, {\n selectionError: action.payload\n })\n );\n default:\n return state;\n }\n};\n","export default {\n MODAL: {\n OPEN: 'open',\n CLOSED: 'closed'\n },\n MENU: {\n OPEN: 'open',\n CLOSED: 'closed'\n },\n ITEM_LAYOUT: {\n GRID: 'layout-grid',\n LIST: 'layout-list'\n }\n};\n","import 'underscore';\n\nvar initialState = {\n draftBeforeChange: null\n};\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_DRAFT_BEFORE_CHANGE':\n return _.assign({}, state, { draftBeforeChange: action.payload });\n default:\n return state;\n }\n};\n","/**\n * This is a helper class for sending google analytics events for the search experience\n * This is a wrapper for the GtmService. Do not call GTM or GA directly but use the GtmService.\n * Events tracked by this file set all GA categories to \"Search\" to namespace events\n */\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\n\nconst GA_EVENT_SEARCH_CATEGORY = 'Search';\n\nconst filterNameMappings = {\n itemCondition: 'Condition',\n itemType: 'Ad Format',\n sellerType: 'Seller Type',\n county: 'Geo - Selected',\n countyBox: 'Geo',\n itemStatus: 'Item Status',\n shoeTypes: 'Type',\n subDepartments: 'Department',\n shoeSizes: 'Size',\n brandTags: 'Brand',\n sortBy: 'Sorting',\n price: 'Price',\n Layout: 'Layout',\n categorySelected: 'Category - Selected',\n categoryHorizontalSelected: 'Category - Hrz nav - Selected'\n};\n\n/**\n * Generic action tracker for things that happen in the Search.\n * @param {string} action\n * @param {string} label\n */\nexport const trackAction = (action, label) => {\n GtmService.trackAction(GA_EVENT_SEARCH_CATEGORY, action, label);\n};\n\nconst getFilterLabel = key => {\n if (key in filterNameMappings) {\n return filterNameMappings[key];\n } else {\n return key;\n }\n};\n\n/**\n * translates the tech names of the filters to ga friendly names. to see the techie names a filter has\n * see the URL paramters on a search or a browse page.\n * @param {string} filter the name of the filter\n * @param {string} value the value the filter gets\n */\nexport const trackFilter = (filter, value) => {\n let action = getFilterLabel(filter);\n trackAction(`Filter ${action}`, value);\n};\n\nexport const trackNavigation = label => {\n trackAction('Navigation', label);\n};\n\nexport const trackAccordion = filter => {\n let action = getFilterLabel(filter);\n trackAction('Filter box - Open/Close', action);\n};\n\nexport const trackButton = label => {\n trackAction('Button', label);\n};\n\nexport const trackLink = (action, label) => {\n trackAction(`Link - ${action}`, label);\n};\n\nexport const trackPriceFilter = (fromPrice, toPrice) => {\n if (fromPrice === '1') {\n fromPrice = undefined;\n }\n\n // get a label that represents the current selected value\n let lbl = [];\n if (typeof fromPrice !== 'undefined') {\n lbl.push('Min set');\n }\n if (typeof toPrice !== 'undefined') {\n lbl.push('Max set');\n }\n if (lbl.length === 0) {\n lbl.push('All');\n }\n trackAction(`Filter Price`, lbl.join(' and '));\n};\n\n/**\n * Tracks to google tag manager that a new search was made\n * @param {object} searchResults data returned fromm ajax when doing a search or browsing.\n * Note: needs to be the normalized version.\n */\nexport const trackPageView = (categoryPath, items, metaTitle) => {\n if (typeof categoryPath === 'undefined' || categoryPath.length == 0) {\n return;\n }\n\n let reverseCategoryPath = categoryPath\n .filter(c => c.id > 0)\n .map(c => c.name)\n .reverse();\n\n GtmService.trackGtmEvent('viewCategory', {\n category: reverseCategoryPath.join(' > ')\n });\n\n // GtmService.push({ 'page.listingLayout': itemLayout });\n GtmService.push({\n 'page.content-group-2': reverseCategoryPath.slice(0, 3).join(' > '),\n categoryId: categoryPath.length > 0 ? categoryPath[0].id : null\n });\n\n if (items && items.length >= 3) {\n GtmService.trackGtmEvent('viewItems', {\n itemIds: items.slice(0, 3),\n keywords: categoryPath[0].name\n });\n }\n\n GtmService.push({\n ga_page_title: metaTitle\n });\n\n GtmService.trackPageView();\n};\n","var map = {\n\t\"./se\": \"40bfee84\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"8bbfd8e3\";","import { createSlice } from '@reduxjs/toolkit';\nimport initialState from './initial-state';\nimport cookieUtil from 'tradera-utils/cookie';\nimport { REGION_PICKER_DISMISSED } from 'tradera-constants/cookies';\n\nconst shippingRegionSlice = createSlice({\n name: 'shippingRegion',\n initialState,\n reducers: {\n setShippingCountry: (state, action) => {\n const { countryCodeIso2 } = action.payload;\n\n state.shippingCountry = state.availableShippingCountries.find(\n country => country.countryCodeIso2 === countryCodeIso2\n );\n },\n setDefaultShippingCountry: state => {\n state.shippingCountry = { countryCodeIso2: 'SE', name: 'Sverige' };\n },\n setAvailableShippingCountries: (state, action) => {\n state.availableShippingCountries = action.payload.shippingCountries;\n state.hasLoadedAvailableShippingCountries = true;\n state.isLoadingAvailableShippingCountries = false;\n },\n beginLoadingAvailableShippingOptions: state => {\n state.isLoadingAvailableShippingCountries = true;\n },\n dismissLocalizationRegionPicker: {\n reducer: state => {\n state.localizationRegionPickerEnabled = false;\n },\n prepare: () => {\n const yearInMilliseconds = 1000 * 60 * 60 * 24 * 365;\n cookieUtil.createCookie(\n REGION_PICKER_DISMISSED,\n true,\n new Date(new Date().getTime() + yearInMilliseconds)\n );\n return {};\n }\n }\n }\n});\n\nexport const {\n setShippingCountry,\n setAvailableShippingCountries,\n beginLoadingAvailableShippingOptions,\n dismissLocalizationRegionPicker,\n setDefaultShippingCountry\n} = shippingRegionSlice.actions;\nexport default shippingRegionSlice.reducer;\n","import axios from 'axios';\n\nimport ENDPOINTS from 'tradera-constants/endpoints';\n\n/**\n * Standardized api error codes\n */\nconst API_ERRORS = {\n IGNORE_ME: 'IGNORE_ME',\n ABORTED: 'ABORTED',\n CANCELLED: 'CANCELLED',\n NETWORK: 'NETWORK',\n TIMEOUT: 'TIMEOUT',\n VERSION_MISMATCH: 'VERSION_MISMATCH',\n LOGGED_OUT: 'LOGGED_OUT'\n};\n\n/**\n * Standard Axios configs\n */\nconst axiosConfigs = {\n // Requests to endpoints with authentication\n authenticated: {\n // Send auth cookies\n withCredentials: true,\n headers: {\n // Force json response\n Accept: 'application/json',\n // For WebAPI\n 'X-Requested-With': 'XMLHttpRequest'\n }\n }\n};\n\nconst isMissingAuthToken = responseString => {\n try {\n const responseObject = JSON.parse(responseString);\n const isMissing =\n responseObject.responseStatus.errorCode === 'MissingAuthToken';\n return isMissing;\n } catch {\n return false;\n }\n};\n\n/**\n * Create Axios instance or decorate existing instance with interceptor for expired token responses\n *\n * @param {AxiosInstance} [axiosInstance]\n * @returns {AxiosInstance}\n */\nfunction axiosWithTokenRefresh(axiosInstance) {\n let instance;\n if (axiosInstance === undefined) {\n instance = axios.create();\n } else {\n instance = axiosInstance;\n }\n instance.interceptors.response.use(\n response => response,\n error => {\n // Intercept errors\n if (error.request) {\n const isUnauthorized = error.request.status === 401;\n if (\n isUnauthorized ||\n isMissingAuthToken(error.request.response)\n ) {\n return axios\n .get(ENDPOINTS.LOGIN_STATE)\n .then(response => response.data)\n .then(({ isLoggedIn }) => {\n // Redo original request with fresh token\n if (isLoggedIn) {\n return axios({\n ...error.config\n });\n } else {\n // eslint-disable-next-line promise/no-return-wrap\n return Promise.reject(API_ERRORS.LOGGED_OUT);\n }\n })\n .catch(newError => {\n isMissingAuthToken(newError.request.response);\n // eslint-disable-next-line promise/no-return-wrap\n return Promise.reject(newError);\n });\n }\n return Promise.reject(error);\n }\n }\n );\n return instance;\n}\n\nconst cancelTokens = {};\n\n/**\n * Create new or return existing cancellation function\n *\n * Usage:\n * const { cancel, cancelToken } = utilizeCancelToken('tokenId')\n * if (cancel) cancel();\n * axios.get('http://api.com/...', { cancelToken });\n *\n * @param {string} tokenId - A string ID shared between requests that cancel together\n * @returns {{ cancel: function, cancelToken: function }}\n */\nfunction utilizeCancelToken(tokenId) {\n let cancel;\n if (tokenId in cancelTokens) {\n cancel = cancelTokens[tokenId].cancel;\n }\n cancelTokens[tokenId] = axios.CancelToken.source();\n return {\n cancel,\n cancelToken: cancelTokens[tokenId].token\n };\n}\n\n/**\n * Check response version and throw error if different from current\n *\n * @param {string} version\n * @return {function(*): object|void}\n */\nfunction checkResponseVersion(version = '12.0.0') {\n return response => {\n if (\n response.headers &&\n response.headers['X-Tradera-Version'] &&\n response.headers['X-Tradera-Version'] !== version\n ) {\n throw new Error(API_ERRORS.VERSION_MISMATCH);\n } else {\n return response;\n }\n };\n}\n\n/**\n * Checks redirect response for logged out user\n * This is an old solution. New solutions return a 401 response instead (see handleError).\n * Requires Axios config to include { withCredentials: true }\n *\n * @returns {Function}\n */\nfunction checkResponseLoggedOut() {\n return response => {\n if (\n response.data &&\n typeof response.data === 'string' &&\n response.data.includes('Logga in')\n ) {\n throw new Error(API_ERRORS.LOGGED_OUT);\n } else {\n return response;\n }\n };\n}\n\n/**\n * Final standardized formatting of an api response\n *\n * @returns { function(*): { data: *, status: integer }}\n */\nfunction finalizeResponse() {\n return response => {\n const { data, status } = response;\n return {\n data,\n status\n };\n };\n}\n\n/**\n * Common network request error handling\n *\n * @param {Object.} statusHandlers - { code: message }\n * @returns {function(*=): Promise}\n */\nfunction handleError(statusHandlers = {}) {\n return error => {\n let status = error.response && error.response.status;\n let message = error.message ? error.message : error.toString();\n if (axios.isCancel(error)) {\n error.message = API_ERRORS.CANCELLED;\n } else if (message.includes('timeout') || status === 408) {\n error.message = API_ERRORS.TIMEOUT;\n } else if (message.includes('Network')) {\n error.message = API_ERRORS.NETWORK;\n } else if (message.includes('Request aborted')) {\n error.message = API_ERRORS.ABORTED;\n } else if (status in statusHandlers) {\n error.message = statusHandlers[status];\n }\n return Promise.reject(error);\n };\n}\n\nexport {\n API_ERRORS,\n axiosConfigs,\n axiosWithTokenRefresh,\n utilizeCancelToken,\n checkResponseVersion,\n checkResponseLoggedOut,\n finalizeResponse,\n handleError\n};\n","import 'underscore';\n\nvar initialState = {\n shippingBags: false,\n displayPromoted: false,\n displayHighlighted: false\n};\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_SHIPPING_BAGS':\n return _.assign({}, state, { shippingBags: action.payload });\n case 'SET_DISPLAY_PROMOTED':\n return _.assign({}, state, { displayPromoted: action.payload });\n case 'SET_DISPLAY_HIGHLIGHTED':\n return _.assign({}, state, { displayHighlighted: action.payload });\n default:\n return state;\n }\n};\n","import { cache, CACHE_KEYS } from 'tradera-utils/cache';\n\nexport default () => {\n const recent = cache.read(CACHE_KEYS.RECENTLY_VIEWED_ITEMS) || [];\n return {\n // Items by itemId\n cache: {},\n // List of item ids in ascending cache order (oldest first)\n cacheOrder: [],\n recent\n };\n};\n","export default {\n DEFAULT_ACTION: 'member/default',\n SET_IS_FETCHING_GEOLOCATION: 'MEMBER/SET_IS_FETCHING_GEOLOCATION',\n SET_GEOLOCATION: 'MEMBER/SET_GEOLOCATION',\n FAILED_LOADING_GEOLOCATION: 'MEMBER/FAILED_LOADING_GEOLOCATION'\n};\n","import { compose, createStore, applyMiddleware } from 'redux';\nimport { Provider } from 'react-redux';\nimport React from 'react';\nimport ReduxThunk from 'redux-thunk';\n\nimport {\n formatQueryParams,\n stripItmFromQueryParameters,\n toQueryParameters\n} from 'tradera-utils/url';\nimport initData from 'init-data';\nimport rootReducer from './root-reducer';\nimport initialState from './get-initial-state';\nimport searchActions from './discover/actions';\nimport uiActions from './ui/actions';\nimport * as pushNotificationActions from './push-notifications/push-notifications-slice';\n\n// Ensure only 1 redux store;\nlet reduxStore;\n\n// Apply middlewares via redux compose;\nconst getComposer = () => {\n const middlewares = [ReduxThunk];\n let composeEnhancers;\n // If url contains ?debug-redux devtools will be enabled in production;\n if (\n (process && process.env && process.env.NODE_ENV !== 'production') ||\n window.location.search.includes('debug-redux')\n ) {\n composeEnhancers =\n window['__REDUX_DEVTOOLS_EXTENSION_COMPOSE__'] || compose;\n } else {\n composeEnhancers = compose;\n }\n return composeEnhancers(applyMiddleware(...middlewares));\n};\n\n// Hot reloading\nconst enableWebPackHotModuleReplacementForReducers = (module, store) => {\n if (!module.hot) {\n return;\n }\n module.hot.accept('./root-reducer', () => {\n const nextRootReducer = require('./root-reducer');\n store.replaceReducer(nextRootReducer);\n });\n};\n\nconst configureStore = browserHistory => {\n reduxStore = createStore(\n rootReducer,\n initialState,\n getComposer(browserHistory)\n );\n\n // make it possible to observe state changes. used by syi\n reduxStore.observe = function(select, onChange) {\n var currentState;\n function handleChange() {\n var nextState = select(reduxStore.getState());\n if (nextState !== currentState) {\n var previousState = currentState;\n currentState = nextState;\n onChange(previousState, currentState);\n }\n }\n\n var unsubscribe = reduxStore.subscribe(handleChange);\n handleChange();\n return unsubscribe;\n };\n enableWebPackHotModuleReplacementForReducers(module, reduxStore);\n return reduxStore;\n};\n\nexport const globalStore = () => (reduxStore ? reduxStore : configureStore());\nconst store = globalStore();\n\n/**\n * We hydrate the store with discover results from initData\n * this will be dispatched before any rendering to reduce the time from first byte to first render.\n */\nif (initData && 'discoverResponse' in initData) {\n store.dispatch(\n searchActions.receiveSearchResults({\n endpoint: window.location.pathname,\n queryParams: stripItmFromQueryParameters(\n formatQueryParams(toQueryParameters(window.location.search))\n ),\n result: initData.discoverResponse\n })\n );\n}\n\nstore.dispatch(uiActions.fetchSystemMessages());\nstore.dispatch(pushNotificationActions.init());\nexport default store;\n\nexport const getSyiSlice = state => state.views.syi;\n\nexport const ProviderWithGlobalStore = props => (\n \n);\n","import gtmCore from 'static/script/app/ui/google-tagmanager-service';\nimport { logger, Analytics } from 'packages';\nimport { cache, CACHE_KEYS } from 'tradera-utils/cache';\nimport actionTypes from './action-types';\nimport uiActions from '../ui/actions';\nimport { postWishlistItem } from './api';\nimport { API_ERRORS } from 'tradera-utils/api';\nimport { MODAL_TYPES } from 'tradera-state/push-notifications/constants';\n\nconst RECENTLY_VIEWED_CACHE_TTL = 30 * 24 * 60 * 60 * 1000;\n\nconst add = payload => ({\n type: actionTypes.ADD,\n payload\n});\n\nconst addRecentlyViewed = item => async (dispatch, getStore) => {\n dispatch({\n type: actionTypes.ADD_RECENTLY_VIEWED,\n payload: item\n });\n\n const {\n items: { recent }\n } = getStore();\n\n cache.write(\n CACHE_KEYS.RECENTLY_VIEWED_ITEMS,\n recent,\n RECENTLY_VIEWED_CACHE_TTL\n );\n};\n\nconst wishlist = itemId => async (dispatch, getStore) => {\n const {\n member: { isLoggedIn, memberId },\n items: { cache },\n page\n } = getStore();\n const item = cache[itemId];\n const { existsInWishList } = item;\n\n const redirectUrl = window.location.toString();\n const onSignedOutError = () => dispatch(uiActions.signIn({ redirectUrl }));\n if (!isLoggedIn) {\n onSignedOutError();\n return;\n }\n\n dispatch({\n type: actionTypes.WISHLIST,\n payload: { itemId, exists: !existsInWishList }\n });\n if (!existsInWishList) {\n gtmCore.trackGtmEvent('add-to-wishlist', {\n memberId: memberId,\n itemId: itemId\n });\n }\n Analytics.trackEvent({\n category: 'Wish list',\n action: existsInWishList ? 'remove' : 'add',\n label: page.type\n });\n postWishlistItem(itemId, !existsInWishList)\n .then(response => {\n if (!existsInWishList) {\n dispatch(\n uiActions.openNotificationOptinModal(\n MODAL_TYPES.wishlistReminders,\n 'Enable - Wishlist - Reminders (from alert)',\n 'pushModal_wishlist_title',\n 'pushModal_wishlist_description',\n ['wishlistReminders']\n )\n );\n }\n return response;\n })\n .catch(error => {\n // Restore previous wishlist status on error\n dispatch({\n type: actionTypes.WISHLIST,\n payload: { itemId, exists: existsInWishList }\n });\n switch (error.message) {\n case API_ERRORS.LOGGED_OUT:\n onSignedOutError();\n break;\n default:\n break;\n }\n switch (error.message) {\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n case API_ERRORS.VERSION_MISMATCH:\n break;\n default:\n logger(error);\n break;\n }\n });\n};\n\nconst removeWishList = payload => ({\n type: actionTypes.REMOVE_WISHLIST,\n payload\n});\n\nconst updateItem = payload => ({\n type: actionTypes.UPDATE_ITEM,\n payload\n});\n\nexport default {\n add,\n addRecentlyViewed,\n wishlist,\n removeWishList,\n updateItem\n};\n","import { createSlice } from '@reduxjs/toolkit';\n\nconst startPageSlice = createSlice({\n name: 'startPage',\n initialState: {},\n reducers: {\n requestConfig: state => {\n state.isFetching = true;\n },\n receiveConfig: (state, { payload }) => {\n if (payload) {\n state.config = { ...payload };\n } else {\n state.config = null;\n }\n state.isFetching = false;\n state.hasResult = true;\n },\n receiveTrendingTags: (state, { payload }) => {\n state.trendingBrands =\n payload?.trendingBrands?.sort(sortByIndex) || [];\n state.trendingSearches =\n payload?.trendingSearches?.sort(sortByIndex) || [];\n }\n }\n});\n\nconst sortByIndex = (a, b) => {\n if (a.index > b.index) return 1;\n if (a.index < b.index) return -1;\n return 0;\n};\n\nexport const {\n requestConfig,\n receiveConfig,\n receiveTrendingTags\n} = startPageSlice.actions;\n\nexport default startPageSlice.reducer;\n","import 'underscore';\nimport moment from 'moment';\nimport userData from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/services/user-data';\nimport draftService from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/services/draft-service';\n\nmoment.locale('sv');\n\nvar defaultDraft;\nvar initialState;\n\nconst initModuleGlobals = () => {\n if (initialState) {\n return initialState;\n }\n\n defaultDraft = userData.defaultDrafts.newItem;\n\n initialState = {\n daysOptions: makeDaysOptions(3, 14),\n hourOptions: makeHourOptions(),\n minuteOptions: makeMinuteOptions(),\n isCustomEndTimeVisible: false,\n customEndTimePrice: 10,\n isCustomEndTimeHiddenForCampaign: false,\n isRestartAvailable: true,\n durationDays: defaultDraft.durationDays,\n customEndTimeHour: null,\n customEndTimeMinute: null,\n customEndTimeError: null,\n selectedDaysText: '',\n selectedDateText: '',\n summaryText: '',\n allowZeroDayAuctions: false\n };\n};\n\nfunction makeDaysOptions(min, max) {\n var result = [];\n var minDays = min;\n var maxDays = max;\n for (var numberOfDays = minDays; numberOfDays <= maxDays; numberOfDays++) {\n result.push({\n days: numberOfDays,\n dateText: toDisplayText(numberOfDays),\n selected: false\n });\n }\n return result;\n}\n\nfunction makeHourOptions() {\n var result = [];\n for (var i = 0; i < 24; i++) {\n var hour = i < 10 ? '0' + i : parseInt(i, 10);\n result.push({ value: hour, text: hour });\n }\n return result;\n}\n\nfunction makeMinuteOptions() {\n var result = [];\n for (var i = 0; i < 60; i++) {\n var minute = i < 10 ? '0' + i : parseInt(i, 10);\n result.push({ value: minute, text: minute });\n }\n return result;\n}\n\nfunction toDaysText(numberOfDays) {\n return numberOfDays + ' dagar';\n}\n\nfunction toDateText(numberOfDays) {\n return (\n ' (avslutas ' +\n moment()\n .add(numberOfDays, 'days')\n .format('ddd D MMM') +\n ')'\n );\n}\n\nfunction toDisplayText(numberOfDays) {\n return toDaysText(numberOfDays) + toDateText(numberOfDays);\n}\n\nconst getCustomEndTime = state => {\n if (!state.customEndTimeHour || !state.customEndTimeMinute) {\n return null;\n }\n\n return state.customEndTimeHour + ':' + state.customEndTimeMinute;\n};\n\nfunction resolveSummaryText(days, customEndTime, isPureBin, isChangeItem) {\n let text;\n var durationDays = isPureBin ? 30 : days;\n if (isChangeItem) {\n text = 'Annonslängd ' + durationDays + ' dagar.';\n if (customEndTime) {\n text += ' Vald sluttid ' + customEndTime + '.';\n }\n } else {\n text =\n 'Annonslängd ' +\n durationDays +\n ' dagar (avslutas ' +\n moment()\n .add(durationDays, 'days')\n .format('ddd D MMM');\n if (customEndTime) {\n text += ' kl. ' + customEndTime;\n }\n text += ')';\n }\n\n return text;\n}\n\nconst getCustomEndTimeError = (\n durationDays,\n customEndTime,\n allowZeroDayAuctions\n) => {\n let newCustomEndTimeError = null;\n if (allowZeroDayAuctions) {\n const endDate = moment(customEndTime, 'HH:mm').add(\n durationDays,\n 'days'\n );\n const earliestEndDate = moment().add(5, 'minutes');\n if (endDate.isBefore(earliestEndDate)) {\n newCustomEndTimeError =\n 'Din valda sluttid är för tidig. Annonser får avslutas tidigast efter 5 minuter.';\n }\n } else if (customEndTime) {\n const endDate = moment(customEndTime, 'HH:mm').add(\n durationDays,\n 'days'\n );\n const earliestEndDate = moment().add(3, 'days');\n if (endDate.isBefore(earliestEndDate)) {\n newCustomEndTimeError =\n 'Din valda sluttid är för tidig. Annonser får avslutas tidigast efter 72 timmar.';\n }\n }\n\n return newCustomEndTimeError;\n};\n\nconst newStateWithoutCampaignRelatedProps = (\n state,\n durationDays,\n customEndTime,\n isPureBin,\n allowZeroDayAuctions,\n isChangeItem\n) => {\n const selectedDaysText = toDaysText(durationDays);\n const selectedDateText = toDateText(durationDays);\n const summaryText = resolveSummaryText(\n durationDays,\n customEndTime,\n isPureBin,\n isChangeItem\n );\n const customEndTimeError = getCustomEndTimeError(\n durationDays,\n customEndTime,\n allowZeroDayAuctions\n );\n return _.assign({}, state, {\n durationDays,\n customEndTime,\n selectedDaysText,\n selectedDateText,\n summaryText,\n customEndTimeError,\n isCustomEndTimeVisible: !!customEndTime\n });\n};\n\nexport default (state, action) => {\n initModuleGlobals();\n state = state || initialState;\n switch (action.type) {\n case 'SET_DURATION_DAYS': {\n const durationDays = action.payload;\n const selectedDaysText = toDaysText(durationDays);\n const selectedDateText = toDateText(durationDays);\n const summaryText = resolveSummaryText(\n durationDays,\n getCustomEndTime(state),\n action.isPureBin,\n action.isChangeItem\n );\n const customEndTimeError = getCustomEndTimeError(\n durationDays,\n getCustomEndTime(state),\n state.allowZeroDayAuctions\n );\n return _.assign({}, state, {\n durationDays,\n selectedDaysText,\n selectedDateText,\n summaryText,\n customEndTimeError\n });\n }\n case 'SET_CUSTOM_END_TIME': {\n const isPureBin = action.isPureBin;\n const summaryText = resolveSummaryText(\n state.durationDays,\n action.payload,\n isPureBin,\n action.isChangeItem\n );\n const customEndTimeError = getCustomEndTimeError(\n state.durationDays,\n action.payload,\n state.allowZeroDayAuctions\n );\n let customEndTimeHour = null;\n let customEndTimeMinute = null;\n if (_.isString(action.payload)) {\n let customEndTime = action.payload.split(':');\n customEndTimeHour = customEndTime[0];\n customEndTimeMinute = customEndTime[1];\n }\n return _.assign({}, state, {\n customEndTimeHour: customEndTimeHour,\n customEndTimeMinute: customEndTimeMinute,\n isCustomEndTimeVisible: !!action.payload,\n summaryText,\n customEndTimeError\n });\n }\n case 'RESET_DURATION_AND_END_TIME': {\n const durationDays = draftService.getDefaultTemplateValue(\n 'durationDays'\n );\n const customEndTime = draftService.getDefaultTemplateValue(\n 'customEndTime'\n );\n let newState = newStateWithoutCampaignRelatedProps(\n state,\n durationDays,\n customEndTime,\n action.isPureBin,\n state.allowZeroDayAuctions\n );\n newState.customEndTimePrice = initialState.customEndTimePrice;\n newState.isCustomEndTimeHiddenForCampaign =\n initialState.isCustomEndTimeHiddenForCampaign;\n return newState;\n }\n case 'RESET_CUSTOM_END_TIME': {\n return _.assign({}, state, {\n customEndTimeHour: initialState.customEndTimeHour,\n customEndTimeMinute: initialState.customEndTimeMinute\n });\n }\n case 'SHOW_CUSTOM_END_TIME_FOR_CAMPAIGN': {\n let newState = newStateWithoutCampaignRelatedProps(\n state,\n state.durationDays,\n getCustomEndTime(state),\n action.payload.isPureBin,\n state.allowZeroDayAuctions,\n action.payload.isChangeItem\n );\n newState.customEndTimePrice = initialState.customEndTimePrice;\n newState.isCustomEndTimeHiddenForCampaign = false;\n return newState;\n }\n case 'HIDE_CUSTOM_END_TIME_FOR_CAMPAIGN':\n return _.assign({}, state, {\n isCustomEndTimeHiddenForCampaign: true\n });\n case 'SET_CUSTOM_END_TIME_PRICE_FOR_CAMPAIGN':\n return _.assign({}, state, {\n customEndTimePrice: action.customEndTimePrice\n });\n case 'RESET_CUSTOM_END_TIME_PRICE_FOR_CAMPAIGN':\n return _.assign({}, state, {\n customEndTimePrice: initialState.customEndTimePrice\n });\n case 'SET_AUCTION_BIN_PRICE': {\n const customEndTimeError = getCustomEndTimeError(\n state.durationDays,\n getCustomEndTime(state),\n state.allowZeroDayAuctions\n );\n return _.assign({}, state, { customEndTimeError });\n }\n case 'SET_IS_PURE_BIN_SELECTED': {\n const durationDays = state.durationDays;\n const customEndTime = getCustomEndTime(state);\n const summaryText = resolveSummaryText(\n durationDays,\n customEndTime,\n action.isPureBinSelected,\n action.isChangeItem\n );\n return _.assign({}, state, { summaryText });\n }\n case 'SET_IS_CUSTOM_END_TIME_VISIBLE': {\n const durationDays = state.durationDays;\n const summaryText = resolveSummaryText(\n durationDays,\n null,\n action.payload.isPureBin,\n action.isChangeItem\n );\n return _.assign({}, state, {\n isCustomEndTimeVisible: action.payload.isCustomEndTimeVisible,\n customEndTime: null,\n customEndTimeError: null,\n summaryText\n });\n }\n case 'SET_DURATION_ZERO': {\n var date = new Date(Date.now() + 60 * 60 * 1000);\n var hour = date.getHours();\n var minute = date.getMinutes();\n var customEndTime = getCustomEndTime(state);\n const customEndTimeError = getCustomEndTimeError(\n state.durationDays,\n date,\n state.allowZeroDayAuctions\n );\n return _.assign({}, state, {\n isCustomEndTimeVisible: true,\n customEndTimeHour: hour,\n customEndTimeMinute: minute,\n customEndTime,\n customEndTimeError\n });\n }\n case 'DISABLE_ZERO_DAY_AUCTIONS': {\n const durationDays =\n state.durationDays > 3\n ? state.durationDays\n : draftService.getDefaultTemplateValue('durationDays');\n const selectedDaysText = toDaysText(durationDays);\n const selectedDateText = toDateText(durationDays);\n const daysOptions = makeDaysOptions(3, 14);\n return _.assign({}, state, {\n durationDays,\n selectedDaysText,\n selectedDateText,\n daysOptions,\n allowZeroDayAuctions: false\n });\n }\n case 'ENABLE_ZERO_DAY_AUCTIONS': {\n const daysOptions = makeDaysOptions(0, 14);\n return _.assign({}, state, {\n daysOptions,\n allowZeroDayAuctions: true\n });\n }\n case 'ENABLE_RESTART':\n return { ...state, isRestartAvailable: true };\n case 'DISABLE_RESTART':\n return { ...state, isRestartAvailable: false };\n default:\n return state;\n }\n};\n","const STORAGE_KEYS = {\n COOKIE_NOTIFICATION: 'cookieNotification',\n ITEMS_CLICK: 'items-click',\n ITEMS_IN_VIEWPORT: 'items-in-viewport',\n SAVE_SEARCH_HINT: 'save-search-tooltip',\n SEARCH_RECENT: 'search-recent',\n SELLING_DONT_ASK_FOR_SCHENKER_PRINTER: 'dontAskForSchenkerPrinter',\n SELLING_DONT_ASK_FOR_SCHENKER_UPSELL: 'dontAskForSchenkerUpsell',\n WEB_PUSH_ACCEPTED: 'web_push_accepted',\n WEB_PUSH_SHOWN_MODALS: 'webPushModalsShown',\n // State caches\n CACHE_MESSAGING_BADGES: 'cache.messagingBadges',\n CACHE_RECENTLY_VIEWED_ITEMS: 'cache.recentlyViewedItems',\n CACHE_SYSTEM_MESSAGES: 'cache.systemMessages',\n // Apple ID login user\n APPLE_ID_USER: 'appleId.user'\n};\n\nconst STORAGE_VALUES = {\n SAVE_SEARCH_HINT_CLICKED: 'CLOSE_CLICKED'\n};\n\nexport { STORAGE_KEYS, STORAGE_VALUES };\n","import GdprSettings from 'tradera-utils/gdpr-settings';\nimport { STORAGE_KEYS } from 'tradera-constants/storage';\nimport logger from './logger';\n\n/**\n * Storage wrapper/utility\n */\nclass Storage {\n /**\n * @param {object} storage - Storage-compatible object\n * @param {function} [setFilter] - Functions that returns true/false for a storage key, deciding if it should be set in storage\n */\n constructor(storage, setFilter) {\n this.storage = storage;\n this.setFilter = setFilter;\n }\n\n get length() {\n return this.storage.length;\n }\n\n /**\n * @param {int} index\n * @returns {string}\n */\n key(index) {\n return this.storage.key(index);\n }\n\n /**\n * @param {string} key\n * @returns {null|any}\n */\n getItem(key) {\n const value = this.storage.getItem(key);\n if (value) {\n try {\n return JSON.parse(value);\n } catch (error) {\n logger(error);\n }\n }\n return null;\n }\n\n getItemsByPrefix(prefix) {\n const items = {};\n for (let i = 0; i < this.storage.length; i++) {\n let key = this.key(i);\n if (key.startsWith(prefix)) {\n items[key] = this.getItem(key);\n }\n }\n return items;\n }\n\n /**\n * @param {string} key\n * @param {any} value\n * @returns {undefined}\n */\n setItem(key, value) {\n if (this.setFilter && !this.setFilter(key)) {\n return undefined;\n }\n try {\n this.storage.setItem(key, JSON.stringify(value));\n } catch (error) {\n logger(error);\n }\n }\n\n /**\n * @param {string} key\n * @returns {undefined}\n */\n removeItem(key) {\n return this.storage.removeItem(key);\n }\n\n clear() {\n return this.storage.clear();\n }\n\n /**\n * Removes all items whose keys start with prefix\n * @param {string} prefix\n */\n clearByPrefix(prefix) {\n // Loop in reverse because storage indexes will change as you delete items.\n for (let i = this.storage.length - 1; i >= 0; --i) {\n let key = this.key(i);\n if (key.startsWith(prefix)) {\n this.removeItem(key);\n }\n }\n }\n}\n\n/**\n * In-memory Storage object for testing & fallback\n */\nclass MemoryStorage {\n constructor() {\n this.storage = new Map();\n }\n\n get length() {\n return this.storage.size;\n }\n\n key(index) {\n const keys = Array.from(this.storage.keys());\n if (index in keys) {\n return keys[index];\n } else {\n return null;\n }\n }\n\n getItem(key) {\n return this.storage.get(key);\n }\n\n setItem(key, value) {\n this.storage.set(key, value);\n }\n\n removeItem(key) {\n this.storage.delete(key);\n }\n\n clear() {\n this.storage.clear();\n }\n}\n\n/**\n * Test if a storage implementation is available\n *\n * @param {Storage} storage\n * @returns {Storage|null}\n */\nfunction testStorage(storage) {\n const TEST_KEY = 'STORAGE_TEST';\n const TEST_VALUE = '1';\n let testStorage;\n try {\n // This will throw an exception in some browsers when cookies/localStorage are explicitly disabled (i.e. Chrome)\n testStorage = storage;\n testStorage.setItem(TEST_KEY, TEST_VALUE);\n if (testStorage.getItem(TEST_KEY) === TEST_VALUE) {\n testStorage.removeItem(TEST_KEY);\n } else {\n throw new Error();\n }\n } catch (e) {\n testStorage = null;\n }\n return testStorage;\n}\n\n// Standard local store with GDPR cookie filter and in-memory storage fallback\nconst defaultStorage = testStorage(localStorage)\n ? localStorage\n : new MemoryStorage();\nconst gdprSettings = GdprSettings;\nconst localStore = new Storage(defaultStorage, key => {\n if (!Object.values(STORAGE_KEYS).includes(key)) {\n logger(`Storage key '${key}' not found in STORAGE_KEYS`);\n return false;\n }\n if (!gdprSettings.isFunctionalEnabled()) {\n logger('Local storage blocked by GDPR settings', true);\n return false;\n }\n return true;\n});\n\nexport { Storage, MemoryStorage, localStore };\n","import { createReducer } from '@reduxjs/toolkit';\nimport {\n getAllProducts,\n getPrimaryOrSecondaryProducts,\n getProduct\n} from './next-shipping-selectors';\nimport { ensureGoodShippingOptions } from './ensure-good-shipping-options';\nimport { validate } from './validate';\nimport { getSelectedShippingOptions } from './get-selected-shipping-options';\n\nconst initialState = validate({\n primaryShippingProviders: [],\n secondaryShippingProviders: [],\n validationError: null,\n secondaryShippingOptionOpen: false,\n selectedShippingOptions: [],\n suggestedInvalidProducts: {},\n hasSuggestedProductDescriptions: false,\n invalidShippingCosts: {},\n takeawayDeliveryAccepted: false,\n showMoreOptions: false,\n showMoreSecondaryOptions: true,\n weight: 0,\n isLoadingProvidersWithProducts: false\n});\n\nconst getProviderByProductType = (providers, productType) =>\n providers.find(\n provider =>\n !!provider.products.find(product => product.type === productType)\n );\n\nexport default createReducer(initialState, {\n SET_SUGGESTED_SHIPPING_PRODUCTS: (state, action) => {\n // TODO Re-implement!\n\n state.hasSuggestedProductDescriptions = false;\n\n const products = getAllProducts(state);\n products.forEach(product => {\n const suggestedProduct = action.shippingProducts.find(\n p => p.type === product.type\n );\n if (suggestedProduct) {\n product.cost = suggestedProduct.cost || product.cost;\n state.hasSuggestedProductDescriptions = true;\n product.calculatorSuggestion = {\n description: suggestedProduct.description,\n cost: suggestedProduct.cost,\n additionalInfo: suggestedProduct.additionalInfo\n };\n } else {\n product.calculatorSuggestion = null;\n }\n product.selected = false;\n });\n return validate(state);\n },\n RESET_SHIPPING_OPTIONS: state => {\n state.primaryShippingOption = null;\n state.secondaryShippingOption = null;\n state.selectedShippingOptions = [];\n return validate(state);\n },\n RESET_SELECTED_SHIPPING_OPTIONS: state => {\n const products = getAllProducts(state);\n products.forEach(product => {\n product.selected = false;\n product.selectedVariant = null;\n product.productId = null;\n });\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SHIPPING_OPTIONS: (state, action) => {\n const shippingOptions = ensureGoodShippingOptions(action.payload);\n\n // Set a product to visible and hides the rest, if the type to be visible is found in the list.\n const updateVisibilities = (products, typeToBeVisible) => {\n if (products.length === 1) return;\n const typeToBeVisibleExists = products.find(\n product => product.type === typeToBeVisible\n );\n if (!typeToBeVisibleExists) return;\n products.forEach(\n product => (product.visible = product.type === typeToBeVisible)\n );\n };\n\n const updateProductIfType = (\n product,\n { type, cost, productId, weight }\n ) => {\n const isType = product.type === type;\n if (isType) {\n product.selected = true;\n product.cost = cost;\n product.productId = productId;\n product.weight = weight;\n } else {\n product.selected = false;\n }\n };\n\n const updateProviderProducts = (products, option) => {\n products.forEach(product => updateProductIfType(product, option));\n updateVisibilities(products, option.type);\n };\n\n if (_.isObject(shippingOptions[0])) {\n const option = shippingOptions[0];\n const providers = state.primaryShippingProviders;\n providers.forEach(provider =>\n updateProviderProducts(provider.products, option)\n );\n const provider = getProviderByProductType(providers, option.type);\n state.showMoreOptions =\n state.showMoreOptions || (provider && !provider.promoted);\n }\n\n if (_.isObject(shippingOptions[1])) {\n const option = shippingOptions[1];\n const providers = state.secondaryShippingProviders;\n providers.forEach(provider =>\n updateProviderProducts(provider.products, option)\n );\n const provider = getProviderByProductType(providers, option.type);\n state.showMoreSecondaryOptions =\n state.showMoreSecondaryOptions ||\n (provider && !provider.promoted);\n state.secondaryShippingOptionOpen = true;\n } else {\n state.secondaryShippingOptionOpen = false;\n }\n\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n\n return validate(state);\n },\n TOGGLE_SHIPPING_OPTION: (state, action) => {\n const providers = action.payload.primary\n ? state.primaryShippingProviders\n : state.secondaryShippingProviders;\n\n // Hide products so only one is visible per provider\n const productProvider = getProviderByProductType(\n providers,\n action.payload.type\n );\n productProvider.products.forEach(product => (product.visible = false));\n\n const products = providers.flatMap(provider => provider.products);\n let product = products.find(p => p.type === action.payload.type);\n let previousValue = product.selected;\n products.forEach(p => (p.selected = false));\n product.selected = !previousValue;\n product.visible = true;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SHIPPING_OPTION_COST: (state, action) => {\n let product = getProduct(\n state,\n action.payload.primary,\n action.payload.type\n );\n product.cost = action.payload.cost;\n product.isBulkySelected = false;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SHIPPING_OPTION_VARIANT: (state, action) => {\n let product = getProduct(\n state,\n action.payload.primary,\n action.payload.type\n );\n product.selectedVariant = action.payload.variant;\n product.weight = action.payload.variant\n ? action.payload.variant.weight\n : undefined;\n product.productId = action.payload.variant\n ? action.payload.variant.id\n : undefined;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_TAKEAWAY_SELECTED: (state, action) => {\n state.takeawayDeliveryAccepted = action.payload.takeawaySelected;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SECONDARY_SHIPPING_OPTION_OPEN: (state, action) => {\n return validate(\n _.assign({}, state, {\n secondaryShippingOptionOpen:\n action.payload.secondaryShippingOptionOpen\n })\n );\n },\n REMOVE_SHIPPING_OPTION: (state, action) => {\n getPrimaryOrSecondaryProducts(state, action.payload.primary).forEach(\n product => (product.selected = false)\n );\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n MAKE_SECONDARY_SHIPPING_OPTION_PRIMARY: state => {\n const tmp = state.primaryShippingProviders;\n state.primaryShippingProviders = state.secondaryShippingProviders;\n state.secondaryShippingProviders = tmp;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n FORCE_FREE_SHIPPING: state => {\n const products = getAllProducts(state);\n products.forEach(product => {\n product.cost = 0;\n });\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SHOW_MORE_SHIPPING_OPTIONS: (state, action) => {\n if (action.payload.isPrimary) {\n state.showMoreOptions = true;\n } else {\n state.showMoreSecondaryOptions = true;\n }\n return validate(state);\n },\n TOGGLE_MORE_SHIPPING_OPTIONS: (state, action) => {\n const { isPrimary } = action.payload;\n if (isPrimary) {\n state.showMoreOptions = !state.showMoreOptions;\n } else {\n state.showMoreSecondaryOptions = !state.showMoreSecondaryOptions;\n }\n return validate(state);\n },\n TOGGLE_PRODUCT_EXTRA_INFO_VISIBILITY: (state, action) => {\n const product = getProduct(\n state,\n action.payload.primary,\n action.payload.productType\n );\n product.isExtraInfoVisible = !product.isExtraInfoVisible;\n return validate(state);\n },\n SET_SHIPPING_PRODUCT_BULKY_SELECTED: (state, action) => {\n const product = getProduct(\n state,\n action.payload.primary,\n action.payload.productType\n );\n product.isBulkySelected = action.payload.isBulkySelected;\n return validate(state);\n },\n SET_SHIPPING_PROVIDERS_WITH_PRODUCTS: (state, action) => {\n state.primaryShippingProviders = action.payload;\n state.secondaryShippingProviders = action.payload;\n state.isLoadingProvidersWithProducts = false;\n\n return validate(state);\n },\n SET_SHIPPING_PROVIDERS_WITH_PRODUCTS_FETCHING: state => {\n state.isLoadingProvidersWithProducts = true;\n\n return validate(state);\n }\n});\n","import 'underscore';\nimport initData from 'init-data';\nimport { createSlice } from '@reduxjs/toolkit';\nimport userData from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/services/user-data';\nimport { getSyiSlice } from 'tradera-state/configure-store';\n\nlet availableAllowedBuyerRegions;\nlet initialState;\n\nconst regionOrDefault = region =>\n region ? region : availableAllowedBuyerRegions[0];\n\nconst findIndexOfRegion = (regionValue, state) =>\n state.availableAllowedBuyerRegions.findIndex(r => r.value === regionValue);\n\nconst initModuleGlobals = () => {\n if (\n !initData.pageSpecificData ||\n !initData.pageSpecificData.allowedBuyerRegions\n ) {\n return null;\n }\n\n availableAllowedBuyerRegions =\n initData.pageSpecificData.allowedBuyerRegions;\n\n initialState = {\n availableAllowedBuyerRegions: availableAllowedBuyerRegions,\n selectedBuyerRegion: availableAllowedBuyerRegions[0].value,\n selectedBuyerRegionText: availableAllowedBuyerRegions[0].text,\n availableAllowedBuyerRegionsForEditWithBids: false,\n isSetAllowedBuyerRegionToAtLeastEuEnabled:\n initData &&\n initData.featureSwitches &&\n initData.featureSwitches[\n 'international-shipping-schenker-eu-default'\n ],\n isTraderaPayEnabled: userData.payment.isTraderaPayEnabled,\n hasSetAllowedBuyerRegionAtLeastEu: false\n };\n};\n\ninitModuleGlobals();\nconst buyerRegionSlice = createSlice({\n name: 'buyer-region',\n initialState: initialState,\n reducers: {\n setAllowedBuyerRegion: (state, action) => {\n const region = _.where(availableAllowedBuyerRegions, {\n value: action.payload\n })[0];\n const { value, text } = regionOrDefault(region);\n state.selectedBuyerRegion = value;\n state.selectedBuyerRegionText = text;\n return state;\n },\n setAllowedBuyerRegionAtLeastEu: state => {\n if (\n !state.isSetAllowedBuyerRegionToAtLeastEuEnabled ||\n !state.isTraderaPayEnabled ||\n state.hasSetAllowedBuyerRegionAtLeastEu\n ) {\n return state;\n }\n\n const euIndex = findIndexOfRegion('EU', state);\n const currentIndex = findIndexOfRegion(\n state.selectedBuyerRegion,\n state\n );\n if (currentIndex < euIndex) {\n const { value, text } = state.availableAllowedBuyerRegions[\n euIndex\n ];\n state.selectedBuyerRegion = value;\n state.selectedBuyerRegionText = text;\n state.hasSetAllowedBuyerRegionAtLeastEu = true;\n }\n return state;\n },\n setAvailableAllowedBuyerRegions: (state, action) => {\n state.availableAllowedBuyerRegions =\n action.payload.availableRegions;\n state.availableAllowedBuyerRegionsForEditWithBids = true;\n return state;\n }\n }\n});\n\nexport const setAvailableAllowedBuyerRegions = () => (dispatch, getState) => {\n const draftState = getSyiSlice(getState()).draft;\n const regionState = getSyiSlice(getState()).buyerRegion;\n const regions = regionState.availableAllowedBuyerRegions;\n const selectedRegion = regionState.selectedBuyerRegion;\n const filters = {\n Sweden: region =>\n ['Sweden', 'Nordic', 'EU', 'International'].indexOf(region.value) >\n -1,\n Nordic: region =>\n ['Nordic', 'International'].indexOf(region.value) > -1,\n EU: region => ['EU', 'International'].indexOf(region.value) > -1,\n International: region => ['International'].indexOf(region.value) > -1\n };\n const useFilter = draftState.draftReason === 'ChangeItemWithBids';\n const filter = (useFilter && filters[selectedRegion]) || (() => true);\n const availableRegions = regions.filter(filter);\n dispatch(\n buyerRegionSlice.actions.setAvailableAllowedBuyerRegions({\n availableRegions\n })\n );\n};\n\nexport const {\n setAllowedBuyerRegion,\n setAllowedBuyerRegionAtLeastEu\n} = buyerRegionSlice.actions;\n\nexport default buyerRegionSlice.reducer;\n","/* eslint-disable */\n\nimport {\n CATEGORIZED_COOKIES,\n COOKIE_DEFAULT_CATEGORY\n} from 'tradera-constants/cookies';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\nimport logger from 'packages/logger';\n\nclass CookieUtil {\n constructor(document = window.document) {\n this.document = document;\n }\n\n /**\n * @returns GdprSettings\n */\n _getGdprSettings() {\n if (typeof this.gdpr === 'undefined') {\n this.gdpr = GdprSettings;\n }\n return this.gdpr;\n }\n\n segment(name, value) {\n return value ? '; ' + name + '=' + value : '';\n }\n\n convertToExpiresStr(expires) {\n let expiresStr = '';\n\n switch (expires.constructor) {\n case Number:\n expiresStr =\n expires === Infinity\n ? '; expires=Fri, 31 Dec 9999 23:59:59 GMT'\n : '; max-age=' + expires * 24 * 60 * 60;\n break;\n case String:\n expiresStr = '; expires=' + expires;\n break;\n case Date:\n expiresStr = '; expires=' + expires.toUTCString();\n break;\n }\n\n return expiresStr;\n }\n\n createCookie(cookieKey, cookieValue, expires, path, domain, secure) {\n let expiresStr = '';\n\n if (\n !cookieKey ||\n /^(?:expires|max\\-age|path|domain|secure)$/i.test(cookieKey)\n ) {\n return false;\n }\n\n // check gdpr for cookie category\n let category = CATEGORIZED_COOKIES[cookieKey];\n if (typeof category === 'undefined') {\n logger(`No category set for cookie ${cookieKey}`);\n category = COOKIE_DEFAULT_CATEGORY;\n }\n if (!this._getGdprSettings().isCategoryEnabled(category)) {\n // console.info(\n // `Cookie category not enabled: ${cookieKey}, category: ${category}`\n // );\n return false;\n }\n\n // if expired set prepare date string\n if (expires) {\n expiresStr = this.convertToExpiresStr(expires);\n }\n\n // console.info(`setting cookie: ${cookieKey} = ${cookieValue}`);\n this.document.cookie =\n encodeURIComponent(cookieKey) +\n '=' +\n encodeURIComponent(cookieValue) +\n expiresStr +\n this.segment('domain', domain) +\n this.segment('path', path || '/') +\n this.segment('secure', secure);\n\n return true;\n }\n\n readCookie(key) {\n return (\n decodeURIComponent(\n this.document.cookie.replace(\n new RegExp(\n '(?:(?:^|.*;)\\\\s*' +\n encodeURIComponent(key).replace(\n /[\\-\\.\\+\\*]/g,\n '\\\\$&'\n ) +\n '\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$'\n ),\n '$1'\n )\n ) || null\n );\n }\n\n hasCookie(key) {\n return new RegExp(\n '(?:^|;\\\\s*)' +\n encodeURIComponent(key).replace(/[\\-\\.\\+\\*]/g, '\\\\$&') +\n '\\\\s*\\\\='\n ).test(this.document.cookie);\n }\n\n eraseCookie(key, path, domain) {\n if (!key || !this.readCookie(key)) {\n return false;\n }\n\n this.document.cookie =\n encodeURIComponent(key) +\n '=; expires=Thu, 01 Jan 1970 00:00:01 GMT' +\n this.segment('domain', domain) +\n this.segment('path', path || '/');\n\n return true;\n }\n}\n\nexport default new CookieUtil();\nexport { CookieUtil };\n","import actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case actionTypes.DEFAULT_ACTION:\n return {\n ...state,\n default: action.payload\n };\n case actionTypes.SET_IS_FETCHING_GEOLOCATION: {\n const { payload } = action;\n return {\n ...state,\n isFetchingGeolocation: payload.isFetchingGeolocation\n };\n }\n case actionTypes.SET_GEOLOCATION: {\n const { payload } = action;\n return {\n ...state,\n geolocation: payload\n };\n }\n case actionTypes.FAILED_LOADING_GEOLOCATION: {\n return {\n ...state,\n geolocation: null,\n isFetchingGeolocation: false\n };\n }\n default:\n return state;\n }\n};\n","import axios from 'axios';\nimport qs from 'qs';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n axiosConfigs,\n checkResponseLoggedOut,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\n\nfunction getItem(itemId) {\n return axios\n .get(ENDPOINTS.GET_ITEM + itemId, { withCredentials: true })\n .then(finalizeResponse())\n .catch(handleError());\n}\n\nfunction postWishlistItem(itemId, add) {\n return axios\n .post(\n add ? ENDPOINTS.WISHLIST_ADD : ENDPOINTS.WISHLIST_REMOVE,\n {\n itemId\n },\n axiosConfigs.authenticated\n )\n .then(checkResponseLoggedOut())\n .then(finalizeResponse())\n .catch(handleError());\n}\n\nfunction getItemDiscountQuota() {\n return axios\n .get(ENDPOINTS.ITEM_DISCOUNT_QUOTA, { withCredentials: true })\n .then(finalizeResponse())\n .catch(handleError());\n}\n\nfunction postItemSettings(itemId, onDisplay, discountRate) {\n const formData = qs.stringify({\n itemId,\n onDisplay,\n discountRate\n });\n return axios\n .post(ENDPOINTS.SETTINGS, formData, axiosConfigs.authenticated)\n .then(checkResponseLoggedOut())\n .then(finalizeResponse())\n .catch(handleError());\n}\n\nexport { getItem, postWishlistItem, getItemDiscountQuota, postItemSettings };\n","import 'underscore';\nimport config from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/services/config';\n\nvar initialState = {\n commissionProcent: '10',\n discountFactor: null,\n campaignCommissionProcent: null,\n maxCommissionCostText: 'max ' + config.commissionCap + ' kr',\n isVariableCommission: false,\n chosenExtraFeatures: [],\n hasChosenExtraFeatures: false,\n isUnsoldFeeFree: false,\n isCategoryWithNoCommissionCap: false\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'SET_COMMISSION_PROCENT': {\n state = _.assign({}, state, {\n commissionProcent: action.commissionProcent\n });\n break;\n }\n\n case 'SET_DISCOUNT_FACTOR': {\n state = _.assign({}, state, {\n discountFactor: action.discountFactor\n });\n break;\n }\n\n case 'RESET_DISCOUNT_FACTOR': {\n state = _.assign({}, state, {\n discountFactor: initialState.discountFactor\n });\n break;\n }\n\n case 'SET_CAMPAIGN_COMMISSION_PROCENT': {\n state = _.assign({}, state, {\n campaignCommissionProcent: action.campaignCommissionProcent\n });\n break;\n }\n\n case 'RESET_CAMPAIGN_COMMISSION_PROCENT': {\n state = _.assign({}, state, {\n campaignCommissionProcent:\n initialState.campaignCommissionProcent\n });\n break;\n }\n\n case 'SET_MAX_COMMISSION_COST': {\n state = _.assign({}, state, {\n maxCommissionCostText: action.payload.text,\n isCategoryWithNoCommissionCap:\n action.payload.isCategoryWithNoCommissionCap\n });\n break;\n }\n\n case 'SET_IS_VARIABLE_COMMISSION': {\n state = _.assign({}, state, {\n isVariableCommission: action.payload\n });\n break;\n }\n\n case 'SET_UNSOLD_FEE_FREE_FOR_CAMPAIGN': {\n state = _.assign({}, state, { isUnsoldFeeFree: true });\n break;\n }\n\n case 'UNSET_UNSOLD_FEE_FREE_FOR_CAMPAIGN': {\n state = _.assign({}, state, { isUnsoldFeeFree: false });\n break;\n }\n\n case 'SET_CHOSEN_EXTRA_FEATURES': {\n var hasChosenExtraFeatures =\n action.payload && action.payload.length;\n state = _.assign({}, state, {\n chosenExtraFeatures: action.payload,\n hasChosenExtraFeatures\n });\n\n break;\n }\n }\n\n return state;\n};\n","export default {\n shallowCopyArrayObjects: function(arrayOfObjects) {\n var newArray = [];\n _.each(arrayOfObjects, function(object) {\n var newObject = {};\n for (var property in object) {\n newObject[property] = object[property];\n }\n newArray.push(newObject);\n });\n return newArray;\n }\n};\n","// import paymentOptions from './payment-mock.json';\n\nexport const BANK_ID_STATUS = {\n START: 'START',\n COMPLETE: 'COMPLETE',\n ERROR: 'ERROR'\n};\n\nexport default () => {\n // const { paymentOptions: options } = paymentOptions;\n return {\n bankId: {\n open: false,\n status: BANK_ID_STATUS.START\n },\n buyerMember: null,\n checkoutSummary: null,\n hasError: false,\n items: null,\n isFetching: false,\n payment: {\n hasError: false,\n isFetching: false,\n paymentOptions: null,\n selectedPayment: 'Paynova'\n },\n selectedShipping: '',\n sellerMember: null,\n shippingOptions: null\n };\n};\n","import { toLocalizedRiotUrl } from './../utils/language';\nconst config =\n window && window.sellingGlobalConfig\n ? { ...window.sellingGlobalConfig }\n : {};\n\nconfig.imageSizeX = 200;\nconfig.imageSizeY = 150;\nconfig.maxTemplates = 100;\nconfig.domainNameCategoryId = 344477;\nconfig.URL_BASE = toLocalizedRiotUrl('/selling/');\nconfig.RIOT_MOUNTPOINT = 'syi';\n\nexport default config;\n","//jshint module : true\nimport actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n if (!action || !action.type || !action.payload) return state;\n switch (action.type) {\n case actionTypes.SET_ADS:\n return {\n ...state,\n gpt: action.payload.gpt,\n adSenseQuery: action.payload.adSenseQuery,\n adSenseShoppingPublisherId:\n action.payload.adSenseShoppingPublisherId\n };\n default:\n return state;\n }\n};\n","import modalState from './modal-state';\nimport { getInitData } from 'packages/init-data';\n\nconst initData = getInitData() || {};\nlet isAutoStartAllowed = initData.pageSpecificData\n ? initData.pageSpecificData.isAutoStartAllowed\n : false;\n\nexport default {\n isFetching: false,\n errorMessage: null,\n modalState: modalState.CLOSED,\n autoStartToken: null,\n onCompleteCallback: null,\n onCloseCallback: null,\n isAutoStartAllowed\n};\n","import actionTypes from './action-types';\nimport initialState from './initial-state';\nimport modalState from './modal-state';\n\nexport default (state = initialState, action) => {\n if (!action || !action.type) return state;\n switch (action.type) {\n case actionTypes.RESET:\n return { ...initialState };\n case actionTypes.COMPLETED:\n return { ...state, modalState: modalState.COMPLETED };\n case actionTypes.SET_ERROR:\n return {\n ...state,\n errorMessage: action.payload,\n modalState: modalState.ERROR\n };\n case actionTypes.IN_PROGRESS:\n return {\n ...state,\n autoStartToken: action.payload\n };\n case actionTypes.START_AUTH:\n return {\n ...state,\n errorMessage: null,\n retryCount: 0,\n modalState: modalState.IN_PROGRESS\n };\n case actionTypes.CLOSE:\n return {\n ...state,\n modalState: modalState.CLOSED\n };\n default:\n return state;\n }\n};\n","import actionTypes from './action-types';\nimport initialState from './initial-state';\n\nexport default (state = initialState, action) => {\n if (!action || !action.type) return state;\n switch (action.type) {\n case actionTypes.RECEIVE_CATEGORY_LIST:\n return {\n ...state,\n list: action.payload,\n isFetching: false,\n error: null\n };\n case actionTypes.REQUEST_CATEGORY_LIST:\n return { ...state, isFetching: true, error: null };\n case actionTypes.HANDLE_CATEGORY_LIST_ERROR:\n return { ...state, isFetching: false, error: action.payload };\n default:\n return state;\n }\n};\n","import CONSTANTS from 'tradera-apps/tradera/components/discover/constants/constants';\n\nconst normalizeFilters = filters => {\n if (filters) {\n let normalized = {};\n filters.map(filter => {\n const { parameter } = filter;\n normalized = {\n ...normalized,\n [parameter]: {\n ...filter\n }\n };\n });\n return normalized;\n }\n};\n\nconst activeFilters = filters => {\n if (filters) {\n let normalized = [];\n filters.map(filter => {\n const { selectedValue } = filter;\n if (CONSTANTS.ACTIVE_FILTER_STATES.includes(selectedValue)) {\n normalized.push(filter);\n }\n });\n return normalized;\n }\n};\n\nconst normalize = responseData => {\n const normalized = {\n activeBrands: [],\n activeFilters: [],\n attributeFilters: [],\n categoryPath: responseData.categoryPath || [],\n currentCategoryId: responseData.categoryPath?.[0]?.id || 0,\n fallbackItemsById: [],\n filterCategories: {},\n filterPrice: {},\n filters: {},\n headerText: responseData.headerText || null,\n internalSearch: responseData.internalSearchBar || {},\n introText: responseData.introText || null,\n itemsById: [],\n itemsOnDisplayById: [],\n mainText: responseData.mainText || null,\n pagination: responseData.pagination || null,\n totalFallbackItems: responseData.totalFallbackItems || 0,\n totalItems: responseData.totalItems || 0\n };\n\n if (responseData.filters) {\n normalized.filterCategories = responseData.filters.categoryFilter;\n normalized.filters = normalizeFilters(\n responseData.filters.singleOptionFilters\n );\n normalized.activeFilters = activeFilters(\n responseData.filters.singleOptionFilters\n );\n normalized.filterPrice = responseData.filters.priceRangeFilter;\n normalized.attributeFilters = responseData.filters.attributeFilters;\n }\n\n if (responseData.items) {\n responseData.items.map(item => {\n normalized.itemsById.push(item.itemId);\n });\n }\n\n if (responseData.itemsOnDisplay) {\n responseData.itemsOnDisplay.items.map(item => {\n normalized.itemsOnDisplayById.push(item.itemId);\n });\n }\n\n if (responseData.fallbackItems) {\n responseData.fallbackItems.map(item => {\n normalized.fallbackItemsById.push(item.itemId);\n });\n }\n\n normalized.status = responseData.status;\n return normalized;\n};\n\nexport { normalize };\n","import actionTypes from './action-types';\nimport memberActionTypes from '../member/action-types';\nimport { normalize } from './helpers';\n\nexport default (state = {}, action) => {\n const requestSearchResults = () => {\n const endpoint = action.payload?.endpoint || null;\n const queryParams = action.payload?.queryParams || state.queryParams;\n return {\n ...state,\n isFetching: true,\n error: null,\n endpoint,\n currentCategoryId:\n queryParams.categoryId || state.currentCategoryId,\n queryParams\n };\n };\n\n const receiveSearchResults = () => {\n const {\n payload: { result = {}, endpoint = null, queryParams = null }\n } = action;\n return {\n ...state,\n error: null,\n hasResult: true,\n isFetching: false,\n endpoint,\n queryParams,\n ...normalize(result)\n };\n };\n\n const handleSearchResultsError = () => {\n return {\n ...state,\n error: action.payload,\n hasResult: true,\n isFetching: false,\n ...normalize({})\n };\n };\n\n const setSingleFilter = () => ({\n ...state,\n filters: {\n ...state.filters,\n [action.payload.filter]: {\n ...state.filters[action.payload.filter],\n selectedValue: action.payload.value\n }\n }\n });\n\n const addItemOnDisplay = () => {\n const { payload } = action;\n return {\n ...state,\n itemsOnDisplayById: state.itemsOnDisplayById.includes(\n payload.itemId\n )\n ? [...state.itemsOnDisplayById]\n : [...state.itemsOnDisplayById, payload.itemId]\n };\n };\n\n const removeItemOnDisplay = () => {\n const { payload } = action;\n const items = state.itemsOnDisplayById.filter(\n item => item !== payload.itemId\n );\n return {\n ...state,\n itemsOnDisplayById: [...items]\n };\n };\n\n const setCategoryPath = () => {\n return {\n ...state,\n categoryPath: action.payload,\n currentCategoryId: (action.payload && action.payload[0].id) || 0\n };\n };\n\n const setCurrentCategoryId = () => {\n return {\n ...state,\n currentCategoryId: action.payload\n };\n };\n\n // Set show/hide buyer region filter when member geo changes\n const showOrHideAllowedBuyerRegionFilter = () => {\n const { payload } = action;\n return {\n ...state,\n displayAllowedBuyerRegionFilter:\n state.displayAllowedBuyerRegionFilter ||\n payload?.isoCode !== 'SE'\n };\n };\n\n const def = () => state;\n\n const reducers = {\n [actionTypes.REQUEST_SEARCH_RESULTS]: requestSearchResults,\n [actionTypes.RECEIVE_SEARCH_RESULTS]: receiveSearchResults,\n [actionTypes.HANDLE_SEARCH_RESULTS_ERROR]: handleSearchResultsError,\n [actionTypes.SET_SINGLE_FILTER]: setSingleFilter,\n [actionTypes.ADD_ITEM_ON_DISPLAY]: addItemOnDisplay,\n [actionTypes.REMOVE_ITEM_ON_DISPLAY]: removeItemOnDisplay,\n [actionTypes.SET_CATEGORY_PATH]: setCategoryPath,\n [actionTypes.SET_CURRENT_CATEGORY_ID]: setCurrentCategoryId,\n [memberActionTypes.SET_GEOLOCATION]: showOrHideAllowedBuyerRegionFilter\n };\n\n return !action || !action.type || !reducers[action.type]\n ? def()\n : reducers[action.type]();\n};\n","export default {\n DEFAULT_ACTION: 'environment/default'\n};\n","import actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case actionTypes.DEFAULT_ACTION:\n return {\n ...state,\n default: action.payload\n };\n default:\n return state;\n }\n};\n","export default {\n DEFAULT_ACTION: 'initData/default'\n};\n","import actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case actionTypes.DEFAULT_ACTION:\n return {\n ...state,\n default: action.payload\n };\n default:\n return state;\n }\n};\n","import actionTypes from './action-types';\nimport initialState from './initial-state';\n\n// The max size of the item cache * before adding new items *\nconst ITEM_CACHE_MAX_SIZE = 500;\nconst RECENTLY_VIEWED_MAX_LENGTH = 4;\n\nexport default (state = initialState(), action) => {\n const add = () => {\n const { cache, cacheOrder } = state;\n // Clear out old items\n let newCache = {};\n let newCacheOrder = cacheOrder;\n if (cacheOrder.length > ITEM_CACHE_MAX_SIZE) {\n newCacheOrder = cacheOrder.slice(\n cacheOrder.length - ITEM_CACHE_MAX_SIZE\n );\n newCacheOrder.forEach(itemId => {\n newCache[itemId] = cache[itemId];\n });\n } else {\n newCache = cache;\n }\n // Add new items\n action.payload.forEach(item => {\n if (item.itemId in newCache) {\n // Combine existing item with updated item\n newCache[item.itemId] = {\n ...newCache[item.itemId],\n ...item\n };\n // Renew item in cache order\n newCacheOrder = [\n ...newCacheOrder.filter(itemId => itemId !== item.itemId),\n item.itemId\n ];\n } else {\n newCache[item.itemId] = item;\n newCacheOrder.push(item.itemId);\n }\n });\n\n return {\n ...state,\n cache: {\n ...newCache\n },\n cacheOrder: newCacheOrder\n };\n };\n\n const addRecentlyViewed = () => {\n const { payload: item } = action;\n const { recent } = state;\n // Remove item if already present\n let updatedRecent = recent.filter(\n recentItem => recentItem.itemId !== item.itemId\n );\n // Add to front of list\n updatedRecent.unshift(item);\n // Limit list length\n updatedRecent = updatedRecent.slice(0, RECENTLY_VIEWED_MAX_LENGTH);\n return {\n ...state,\n recent: updatedRecent\n };\n };\n\n const wishlist = () => {\n const {\n payload: { itemId, exists }\n } = action;\n return {\n ...state,\n cache: {\n ...state.cache,\n [itemId]: {\n ...state.cache[itemId],\n existsInWishList: exists\n }\n }\n };\n };\n\n const updateItem = () => {\n const {\n payload: { itemId, item }\n } = action;\n return {\n ...state,\n cache: {\n ...state.cache,\n [itemId]: {\n ...state.cache[itemId],\n ...item\n }\n }\n };\n };\n\n const def = () => state;\n\n const reducers = {\n [actionTypes.ADD]: add,\n [actionTypes.ADD_RECENTLY_VIEWED]: addRecentlyViewed,\n [actionTypes.WISHLIST]: wishlist,\n [actionTypes.UPDATE_ITEM]: updateItem\n };\n\n return !action || !action.type || !reducers[action.type]\n ? def()\n : reducers[action.type]();\n};\n","import actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n const setPreferred = () => {\n const { payload } = action;\n\n const preferred =\n state.available.find(\n language => language.languageCodeIso2 === payload\n ) || {};\n\n return {\n ...state,\n preferred: preferred\n };\n };\n\n const dismissTooltip = () => ({\n ...state,\n showTooltip: false\n });\n\n const dismissOptoutTooltip = () => ({\n ...state,\n showOptoutTooltip: false\n });\n\n const def = () => state;\n\n const reducers = {\n [actionTypes.SET_PREFERRED]: setPreferred,\n [actionTypes.DISMISS_TOOLTIP]: dismissTooltip,\n [actionTypes.DISMISS_OPTOUT_TOOLTIP]: dismissOptoutTooltip\n };\n\n return !action || !action.type || !reducers[action.type]\n ? def()\n : reducers[action.type]();\n};\n","import actionTypes from './action-types';\nimport { resolveCurrency } from './helpers';\n\nexport default (state = {}, action) => {\n const setPreferredCurrency = () => {\n const { enabled, currencies } = state;\n return {\n ...state,\n preferredCurrency: resolveCurrency(\n enabled,\n action.payload.currencyCode,\n currencies\n )\n };\n };\n\n const def = () => state;\n\n const reducers = {\n [actionTypes.SET_PREFERRED_CURRENCY]: setPreferredCurrency\n };\n\n return !state.enabled || !action || !action.type || !reducers[action.type]\n ? def()\n : reducers[action.type]();\n};\n","//jshint module : true\nimport actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n if (!action || !action.type) return state;\n switch (action.type) {\n case actionTypes.SET_PAGE_TYPE:\n return {\n ...state,\n type: action.payload\n };\n case actionTypes.SET_PAGE_META:\n return {\n ...state,\n ...action.payload\n };\n default:\n return state;\n }\n};\n","import arrayUtils from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/utils/array-utils';\nimport config from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/services/config';\n\nvar initialState = {\n // The attributes for the current category\n categoryAttributes: [],\n // The attributes of the draft.\n /**\n draftAttributes: {\n termAttributeValues: [\n {\n id: 1,\n backingField: 'clothes_size',\n userGenerated: true,\n values: [\n 'b'\n ]\n }\n ],\n numberAttributeValues: []\n }\n */\n draftAttributes: {},\n // A list of the selected attributes (draftAttributes) for display on the page.\n // Exists for ease of use in views.\n // Format:\n /**\n {\n title: 'Klädstorlek',\n value: 'L'\n }\n */\n displayAttributes: [],\n validationError: null\n};\n\nconst setCategoryAttributeOption = (state, action) => {\n const { payload } = action;\n const newState = {\n ...state,\n categoryAttributes: arrayUtils.shallowCopyArrayObjects(\n state.categoryAttributes\n )\n };\n const attribute = newState.categoryAttributes.find(\n a => a.id === payload.attributeId\n );\n const options = arrayUtils.shallowCopyArrayObjects(attribute.options);\n if (!attribute.isMultiSelect) {\n options.map(o => (o.isActive = false));\n attribute.numberOfValuesSelected = 0;\n }\n if (payload.optionValue) {\n const option = options.find(o => o.value === payload.optionValue);\n option.isActive = payload.activate;\n if (payload.activate) {\n attribute.numberOfValuesSelected++;\n } else {\n attribute.numberOfValuesSelected--;\n }\n }\n attribute.options = options;\n return newState;\n};\n\nconst updateCategoryAttributesOptionsStatuses = state => {\n const newState = {\n ...state,\n categoryAttributes: arrayUtils.shallowCopyArrayObjects(\n state.categoryAttributes\n )\n };\n const draftTermAttributes =\n newState.draftAttributes.termAttributeValues || [];\n const findCategoryAttribute = attributeId =>\n newState.categoryAttributes.find(a => a.id === attributeId);\n draftTermAttributes.forEach(draftTermAttribute => {\n const categoryAttribute = findCategoryAttribute(draftTermAttribute.id);\n if (!categoryAttribute) return;\n categoryAttribute.options.forEach(\n option =>\n (option.isActive = draftTermAttribute.values.includes(\n option.value\n ))\n );\n categoryAttribute.numberOfValuesSelected =\n draftTermAttribute.values.length;\n });\n return newState;\n};\n\nconst findTitleForAttributeId = (categoryAttributes, attributeId) => {\n const categoryAttribute = categoryAttributes.find(\n a => a.id === attributeId\n );\n return categoryAttribute ? categoryAttribute.title : null;\n};\n\nconst createDisplayAttributes = (categoryAttributes, draftAttributes) => {\n const result = [];\n if (!draftAttributes.termAttributeValues) return result;\n draftAttributes.termAttributeValues.forEach(tav => {\n const title = findTitleForAttributeId(categoryAttributes, tav.id);\n const value = tav.values.join(', ');\n if (!title || !value) return;\n result.push({\n title,\n value\n });\n });\n return result;\n};\n\nconst setDraftAttributes = (state, action) => {\n const newState = {\n ...state,\n draftAttributes: {\n ...action.payload\n }\n };\n updateDisplayAttributes(newState);\n return newState;\n};\n\nconst updateDisplayAttributes = newState => {\n newState.displayAttributes = createDisplayAttributes(\n newState.categoryAttributes,\n newState.draftAttributes\n );\n return newState;\n};\n\nconst setCategoryAttributes = (state, action) => {\n const newState = {\n ...state,\n categoryAttributes: arrayUtils.shallowCopyArrayObjects(action.payload)\n };\n updateDisplayAttributes(newState);\n return newState;\n};\n\nconst resetAttributes = () => {\n return { ...initialState };\n};\n\nconst validate = newState => {\n const attributesWithoutValue = [];\n newState.categoryAttributes.forEach(attribute => {\n if (attribute.minNumberOfValues === 0) {\n return;\n }\n if (attribute.options.length === 0) {\n // There were no options to choose from.\n // May not happen when backend implementation is done,\n // we should not get an empty list of options.\n return;\n }\n const values = attribute.options.reduce((acc, option) => {\n if (option.isActive) {\n acc.push(option.value);\n }\n return acc;\n }, []);\n if (values.length === 0) {\n attributesWithoutValue.push(attribute.title);\n }\n });\n\n if (attributesWithoutValue.length > 1) {\n var lastTitle = attributesWithoutValue.pop();\n newState.validationError = `Ange ${attributesWithoutValue.join(\n ', '\n )} och ${lastTitle}.`;\n } else if (attributesWithoutValue.length > 0) {\n newState.validationError = `Ange ${attributesWithoutValue.pop()}.`;\n } else {\n newState.validationError = null;\n }\n\n return newState;\n};\n\nconst reducers = {\n RESET_ATTRIBUTES: resetAttributes,\n SET_CATEGORY_ATTRIBUTES: setCategoryAttributes,\n SET_DRAFT_ATTRIBUTES: setDraftAttributes,\n SET_CATEGORY_ATTRIBUTE_OPTION: setCategoryAttributeOption,\n UPDATE_CATEGORY_ATTRIBUTES_OPTIONS_STATUSES: updateCategoryAttributesOptionsStatuses\n};\n\nexport default (state, action) => {\n if (!config.isSyiAttributesEnabled) {\n return initialState;\n }\n state = state || initialState;\n const reducer = reducers[action.type];\n if (reducer) {\n return validate(reducer(state, action));\n }\n return state;\n};\n","import 'underscore';\nimport { createReducer } from '@reduxjs/toolkit';\nimport userData from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/services/user-data';\nimport config from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/services/config';\n\nconst createInitalState = () => {\n const shouldGiveConsent =\n config.isSyiMemberConsentEnabled && userData.braintree.isBraintreeOnly;\n const showLegacyConsent =\n !shouldGiveConsent && userData.braintree.isBraintreeOnly;\n\n return {\n hasTraderaPayConsent: !!userData.consent.hasTraderaPayConsent,\n shouldGiveConsent,\n showLegacyConsent,\n hasValidationError:\n shouldGiveConsent && !userData.consent.hasTraderaPayConsent\n };\n};\n\nexport default createReducer(createInitalState, {\n SET_TRADERAPAY_CONSENT: (state, action) => {\n state.hasTraderaPayConsent = action.payload;\n state.hasValidationError = !action.payload;\n }\n});\n","import { combineReducers } from 'redux';\nimport draft from './reducers/draft';\nimport category from './reducers/category';\nimport payment from './reducers/payment';\nimport syi from './reducers/syi';\nimport errors from './reducers/errors';\nimport shipping from './reducers/next-shipping';\nimport templates from './reducers/templates';\nimport template from './reducers/template';\nimport bankid from './reducers/bankid';\nimport buyerRegion from './reducers/buyer-region';\nimport itemCondition from './reducers/item-condition';\nimport campaignCode from './reducers/campaign-code';\nimport fees from './reducers/fees';\nimport itemDuration from './reducers/item-duration';\nimport shortDescription from './reducers/short-description';\nimport extraFeatures from './reducers/extra-features';\nimport images from './reducers/images';\nimport price from './reducers/price';\nimport edit from './reducers/edit';\nimport longDescription from './reducers/long-description';\nimport scroll from './reducers/scroll';\nimport charity from './reducers/charity';\nimport drafts from './reducers/drafts';\nimport attributes from './reducers/attributes';\nimport language from './reducers/language';\nimport traderaStateBankId from 'tradera-state/bank-id/reducer';\nimport memberConsent from './reducers/member-consent';\n\nexport default combineReducers({\n attributes,\n bankid,\n bankId: traderaStateBankId,\n buyerRegion,\n campaignCode,\n category,\n charity,\n draft,\n drafts,\n edit,\n errors,\n extraFeatures,\n fees,\n images,\n itemCondition,\n itemDuration,\n language,\n longDescription,\n memberConsent,\n payment,\n price,\n scroll,\n shipping,\n shortDescription,\n syi,\n templates,\n template\n});\n","import arrayUtils from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/utils/array-utils';\nimport 'underscore';\n\nvar initialState = null;\n\nexport default (state, action) => {\n state = state || initialState;\n\n switch (action.type) {\n case 'SET_DRAFTS':\n if (action.payload) {\n state = arrayUtils.shallowCopyArrayObjects(action.payload);\n } else {\n state = null;\n }\n break;\n }\n return state;\n};\n","import { getLanguage } from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/utils/language';\n\nexport default state => {\n state = state || {\n preferredLanguage: getLanguage()\n };\n\n return state;\n};\n","import { combineReducers } from 'redux';\nimport viewItem from './view-item/reducer';\nimport startPage from './start-page/reducer';\nimport checkout from './checkout/reducer';\nimport syi from './syi/reducer';\nimport initData from 'init-data';\n\nlet reducers = {\n checkout,\n viewItem,\n startPage\n};\nif (initData.pageName === 'SellItem') {\n reducers.syi = syi;\n}\n\nexport default combineReducers(reducers);\n","import { combineReducers } from 'redux';\n\nimport ads from './ads/reducer';\nimport bankId from './bank-id/reducer';\nimport categories from './categories/reducer';\nimport discover from 'tradera-state/discover/reducer';\nimport environment from './environment/reducer';\nimport initData from './init-data/reducer';\nimport items from './items/reducer';\nimport language from './language/reducer';\nimport member from './member/reducer';\nimport multiCurrency from './multi-currency/reducer';\nimport page from './page/reducer';\nimport pushNotifications from './push-notifications/push-notifications-slice';\nimport shippingRegion from './shipping-region/reducer';\nimport ui from './ui/reducer';\nimport views from './views/reducer';\n\nexport default combineReducers({\n ads,\n bankId,\n categories,\n discover,\n environment,\n initData,\n items,\n language,\n member,\n multiCurrency,\n page,\n pushNotifications,\n shippingRegion,\n ui,\n views\n});\n","export const getAllProviders = state =>\n state.primaryShippingProviders.concat(state.secondaryShippingProviders);\n\nexport const getAllProducts = state =>\n getAllProviders(state).flatMap(provider => provider.products);\n\nexport const getPrimaryOrSecondaryProducts = (state, onlyPrimary) =>\n (onlyPrimary\n ? state.primaryShippingProviders\n : state.secondaryShippingProviders\n ).flatMap(provider => provider.products);\n\nexport const getProduct = (state, onlyPrimary, productType) =>\n getPrimaryOrSecondaryProducts(state, onlyPrimary).find(\n product => product.type === productType\n );\n","import 'underscore';\nimport arrayUtils from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/utils/array-utils';\n\nfunction createInitialState() {\n var initialState = {\n suggestionsAvailable: false,\n levels: new Array(4),\n anyLevelOpen: false,\n showExplanation: true,\n draftCategoryId: 0,\n draftCategoryPath: [],\n previousDraftCategoryId: 0,\n prevoiusDraftCategoryPath: [],\n shortDescriptionForRecommendations: null,\n validationError: null\n };\n initialState.levels = _.map(initialState.levels, function(level, index) {\n level = { index: index };\n level.categories = [];\n level.suggestions = [];\n level.suggestionsVisible = false;\n level.categoriesVisible = false;\n level.moreButtonVisible = false;\n level.hideButtonVisible = false;\n level.selectedCategory = null;\n level.isOpen = false;\n level.visible = true;\n level.disabled = true;\n return level;\n });\n initialState.levels[0].disabled = false;\n return initialState;\n}\n\nfunction validate(newState) {\n newState.validationError =\n !newState.draftCategoryId || newState.draftCategoryId === 0\n ? 'Kategori saknas'\n : null;\n\n return newState;\n}\n\nexport default (state, action) => {\n state = state || createInitialState();\n switch (action.type) {\n case 'RESET_CATEGORY': {\n const newState = _.assign({}, createInitialState());\n return validate(_.assign({}, newState));\n }\n case 'CATEGORIES_LOADING': {\n const newLevels = arrayUtils.shallowCopyArrayObjects(state.levels);\n const newState = _.assign({}, state, { levels: newLevels });\n newState.levels[action.index].loading = true;\n return validate(newState);\n }\n case 'CATEGORIES_LOADED': {\n const newLevels = arrayUtils.shallowCopyArrayObjects(state.levels);\n const newState = _.assign({}, state, { levels: newLevels });\n newState.levels[action.index].loading = false;\n newState.levels[\n action.index\n ].categories = action.category.categories.slice();\n newState.levels[\n action.index\n ].suggestions = action.category.suggestions.slice();\n newState.levels[action.index].disabled = false;\n var suggestions =\n newState.levels[action.index].suggestions.length > 0;\n if (suggestions) {\n newState.levels[action.index].suggestionsVisible = true;\n newState.levels[action.index].moreButtonVisible = !newState\n .levels[action.index].categoriesVisible;\n newState.levels[action.index].hideButtonVisible = !newState\n .levels[action.index].moreButtonVisible;\n if (action.index === 0) {\n newState.shortDescriptionForRecommendations =\n action.shortDescriptionForRecommendations;\n newState.showExplanation = true;\n }\n } else {\n newState.shortDescriptionForRecommendations = null;\n newState.levels[action.index].suggestionsVisible = false;\n newState.levels[action.index].categoriesVisible = true;\n newState.levels[action.index].moreButtonVisible = false;\n newState.levels[action.index].hideButtonVisible = !newState\n .levels[action.index].moreButtonVisible;\n }\n return validate(newState);\n }\n case 'OPEN_LEVEL': {\n const newLevels = arrayUtils.shallowCopyArrayObjects(state.levels);\n const newState = _.assign({}, state, { levels: newLevels });\n newState.anyLevelOpen = true;\n newState.levels[action.index].isOpen = true;\n newState.levels[action.index].disabled = false;\n const suggestions =\n newState.levels[action.index].suggestions.length > 0;\n if (suggestions) {\n newState.levels[action.index].suggestionsVisible = true;\n newState.levels[action.index].moreButtonVisible = !newState\n .levels[action.index].categoriesVisible;\n newState.levels[action.index].hideButtonVisible = !newState\n .levels[action.index].moreButtonVisible;\n } else {\n newState.levels[action.index].suggestionsVisible = false;\n newState.levels[action.index].categoriesVisible = true;\n newState.levels[action.index].moreButtonVisible = false;\n newState.levels[action.index].hideButtonVisible = !newState\n .levels[action.index].moreButtonVisible;\n }\n return validate(newState);\n }\n case 'CLOSE_LEVEL': {\n const newLevels = arrayUtils.shallowCopyArrayObjects(state.levels);\n const newState = _.assign({}, state, { levels: newLevels });\n newState.anyLevelOpen = false;\n newState.levels[action.index].isOpen = false;\n return newState;\n }\n case 'TOGGLE_CATEGORIES': {\n const newLevels = arrayUtils.shallowCopyArrayObjects(state.levels);\n const newState = _.assign({}, state, { levels: newLevels });\n newState.levels[action.index].categoriesVisible = action.value;\n newState.levels[action.index].moreButtonVisible = !action.value;\n newState.levels[action.index].hideButtonVisible = action.value;\n return validate(newState);\n }\n case 'SELECT_LEVEL_CATEGORY': {\n const newLevels = arrayUtils.shallowCopyArrayObjects(state.levels);\n const newState = _.assign({}, state, { levels: newLevels });\n newState.levels[action.index].selectedCategory = action.category;\n if (action.category.isLeaf) {\n newState.showExplanation = false;\n }\n return validate(newState);\n }\n case 'TOGGLE_LEVEL_LABEL': {\n const newLevels = arrayUtils.shallowCopyArrayObjects(state.levels);\n const newState = _.assign({}, state, { levels: newLevels });\n newState.levels[action.index].visible = action.value;\n return validate(newState);\n }\n case 'DISABLE_LEVEL': {\n const newLevels = arrayUtils.shallowCopyArrayObjects(state.levels);\n const newState = _.assign({}, state, { levels: newLevels });\n newState.levels[action.index].disabled = true;\n return validate(newState);\n }\n case 'RESET_LEVEL': {\n const newLevels = arrayUtils.shallowCopyArrayObjects(state.levels);\n const newState = _.assign({}, state, { levels: newLevels });\n newState.levels[action.index].selectedCategory = null;\n newState.levels[action.index].suggestions = [];\n newState.levels[action.index].categories = [];\n if (action.index === 0) {\n newState.showExplanation = true;\n }\n return validate(newState);\n }\n case 'SET_DRAFT_CATEGORY': {\n const newLevels = arrayUtils.shallowCopyArrayObjects(state.levels);\n const newState = _.assign({}, state, {\n draftCategoryId: action.categoryId,\n draftCategoryPath: action.categoryPath,\n previousDraftCategoryId: state.draftCategoryId,\n prevoiusDraftCategoryPath: state.prevoiusDraftCategoryPath,\n levels: newLevels\n });\n return validate(newState);\n }\n default:\n return state;\n }\n};\n","import 'underscore';\n\nvar initialState = {\n isPropertyEditMode: false,\n creationType: 'new',\n allErrorsVisible: false,\n isEditOfPublishedItem: false,\n editedImageIndex: null,\n publishPending: false,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishedItemPendingVip: false,\n publishedItem: null,\n openModal: null,\n openModalData: null,\n autoSaveEnabled: false,\n draftCanBeResumed: false,\n itemUpdating: false,\n itemUpdated: false\n};\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'RESET_SYI':\n return _.assign({}, initialState);\n case 'SET_IS_PROPERTY_EDIT_MODE':\n return _.assign({}, state, { isPropertyEditMode: action.payload });\n case 'SET_CREATION_TYPE':\n return _.assign({}, state, { creationType: action.payload });\n case 'SHOW_ALL_ERRORS':\n return _.assign({}, state, { allErrorsVisible: true });\n case 'HIDE_ALL_ERRORS':\n return _.assign({}, state, { allErrorsVisible: false });\n case 'SET_IS_EDIT_OF_PUBLISHED_ITEM':\n return _.assign({}, state, {\n isEditOfPublishedItem: action.payload\n });\n case 'SET_PUBLISHED_ITEM_PENDING_VIP':\n return _.assign({}, state, {\n publishedItemPendingVip: action.payload,\n publishedItem: null,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishPending: false,\n publishDelayed: false\n });\n case 'SET_PUBLISHED_ITEM_DELAYED':\n return _.assign({}, state, {\n publishedItemPendingVip: action.payload,\n publishedItem: null,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishPending: false,\n publishDelayed: true\n });\n case 'SET_PUBLISHED_ITEM':\n return _.assign({}, state, {\n publishedItem: action.payload,\n publishedItemPendingVip: null,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishPending: false,\n publishDelayed: false\n });\n case 'SET_PUBLISH_FAILED':\n return _.assign({}, state, {\n publishedItem: null,\n publishedItemPendingVip: null,\n publishFailed: true,\n publishFailedReasonDisplayText: action.reasonDisplayText,\n publishPending: false,\n publishDelayed: false\n });\n case 'SET_PUBLISH_PENDING':\n return _.assign({}, state, {\n publishedItem: null,\n publishedItemPendingVip: null,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishPending: true,\n publishDelayed: false\n });\n case 'RESET_PUBLISH_STATE':\n return _.assign({}, state, {\n publishedItem: null,\n publishedItemPendingVip: null,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishPending: false,\n publishDelayed: false\n });\n case 'SET_EDITED_IMAGE_INDEX':\n return _.assign({}, state, { editedImageIndex: action.payload });\n case 'SET_CATEGORY_RESTRICTION':\n return _.assign({}, state, { categoryRestriction: action.payload });\n case 'TOGGLE_MODAL':\n var newValue =\n state.openModal === action.payload ? null : action.payload;\n return _.assign({}, state, { openModal: newValue });\n case 'SHOW_MODAL':\n return _.assign({}, state, {\n openModal: action.modalId,\n openModalData: action.modalData\n });\n case 'HIDE_MODAL':\n return _.assign({}, state, { openModal: null });\n case 'ENABLE_AUTOSAVE':\n return _.assign({}, state, { autoSaveEnabled: true });\n case 'DISABLE_AUTOSAVE':\n return _.assign({}, state, { autoSaveEnabled: false });\n case 'SET_DRAFT_CAN_BE_RESUMED':\n return _.assign({}, state, { draftCanBeResumed: action.payload });\n case 'SET_ITEM_UPDATING':\n return _.assign({}, state, { itemUpdating: action.payload });\n case 'SET_ITEM_UPDATED':\n return _.assign({}, state, { itemUpdated: action.payload });\n default:\n return state;\n }\n};\n","export default window.sellingGlobalData;\n","import 'underscore';\nimport arrayUtils from '../../../../../EbaySweden.TouchWeb/Areas/Selling/static/script/app_react/utils/array-utils';\n\nvar initialState = {\n slots: [{}, {}, {}, {}, {}],\n validationError: null,\n uploadError: null,\n imageCount: 0\n};\n\nfunction validate(newState) {\n if (_.any(newState.slots, slot => !!slot.imageUrl)) {\n newState.validationError = null;\n } else {\n newState.validationError = 'Lägg till minst en bild';\n }\n return newState;\n}\n\nfunction resolveFirstEmpty(slots) {\n let foundFirst = false;\n for (var i = 0; i < slots.length; i++) {\n if (foundFirst) {\n slots[i].firstEmpty = false;\n } else if (!slots[i].imageUrl) {\n slots[i].firstEmpty = true;\n foundFirst = true;\n }\n }\n}\n\nfunction resetUploadError(newState) {\n newState.uploadError = null;\n}\n\nfunction removeLastLoading(newState) {\n let slots = newState.slots;\n for (var i = slots.length; i-- > 0; ) {\n if (slots[i].isUploading) {\n slots[i].isUploading = false;\n return;\n }\n }\n}\n\nfunction setLoadingOnFreeSlots(newState, numberOfLoading) {\n let slots = newState.slots;\n for (var i = 0; i < slots.length; i++) {\n if (!slots[i].imageId) {\n slots[i].isUploading = true;\n if (--numberOfLoading <= 0) {\n return;\n }\n }\n }\n}\n\nfunction setImageCount(newState) {\n let withUrl = _.filter(newState.slots, slot => !!slot.imageUrl);\n newState.imageCount = withUrl.length;\n}\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_DRAFT_IMAGES': {\n var slots = [{}, {}, {}, {}, {}];\n\n for (let i = 0; i < slots.length; i++) {\n slots[i].isListingImage = false;\n slots[i].imageId = null;\n slots[i].rotationDegrees = null;\n slots[i].imageUrl = null;\n slots[i].firstEmpty = false;\n slots[i].isUploading = false;\n }\n\n var images = action.payload;\n for (let i = 0; i < images.length && i < slots.length; i++) {\n if (images[i].draftImage) {\n slots[i].isListingImage = false;\n slots[i].imageId = images[i].draftImage.imageId;\n slots[i].rotationDegrees =\n images[i].draftImage.rotationDegrees;\n } else if (images[i].listingImage) {\n slots[i].isListingImage = true;\n slots[i].filename = images[i].listingImage.filename;\n slots[i].imageGroupId = images[i].listingImage.imageGroupId;\n slots[i].imageId = images[i].listingImage.imageId;\n slots[i].rotationDegrees =\n images[i].listingImage.rotationDegrees;\n } else {\n slots[i].isListingImage = false;\n slots[i].imageId = images[i].imageId;\n slots[i].rotationDegrees = images[i].rotationDegrees;\n }\n slots[i].imageUrl = images[i].imageUrl;\n }\n\n resolveFirstEmpty(slots);\n let newState = _.assign({}, state, { slots });\n setImageCount(newState);\n resetUploadError(newState);\n return validate(newState);\n }\n case 'SET_UPLOADED_IMAGE_IN_SLOT': {\n let newslots = arrayUtils.shallowCopyArrayObjects(state.slots);\n let slot = newslots[action.slotIndex];\n slot.imageUrl = action.imageUrl;\n slot.imageId = action.imageId;\n slot.isListingImage = false;\n slot.isUploading = false;\n slot.rotationDegrees = null;\n resolveFirstEmpty(newslots);\n let newState = _.assign({}, state, { slots: newslots });\n setImageCount(newState);\n resetUploadError(newState);\n return validate(newState);\n }\n case 'SET_IMAGE_SLOTS': {\n let newslots = arrayUtils.shallowCopyArrayObjects(action.slots);\n resolveFirstEmpty(newslots);\n let newState = _.assign({}, state, { slots: newslots });\n setImageCount(newState);\n resetUploadError(newState);\n return validate(newState);\n }\n case 'SET_IMAGE_ROTATION': {\n let slots = arrayUtils.shallowCopyArrayObjects(state.slots);\n slots[action.slotIndex].rotationDegrees = action.rotationDegrees;\n let newState = _.assign({}, state, { slots: slots });\n resetUploadError(newState);\n return validate(newState);\n }\n case 'SET_IMAGE_UPLOAD_FAILED': {\n let newState = _.assign({}, state, { uploadError: action.payload });\n setImageCount(newState);\n removeLastLoading(newState);\n return validate(newState);\n }\n case 'SET_IMAGES_UPLOADING': {\n let slots = arrayUtils.shallowCopyArrayObjects(state.slots);\n let newState = _.assign({}, state, {\n slots: slots,\n uploadError: null\n });\n setLoadingOnFreeSlots(newState, action.numberOfSlots);\n return validate(newState);\n }\n case 'HIDE_ALL_ERRORS': {\n let newState = _.assign({}, state, {\n uploadError: null\n });\n return newState;\n }\n default:\n return state;\n }\n};\n","export default {\n ADD: 'ITEMS/ADD',\n ADD_RECENTLY_VIEWED: 'ITEMS/ADD_RECENTLY_VIEWED',\n WISHLIST: 'ITEMS/WISHLIST',\n REMOVE_WISHLIST: 'ITEMS/REMOVE_WISHLIST',\n SETTINGS: 'ITEMS/SETTINGS',\n UPDATE_ITEM: 'ITEMS/UPDATE_ITEM'\n};\n","import { logger } from 'packages';\nimport * as gtm from 'tradera-apps/tradera/components/discover/helpers/search-gtm';\nimport { getReturnUrl } from 'tradera-utils/login';\nimport { DEFAULT_COOKIES } from 'tradera-constants/cookies';\nimport { API_ERRORS } from 'tradera-utils/api';\nimport { cache, CACHE_KEYS } from 'tradera-utils/cache';\nimport cookieUtil from 'tradera-utils/cookie';\nimport actionTypes from './action-types';\nimport {\n getSystemMessages,\n getMessagingNotifications,\n getDismissSwish\n} from './api';\nimport itemActions from '../items/actions';\nimport { getItem } from '../items/api';\n\nconst toggleHeaderSearch = payload => ({\n type: actionTypes.TOGGLE_HEADER_SEARCH,\n payload\n});\n\nconst openGdprModal = payload => ({\n type: actionTypes.OPEN_GDPR_MODAL,\n payload\n});\n\nconst closeGdprModal = payload => ({\n type: actionTypes.CLOSE_GDPR_MODAL,\n payload\n});\n\nconst openGdprSettings = payload => ({\n type: actionTypes.OPEN_GDPR_SETTINGS,\n payload\n});\n\nconst closeGdprSettings = payload => ({\n type: actionTypes.CLOSE_GDPR_SETTINGS,\n payload\n});\n\nconst openQuickView = payload => dispatch => {\n const { openedFrom, ...restOfPayload } = payload;\n return getItem(restOfPayload.itemId)\n .then(({ data }) => {\n if (data) {\n dispatch(itemActions.add([data]));\n }\n dispatch({\n type: actionTypes.OPEN_QUICK_VIEW,\n payload: restOfPayload\n });\n gtm.trackAction('Quick View', `Open: from ${openedFrom}`);\n return data;\n })\n .catch(error => {\n dispatch(closeQuickView());\n logger(error);\n });\n};\n\nconst closeQuickView = payload => ({\n type: actionTypes.CLOSE_QUICK_VIEW,\n payload\n});\n\nconst openVideoModal = payload => ({\n type: actionTypes.OPEN_VIDEO_MODAL,\n payload\n});\n\nconst closeVideoModal = payload => ({\n type: actionTypes.CLOSE_VIDEO_MODAL,\n payload\n});\n\n/**\n * signIn\n * @param {object} payload\n * @param {string} payload.redirectUrl - where to send the user after login completes\n */\nconst signIn = payload => (dispatch, getStore) => {\n const {\n environment: { featureSwitches }\n } = getStore();\n\n if (!featureSwitches['login-anywhere']) {\n window.location = `/login${getReturnUrl(payload.redirectUrl)}`;\n } else {\n dispatch(openProfileMenu(payload.redirectUrl));\n }\n};\n\n/*\n Changes made to messaging modal will affect My Tradera as well!\n*/\nconst openMessagingModal = payload => ({\n type: actionTypes.OPEN_MESSAGING_MODAL,\n payload\n});\n\nconst closeMessagingModal = payload => ({\n type: actionTypes.CLOSE_MESSAGING_MODAL,\n payload\n});\n\n/**\n * Open a notification optin modal\n *\n * @param {boolean} type - type of notifications to show modal for\n * @returns {function(*, *): boolean}\n */\nconst openNotificationOptinModal = (\n modalType,\n gaLabel,\n title,\n description,\n tagGroups\n) => async (dispatch, getState) => {\n const { pushNotifications } = getState();\n if (!pushNotifications.enabled) {\n return;\n }\n if (pushNotifications.shownModals[modalType] === true) {\n return;\n }\n dispatch({\n type: actionTypes.OPEN_NOTIFICATION_OPTIN_MODAL,\n payload: {\n modalType,\n gaLabel,\n title,\n description,\n tagGroups\n }\n });\n};\n\nconst closeNotificationOptinModal = payload => ({\n type: actionTypes.CLOSE_NOTIFICATION_OPTIN_MODAL,\n payload\n});\n\nconst openProfileMenu = payload => ({\n type: actionTypes.OPEN_PROFILE_MENU,\n payload\n});\n\nconst closeProfileMenu = payload => ({\n type: actionTypes.CLOSE_PROFILE_MENU,\n payload\n});\n\nconst openCategoryDropdownMenu = payload => ({\n type: actionTypes.OPEN_CATEGORY_DROPDOWN_MENU,\n payload\n});\n\nconst closeCategoryDropdownMenu = payload => ({\n type: actionTypes.CLOSE_CATEGORY_DROPDOWN_MENU,\n payload\n});\n\nconst openSearchForm = payload => ({\n type: actionTypes.OPEN_SEARCH_FORM,\n payload\n});\n\nconst closeSearchForm = payload => ({\n type: actionTypes.CLOSE_SEARCH_FORM,\n payload\n});\n\nconst updateItemLayout = value => {\n const defaultCookie = DEFAULT_COOKIES['ITEM_LAYOUT'];\n const expires = defaultCookie.length;\n try {\n cookieUtil.createCookie(defaultCookie.key, value, expires);\n } catch (e) {\n logger(e);\n }\n return {\n type: actionTypes.ITEM_LAYOUT,\n payload: value\n };\n};\n\nconst updateSiteLayout = value => {\n const defaultCookie = DEFAULT_COOKIES['SITE_LAYOUT'];\n const expires = defaultCookie.length;\n try {\n cookieUtil.createCookie(defaultCookie.key, value, expires);\n } catch (e) {\n logger(e);\n }\n return {\n type: actionTypes.SITE_LAYOUT,\n payload: value\n };\n};\n\nconst updateSystemMessages = systemMessages => ({\n type: actionTypes.UPDATE_SYSTEM_MESSAGES,\n payload: systemMessages\n});\n\nconst fetchSystemMessages = () => async (dispatch, getState) => {\n const {\n environment: { featureSwitches },\n member: { isLoggedIn }\n } = getState();\n if (featureSwitches && featureSwitches['mytradera-alerts'] && isLoggedIn) {\n try {\n let systemMessages = cache.read(CACHE_KEYS.SYSTEM_MESSAGES);\n if (!systemMessages) {\n const fetchedMessages = await getSystemMessages();\n systemMessages = {};\n if (fetchedMessages && 'items' in fetchedMessages.data) {\n fetchedMessages.data.items.forEach(({ type }) => {\n systemMessages[type] = true;\n });\n cache.write(CACHE_KEYS.SYSTEM_MESSAGES, systemMessages);\n }\n }\n dispatch(updateSystemMessages(systemMessages));\n } catch (error) {\n // Invalidate cache to fetch fresh again next action\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n switch (error.message) {\n case API_ERRORS.LOGGED_OUT:\n await dispatch(logOut());\n window.location = '/login/logout';\n break;\n case API_ERRORS.IGNORE_ME:\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n break;\n default:\n logger(error);\n break;\n }\n }\n }\n};\n\nconst updateMessagingNotifications = payload => ({\n type: actionTypes.UPDATE_MESSAGING_NOTIFICATIONS,\n payload\n});\n\nconst fetchMessagingNotifications = () => async dispatch => {\n try {\n let messagingNotifications = cache.read(CACHE_KEYS.MESSAGING_BADGES);\n if (!messagingNotifications) {\n const { data } = await getMessagingNotifications();\n messagingNotifications = data;\n }\n dispatch(updateMessagingNotifications(messagingNotifications));\n } catch (error) {\n // Fail silently\n }\n};\n\nconst dismissSwish = () => dispatch => {\n dispatch({\n type: actionTypes.UPDATE_SYSTEM_MESSAGES,\n payload: {\n SwishNumberMissing: false\n }\n });\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n getDismissSwish().catch(() => {\n // Fail silently\n });\n};\n\nconst logOut = () => async dispatch => {\n cache.remove(CACHE_KEYS.MESSAGING_BADGES);\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n dispatch({\n type: actionTypes.LOG_OUT,\n payload: {}\n });\n};\n\nconst openItemSettings = payload => ({\n type: actionTypes.OPEN_ITEM_SETTINGS,\n payload: { item: payload }\n});\n\nconst closeItemSettings = payload => ({\n type: actionTypes.CLOSE_ITEM_SETTINGS,\n payload\n});\n\nexport default {\n toggleHeaderSearch,\n openGdprModal,\n closeGdprModal,\n openGdprSettings,\n closeGdprSettings,\n openQuickView,\n closeQuickView,\n openVideoModal,\n closeVideoModal,\n signIn,\n openMessagingModal,\n closeMessagingModal,\n openNotificationOptinModal,\n closeNotificationOptinModal,\n updateItemLayout,\n updateSiteLayout,\n updateSystemMessages,\n fetchSystemMessages,\n updateMessagingNotifications,\n fetchMessagingNotifications,\n dismissSwish,\n openProfileMenu,\n closeProfileMenu,\n openCategoryDropdownMenu,\n closeCategoryDropdownMenu,\n openSearchForm,\n closeSearchForm,\n openItemSettings,\n closeItemSettings,\n logOut\n};\n","import axios from 'axios';\n\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n axiosConfigs,\n axiosWithTokenRefresh,\n utilizeCancelToken,\n finalizeResponse,\n handleError,\n API_ERRORS\n} from 'tradera-utils/api';\n\nfunction getSystemMessages() {\n return axiosWithTokenRefresh()\n .get(ENDPOINTS.MEMBER_SYSTEM_MESSAGES, {\n ...axiosConfigs.authenticated\n })\n .then(finalizeResponse())\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\nfunction getMessagingNotifications() {\n const { cancel, cancelToken } = utilizeCancelToken(\n 'fetchMessagingNotifications'\n );\n if (cancel) cancel();\n return axios\n .get(ENDPOINTS.MESSAGING_NOTIFICATIONS, {\n cancelToken,\n ...axiosConfigs.authenticated\n })\n .then(finalizeResponse())\n .catch(handleError());\n}\n\nfunction getDismissSwish() {\n return axios\n .get(ENDPOINTS.PAYMENT_SWISH_OPTOUT, {\n ...axiosConfigs.authenticated\n })\n .then(finalizeResponse())\n .catch(handleError());\n}\n\nexport { getSystemMessages, getMessagingNotifications, getDismissSwish };\n","import { getAllProducts } from './next-shipping-selectors';\n\nexport const getSelectedShippingOptions = state => {\n const result = getAllProducts(state)\n .filter(product => product.selected)\n .map(product => {\n const cost =\n product.cost || product.cost === 0\n ? product.cost\n : product.selectedVariant\n ? product.selectedVariant.price\n : product.cost;\n return {\n type: product.type,\n cost,\n name: product.name,\n summaryDisplayName: product.summaryDisplayName,\n weight: product.weight,\n productId: product.productId\n };\n });\n\n if (state.takeawayDeliveryAccepted) {\n const takeAwayOption =\n result.length === 0\n ? {\n type: 'TakeawayOnly',\n name: 'Endast avhämtning',\n summaryDisplayName: 'Endast avhämtning'\n }\n : {\n type: 'Takeaway',\n name: 'Avhämtning',\n summaryDisplayName: 'Avhämtning'\n };\n result.push(takeAwayOption);\n }\n return result;\n};\n","import actionTypes from './action-types';\n\nconst setAds = ads => {\n return {\n type: actionTypes.SET_ADS,\n payload: ads\n };\n};\n\nexport default {\n setAds\n};\n","import * as gtm from 'tradera-apps/tradera/components/discover/helpers/search-gtm';\nimport gtmCore from 'core/script/app/ui/google-tagmanager-service';\nimport { logger } from 'packages';\n\nimport { getSearchResults } from './api';\nimport actionTypes from './action-types';\nimport itemActions from '../items/actions';\nimport pageActions from '../page/actions';\nimport adsActions from '../ads/actions';\nimport { API_ERRORS } from 'tradera-utils/api';\nimport { reload } from 'tradera-utils/location';\n\nconst requestSearchResults = payload => ({\n type: actionTypes.REQUEST_SEARCH_RESULTS,\n payload\n});\n\n/**\n *\n * @param {object} payload the normalized version of the response\n * @param {object} payload.result\n * @param {object} payload.result.categoryPath\n * @param {object[]} [payload.result.fallbackItems]\n * @param {object[]} [payload.result.items]\n * @param {object} [payload.result.itemsOnDisplay]\n * @param {object[]} [payload.result.itemsOnDisplay.items]\n * @param {object} [payload.result.reduxContainer]\n * @param {object} [payload.result.reduxContainer.ads]\n * @param {object} [payload.result.reduxContainer.pageMeta]\n */\nconst receiveSearchResults = payload => (dispatch, getState) => {\n const {\n result: {\n categoryPath,\n fallbackItems,\n items,\n itemsOnDisplay,\n reduxContainer\n },\n queryParams\n } = payload;\n const ads = reduxContainer?.ads;\n const pageMeta = reduxContainer?.pageMeta;\n\n if (pageMeta) dispatch(pageActions.setPageMeta(pageMeta));\n if (ads) dispatch(adsActions.setAds(ads));\n\n gtmCore.newPage();\n gtm.trackPageView(categoryPath, items, pageMeta ? pageMeta.metaTitle : '');\n const { page: pageStore } = getState();\n if (pageStore.type === 'SearchResults' && items) {\n gtmCore.trackGtmEvent('search', {\n searchQuery: queryParams.q,\n itemIds: items.map(item => item.itemId)\n });\n }\n\n const itemsToAdd = [];\n if (fallbackItems?.length > 0) {\n itemsToAdd.push(...fallbackItems);\n }\n if (items?.length > 0) {\n itemsToAdd.push(...items);\n }\n if (itemsOnDisplay?.items?.length > 0) {\n itemsToAdd.push(...itemsOnDisplay.items);\n }\n if (itemsToAdd.length > 0) {\n dispatch(itemActions.add(itemsToAdd));\n }\n\n return dispatch({\n type: actionTypes.RECEIVE_SEARCH_RESULTS,\n payload\n });\n};\n\nconst fetchSearchResults = (endpoint, queryParams) => {\n return async (dispatch, getState) => {\n dispatch(requestSearchResults({ endpoint, queryParams }));\n const {\n environment: { version }\n } = getState();\n return getSearchResults(endpoint, queryParams, '', version)\n .then(({ data: result }) => {\n const searchResults = { result, endpoint, queryParams };\n dispatch(receiveSearchResults(searchResults));\n return searchResults;\n })\n .catch(error => {\n switch (error.message) {\n case API_ERRORS.CANCELLED:\n break;\n case API_ERRORS.VERSION_MISMATCH:\n reload(true);\n break;\n default:\n dispatch(handleSearchResultsError(error.message));\n break;\n }\n switch (error.message) {\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n case API_ERRORS.VERSION_MISMATCH:\n break;\n default:\n logger(error);\n break;\n }\n });\n };\n};\n\nconst handleSearchResultsError = payload => ({\n type: actionTypes.HANDLE_SEARCH_RESULTS_ERROR,\n payload\n});\n\nconst setSingleFilterValue = (filter, value) => {\n return {\n type: actionTypes.SET_SINGLE_FILTER,\n payload: {\n filter,\n value\n }\n };\n};\n\nconst addItemOnDisplay = payload => ({\n type: actionTypes.ADD_ITEM_ON_DISPLAY,\n payload\n});\n\nconst removeItemOnDisplay = payload => ({\n type: actionTypes.REMOVE_ITEM_ON_DISPLAY,\n payload\n});\n\nconst setCategoryPath = categoryPath => {\n return {\n type: actionTypes.SET_CATEGORY_PATH,\n payload: categoryPath\n };\n};\n\nconst setCurrentCategoryId = categoryId => {\n return {\n type: actionTypes.SET_CURRENT_CATEGORY_ID,\n payload: categoryId\n };\n};\n\nexport default {\n addItemOnDisplay,\n fetchSearchResults,\n receiveSearchResults,\n removeItemOnDisplay,\n requestSearchResults,\n setCategoryPath,\n setCurrentCategoryId,\n setSingleFilterValue\n};\n","//jshint module : true\nimport actionTypes from './action-types';\n\nconst setPageType = type => {\n return {\n type: actionTypes.SET_PAGE_TYPE,\n payload: type\n };\n};\n\nconst setPageMeta = meta => {\n return {\n type: actionTypes.SET_PAGE_META,\n payload: meta\n };\n};\n\nexport default {\n setPageType,\n setPageMeta\n};\n","export default {\n ACTIVE_FILTER_STATES: [\n 'New',\n 'Used',\n 'Private',\n 'Company',\n 'Ended',\n 'Auction',\n 'FixedPrice',\n 'Blekinge',\n 'Dalarna',\n 'Gavleborg',\n 'Gotland',\n 'Halland',\n 'Jamtland',\n 'Jonkoping',\n 'Kalmar',\n 'Kronoberg',\n 'Norrbotten',\n 'Skane',\n 'Sodermanland',\n 'Stockholm',\n 'Uppsala',\n 'Varmland',\n 'Vasterbotten',\n 'Vasternorrland',\n 'Vastmanland',\n 'VastraGotaland',\n 'Orebro',\n 'Ostergotland',\n 'eu;international',\n 'nordic;international',\n 'international'\n ],\n MODALS: {\n FILTER_MODAL: 'filterModal',\n CATEGORY_MODAL: 'categoryModal'\n },\n ITEM_LAYOUT: {\n GRID: 'layout-grid',\n LIST: 'layout-list'\n }\n};\n","import 'underscore';\n\nvar initialState = {\n charityId: null,\n forceFreeShipping: false,\n name: null,\n description: null,\n isSchenkerPaidBySchenker: false\n};\n\nfunction isSchenkerPaying(campaignCode) {\n const code = campaignCode.toUpperCase();\n return (\n code == 'MHO19' ||\n code == 'MHF19' ||\n code == 'MH19' ||\n code == 'TILLSAMMANS' ||\n code == 'TILLSAMMANS-FORETAG'\n );\n}\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'RESET_CHARITY':\n return _.assign({}, initialState);\n case 'SET_CHARITY':\n return _.assign({}, state, {\n charityId: action.charity.charityId,\n forceFreeShipping: action.charity.forceFreeShipping,\n name: action.charity.name,\n description: action.charity.description,\n isSchenkerPaidBySchenker: isSchenkerPaying(action.campaignCode),\n allowZeroDayAuctions: action.charity.allowZeroDayAuctions\n });\n\n default:\n return state;\n }\n};\n","import { createSlice } from '@reduxjs/toolkit';\nimport { Analytics } from 'packages';\n\nconst viewItemSlice = createSlice({\n name: 'viewItem',\n initialState: {},\n reducers: {\n setTranslatedDescription: (state, { payload }) => {\n state.translatedDescription = { ...payload };\n state.translatedDescriptionLoading = false;\n state.translatedDescriptionLoadingError = false;\n },\n showTranslatedDescription: {\n reducer: (state, { payload }) => {\n state.showTranslatedDescription = payload.show;\n },\n prepare: payload => {\n Analytics.trackEvent({\n category: 'View Item Page',\n action: 'Translation',\n label: payload.show ? `Show - ${payload.language}` : 'Hide'\n });\n return { payload };\n }\n },\n beginLoadingTranslatedDescription: state => {\n state.translatedDescriptionLoading = true;\n state.translatedDescriptionLoadingError = false;\n },\n failedLoadingTranslatedDescription: state => {\n state.translatedDescriptionLoading = false;\n state.translatedDescriptionLoadingError = true;\n }\n }\n});\n\nexport const {\n setTranslatedDescription,\n showTranslatedDescription,\n beginLoadingTranslatedDescription,\n failedLoadingTranslatedDescription\n} = viewItemSlice.actions;\n\nexport default viewItemSlice.reducer;\n","import { validateValidShippingPrice } from './validate-valid-shipping-price';\nimport { getAllProviders } from './next-shipping-selectors';\n\nconst errors = {\n empty: 'Ange fraktsätt och fraktkostnad',\n invalid: 'Fraktsätt har ett felaktigt värde',\n duplicate: 'Det alternativa fraktsättet är identiskt med det första',\n weight: 'Fraktsätt: Du behöver ange vikt för paketet'\n};\n\nexport function validate(newState) {\n let hasAnyNonValidOption = false;\n let hasAnyValidOption = false;\n let weightIsInvalid = false;\n\n getAllProviders(newState).forEach(provider => {\n provider.products.forEach(product => {\n if (!product.selected) {\n // Not selected, set to valid without error\n product.isValid = true;\n product.validationError = null;\n product.isWeightValid = true;\n product.weightValidationError = null;\n } else {\n const errorMessage = validateValidShippingPrice(\n product,\n provider.useAdvancedWidget\n );\n if (errorMessage) {\n product.isValid = false;\n product.validationError = errorMessage;\n hasAnyNonValidOption = true;\n } else {\n product.isValid = true;\n product.validationError = null;\n hasAnyValidOption = true;\n }\n if (provider.useAdvancedWidget && !product.productId) {\n product.isWeightValid = false;\n product.weightValidationError = errors.weight;\n weightIsInvalid = true;\n } else {\n product.isWeightValid = true;\n product.weightValidationError = null;\n }\n }\n });\n });\n\n const getFirstValidationError = () => {\n if (!newState.takeawayDeliveryAccepted && !hasAnyValidOption)\n return errors.empty;\n if (hasAnyNonValidOption) return errors.invalid;\n if (weightIsInvalid) return errors.weight;\n if (\n newState.selectedShippingOptions.length > 1 &&\n JSON.stringify(newState.selectedShippingOptions[0]) ==\n JSON.stringify(newState.selectedShippingOptions[1])\n )\n return errors.duplicate;\n return null;\n };\n\n newState.validationError = getFirstValidationError();\n return newState;\n}\n","export function validateValidShippingPrice(so, isAdvanced) {\n if (\n so.type == null ||\n so.type === '' ||\n so.type === 'Takeaway' ||\n so.type === 'TakeawayOnly'\n ) {\n return null;\n }\n if (so.cost === null || so.cost === undefined) {\n return isAdvanced ? null : 'Fraktpris saknas';\n }\n if (!isInt(so.cost)) {\n return 'Du får bara ange belopp i hela kronor';\n }\n if (so.cost > 10000) {\n return 'Fraktpris får inte vara större än 10 000 kr';\n }\n if (so.cost < 0) {\n return 'Fraktpris får inte vara mindre än 0';\n }\n return null;\n}\n\nfunction isInt(number) {\n return number % 1 === 0;\n}\n","import qs from 'qs';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport initData from 'init-data';\n\nconst MESSAGING_PATH = '/messaging';\n\nconst checkUserMessagingParticipation = sellerId => {\n return fetch(ENDPOINTS.MESSAGING_PARTICIPATION + sellerId)\n .then(sellerResponse => sellerResponse.json())\n .then(data => 'participates' in data && data.participates);\n};\n\nconst setUserMessagingParticipation = async messagingSettings => {\n return fetch(ENDPOINTS.MESSAGING_SET_PARTICIPATION, {\n method: 'POST',\n credentials: 'same-origin',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(messagingSettings)\n })\n .then(userResponse => userResponse.json())\n .then(data => data);\n};\n\nconst getUserMessagingEmailSetting = async () => {\n return fetch(ENDPOINTS.MESSAGING_EMAIL_SETTINGS, { credentials: 'include' })\n .then(userResponse => userResponse.json())\n .then(data => data);\n};\n\nconst setUserMessagingEmailSetting = async setting => {\n return fetch(\n ENDPOINTS.MESSAGING_EMAIL_SETTINGS + '?emailNotify=' + setting,\n {\n method: 'POST',\n credentials: 'same-origin',\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n )\n .then(userResponse => userResponse.json())\n .then(data => data);\n};\n\n/**\n * Returns base path for a thread\n *\n * @param {number} u1\n * @param {number} u2\n * @param {number} l\n * @param {object} [options]\n * @param {boolean} [options.singleThread] - Open in single thread mode\n * @param {boolean} [options.openForm] - Open message form right away\n * @param {string} [options.source] - Message source info for tracking\n * @returns {string}\n */\nconst getMessagingThreadLink = (u1, u2, l, options) => {\n const optionsWithDefaults = {\n singleThread: false,\n openForm: false,\n ...options\n };\n const { singleThread, ...queryParams } = optionsWithDefaults;\n return (\n (singleThread ? '/thread/' : '/threads/') +\n 'u' +\n Math.min(u1, u2) +\n '_u' +\n Math.max(u1, u2) +\n '_l' +\n l +\n qs.stringify(queryParams, { addQueryPrefix: true })\n );\n};\n\n/**\n * Returns the path to a thread on Tradera's messaging page\n *\n * @param {number} u1\n * @param {number} u2\n * @param {number} l\n * @param {object} [options]\n * @returns {string}\n */\nconst getMessagingPageLink = (u1, u2, l, options) => {\n return (\n MESSAGING_PATH +\n (u1 && u2 && l ? getMessagingThreadLink(u1, u2, l, options) : '')\n );\n};\n\n/**\n * Get messaging url\n *\n * @returns {string}\n */\nconst getMessagingRemoteUrl = () => {\n return initData.messagingIframeUrl;\n};\n\nexport {\n checkUserMessagingParticipation,\n setUserMessagingParticipation,\n getUserMessagingEmailSetting,\n setUserMessagingEmailSetting,\n getMessagingPageLink,\n getMessagingThreadLink,\n getMessagingRemoteUrl\n};\n","/**\n * @param {string} redirectURL\n */\nexport const getReturnUrl = redirectURL =>\n `?returnUrl=${redirectURL ? redirectURL : window.location.pathname}`;\n","import 'underscore';\n\nvar initialState = {\n scrollY: {}\n};\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_SCROLL_Y': {\n const scrollY = _.assign({}, state.scrollY);\n scrollY[action.key] = action.value;\n return _.assign({}, initialState, { scrollY });\n }\n default:\n return state;\n }\n};\n","import cookieUtil from 'tradera-utils/cookie';\nimport { SHIPPING_COUNTRY } from 'tradera-constants/cookies';\n\nconst getInitialCategoryId = initData => {\n if (initData.categoryPath && initData.categoryPath.length > 0) {\n initData.categoryPath.forEach(item => {\n if (item.selected) {\n return item.id;\n }\n });\n }\n return 0;\n};\n\nexport default initData => {\n const { isLoggedIn, memberCountry } = initData;\n return {\n activeBrands: [],\n activeFilters: [],\n attributeFilters: [],\n categoryPath: initData.categoryPath || [],\n currentCategoryId: getInitialCategoryId(initData),\n displayAllowedBuyerRegionFilter:\n (cookieUtil.hasCookie(SHIPPING_COUNTRY) &&\n cookieUtil.readCookie(SHIPPING_COUNTRY) !== 'SE') ||\n (isLoggedIn && memberCountry !== 'Sweden'),\n endpoint: null,\n error: null,\n fallbackItemsById: [],\n filterCategories: {},\n filterPrice: {},\n filters: {},\n hasResult: false,\n headerText: null,\n internalSearch: {},\n introText: null,\n isFetching: false,\n isFetchingGeolocation: false,\n itemsById: [],\n itemsOnDisplayById: [],\n mainText: null,\n pagination: null,\n queryParams: {},\n totalItems: 0\n };\n};\n","export default initData => {\n const { itemId, viewItemPageResponse } = initData;\n const { item, campaign } = viewItemPageResponse;\n\n return {\n campaign: { ...campaign },\n translatedDescription: null,\n translatedDescriptionLoading: false,\n translatedDescriptionLoadingError: false,\n itemTitle: item.title,\n itemId: itemId,\n showTranslatedDescription: false\n };\n};\n","import { logger } from 'packages';\n\n/**\n *\n * @param {object} initData\n * @param {object} [initData.featureSwitches]\n * @param {object} [initData.startPageResponse]\n * @param {array} [initData.trendingBrands]\n * @param {array} [initData.trendingSearches]\n * @returns {{isFetching: boolean, hasResults: boolean, config: object, trendingBrands: array, trendingSearches: array}}\n */\nexport default initData => {\n let {\n featureSwitches,\n startPageResponse,\n trendingBrands = [],\n trendingSearches = []\n } = initData;\n let config;\n if (featureSwitches?.['start-page-contentful']) {\n if (startPageResponse?.config) {\n try {\n config = JSON.parse(startPageResponse.config);\n } catch (error) {\n logger(error);\n }\n }\n }\n return {\n isFetching: false,\n hasResult: config !== undefined,\n config,\n trendingBrands,\n trendingSearches\n };\n};\n","import initData from 'init-data';\n\nimport ads from './ads/initial-state';\nimport categories from './categories/initial-state';\nimport discover from 'tradera-state/discover/initial-state';\nimport environment from './environment/initial-state';\nimport items from './items/initial-state';\nimport member from './member/initial-state';\nimport multiCurrency from './multi-currency/initial-state';\nimport shippingRegion from './shipping-region/initial-state';\nimport language from './language/initial-state';\nimport page from './page/initial-state';\nimport ui from './ui/initial-state';\nimport views from './views/initial-state';\n\nconst state = getInitialState(\n {\n ads,\n categories,\n discover,\n environment,\n initData,\n items,\n member,\n multiCurrency,\n language,\n page,\n shippingRegion,\n ui,\n views\n },\n initData\n);\n\n/**\n * Builds a complete initial state tree from a map of slice initial states, provided as a state object or a function that builds state from arguments\n *\n * @param {object} initializers\n * @param {string} initializers.key\n * @param {function|object} initializers.initialize\n * @param args\n * @return {object}\n */\nfunction getInitialState(initializers, ...args) {\n const state = {};\n Object.entries(initializers).forEach(([key, initialize]) => {\n state[key] =\n typeof initialize === 'function' ? initialize(...args) : initialize;\n });\n return state;\n}\n\nexport default state;\n","export default initData => {\n return {\n gpt: 'gptData' in initData ? initData.gptData : null,\n adSenseQuery: '',\n adSenseShoppingPublisherId: ''\n };\n};\n","export default initData => {\n const {\n debug,\n discoverEnabled,\n environment,\n enableTimeMetrics,\n enableFastClick,\n featureSwitches,\n isHybridAppContext,\n isNativeAppContext,\n splitTests,\n version\n } = initData;\n\n // Always turn off SPA for native app web views\n if (isHybridAppContext) {\n featureSwitches['spa'] = false;\n }\n\n return {\n debug,\n discoverEnabled,\n environment,\n enableTimeMetrics,\n enableFastClick,\n featureSwitches,\n isHybridAppContext,\n isNativeAppContext,\n splitTests,\n version\n };\n};\n","export default initData => {\n const {\n cleanedMemberAlias,\n facebookId,\n isLoggedIn,\n memberAlias,\n memberDetailedSellerRatingAverage,\n memberCountry,\n memberEmail,\n memberFirstName,\n memberId,\n memberHeroImage,\n memberLastName,\n paymentSettings = {}\n } = initData;\n return {\n cleanedMemberAlias,\n facebookId,\n geolocation: null,\n isLoggedIn,\n memberAlias,\n memberDetailedSellerRatingAverage,\n memberCountry,\n memberEmail,\n memberFirstName,\n memberId,\n memberHeroImage,\n memberLastName,\n paymentSettings\n };\n};\n","import cookieUtil from 'tradera-utils/cookie';\nimport { resolveCode, resolveCurrency } from './helpers';\n\nexport default initData => {\n const enabled =\n initData &&\n initData.featureSwitches &&\n initData.featureSwitches['multi-currency'] &&\n initData.memberCountry !== 'Sverige';\n const currencies = initData.currencies || [];\n const initialCurrencyCode = resolveCode(\n enabled,\n cookieUtil.readCookie('preferred_currency'),\n currencies\n );\n\n return {\n enabled,\n currencies,\n preferredCurrency: resolveCurrency(\n enabled,\n initialCurrencyCode,\n currencies\n )\n };\n};\n","import cookieUtil from 'tradera-utils/cookie';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\nimport {\n LANGUAGE_TOOLTIP_DISMISSED_COOKIE,\n REGION_PICKER_DISMISSED\n} from 'tradera-constants/cookies';\n\nconst getInitialPreferredLanguage = (\n languageCodeIso2,\n availableLanguages,\n defaultLanguage\n) => {\n const availableIsoCodes = availableLanguages.map(\n lang => lang.languageCodeIso2\n );\n if (\n !!languageCodeIso2 &&\n availableIsoCodes.indexOf(languageCodeIso2) !== -1\n ) {\n return availableLanguages.find(\n l => l.languageCodeIso2 === languageCodeIso2\n );\n }\n\n return defaultLanguage;\n};\n\nexport default initData => {\n const showOptoutTooltip =\n GdprSettings.isFunctionalEnabled() &&\n initData.languageCodeIso2 !== 'sv' &&\n initData.memberCountry !== 'Sverige' &&\n !cookieUtil.readCookie(LANGUAGE_TOOLTIP_DISMISSED_COOKIE) &&\n !cookieUtil.readCookie(REGION_PICKER_DISMISSED);\n\n const showTooltip =\n GdprSettings.isFunctionalEnabled() &&\n initData.languageCodeIso2 === 'sv' &&\n initData.memberCountry !== 'Sverige' &&\n !cookieUtil.readCookie(LANGUAGE_TOOLTIP_DISMISSED_COOKIE) &&\n !cookieUtil.readCookie(REGION_PICKER_DISMISSED);\n\n const shouldDisplayInHeader = initData.memberCountry !== 'Sverige';\n const shouldAlwaysDisplayInMenu = initData.memberCountry === 'Sverige';\n\n return {\n shouldDisplayInHeader,\n shouldAlwaysDisplayInMenu,\n preferred: getInitialPreferredLanguage(\n initData.languageCodeIso2,\n initData.availableLanguages,\n initData.defaultLanguage\n ),\n available: initData.availableLanguages,\n showTooltip: showTooltip,\n showOptoutTooltip: showOptoutTooltip\n };\n};\n","export default initData => {\n return {\n allCategories: initData.allCategories || [],\n breadcrumbs: '',\n canonicalLink: '',\n metaDescription: initData.description || '',\n metaRobots: '',\n metaTitle: initData.title || '',\n type: initData.pageName || null\n };\n};\n","import getViewItemState from './view-item/initial-state';\nimport getStartPageState from './start-page/initial-state';\nimport getCheckoutState from './checkout/initial-state';\n\nexport default initData => {\n if (initData && initData.module) {\n const mod = initData.module.split('/');\n // can dynamically import the getInitialState from file in folder of mod[4] and execute\n switch (mod[4]) {\n case 'start-page':\n return { startPage: getStartPageState(initData) };\n case 'view-item':\n return { viewItem: getViewItemState(initData) };\n case 'order-checkout':\n return { checkout: getCheckoutState() };\n default:\n return {};\n }\n }\n\n return {};\n};\n"],"sourceRoot":""}