{"version":3,"sources":["webpack:///./src/frontend/apps/tradera/components/vip/bidding/bin-modal/bin-validation-parser.js","webpack:///./src/frontend/apps/tradera/components/vip/bidding/bin-modal/bin-modal-item-display-confirmed.jsx","webpack:///./src/frontend/apps/tradera/components/vip/bidding/bin-modal/bin-modal.jsx","webpack:///./src/frontend/state/ui/initial-state.js","webpack:///./src/frontend/apps/my-tradera/app/state/actions/payments-actions.js","webpack:///./src/frontend/apps/tradera/components/start-page/content-types.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/item-helper.js","webpack:///./src/frontend/apps/tradera/components/start-page/analytics.js","webpack:///./src/frontend/state/views/checkout/api.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/tradera/logo.jsx","webpack:///./src/frontend/components/carousels/view-item-carousel/index.js","webpack:///./src/frontend/components/push-notification-modal/push-notification-modal.jsx","webpack:///./src/frontend/components/push-notification-modal/push-splash-icon.svg","webpack:///./src/frontend/components/push-notification-modal/push-wishlist-icon.svg","webpack:///./src/frontend/components/push-notification-modal/push-selling-icon.svg","webpack:///./src/frontend/apps/tradera/helpers/optional-lang.js","webpack:///./src/frontend/state/language/selectors.js","webpack:///./src/frontend/apps/tradera/components/vip/bidding/bin-modal/bin-modal-item-display.jsx","webpack:///./src/frontend/state/views/report-item/api.js","webpack:///./src/frontend/state/views/report-item/actions.js","webpack:///./src/frontend/state/views/view-item/constants.js","webpack:///./src/frontend/apps/tradera/components/vip/bidding/bin-modal/bin-modal-payment-summary.jsx","webpack:///./src/frontend/components/alink/index.js","webpack:///./src/frontend/apps/syi/script/app_react/services/user-data.js","webpack:///./src/frontend/apps/tradera/components/start-page/last-chance/last-chance.jsx","webpack:///./src/frontend/apps/my-tradera/app/state/actions/my-tradera.js","webpack:///./src/frontend/apps/my-tradera/app/state/reducers/my-tradera.js","webpack:///./src/frontend/constants/cookies.js","webpack:///./src/frontend/state/views/syi/actions/charity-actions.js","webpack:///./src/frontend/state/ui/action-creators.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/modals/simple-modal.jsx","webpack:///./src/frontend/components/site-header/ongoing-auctions-link.jsx","webpack:///./src/frontend/hooks/use-is-loggedin.js","webpack:///./src/frontend/utils/gdpr-settings.js","webpack:///./src/frontend/utils/languagecode.js","webpack:///./src/frontend/apps/my-tradera/app/state/reducers/cookies.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/payloads/purchase-order.js","webpack:///./src/frontend/components/toasts/simple-toast.jsx","webpack:///./src/frontend/apps/my-tradera/app/state/actions/purchase-order.js","webpack:///./src/frontend/state/bank-id/modal-state.js","webpack:///./src/frontend/state/views/shipping-calculator/reducer.js","webpack:///./src/frontend/components/item-card/item-card-parts/item-card-image-modes.js","webpack:///./src/frontend/components/international-shipping-modal/international-shipping-modal.module.scss","webpack:///./src/frontend/components/international-shipping-modal/international-shipping-modal.jsx","webpack:///./src/frontend/components/modal-renderer/modal-renderer.jsx","webpack:///./src/frontend/state/categories/actions.js","webpack:///./src/frontend/state/categories/api.js","webpack:///./src/frontend/utils/location.js","webpack:///./src/frontend/state/shipping-region/actions.js","webpack:///./src/frontend/state/shipping-region/api.js","webpack:///./src/frontend/constants/breakpoints.js","webpack:///./src/frontend/components/quick-view/quick-view-modal.jsx","webpack:///./src/frontend/components/item-card/generate-item-card-placeholders.js","webpack:///./src/frontend/apps/tradera/components/vip/bidding/bin-modal/bin-modal-shipping-display.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/helpers/helper.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search-category/search-category.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/search.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/helpers/search.analytics.js","webpack:///./src/frontend/apps/tradera/components/vip-shared/shipping-options/translate-buyer-region-text.js","webpack:///./src/frontend/state/views/checkout/reducer.js","webpack:///./src/frontend/components/site-header/dropdown-menu-item-separator.jsx","webpack:///./src/frontend/hooks/use-breakpoint-mobile.js","webpack:///./src/frontend/hooks/use-on-mount.js","webpack:///./src/frontend/hooks/use-page-meta.jsx","webpack:///./src/frontend/hooks/use-scroll-to-top-on-mount.jsx","webpack:///./src/frontend/apps/my-tradera/app/constants/page.js","webpack:///./src/frontend/components/messaging/get-messaging-url.js","webpack:///./src/frontend/apps/tradera/components/vip/helpers/analytics.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/localization/language-select.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/localization/currency-select.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/localization/shipping-country-select-dropdown.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/localization/shipping-country-select.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/localization/localization-menu.jsx","webpack:///./src/frontend/components/feedback/qualtive-button.jsx","webpack:///./src/frontend/apps/my-tradera/app/constants/urls.js","webpack:///./src/frontend/utils/format-time-left.js","webpack:///./src/frontend/apps/syi/script/app_react/services/navigation-service.js","webpack:///./src/frontend/state/shipping-region/initial-state.js","webpack:///./src/frontend/hooks/use-ticker.js","webpack:///./src/frontend/hooks/use-countdown.js","webpack:///./src/frontend/components/site-header/hover-menu/hover-menu-separator.jsx","webpack:///./src/frontend/components/site-header/dropdown-menu-item.jsx","webpack:///./src/frontend/components/errors/not-found-error.jsx","webpack:///./src/frontend/state/views/shipping-calculator/selectors.js","webpack:///./src/frontend/components/site-header/site-header.analytics.js","webpack:///./src/frontend/components/multi-currency/multi-currency.jsx","webpack:///./src/frontend/components/rating-stars/rating-utils.js","webpack:///./src/frontend/components/rating-stars/rating-stars.jsx","webpack:///./src/frontend/state/personalisation/actions.js","webpack:///./src/frontend/state/personalisation/api.js","webpack:///./src/frontend/hooks/use-is-feature-enabled.js","webpack:///./src/frontend/state/views/syi/actions/long-description-actions.js","webpack:///./src/frontend/apps/my-tradera/app/utils/feature-toggles.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/item-columns.js","webpack:///./src/frontend/apps/my-tradera/app/constants/routes.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/modals/modal-footer.jsx","webpack:///./src/frontend/state/views/tradera-shop/action-types.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/components/search-input.jsx","webpack:///./src/frontend/utils/cache.js","webpack:///./src/frontend/apps/tradera/app.jsx","webpack:///./src/frontend/components/transitions/transitions.jsx","webpack:///./src/frontend/apps/tradera/components/vip/bidding/animate-on-value-change.module.scss","webpack:///./src/frontend/apps/tradera/components/vip/bidding/animate-on-value-change.jsx","webpack:///./src/frontend/apps/tradera/components/vip/bidding/bid-details.jsx","webpack:///./src/frontend/constants/page-types.js","webpack:///./src/frontend/state/discover/action-types.js","webpack:///./src/frontend/state/member/index.js","webpack:///./src/frontend/components/form-controls/radio-switch.jsx","webpack:///./src/frontend/state/views/view-item/api.js","webpack:///./src/frontend/components/portals/loading-portal.jsx","webpack:///./src/frontend/components/toasts/tradera-toast-container.jsx","webpack:///./src/frontend/state/ui/action-types.js","webpack:///./src/frontend/apps/my-tradera/app/data/leave-feedback-service.js","webpack:///./src/frontend/components/item-card/item-card-parts/on-display-badge.jsx","webpack:///./src/frontend/state/page/action-types.js","webpack:///./src/frontend/components/messaging/messaging-button.jsx","webpack:///./src/frontend/state/language/api.js","webpack:///./src/frontend/state/language/actions.js","webpack:///./src/frontend/constants/sentry-redux-filters.js","webpack:///./src/frontend/utils/sentry/redux.js","webpack:///./src/frontend/utils/set-nested-object-value.js","webpack:///./src/frontend/state/views/syi/actions/syi-actions.js","webpack:///./src/frontend/state/views/cart/reducer.js","webpack:///./src/frontend/components/site-header/sell-menu.jsx","webpack:///./src/frontend/components/site-header/selling-link.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/start-page.module.scss","webpack:///./src/frontend/state/push-notifications/constants.js","webpack:///./src/frontend/utils/date.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/spinner/spinner.jsx","webpack:///./src/frontend/apps/tradera/components/vip/bidding/bin-modal/bin-modal-bottom-buttons.jsx","webpack:///./src/frontend/apps/my-tradera/app/state/action-types/purchase-order.js","webpack:///./src/frontend/state/views/cart/api.js","webpack:///./src/frontend/state/views/cart/actions.js","webpack:///./src/frontend/hooks/use-qualtive.js","webpack:///./src/frontend/state/multi-currency/helpers.js","webpack:///./src/frontend/components/application-error-boundary/application-error-boundary.jsx","webpack:///./src/frontend/components/international-shipping-modal/constants.js","webpack:///./src/frontend/components/route-map-routes/use-loading.js","webpack:///./src/frontend/hooks/use-timeout.js","webpack:///./src/frontend/components/route-map-routes/route-map-routes.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/storage-service.js","webpack:///./src/frontend/state/categories/initial-state.js","webpack:///./src/frontend/state/bank-id/action-types.js","webpack:///./src/frontend/apps/tradera/components/vip/bidding/bin-modal/bin-modal-seller-name.jsx","webpack:///./src/frontend/components/loader/loader.jsx","webpack:///./src/frontend/state/discover/api.js","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/items-with-stiched-ads.jsx","webpack:///./src/frontend/state/views/syi/reducers/short-description.js","webpack:///./src/frontend/components/item-card/item-card-parts/quick-view-button.jsx","webpack:///./src/frontend/components/atoms/button/button.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/constants.js","webpack:///./src/frontend/state/views/syi/actions/attributes-actions.js","webpack:///./src/frontend/apps/my-tradera/app/components/hoc/large-screens.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/hoc/medium-screens.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/hoc/medium-screens-up.jsx","webpack:///./src/frontend/apps/my-tradera/app/helpers/payloads/initial-payload.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/purchase-order-actions-helper-seller.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/purchase-order-actions-helper-buyer.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/purchase-actions.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/purchase-order.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/payloads/wait-for-backend.js","webpack:///./src/frontend/apps/my-tradera/app/components/hoc/with-page-init.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/hoc/make-responsive.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/hoc/make-sticky.jsx","webpack:///./src/frontend/state/views/view-item/selectors.js","webpack:///./src/frontend/state/language/reducer.js","webpack:///./src/frontend/components/site-header/search-button.jsx","webpack:///./src/frontend/apps/my-tradera/app/helpers/formats.js","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/smiley.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/figure.module.scss","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/figure.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/rating.module.scss","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/rating.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/detailed-rating.module.scss","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/detailed-rating.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/feedbacks-actions.js","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/item-not-received.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/unpaid-item.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/comment-input.module.scss","webpack:///./src/frontend/components/form-controls/auto-height-text-area.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/comment-input.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/leave-feedback-helper.js","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/form.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/details-and-price.module.scss","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/details-and-price.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/leave-feedback-item.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/divider.module.scss","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/divider.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/dialog.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/feedbacks-reducer.js","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/page-header.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/submit-button.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/sticky-container.module.scss","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/sticky-container.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/leave-feedback.module.scss","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/leave-feedback.jsx","webpack:///./src/frontend/utils/array.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/components/highlight-word.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/components/suggestion-list-items.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/components/search-suggestion.jsx","webpack:///./src/frontend/components/portals/modal-portal.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/ajax.js","webpack:///./src/frontend/components/item-card/item-card-parts/end-time-label.jsx","webpack:///./src/frontend/apps/tradera/components/vip/helpers/navigation-helper.js","webpack:///./src/frontend/components/item-card/config.js","webpack:///./src/frontend/state/multi-currency/action-types.js","webpack:///./src/frontend/state/shipping-region/selectors.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/list-helper.js","webpack:///./src/frontend/constants/surveys.js","webpack:///./src/frontend/components/alerts/gdpr/gdpr-modal.jsx","webpack:///./src/frontend/components/alerts/gdpr/gdpr-settings-modal.jsx","webpack:///./src/frontend/components/alerts/gdpr/gpdr-container.jsx","webpack:///./src/frontend/state/push-notifications/helpers.js","webpack:///./src/frontend/state/push-notifications/push-notifications-slice.js","webpack:///./src/frontend/components/errors/no-items-error.jsx","webpack:///./src/frontend/state/views/start-page/initial-state.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/components/breakpoint/breakpoint.js","webpack:///./src/frontend/state/categories/action-types.js","webpack:///./src/frontend/components/site-header/hover-menu/constants.js","webpack:///./src/EbaySweden.TouchWeb/static/script/constants/strings.js","webpack:///./src/frontend/apps/my-tradera/app/constants/text-strings.js","webpack:///./src/frontend/apps/my-tradera/app/data/shipping-providers.js","webpack:///./src/frontend/state/international-shipping/reducer.js","webpack:///./src/frontend/state/views/checkout/checkout-errors.js","webpack:///./src/frontend/components/site-subheader/site-subheader.jsx","webpack:///./src/frontend/state/views/syi/selectors/attribute-selectors.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/filters.js","webpack:///./src/frontend/apps/my-tradera/app/state/reducers/filters.js","webpack:///./src/frontend/constants/state.js","webpack:///./src/frontend/apps/tradera/components/vip/helpers/time-left.jsx","webpack:///./src/frontend/components/loader/index.js","webpack:///./src/frontend/apps/tradera/components/discover/helpers/search-gtm.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/item-labels.js","webpack:///./src/frontend/components/item-card/item-card-parts/fixed-price-label.jsx","webpack:///./src/frontend/state/views/cart/initial-state.js","webpack:///./src/frontend/components/item-card/item-card-parts/price-label.jsx","webpack:///./src/frontend/state/discover/initial-state.js","webpack:///./src/frontend/components/shipping/shipping-provider-icon.jsx","webpack:///./src/frontend/components/site-header/hover-menu/hover-menu.jsx","webpack:///./src/frontend/apps/my-tradera/app/constants/column-definitions.js","webpack:///./src/frontend/apps/syi/script/app_react/services/campaign-service.js","webpack:///./src/frontend/state/views/syi/actions/campaign-code-actions.js","webpack:///./src/frontend/apps/syi/script/app_react/services/draft-service.js","webpack:///./src/frontend/state/views/profile/reducer.js","webpack:///./src/frontend/state/ads/actions.js","webpack:///./src/frontend/components/breadcrumbs/breadcrumbs.jsx","webpack:///./src/frontend/apps/tradera/components/live-shopping/live-shopping-icon.jsx","webpack:///./src/frontend/components/site-header/live-shopping-link.jsx","webpack:///./src/frontend/components/item-card/item-card-parts/wish-list-button.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/modals/modal-header.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/recommendations/recommendation-loading-spinners.jsx","webpack:///./src/frontend/state/shipping-region/reducer.js","webpack:///./src/frontend/components/wait-for-consent-api-loaded/wait-for-consent-api-loaded.jsx","webpack:///./src/frontend/components/site-header/dropdown-menu-item-expandable.jsx","webpack:///./src/frontend/helpers/get-current-page-helper.js","webpack:///./src/frontend/state/member/action-types.js","webpack:///./src/frontend/state/configure-store.js","webpack:///./src/frontend/utils/assert.js","webpack:///./src/frontend/apps/tradera/index.js","webpack:///./src/frontend/state/items/actions.js","webpack:///./src/frontend/apps/syi/script/app_react/utils/throttled-action.js","webpack:///./src/frontend/components/item-card/item-card-parts/buy-now-label.jsx","webpack:///./src/frontend/components/item-card/item-card-parts/seller-rating.jsx","webpack:///./src/frontend/components/item-card/item-card-parts/seller-link.jsx","webpack:///./src/frontend/components/item-card/item-card-parts/shipping-label.jsx","webpack:///./src/frontend/components/item-card/item-list-card.jsx","webpack:///./src/frontend/apps/my-tradera/app/state/actions/filters.js","webpack:///./src/frontend/apps/tradera/components/discover/components/search-results/ads/search-results-ads.jsx","webpack:///./src/frontend/components/site-header/watch-list-menu.jsx","webpack:///./src/frontend/components/site-header/wishlist-link.jsx","webpack:///./src/frontend/state/environment/selectors.js","webpack:///./src/frontend/state/member/selectors.js","webpack:///./src/frontend/utils/history.js","webpack:///./src/frontend/components/item-card/item-card-parts/attribute-buttons-list.jsx","webpack:///./src/frontend/constants/item-types.js","webpack:///./src/frontend/state/member/api.js","webpack:///./src/frontend/state/member/actions.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/on-ready.js","webpack:///./src/frontend/state/views/syi/actions/category-actions.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/modals/overlay.jsx","webpack:///./src/frontend/state/views/syi/actions/payment-actions.js","webpack:///./src/frontend/utils/map-country-code-to-country-key.js","webpack:///./src/frontend/components/site-header/buy-menu.jsx","webpack:///./src/frontend/components/site-header/buying-link.jsx","webpack:///./src/frontend/components/recommendations/recommendations-requests.js","webpack:///./src/frontend/components/form-controls/radio-group.jsx","webpack:///./src/frontend/components/zign-sec-modal/zign-sec-logo.jsx","webpack:///./src/frontend/components/zign-sec-modal/zign-sec-modal.jsx","webpack:///./src/frontend/apps/syi/script/app_react/pages/summary-page/components/syi-zign-sec-modal.jsx","webpack:///./src/frontend/state/views/start-page/reducer.js","webpack:///./src/frontend/apps/my-tradera/app/constants/list-types.js","webpack:///./src/frontend/state/views/checkout/utils.js","webpack:///./src/frontend/apps/my-tradera/app/utils/init-data.js","webpack:///./src/frontend/apps/my-tradera/app/utils/fetch.js","webpack:///./src/frontend/components/item-card/item-card-parts/disacount-price-label.jsx","webpack:///./src/frontend/apps/my-tradera/app/state/payouts/reducer.js","webpack:///./src/frontend/apps/my-tradera/app/state/payouts/initial-state.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/layout/ads/ad-slot-utilities.js","webpack:///./src/frontend/helpers/category-icon-helper.js","webpack:///./src/frontend/constants/storage.js","webpack:///./src/frontend/apps/tradera/components/vip/bidding/bin-modal/bin-modal-top-description.jsx","webpack:///./src/frontend/components/site-header/localization-region-picker.jsx","webpack:///./src/frontend/components/site-header/localization-link.jsx","webpack:///./src/frontend/apps/my-tradera/app/components/listing/item/info-item-components.js","webpack:///./src/frontend/components/site-footer/footer-localization-link.module.scss","webpack:///./src/frontend/components/site-footer/footer-localization-link.jsx","webpack:///./src/frontend/utils/consent-service.js","webpack:///./src/frontend/components/site-footer/footer-links.jsx","webpack:///./src/frontend/components/site-footer/footer-partners.jsx","webpack:///./src/frontend/components/site-footer/site-footer.jsx","webpack:///./src/frontend/apps/tradera/components/vip/api/vip-api.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/modals/modal-body.jsx","webpack:///./src/frontend/hooks/use-interval.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/storage.js","webpack:///./src/frontend/components/dialog/dialog-modal.jsx","webpack:///./src/frontend/apps/syi/script/app_react/services/scribe.js","webpack:///./src/EbaySweden.TouchWeb/static/script/libs/triot.js","webpack:///./src/frontend/utils/countrycode.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/modals/modal-container.jsx","webpack:///./src/frontend/apps/tradera/components/vip/api/vip-api-constants.js","webpack:///./src/frontend/apps/tradera/components/start-page/favourite-sellers/favourite-sellers-empty.svg","webpack:///./src/frontend/apps/tradera/components/start-page/favourite-sellers/favourite-sellers.module.scss","webpack:///./src/frontend/apps/tradera/components/start-page/favourite-sellers/favourite-sellers-fallback.jsx","webpack:///./src/frontend/components/ads/ad.jsx","webpack:///./src/frontend/state/views/syi/reducers/buyer-region.js","webpack:///./src/frontend/utils/cookie.js","webpack:///./src/frontend/utils/register-live-updates.js","webpack:///./src/frontend/state/member/reducer.js","webpack:///./src/frontend/utils/map-language-code-to-language-key.js","webpack:///./src/frontend/components/form-controls/radio-button.jsx","webpack:///./src/frontend/state/items/api.js","webpack:///./src/frontend/apps/syi/script/app_react/services/shipping-calculator-service.js","webpack:///./src/frontend/apps/syi/script/app_react/services/shipping-provider-service.js","webpack:///./src/frontend/state/views/syi/actions/helpers/postnord-parcel-productid-converter-helper.js","webpack:///./src/frontend/state/views/syi/actions/shipping-actions.js","webpack:///./src/frontend/components/carousels/arrows.jsx","webpack:///./src/frontend/components/carousels/basic/basic.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/modals/image-gallery-modal/image-gallery-modal.jsx","webpack:///./src/frontend/components/carousels/view-item-carousel/view-item-image.jsx","webpack:///./src/frontend/components/carousels/view-item-carousel/view-item-carousel-zoom.jsx","webpack:///./src/frontend/components/site-header/hover-menu/hover-menu-item.jsx","webpack:///./src/frontend/components/messaging/messaging-modal.jsx","webpack:///./src/frontend/state/views/syi/actions/error-actions.js","webpack:///./src/frontend/apps/syi/script/app_react/services/native-app-service.js","webpack:///./src/frontend/state/views/syi/actions/image-actions.js","webpack:///./src/frontend/components/flag/flag.jsx","webpack:///./src/frontend/components/item-card/item-card-parts/background-image-loader.jsx","webpack:///./src/frontend/components/item-card/item-card-parts/item-card-image.jsx","webpack:///./src/frontend/components/site-header/how-to-link.jsx","webpack:///./src/frontend/hooks/use-menu-height-fix.js","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/single-feedback-dialog.module.scss","webpack:///./src/frontend/apps/my-tradera/app/components/leave-feedback/single-feedback-dialog.jsx","webpack:///./src/frontend/state/views/checkout/initial-state.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/route-helper.js","webpack:///./src/frontend/components/item-card/item-card-parts/attribute-button.jsx","webpack:///./src/frontend/components/ads/localized-dfp-ad.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/environment.js","webpack:///./src/frontend/apps/my-tradera/app/state/actions/my-tradera-items.js","webpack:///./src/frontend/state/views/syi/selectors/syi.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/shipping-selectors.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/item-actions-helper-seller.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/item-actions-helper-buyer.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/item-actions.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/items.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/commands-helper.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/seller-commands.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/buyer-commands.js","webpack:///./src/frontend/apps/my-tradera/app/state/reducers/my-tradera-items.js","webpack:///./src/frontend/components/recommendations/recommendations.jsx","webpack:///./src/frontend/components/recommendations/index.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/init-data/action-types.js","webpack:///./src/frontend/state/init-data/reducer.js","webpack:///./src/frontend/state/items/reducer.js","webpack:///./src/frontend/state/multi-currency/reducer.js","webpack:///./src/frontend/state/page/reducer.js","webpack:///./src/frontend/state/personalisation/initial-state.js","webpack:///./src/frontend/state/personalisation/reducer.js","webpack:///./src/frontend/state/views/syi/reducers/draft.js","webpack:///./src/frontend/state/views/syi/reducers/category.js","webpack:///./src/frontend/state/views/syi/reducers/payment.js","webpack:///./src/frontend/state/views/syi/reducers/syi.js","webpack:///./src/frontend/state/views/syi/reducers/errors.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/ensure-good-shipping-options.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/validate.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/validate-valid-shipping-price.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/get-selected-shipping-options.js","webpack:///./src/frontend/state/views/syi/reducers/shipping/index.js","webpack:///./src/frontend/state/views/syi/reducers/template.js","webpack:///./src/frontend/state/views/syi/reducers/item-condition.js","webpack:///./src/frontend/state/views/syi/reducers/campaign-code.js","webpack:///./src/frontend/state/views/syi/reducers/fees.js","webpack:///./src/frontend/state/views/syi/reducers/item-duration.js","webpack:///./src/frontend/state/views/syi/reducers/extra-features.js","webpack:///./src/frontend/state/views/syi/reducers/images.js","webpack:///./src/frontend/state/views/syi/reducers/price.js","webpack:///./src/frontend/state/views/syi/reducers/edit.js","webpack:///./src/frontend/state/views/syi/reducers/long-description.js","webpack:///./src/frontend/state/views/syi/reducers/scroll.js","webpack:///./src/frontend/state/views/syi/reducers/charity-campaign.js","webpack:///./src/frontend/state/views/syi/reducers/attributes-helpers.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/reducers/preview.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/syi/reducers/templates.js","webpack:///./src/frontend/apps/my-tradera/app/state/reducers/purchase-order.js","webpack:///./src/frontend/state/views/my-tradera/reducer.js","webpack:///./src/frontend/state/views/tradera-shop/reducer.js","webpack:///./src/frontend/state/views/reducer.js","webpack:///./src/frontend/state/root-reducer.js","webpack:///./src/frontend/state/views/syi/actions/price-actions.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/item-actions-helper.js","webpack:///./src/frontend/components/item-card/item-card-parts/animated-price-label.jsx","webpack:///./src/frontend/components/item-card/item-card-parts/leading-badge.jsx","webpack:///./src/frontend/components/item-card/item-card-parts/overbidden-badge.jsx","webpack:///./src/frontend/components/item-card/item-card-parts/shipping-badge.jsx","webpack:///./src/frontend/components/item-card/item-card-parts/seller-alias-badge.jsx","webpack:///./src/frontend/components/item-card/item-card.jsx","webpack:///./src/frontend/state/multi-currency/actions.js","webpack:///./src/frontend/state/multi-currency/selectors.js","webpack:///./src/frontend/hooks/use-is-mobile.js","webpack:///./src/frontend/state/items/action-types.js","webpack:///./src/frontend/components/profile-menu/expandable-localization-menu-item.jsx","webpack:///./src/frontend/components/profile-menu/profile-menu-alerts.jsx","webpack:///./src/frontend/components/profile/profile-card.jsx","webpack:///./src/frontend/components/profile-menu/profile-menu-content.jsx","webpack:///./src/frontend/components/profile-menu/sign-in-menu-content.jsx","webpack:///./src/frontend/components/profile-menu/profile-menu.jsx","webpack:///./src/frontend/components/site-header/profile.jsx","webpack:///./src/frontend/components/site-header/profile-link.jsx","webpack:///./src/frontend/components/site-header/profile-menu-link.jsx","webpack:///./src/frontend/hooks/use-is-desktop.js","webpack:///./src/frontend/apps/syi/script/app_react/services/session-service.js","webpack:///./src/frontend/apps/syi/script/app_react/services/publish-service.js","webpack:///./src/frontend/state/views/syi/actions/helpers/server-validation-error-helper.js","webpack:///./src/frontend/state/views/syi/actions/draft-actions.js","webpack:///./src/frontend/state/ui/actions.js","webpack:///./src/frontend/state/ui/api.js","webpack:///./src/frontend/apps/my-tradera/app/helpers/enums.js","webpack:///./src/frontend/state/views/report-item/reducer.js","webpack:///./src/frontend/state/discover/actions.js","webpack:///./src/frontend/utils/breakpoints.js","webpack:///./src/frontend/utils/script.js","webpack:///./src/frontend/components/content-switch/content-switch.jsx","webpack:///./src/frontend/constants/transaction-types.js","webpack:///./src/frontend/state/views/view-item/item-state-helper.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/router.js","webpack:///./src/frontend/components/item-card/item-card-parts/bids-label.jsx","webpack:///./src/frontend/state/views/report-item/constants.js","webpack:///./src/frontend/components/page-head/page-head.jsx","webpack:///./src/frontend/helpers/filter-categories-helper.js","webpack:///./src/frontend/apps/syi/script/app_react/services/google-tagmanager.js","webpack:///./src/frontend/state/page/actions.js","webpack:///./src/frontend/helpers/shipping-display-text.js","webpack:///./src/frontend/components/site-header/dropdown-menu-burger.jsx","webpack:///./src/frontend/components/site-header/dropdown-menu-item-button.jsx","webpack:///./src/frontend/components/site-header/dropdown-menu-content.jsx","webpack:///./src/frontend/components/site-header/seo-links.jsx","webpack:///./src/frontend/components/site-header/dropdown-menu.jsx","webpack:///./src/frontend/apps/tradera/components/discover/constants/constants.js","webpack:///./src/frontend/components/item-card/item-card-parts/settings-button.jsx","webpack:///./src/frontend/state/views/syi/reducers/charity.js","webpack:///./src/frontend/apps/syi/script/app_react/services/image-upload-service.js","webpack:///./src/frontend/state/views/view-item/reducer.js","webpack:///./src/frontend/state/views/syi/actions/fees-actions.js","webpack:///./src/frontend/components/application-error-boundary/index.js","webpack:///./src/frontend/services/category-service.js","webpack:///./src/frontend/components/site-header/site-header.jsx","webpack:///./src/frontend/apps/syi/script/app_react/history.js","webpack:///./src/frontend/components/wacko-bidder/card-verification-modal.jsx","webpack:///./src/frontend/apps/my-tradera/app/state/actions/cookies.js","webpack:///./src/frontend/components/item-card/item-card-parts/discount-badge.jsx","webpack:///./src/frontend/state/views/start-page/api.js","webpack:///./src/frontend/state/views/start-page/actions.js","webpack:///./src/frontend/apps/tradera/components/start-page/hero/start-page-hero-banner.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/image-sizes.js","webpack:///./src/frontend/apps/tradera/components/start-page/media/media-item.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/tags/tag.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/tags/tags.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/trending/trending-searches-tags.jsx","webpack:///./src/frontend/hooks/use-recent-searches-updated.js","webpack:///./src/frontend/apps/tradera/components/start-page/recent-searches/recent-searches-tags.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/hero/start-page-hero-trustmark.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/hero/start-page-hero.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/carousel/carousel-item.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/carousel/carousel.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/instagram-feed/instagram-feed.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/popular-categories/popular-categories.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/recently-viewed/recently-viewed.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/picks-for-you/picks-for-you.jsx","webpack:///./src/frontend/hooks/use-split-test-group.js","webpack:///./src/frontend/apps/tradera/components/start-page/favourite-sellers/favourite-seller-card.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/favourite-sellers/favourite-seller-cards-grid.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/favourite-sellers/seller-suggestions.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/favourite-sellers/favourite-sellers.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/wish-list/wish-list-empty.svg","webpack:///./src/frontend/apps/tradera/components/start-page/wish-list/wish-list-info-card.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/wish-list/wish-list.module.scss","webpack:///./src/frontend/apps/tradera/components/start-page/wish-list/wish-list.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/page-content.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/tags/image-tag.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/tags/image-tags.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/trending/trending-brands-tags.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/personalised/personalised-brands-tags.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/personalised/personalised-searches-tags.jsx","webpack:///./src/frontend/apps/tradera/components/start-page/personalised/personalised-tags.jsx","webpack:///./src/frontend/apps/tradera/pages/start-page.jsx","webpack:///./src/frontend/apps/tradera/pages/cart-page.jsx","webpack:///./src/frontend/components/page-meta/page-meta.jsx","webpack:///./src/frontend/apps/tradera/routes.jsx","webpack:///./src/frontend/apps/my-tradera/app/helpers/messaging-helpers.js","webpack:///./src/frontend/utils/login.js","webpack:///./src/frontend/components/site-header/sign-up-link.jsx","webpack:///./src/frontend/state/views/syi/actions/short-description-actions.js","webpack:///./src/frontend/state/views/syi/selectors/category-selectors.js","webpack:///./src/frontend/apps/my-tradera/app/state/reducers/payments-reducer.js","webpack:///./src/frontend/apps/syi/script/app_react/services/config.js","webpack:///./src/frontend/apps/syi/script/app_react/services/event-broadcaster.js","webpack:///./src/frontend/components/errors/error-container.jsx","webpack:///./src/frontend/components/site-header/cart-link.jsx","webpack:///./src/frontend/components/item-card/item-card-parts/new-today-label.jsx","webpack:///./src/frontend/state/ads/initial-state.js","webpack:///./src/frontend/state/environment/initial-state.js","webpack:///./src/frontend/state/items/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/tradera-shop/initial-state.js","webpack:///./src/frontend/state/views/initial-state.js","webpack:///./src/frontend/state/views/profile/initial-state.js","webpack:///./src/frontend/state/get-initial-state.js","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/helpers/suggestions-api.js","webpack:///./src/frontend/components/errors/general-error.jsx","webpack:///./src/frontend/components/item-card/hooks.js"],"names":["binValidationParser","error","validationTitle","validationBody","BIN_VALIDATION_RESULTS","ITEM_NOT_FOUND","BIDDER_IS_BLOCKED","BUYING_OWN_ITEM","ONLY_EU_BUYERS_ACCEPTED","ONLY_NORDIC_BUYERS_ACCEPTED","ONLY_SWEDISH_BUYERS_ACCEPTED","USER_IS_SUSPENDED","ITEM_HAS_ENDED","PURCHASE_DID_NOT_SUCCEED","ITEM_ALREADY_PURCHASED_BY_OTHER_USER","ItemDisplayConfirmed","itemImage","itemTitle","formattedPrice","itemUrl","className","height","src","alt","href","BIN_FORM_STATES","CenteredIcon","children","Separator","style","BigSeparator","CloseButton","action","text","type","onClick","ErrorFeedback","itemMainImage","closeModal","t","useTranslator","titleKey","descriptions","isError","classes","med","BinModal","onClose","preferredCurrency","toLocalizedUrl","useUrlLocalizer","dispatch","useDispatch","useState","currentFormState","setCurrentFormState","undefined","setError","transactionId","setTransactionId","language","useCurrentLanguage","itemDetails","useSelector","state","views","viewItem","seller","title","itemId","shippingOptions","fixedPrice","formatPrice","buyerCountryCode","shippingRegion","shippingCountry","countryCodeIso2","onContinue","useCallback","analytics","window","location","onConfirm","purchaseBin","googleAnalyticsData","then","data","catch","e","response","responseStatus","errorCode","fetchItemAndBidInfo","BID_VALIDATION_RESULTS","MAX_PLACED_BIDS_LIMIT","BID_AMOUNT_LIMIT","onCardVerified","dismissOnOverlayClick","onDismiss","mobileFullscreen","memberId","alias","cleanedAlias","hasBackground","isCompany","hasShop","unitPrice","isFirstItem","quantity","totalPrice","leftButton","rightButton","initData","gdpr","modalOpen","cookieUtil","readCookie","GDPR_CONSENT_ALERT_DISMISSED","settingsOpen","hasSearch","itemLayout","DEFAULT_COOKIES","key","default","messagingBadges","cache","read","CACHE_KEYS","MESSAGING_BADGES","threads","threadsUnread","siteLayout","systemMessages","SYSTEM_MESSAGES","categoryDropdownMenu","open","CONSTANTS","MODAL","CLOSED","badges","messaging","system","itemSettings","item","messagingModal","participating","recipientId","modals","currentModal","notificationOptinModal","modalType","gaLabel","description","tagGroups","profileMenu","redirectUrl","quickView","items","itemIds","currentItem","loading","showHeaderSearch","pageName","showSearchForm","BankAccountMissing","InvoiceOverdue","InvoiceUnpaid","PayoutFailed","PayoutReadyBankAccountMissing","SwishNumberMissing","videoModal","video","youtubeVideoModal","actionTypes","INIT_DATA_LOAD","INIT_DATA_LOADED","UPDATE_PHONENUMBER","INVALID_PHONENUMBER","UPDATE_VERIFYCODE","INVALID_VERIFYCODE","DELETE_PHONENUMBER","SAVE_PHONENUMBER","SWISH_ENABLED","SWISH_ERROR","DELETE_BANK_ACCOUNT","UPDATE_CLEARING_NUMBER","UPDATE_ACCOUNT_NUMBER","BANK_NOT_MATCHED","IGNORE_BANK_NOT_MATCHED","BANK_ACCOUNT_SAVED","INVALID_CLEARINGNUMBER","INVALID_BANKACCOUNTNUMBER","BANK_ERROR","INIT_TINK","CANCEL_TINK","SHOW_BANK_ACCOUNTS","SELECT_BANK_ACCOUNT","TINK_COMPLETED","TINK_ERROR","SKIP_BANKID_AUTH","BEGIN_BANKID_AUTH","CANCEL_BANKID_AUTH","BANKID_IN_PROGRESS","BANKID_COMPLETED","BANKID_ERROR","PAYOUTS_LOADED","PAYOUTS_ERROR","setVerifiedPhoneNumber","a","fetch","method","credentials","headers","json","ok","payload","logger","saveBankAccount","getState","clearingNumber","selectPaymentsState","bankAccountDetails","newClearingNumber","accountNumber","newAccountNumber","body","result","maskedAccountNumber","code","saveTinkBankAccount","account","errorMessage","bankIdAuthenticate","ENDPOINTS","BANK_ID_AUTHENTICATE","purpose","bankIdUserMessage","bankIdVerification","errorCount","bankIdPollProgress","sleep","delay","resolve","BANK_ID_PROGRESS","Date","getTime","isCompleted","tink","bankIdInProgress","loadInitData","myTradera","searching","deletePhoneNumber","updatePhoneNumber","newNumber","number","isValid","length","savePhoneNumber","phoneNumber","requireSmsVerification","requireBankIdVerification","completeText","verificationText","updateVerifyCode","verifyCode","deleteBankAccount","removePayout","updateAccountNumber","updateClearingNumber","initSaveBankAccount","invalidNumber","initTink","cancelTink","errorTink","loadBankAccounts","accounts","selectBankAccount","cancelBankId","bankIdContinue","loadPayouts","page","params","HEADER","LAST_CHANCE","PICKS_FOR_YOU","POPULAR_CATEGORIES","CAROUSEL","RECENTLY_VIEWED","INSTAGRAM_FEED","WISH_LIST","FAVOURITE_SELLERS","generateSumOfDiscounts","discounts","discount","amount","total","currentAmount","getBidCount","bidInformation","bidCount","getSumOfDiscounts","transaction","getMaxBid","caller","maxBid","getTimeLeft","isActive","timeLeft","timeleft","isTimeLeftCritical","critical","getShippingCost","listViewType","translateShippingNames","name","names","Takeaway","TakeawayLong","TakeawayOnly","SchenkerPrivpak","Alternative","LIST_VIEW_TYPES","BASIC","getShippingLabelWithPrice","shippingItem","shippingType","shippingCost","shouldShowShippingPrice","listing","selectedShipping","isTakeaway","cost","isFreeShipping","STRINGS","SHIPPING_LABELS","FREE_SHIPPING","hasIntegratedPayment","theOnlyShippingOption","TAKEAWAY","i","shippingOption","accumulator","currentValue","isNormalListViewType","NORMAL","containerTypes","trackContainerClick","containerType","trackingId","Analytics","trackEvent","category","label","setErrorMessage","message","Error","CHECKOUT_ERRORS","GENERIC","getCheckout","purchaseOrderId","axiosWithTokenRefresh","get","ORDER_CHECKOUT_VIEW","withCredentials","finalizeResponse","handleError","getPaymentOptions","selectedShippingId","ORDER_CHECKOUT_PAYMENT_OPTIONS","initializePayment","formData","post","ORDER_CHECKOUT_INIT_PAYMENT","axiosConfigs","authenticated","getPaymentStatus","paymentAttemptId","ORDER_CHECKOUT_PAYMENT_STATUS","completePayment","ORDER_CHECKOUT_COMPLETE_PAYMENT","ORDER_PURCHASE_BIN","getBraintreeToken","paymentOption","ORDER_CHECKOUT_BRAINTREE","paymentMethod","getExternalAuthData","ORDER_CHECKOUT_AUTH_DATA","sendSwishSms","requestCombinedShippingPrice","ORDER_CHECKOUT_REQUEST_COMBINED_PRICE","cancelPayment","ORDER_CHECKOUT_CANCEL_PAYMENT","TraderaLogo","width","otherProps","role","viewBox","id","d","propTypes","defaultProps","React","memo","PushNotificationModal","trackGa","GtmService","trackAction","handleAccept","pushNotificationActions","handleReject","icon","maxWidth","dangerouslySetInnerHTML","__html","OPTIONAL_LANG","SUPPORTED_LANGUAGES","join","selectAvailableLanguages","available","selectPreferredLanguage","preferred","selectLocale","languageCodeIso2","country","memberCountryCodeIso2","selectIsForeignLanguageActivated","selectShouldAlwaysDisplayInMenu","shouldAlwaysDisplayInMenu","selectShouldDisplayInHeader","shouldDisplayInHeader","ItemQuantitySelector","quantityInShop","onQuantityChange","inputMode","setInputMode","onChange","event","value","target","isNaN","Math","min","defaultValue","Array","max","_","count","autoComplete","ItemDisplay","isUnavailable","renderPrice","amountInSek","tagName","getReportItemModel","touchWebClient","postReport","reason","categoryId","loadReportItemModel","reportItem","setViewState","hasEnded","VIEW_STATES","ITEM_ENDED","FORM","LOADING","handleReportItemModel","API_ERRORS","LOGGED_OUT","getReturnUrl","getBackToHereRedirectUrl","reportItemModel","setReportItem","submitReport","SUBMITTING","SUBMIT_SUCCESS","SUBMIT_FAILED","VIEW_ITEM_STATES","INITIALIZING","ACTIVE","ENDING","ENDED","ITEM_STATES","ONGOING_AUCTION","ONGOING_AUCTION_BIN","ONGOING_FIXED_PRICE","ENDED_AUCTION_WITHOUT_BID","ENDED_AUCTION_WITH_WINNING_BID","ENDED_AUCTION_WITHOUT_WINNING_BID","ENDED_AUCTION_BIN_BOUGHT_AS_BIN","ENDED_FIXED_PRICE","UNKNOWN","PaymentSummary","isSellpyCheckout","showShippingSelectionRow","price","LastChanceNewConnected","connect","webLiveUrl","isLoggedIn","member","multiCurrency","addItems","itemActions","add","openQuickView","uiActions","openedFrom","toggleWishlist","wishlist","updateItem","props","inSPA","isStartPageLiveUpdatesEnabled","useIsFeatureEnabled","setState","useEffect","axios","CancelToken","source","cancel","cancelToken","token","CANCELLED","ABORTED","NETWORK","registerLiveUpdates","url","onConnect","socket","emit","onClientEvent","Type","Event","AuctionId","BidAmount","totalBids","NumberOfBids","itemCount","useIsMobile","handleQuickView","displayItems","generateItemCardPlaceholders","itemsMap","maxItemsCount","mappedItems","resolveItems","animatePriceLabel","lazy","lazyLoadSettings","onAddToWishlist","onQuickView","onRemoveFromWishlist","ready","useLink","compose","withUrlLocalizer","withTranslator","hot","module","SEARCHING","CHANGE_URL_PARAMS","ERROR","HIDE_NOTIFICATIONS","OPEN_MODAL","SET_BREAKPOINT","MOBILE_MENU","MOBILE_ACTIONS","SET_MEMBER_MESSAGING_PARTICIPATION","OPEN_MESSAGING_MODAL","uiActionTypes","CLOSE_MESSAGING_MODAL","SET_TRANSLATED_ROUTE_INFORMATION","OPEN_CHANGE_SHIPPING","CLOSE_CHANGE_SHIPPING","OPEN_SET_DICOUNT","CLOSE_SET_DICOUNT","SET_COMBINED_SHIPPING_ENABLED","hideActualNotification","notification","setTranslatedRouteInformation","whenInitialized","routeInformationFactory","setCombinedShippingEnabled","isEnabled","myTraderaItemActions","hideNotification","notificationName","expires","setMonth","getMonth","setCookie","changeListViewType","myTraderaItemsState","selectMyTraderaItemsState","purchaseOrderActions","resetPurchaseOrder","resetMyTraderaItems","listType","itemsByID","rebuildList","scrollToInitialScroll","initialScrollEls","document","querySelectorAll","scrollTo","offsetTop","openModal","options","setBreakPoint","breakpoint","TEXT_STRINGS","ERRORS","mobileMenu","forceClose","mobileActions","setMemberMessagingParticipation","toggle","openMessagingModal","closeMessagingModal","openChangeShipping","closeChangeShipping","openSetDiscount","closeSetDiscount","defaultState","isCombinedShippingEnabled","isSearching","environment","version","splitTests","memberAlias","memberFirstName","memberLastName","memberMessagingParticipation","changeShippingModal","setDiscountModal","hideNotifications","uiReducers","def","reducers","actions","selectMyTraderaState","ITEM_LAYOUT","SITE_LAYOUT","MYTRADERA_DEFAULT_COOKIES","LIST_VIEW_TYPE","ITEMS_PER_PAGE","SHOW_FILTERS","LIST_VIEW_TYPE_BUYER_ACTIVE_ITEMS","PAGE_LIST_TYPES","BUYER_ACTIVE_ITEMS","LIST_VIEW_TYPE_BUYER_PURCHASES","BUYER_PURCHASES","LIST_VIEW_TYPE_BUYER_ITEMS_LOST","BUYER_ITEMS_LOST","LIST_VIEW_TYPE_SELLER_ACTIVE","SELLER_ACTIVE","LIST_VIEW_TYPE_SELLER_SOLD","SELLER_SOLD","LIST_VIEW_TYPE_SELLER_NOT_SOLD","SELLER_NOT_SOLD","GDPR_CONSENT_COOKIE","FORCE_GEO_DEV","PREFERRED_LANGUAGE","REGION_PICKER_DISMISSED","SHIPPING_COUNTRY","CART_ID","COOKIE_CATEGORIES","Essential","Performance","Functional","Marketing","CATEGORIZED_COOKIES","COOKIE_DEFAULT_CATEGORY","setCharityFromDraftAndFetchInfo","charityFromDraft","setCharityFromDraft","setCharityAndFetchInfo","charityId","resetCharityAndShippingInfo","shippingActions","resetSelected","resetCharity","setCharityId","fetchCharityInfo","fetchCharityShippingInfo","getCharity","setCharityInfo","status","getCharityShippingInfo","setCharityShippingInfo","freeShippingPaidByProviderName","providerName","forceFreeShipping","marketingApiClient","notAuthenticated","cancelTokenId","CLOSE_MODAL","SimpleModal","classNameBody","closeModalCallback","styleBody","closeOnEscape","keyCode","preventDefault","addEventListener","removeEventListener","allowPinchZoom","forwardProps","OngoingAuctionsLink","rel","useIsLoggedIn","isCategoryEnabled","cookieCategory","decodedCookie","decodeURI","CookieUtil","RegExp","test","isPerformanceEnabled","this","isFunctionalEnabled","isMarketingEnabled","set","performance","functional","marketing","cookie","createCookie","dayjs","toDate","isSwedishOrUndefined","toLowerCase","getLanguageFromCountryCode","se","dk","de","getCountryCodeFromLanguage","languageCode","en","da","areLanguageCodesIso2Equal","first","second","toUpperCase","defaultCookies","val","SET","selectCookiesState","cookies","initialPayloadItems","purchaseOrders","purchaseOrder","rows","row","sellerState","haveMultipleRows","haveCombinedShipping","combinedShippingInformation","isArchived","restart","endDate","formatted","formatDate","buying","sellerMember","shipping","shippingDiscount","trackingLink","bookedShipment","isPaymentExpired","paidShipmentCheckoutId","shipmentCheckoutId","shipmentId","hasUnpaidShipping","isRefundAllowed","isDiscountAllowed","isPaidWithIntegratedPaymentOption","isPaidWithIntegratedPayment","hasBuyerProtection","payment","buyerState","paid","isPaid","isMarkedAsPaidByBuyer","shippingBooked","isShippingBooked","shipped","isShipped","hidden","isHiddenForBuyer","inr","isInrSubmitted","upiSubmitted","isUpiSubmitted","feedbackLeft","isHiddenForSeller","transactionDate","buyer","buyerMember","initialPayloadPurchaseOrders","transactionIds","itemsToGiveFeedBackTo","Boolean","SimpleToast","lokaliseKey","PURCHASE_ORDER_RESET","feedbackLeftBySeller","submittables","PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER","feedbackLeftByBuyer","PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER","updateShippingBooked","myTraderaActions","URLS","UNMARK_BOOKED","ids","PURCHASE_ORDERS_SHIPPING_BOOKED","myTraderaItemsActions","deleteShipment","DELETE_SHIPMENT","PURCHASE_ORDER_DELETE_SHIPMENT","hasBuyerRequestedCombinedShippingPrice","REQUEST_COMBINED_SHIPPING_PRICE","hasRequested","PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING","updatePurchaseOrderShipped","MARK_SHIPPED","transactionsMarkAsShippedBySeller","UNMARK_SHIPPED","transactionsUnmarkAsShippedBySeller","PURCHASE_ORDER_SHIPPED","updatePurchaseOrderPaidBySeller","SELLER_MARK_PAID","purchaseOrdersMarkAsPaidBySeller","toast","success","SELLER_UNMARK_PAID","purchaseOrdersUnmarkAsPaidBySeller","PURCHASE_ORDER_PAID_BY_SELLER","updatePurchaseOrderPaidByBuyer","BUYER_MARK_PAID","purchaseOrdersMarkAsPaidByBuyer","BUYER_UNMARK_PAID","purchaseOrdersUnmarkAsPaidByBuyer","PURCHASE_ORDER_PAID_BY_BUYER","runPurchaseOrders","waitForBackend","dontModifyHistory","endPoint","searchUrlNormalView","currentMemberId","search","modifiers","selectFiltersState","PageNumber","paging","PageSize","size","changeParamsForBackend","UPDATE_ITEMS","PURCHASE_ORDER_LIST","from","totalPages","totalNumberOfPages","totalItems","totalNumberOfPurchaseOrders","statistics","updateURL","updatePurchaseOrderHiddenForSeller","isHidden","sellerHideTransaction","sellerUnhideTransaction","PURCHASE_ORDER_HIDDEN","updatePurchaseOrderHiddenForBuyer","buyerHideTransaction","buyerUnhideTransaction","modalState","START","COMPLETED","IN_PROGRESS","defaultBox","weight","defaultCountry","shippingCalculatorSlice","createSlice","initialState","box","selectedToCountry","selectedFromCountry","availableFromCountryCodes","availableToCountryCodes","weightUnit","isLoadingShippingProducts","shippingProviders","internationalProductsGroupedByFromThenToCountry","SE","showError","setSelectedToCountry","setSelectedFromCountry","setDefaultValuesOnBox","updateFilter","filterName","setWeightFilter","setWeightUnit","beginFetchingShippingProducts","setShowError","setShippingProducts","internationalShippingCalculatorProducts","prev","product","fromCountryCodeIso2","to","toCountryCodeIso2","push","setDefaultValues","fetchShippingProducts","selectBox","selectIsBoxValid","INTERNATIONAL_SHIPPING_CALCULATOR","lengthInMillimeters","heightInMillimeters","widthInMillimeters","weightInGrams","ITEM_CARD_IMAGE_MODES","SQUARE","NATURAL","Modal","header","styles","internationalShippingModalContainer","internationalShippingModalHeader","internationalShippingModalBody","getMessagingCell","ownItem","buyerId","sellerId","getProviderIcon","provider","iconClass","providerImageMap","DHL","Bussgods","Posten","PostNordParcel","PostNordStamp","Schenker","getProviderCell","removeDuplicateOwnCountryRowIfOnlyRow","ownShippingCountryCode","ShippingRow","providers","isOwnRow","messagingLink","scope","internationalShippingModalBodyCountry","getValueCell","mapDispatchToProps","internationalShipping","shippingCountryCode","selectShippingCountry","sortedRows","mapCountryCodeToCountryKey","b","ownCountryRow","buyerRegionText","translateBuyerRegionText","allowedBuyerRegion","imageUrl","shippingOptionCountry","internationalShippingModalTable","weights","ui","INTERNATIONAL_SHIPPING_MODAL_ID","syiZignSecModalId","requestCategoryList","REQUEST_CATEGORY_LIST","receiveCategoryList","RECEIVE_CATEGORY_LIST","receiveTopLevelCategories","RECEIVE_TOP_LEVEL_CATEGORIES","handleCategoryListError","HANDLE_CATEGORY_LIST_ERROR","handleTopLevelCategoriesError","HANDLE_TOP_LEVEL_CATEGORIES_ERROR","fetchCategoryList","results","VERSION_MISMATCH","reload","fetchTopLevelCategories","force","reloadLocalized","updateShippingRegion","expireDate","setShippingCountry","removeShippingCountryCookieIfSwedish","geolocation","isoCode","hasCookie","eraseCookie","setDefaultShippingCountry","getAvailableShippingCountries","selectIsLoadingAvailableShippingCountries","selectHasLoadedAvailableShippingCountries","beginLoadingAvailableShippingOptions","AVAILABLE_SHIPPING_COUNTRIES","shippingCountries","availableCountries","setAvailableShippingCountries","onLocalizationShippingRegionSelected","currencyCode","setPreferredCurrency","setPreferredLanguage","BREAKPOINTS","XS","SM","MD","LG","XL","BREAKPOINT_SIZES","BPOINT","bp","index","entries","QuickView","existsInWishList","imageFormats","shortDescription","handleModalDismiss","closeQuickView","disableNext","disablePrev","mediaQuery","minWidth","onKeyDown","prevItem","nextItem","top","right","zIndex","images","pageType","fixedHeight","carouselStyle","bottom","left","wishListItemIds","has","ShippingDisplay","shippingPriceRange","isFromAndToCountryDifferent","displayOptions","option","shippingOptionsPart","displayText","replace","shouldShowFromCountry","isSwedenCountryCodeOrUndefined","minPrice","maxPrice","specialSearchTerms","stammisglaset","SearchCategory","handleCategoryChange","selectOptions","selectedCategoryId","chosenCategory","isDefaultSelected","KEYCODE","Search","allCategories","categoryPath","inputClassName","placeholderText","discoverCurrentCategoryId","discoverSearchTerm","queryParams","history","searchSuggestionsElementRef","createRef","searchInputRef","currentCategoryId","setCurrentCategoryId","isSearchInputFocused","setIsSearchInputFocused","searchTerm","setSearchTerm","suggestions","setSuggestions","selectedSuggestionIndex","setSelectedSuggestionIndex","loadSuggestionsDebounce","debounce","callback","getSuggestionsWrapper","enableSuggestionsFromBackend","getSuggestions","limitPrevious","enablePrevious","enableSuggestions","loadSearchSuggestions","newSearchTerm","changeWindowLocation","newQuery","trimmedSearchTerm","newSearchUrl","specialTermUrl","q","filteredQueryParams","spage","isQueryReformulation","SEARCH","qs","stringify","addQueryPrefix","currentCategory","getNewSearchUrl","addRecentSearch","current","blur","allCategoriesOption","isTopLevel","selected","optionsList","selectedOption","getCategoryDropdownConfig","selectedCategory","categorySelectOptions","categoriesElement","discoverActions","selectedOptions","onBlur","onClearSearchInput","onFocus","onFormSubmit","onUserInputChange","evt","onUserKeyUp","which","click","incrementBy","newIndex","currentIndex","totalElements","getNextIndex","handleUpDownArrowKeys","suggestionsElement","visible","onChangeSearchTerm","onPreviousSearchRemoved","selectedIndex","ConnectedSearch","PAGE_TYPES","SEARCH_RESULT_PAGE","CATEGORY_RESULT_PAGE","discover","categories","SearchInSpa","withRouter","SearchOutsideSpa","checkoutSlice","getInitialState","receiveCheckout","shippingInfo","combinedShippingInfo","ongoingPaymentAttempt","shippingFeeRule","isFetching","hasError","orderNumber","isOpen","created","receivePaymentOptions","paymentOptions","setFetching","modal","checkoutSummary","showDisableOverlay","MODAL_STATUS","setHasError","setPaymentFetching","setPaymentHasError","setPaymentMethodData","paymentMethodData","setCheckoutSummaryFetching","setCheckoutSummaryHasError","setSelectedPayment","selectedPayment","setSelectedShipping","setShowDisableOverlay","setOngoingPaymentAttempt","setCombinedShippingInfo","MenuItemSeparator","useBreakpointMobile","isMobile","innerWidth","active","setActive","useLayoutEffect","handleResize","useOnMount","fn","usePageMeta","DEFAULT","customPageMetaData","setMetaTitle","pageMetaData","metaRobots","metaTitle","canonicalLink","pathname","pageActions","setPageMeta","useScrollToTopOnMount","PAGE_NAMES","Overview","BuyerActiveItems","BuyerItemsLost","MyTraderaLeaveFeedback","SellerActive","SellerSold","SellerUnsold","BuyerPurchases","Profile","Settings","SettingsAccount","SettingsEmail","SettingsNotifications","SettingsSeller","SettingsSecurity","Payouts","getMessagingUrl","origin","CATEGORIES","trackBiddingConfirmBid","trackBiddingShowEnterBid","trackBiddingShowConfirmBid","trackBiddingShowChangeMaxBid","trackBiddingQuickBid","trackBiddingNewMaxBid","trackNewBid","trackNewMaxBid","trackOpenCheckoutBin","trackConfirmBin","trackPayBin","trackKeepShopping","trackBinError","trackBidPlaced","validationCode","isMaxBid","potentialBidChange","bidId","transactionTotal","weightedBidValue","LEADING_BIDDER","HIGHER_BIDDER_EXISTS","placedBidId","bidValue","trackWishlist","isAdding","trackAddToCart","sellerMemberAlias","trackLinkClickAndGotoUrl","getGaTrackingData","clientId","ga","getAll","trackingIds","gaData","LanguageSelect","idPrefix","languages","preferredLanguage","onLanguageSelected","link","fluid","survey","SURVEYS","languageCodeIso3","mapLanguageCodeToLanguageKey","checked","handleOnChange","radioButtonClassName","ConnectedLanguageSelect","CurrencySelect","currencies","onCurrencySelected","currency","shortName","longName","ConnectedCurrencySelect","selectCurrencies","selectPreferredCurrency","ownProps","ShippingCountrySelectDropdown","selectedShippingCountry","onSelect","searchFocus","setSearchFocus","setSearch","isSearchEnabled","setIsSearchEnabled","includesSearch","v","filteredShippingCountries","listStyle","Row","placeholder","onMouseDown","itemSize","ShippingCountrySelect","showShippingCountries","isLoadingAvailableShippingCountries","onShippingCountrySelected","ConnectedShippingCountrySelect","selectAvailableShippingCountries","LocalizationMenu","showCurrencySelection","showRegionSelection","QualtiveButton","buttonProps","useQualtive","isQualtiveEnabled","openQualtiveModal","BUYER_ACTIVE_ITEMS_HIDE","pageSpecificData","BUYER_ACTIVE_ITEMS_SHOW","ACTIVE_ITEMS_RESTART_SUMMARY","MARK_PAID","SELLER_HIDE","SELLER_SHOW","UNSOLDHIDE","UNSOLDSHOW","ACTIVE_END_ITEMS","UNSOLD_RESTART_ITEMS","BUYER_HIDE","BUYER_SHOW","HOUR_IN_SECONDS","formatVipTimeLeft","secondsLeft","formattedTimeLeft","getTimeSpanParts","endUnit","TIME_SPAN_UNITS","HOURS","days","hours","hoursOrEmpty","startUnit","MINUTES","minutes","minutesOrEmpty","SECONDS","seconds","formatItemCardTimeLeft","serverDate","formatEndDate","floor","goToStart","toLocalizedRiotUrl","goToSummary","draftId","goToPublished","setDraftUrlWithoutReload","replaceState","localizationRegionPickerEnabled","featureSwitches","regionPickerDismissed","GdprSettings","availableShippingCountries","hasLoadedAvailableShippingCountries","intervals","useTicker","period","cleanup","callbacks","cb","clearInterval","intervalId","useCountdown","endDateStr","formatTimeLeft","warningLimit","isCountdownDone","setIsCountdownDone","timeLeftText","setTimeLeftText","isCountdownEnabled","setIsCountdownEnabled","isTimeLeftBelowWarningLimit","setIsTimeLeftBelowWarningLimit","previousAdjustment","useRef","useMemo","updateTimeLeft","isInitialCall","getServerDate","adjustedSecondsLeftWithFractions","secondsLeftWithFractions","round","adjustment","HoverMenuItemSeparator","MenuItem","alerts","bold","border","follow","gaAttributes","notify","notificationDot","containerClass","MenuItemContent","backgroundImage","NotificationDot","NotFoundError","shippingCalculator","selectFilterValue","selectWeightUnit","selectNormalizedWeight","selectWeightString","selectShippingProviders","domesticProducts","selectShippingProducts","shippingProvider","selectInternationalShippingProviders","p","selectIsDifferentFromDefaultBox","selectSelectedCountries","selectAvailableCountryCodes","selectShowError","getMenuGaAttributes","trackProfileClick","MultiCurrency","TagName","isVisible","rate","maximumFractionDigits","decimals","PropTypes","shape","isRequired","string","symbolPrefix","symbolSuffix","decimalPlaces","num","match","rating","toFixed","RatingStars","dark","displayRating","utils","Stars","setPersonalisedBrandsAction","setPersonalisedSearchesAction","setPersonalisedBrandsStatusAction","setPersonalisedSearchesStatusAction","recentSearchesIsUpdatedAction","lastUpdated","fetchPersonalisedBrandsIfNeeded","personalisation","brands","PERSONALISED_SUGGESTIONS","logError","brandsResult","newStatus","fetchPersonalisedSearchesIfNeeded","searches","searchesResult","addRecentSearchText","removeRecentSearchText","removeRecentSearch","featureName","setLongDescription","longDescription","draftActions","updateDraftCanBeResumed","setLongDescriptionFromDraft","reset","errors","ELASTIC_MYTRADERA","isBuyerOrderInformationEnabled","isDisputesEntranceEnabled","isLeaveFeedbackReactEnabled","isMyTraderaElasticEnabled","isMessagingEnabled","isMessagingBuyerButtonsEnabled","isMessagingSellerButtonsEnabled","isOrderCheckoutBinEnabled","downloadCsvPayouts","isCombinedShippingListEnabled","isCombinedShippingListBuyerViewEnabled","isInrPurchaseOrderEnabled","isUpiPurchaseOrderEnabled","isPennybridgeCharitiesEnabled","isValuationPageEnabled","labels","columns","CurrentPrice","TransactionDate","EndDate","ShippingCost","Bids","ItemId","OpeningBid","ReservePrice","BuyItNow","OwnReference","MaxBid","TimeLeft","columnCssClassCore","getCoreCssClass","column","getHeading","cssClass","columnKey","term","getTranslatedColumnKey","getHeadings","columnDefinitions","getUserHeading","highestBidder","getColumns","hasTransactionDate","currentPrice","getItemId","itemType","hasHighestBidder","leadingBidder","shouldShowBids","purchaseType","getTransactionDate","getEndDate","getTimeLeftAsString","columnCssClass","itemHasBidsButReservePriceNotReached","Discount","columnTitle","full","getBids","component","infoItemComponents","BIDS","getOpeningBid","pricing","openingBid","getReservePrice","reservePrice","getBuyItNow","buyItNow","getOwnReference","ownReference","callerMaxBid","TIME_LEFT","definitions","ITEM_PRICE","definition","tagTitle","getColumn","getLocalizedUrls","overview","buyerOverview","sellerOverview","accountOverview","activeItems","itemsLost","sold","unsold","purchases","savedSearches","favouriteSellers","sellerList","pickList","buyerFeedback","sellerFeedback","myFeedback","profile","invoices","payments","payments2","payouts","selling","settings","settingsAccount","settingsEmail","settingsSelling","settingsNotifications","settingsSecurity","settingsPayouts","buyShippingBags","urls","class","isExternal","showBasedOnInitData","isBuyerPage","searchUrl","buyerActiveItemsColumns","hasLabels","shouldShowCompact","shouldShowListToggle","bulkEditEnabled","noResultsText","buyerItemsLostColumns","sellerActiveColumns","stats","FastPris","Auktioner","Bud","SummaUtropspris","SummaBud","sellerSoldColumns","Butiksobjekt","sellerUnsoldColumns","buyerPurchasesColumns","hasCustomHeader","subTitle","isInternalOverview","paymentSettings","showPayments1Menu","showPayments2Menu","hasWallet","payments2Columns","hideMainNav","ModalFooter","SET_IS_LOADING","SET_ITEM_DETAILS","SET_PRODUCT","SearchInput","placeHolderTranslation","categoryName","showClearButton","onSubmit","maxLength","ref","RECENTLY_VIEWED_ITEMS","constructor","store","keyPrefix","cached","getItem","removeItem","write","ttl","setItem","remove","removeAll","clearByPrefix","expire","expireAll","caches","getItemsByPrefix","now","localStore","headerElement","querySelector","BasicApp","fallback","cartItemCount","getAttribute","cartSum","cartItems","Expand","CSSTransition","timeout","classNames","EnterFrom","unmountOnExit","EnterFade","AnimateOnValueChange","trigger","animate","setAnimate","firstUpdate","onAnimationEnd","BidDetails","isEnding","itemState","leadingBidAmount","onShowBids","winningBidAmount","hasBids","amountDetails","getAmountDetails","amountTitle","amountValue","formatNumberWithSeparators","timeTitle","timeValue","bidTitle","hasLeadingBid","hasLostLeadingBid","leadingBid","BRAND_PAGE","BRAND_LIST_PAGE","CATEGORY_LIST","CUSTOM_RESULT_PAGE","ENDLESS_RECOMMENDATIONS_PAGE","ERROR_PAGE","FAVOURITE_SELLERS_PAGE","LIVE_SHOPPING","MY_TRADERA_PAGE","PROFILE_PAGE","REPORT_ITEM_PAGE","START_PAGE","SYI_PAGE","TRADERA_SHOP_PAGE","VIEW_ITEM_PAGE","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","RESET","RadioSwitch","optionClasses","getOptionClasses","flexGrow","htmlFor","classMap","noclip","fetchDescription","fromLanguageCodeIso2","utilizeCancelToken","ITEM_DESCRIPTION","getItemApi","getCurrentLanguage","IGNORE_ME","placeBidApi","onLoggedOut","bid","serverSecondsLeft","isSuccessful","leadingBidderMemberId","leadingBidMemberAlias","leadingMemberAlias","nextValidBidAmount","nextBidAmount","validationResult","placedBid","reservePriceReached","sellerMemberId","sellermemberId","startDate","bidInfo","analyticsData","myMaxBidAmount","getItemsFromSeller","getCombinedShippingUpsell","COMBINED_SHIPPING_UPSELL","LoadingPortal","Component","super","el","createElement","loadingPortalRoot","getElementById","componentDidMount","appendChild","classList","componentWillUnmount","removeChild","render","ReactDOM","createPortal","transition","cssTransition","enter","exit","hideProgressBar","theme","closeOnClick","draggablePercent","autoClose","pauseOnFocusLoss","info","warning","closeButton","closeToast","marginTop","TraderaToastContainer","TOGGLE_HEADER_SEARCH","OPEN_GDPR_MODAL","CLOSE_GDPR_MODAL","OPEN_GDPR_SETTINGS","CLOSE_GDPR_SETTINGS","OPEN_QUICK_VIEW","CLOSE_QUICK_VIEW","LOADING_QUICK_VIEW","OPEN_VIDEO_MODAL","CLOSE_VIDEO_MODAL","OPEN_YOUTUBE_VIDEO_MODAL","CLOSE_YOUTUBE_VIDEO_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","storageKey","rootUrl","service","riot","observable","onSuccess","onError","ajax","traditional","statusCode","setRootUrl","setStorageKey","getFeedbackItems","getAllFeedbackItems","skip","take","getFeedbackStorageAsArray","currentStorageArray","addFeedbackToStorage","newStorageArray","newItems","existingItem","newItemsCounter","comment","counter","searchTime","_createNewFeedbackItemsToStore","maxStorage","reject","findWhere","curr","next","_mergeAndSortStorage","getFeedbackHistory","getStorageKey","submitData","dataType","contentType","failures","saveAutomaticFeedback","comments","OnDisplayBadge","SET_PAGE_TYPE","SET_PAGE_META_FROM_SEARCH_RESULT","SET_PAGE_META","MessagingButton","buttonVisible","handleLogin","signIn","checkUserMessagingParticipation","err","mode","getMessagingThreadLink","traderaUserId","singleThread","openForm","getMessagingPageLink","BUTTON_LABELS","ask_seller","contact_seller","contact_buyer","disableButton","disabled","verticalAlign","selectIsLoggedIn","api","setPreferred","locationUtils","TRACK_REDUX_ACTIONS","SAVE_REDUX_STATE_PATHS","sentryReduxEnhancer","Sentry","actionTransformer","stateTransformer","sentryState","keyString","keyArray","split","object","keyPathArray","acc","array","setNestedObjectValue","globalStore","setIsPropertyEditMode","isPropertyEditMode","setCreationType","creationType","showAllErrors","hideAllErrors","setIsEditOfPublishedItem","isEditOfPublishedItem","resetPublishState","setCategoryRestriction","restriction","updateItemConditionRestrictionForCategory","toggleModal","modalId","showModal","modalData","hideModal","enableAutoSave","disableAutoSave","cartSlice","setCartData","merchantPreOrders","getGaAttributes","SellMenu","showMenu","isTraderaShopEnabled","SellingLink","mouseOver","mouseOut","transparentHeader","onMouseEnter","HOVER_MENUS","SELL","onMouseLeave","MODAL_TYPES","wishlistReminders","CHANNEL_TAG_GROUPS","buyingListingOutbid","buyingListingWon","sellingListingFirstBid","sellingListingAllBids","sellingListingSold","sellingPaymentReceived","date","format","optionsWithDefaults","parts","remaining","started","TIME_SPAN_UNIT_LENGTHS","part","DAYS","JsxSpinner","spinjsConfig","radius","lines","color","config","spinner","Spinner","spin","spinnerEl","stop","BottomButtons","getCartOverview","cartId","countryCode","CART_OVERVIEW_VIEW","addItemToCart","CART_ADD_ITEM","removeItemsFromCart","CART_REMOVE_ITEMS","setCartItemQuantity","CART_SET_ITEM_QUANTITY","confirmCartPurchase","shopItems","ORDER_PURCHASE_SHOP_ITEMS","startOffPlatformCheckout","START_OFF_PLATFORM_CHECKOUT","createUncommittedPurchaseOrder","purchaseOrderItems","ORDER_CHECKOUT_CREATE_UNCOMMITTED_PURCHASE_ORDER","updateCartSummary","CART_UPDATE_SUMMARY","fetchCartData","checkoutData","addItemResult","preorderId","confirmData","removeFromCartWithoutReload","getUuid","itemPrice","expectedItemPrice","LOCALES","sv","mapLocale","translate","surveyOptions","darkMode","qualtive","loadScript","present","isQualtiveFeatureToggleEnabled","locale","user","withQualtive","WrappedComponent","WithQualtive","displayName","resolveCode","enabled","currencyCodeOrNull","resolveCurrency","ApplicationErrorBoundary","componentDidCatch","capture","logDebug","isDev","console","log","logWarning","useLoading","routeMap","dependencies","savedCallback","currentPage","setCurrentPage","setStatus","navigationKeyRef","navigationKey","setNavigationKey","useStore","useLocation","useHistory","isLoading","isLoaded","setLoading","oldStatus","setLoaded","onLoaded","googleTagManagerService","trackPageView","onNavigate","getCurrentPageFromRoute","newSpaPage","previousPage","mustLoadDataBeforePageTracking","listen","loadWarningTimeout","clearTimeout","loadStatus","RouteMapRoutes","path","exact","strict","ResultSet","_result","orderByTimestamp","orderByValue","orderByExpire","_orderBy","orderProp","StorageService","namespace","datastore","getDataSafe","encodedKey","encodeURI","purge","timestamp","removeExpired","prop","hasOwnProperty","addRow","propValue","flush","list","topLevelCategories","START_AUTH","SET_ERROR","CLOSE","SellerName","badgeText","LoaderComponent","visibleClassName","loaderRef","GlobalLoader","PortalLoader","LocalLoader","Loader","usePortal","getSearchResults","endpoint","baseURL","process","paramsSerializer","arrayFormat","checkResponseVersion","ComponentsWithStitchAds","adsEnabled","components","pageIndex","skipTopAd","mobileAdIndex","tabletAdIndex","desktopAdIndex","currentBreakpoint","useBreakpoint","adFrequency","getAdFrequency","autoscale","ItemsWithStitchedAds","handleAddToWishlist","handleQuickViewClick","handleRemoveFromWishlist","handleOpenItemSettings","handleItemAttributesForFilterClick","quickViewEnabled","isShopOwnedByCurrentMember","ItemCardComponent","ItemListCard","ItemCard","imageMode","onAttributeButtonClick","onSettings","validationError","descriptionLanguageCodeIso2","isDescriptionLanguageCodeIso2ChangeAvailable","isDenmarkCountryCode","getValidationError","validate","shortDescriptionSlice","setShortDescription","resetShortDescription","setDescriptionLanguageCodeIso2","QuickViewButton","iconClassName","Button","unbutton","wide","translucent","outline","branded","iconHidden","iconFixed","tag","toggleActive","hoverColor","input","nowrap","allClasses","hover","transparent","hiddenIcon","fixedIcon","buttonClasses","onBtnClick","ROLES","BUYER","SELLER","MAX_COMMENT_LENGTH","UNSET_RATING_VALUE","MIN_RATING_VALUE","MAX_RATING_VALUE","RATING_NAMES","DESCRIPTION","COMMUNICATION","SHIPPING_TIME","SHIPPING_COST","PAYMENT_TIME","RATING_NAMES_SELLER","RATING_NAMES_BUYER","RATING_SETTINGS","descriptionKeys","suggestionsThrottle","ThrottledAction","imageToColorsThrottle","INPUT_TYPE_MAP","Color","Dropdown","transformServerOption","serverOption","warningLabel","transformServerAttribute","attribute","sortOrder","backingField","possibleValues","inputType","isMultiSelect","maxNumberOfValues","minNumberOfValues","numberOfValuesSelected","shouldTranslateValues","setAttributesFromDraft","draft","attributeValues","resetSelectedAttributes","fetchForCategory","defaultClient","SELLING_ATTRIBUTES","attributeDefinitions","updateCategoryAttributesOptionsStatuses","campaignCodeActions","validateCampaignCode","updateAttribute","attributeId","optionValue","activate","onUpdated","selectCategoryAttributes","resetAttribute","throttledFetchCategoryAttributeSuggestions","execute","fetchCategoryAttributeSuggestions","throttledFetchImageAttributeSuggestions","draftImageIds","fetchImageAttributeSuggestions","resetImageAttributesSuggestions","query","paramKeyPart","SELLING_DRAFT_IMAGE_COLORS","colors","colorValues","cv","suggestedAttributes","values","splitTestGroup","splitTestGroups","splitTestEnabled","extractorType","getAttributeSuggestionExtractor","SELLING_SUGGEST_ATTRIBUTES","termAttributeValues","transformServerAttributeSuggestion","suggestionsExtractorType","splitTest","attributeSuggestion","largeScreens","ComposedComponent","getCurrentBreakpoint","isBreakpointOrHigher","mediumScreens","isBreakpoint","mediumScreensUp","getInitialFilters","filters","newFilters","defaultFilters","defaultSearchParams","parse","getId","translationKey","bulkAction","isSingleButton","getTranslatedMessage","getActionsForPurchaseOrder","secondaryActions","primaryAction","resolveActions","potentialActions","actionCreator","isPrimaryAction","checkAndAdd","actionsForItem","types","DISPATCH","getTranslatedLabel","LINK","unpaidShipping","EXTERNAL_LINK","hasShipmentReceipt","hasShipmentLabel","SINGLE_FEEDBACK_DIALOG_ID","featureToggles","soldActions","buttonTheme","boughtActions","selectPurchaseOrderState","selectRouterState","itemsOrderedByID","myTraderaItems","updateditems","modifyHistory","defaultPayload","filterBar","shownFilters","withPageInit","initialPayload","sellerEmail","memberEmail","stateCookies","pageListType","setPageListType","listViewTypeWithFallBack","featureToggleErrors","filtersActions","setFiltersForSelectedPage","getPurchaseOrderIdFromHash","hash","removeHashAndSetNormalList","removeHashFromUrl","changeShippingPurchaseOrderId","URL_HASHES","openChangeCombinedShippingModal","shouldOpenChangeCombinedShippingModal","markAsPaidPurchaseOrderId","markAsPaid","shouldMarkAsPaid","setDefaultListViewType","getData","shouldWaitForBackend","runSearch","MakeResponsive","Responsive","matchMedia","matches","handleMediaChange","addListener","removeMediaQueries","removeListener","addMediaQueries","removeMediaQuery","MakeSticky","sticky","onScroll","onScrollThrottled","throttle","wait","doc","documentElement","position","getBoundingClientRect","positions","wrapperStyles","stickyStyles","getStickyClasses","selectViewItem","selectTranslatedDescription","translatedDescription","selectItemDetails","selectBreadcrumbs","breadCrumbs","selectItemId","selectBidInfo","selectTranslatedDescriptionState","translatedDescriptionState","languageSlice","SearchButton","showSearch","formatMe","toLocaleString","symbol","symbolPosition","decimal","comma","nonActiveButtonClasses","activeButtonClasses","_Happy","_Sad","Happy","Sad","Caption","Figure","captionText","captionColor","figure","_Rating","selectedRating","onRatingClicked","ratingButton","Rating","_DetailedRating","ratingDescriptions","ratingDescription","DetailedRating","ACTION_TYPES","SET_FEEDBACKS","TOGGLE_IS_POSITIVE","SET_IS_POSITIVE","SET_IS_ITEM_NOT_RECEIVED","SET_COMMENT","SET_RATING","toggleIsPositive","isPositive","_ItemNotReceived","isItemNotReceived","checkboxId","setItemNotReceived","ItemNotReceived","_UnpaidItem","unpaidItemUrl","UnpaidItem","AutoHeightTextArea","textAreaRef","setText","textAreaHeight","setTextAreaHeight","parentHeight","setParentHeight","scrollHeight","minHeight","CommentInput","onKeyPress","setComment","togglePositive","previous","createFeedbackPayloadsMap","groups","isBuyer","ratingNames","feedbacks","group","feedback","ratings","createFeedbackPayload","isCommentTooLong","isCommentWithLinebreaks","isValidFeedback","isAllRatingsValid","isPositiveOrNegative","Form","errorMessageTranslationKeys","ratingSettings","ratingValues","isCommentInvalid","indexOfShippingTime","ratingSetting","showItemNotReceived","indexOfPaymentTime","showUnpaidItem","charsCount","ratingName","setRating","DetailsAndPrice","memberUrl","shippingPrice","_LeaveFeedbackItem","isNegative","Image","stateColor","showForm","LeaveFeedbackItem","ThinDivider","ThickDivider","Dialog","dismissActionText","confirmActionText","SubmittedDialog","submittedFeedbackCount","SubmitErrorDialog","AlreadySubmittedErrorDialog","ConfirmSubmitDialog","negativeCount","isInMultipleFeedbacksContext","updateValidationError","getValidationErrorTranslationKeys","updateSubmittables","validFeedback","isAllRatings","resetItemNotReceivedIfNeeded","feedbacksReducer","newState","oldFeedback","newFeedback","setAllRatings","newRatings","PageHeader","actionComponent","hasSecondColumn","SubmitButton","isSubmitting","submittableCount","submitButtonText","StickyContainer","makeSticky","Layout","renderHeader","LeaveFeedback","onDone","givenTransactionIds","loadedCount","setLoadedCount","itemsLeft","setItemsLeft","setGroups","setIsFetching","setIsSubmitting","setNegativeCount","showSubmitNegativeWarning","setShowSubmitNegativeWarning","showSubmittedDialog","setShowSubmittedDialog","showSubmitErrorDialog","setShowSubmitErrorDialog","showAlreadySubmittedErrorDialog","setShowAlreadySubmittedErrorDialog","useReducer","nextCount","negatives","submittable","submitOrConfirm","submit","leaveFeedbackService","onFetchAllSuccess","oldGroups","newGroups","incomingGroup","existingGroup","g","mayHaveDuplicates","arr","getKey","keepFirst","seen","x","keepUnique","onFetchError","responseJSON","fetchNext","fetchAll","fetchByTransactionIds","isInDialog","showItems","itemsExist","downTo","upTo","upiUrl","HighlightWord","fixFlexHeightInIpadMini2Style","flexBasis","PreviousSearchesListItem","changeSearchTerm","isSelected","toSearchString","SearchesSuggestionsListItem","ShopsSuggestionsListItem","suggestionUrl","urlName","CharitiesSuggestionsListItem","slug","CampaignSuggestionsListItem","campaignId","headline","AdvancedSearchListItem","SellerSearchListItem","SearchSuggestion","entry","componentProps","ModalPortal","notificationPortalRoot","$","EndTimeLabel","EndTimeLabelWithCountDown","EndTimeLabelEnded","formatStaticEndTime","openBiddingModal","saveInWishlist","openBinModal","ignoreQueryPrefix","otherQueryParams","forceRedirect","shouldOpenBiddingModal","bidding","substr","shouldSaveInWishlist","shouldOpenBinModal","getBaseRedirectUrl","random","protocol","host","getBiddingRedirectUrl","getWishlistRedirectUrl","getBinRedirectUrl","offset","once","SET_PREFERRED_CURRENCY","SET_CURRENCY_IF_NOT_CHOSEN","selectShowRegionSelection","selectIsOutsideSweden","selectShippingRegionCountryCodeIso2","selectIsSwedishVisitor","selectShowLocalizationRegionPicker","geoLocation","selectGeolocation","gpsMatchesLanguage","listActions","selectedFilterBar","isCheckboxActive","bulkCssClass","PAGE_BULK_ACTIONS","ACTIVE_CANCEL","heading","confirmButtonText","cancelButtonText","dismissable","idType","hasRestartedChild","UNSOLD_RESTART","headingCSS","messageAlignment","leadingBidRemoved","BUYER_SHOW_ACTIVE","BUYER_HIDE_ACTIVE","PURCHASES_SHOW","general","supportURL","paynova","cardVerification","bankId","MYT_PAGE_NAMES","valuationPage","syiDraftPage","GdprModal","openGdprSettings","acceptAndHide","GdprSettingsModal","saveHandler","gdprSettings","l","save","tabIndex","autoFocus","handleChange","visibleModal","visibleSettings","closeGdprModal","openSettings","closeSettings","closeGdprSettings","quantcastConsent","eventLabel","hitCallback","getUrbanSdk","UA","UACache","sdk","isSupported","getTagGroupsFromUrbanAirship","channel","groupTags","tags","isPushEnabled","pushNotificationsSlice","initDone","pushSupported","optedIn","shownModals","setInitDone","setPushSupported","setOptedInValue","setTagGroupsValue","setShownModalTrue","STORAGE_KEYS","WEB_PUSH_SHOWN_MODALS","setAllShownModals","setEnabled","init","canRegister","optIn","register","namedUser","toString","optOut","saveTagsToUrbanAirshipAndUpdateState","tagGroupValue","tagGroupsToSet","pushNotifications","channelTags","addTagGroups","tagGroupsToAdd","removeTagGroups","tagGroupsToRemove","NoItemsError","startPageResponse","trendingBrands","trendingSearches","wishList","sellers","sellerSuggestions","JSON","SET_TCF_LOADED","SET_ADS","logInfo","msg","_log","logLevel","eventName","trace","stack","getSystemMessageAlertCount","HyperwalletPayeeVerificationRequired","toggleHeaderSearch","openGdprModal","OPEN","loadingQuickView","openVideoModal","videoUrl","closeVideoModal","openYoutubeVideoModal","videoId","closeYoutubeVideoModal","openNotificationOptinModal","closeNotificationOptinModal","currentModalData","updateSystemMessages","updateMessagingNotifications","openProfileMenu","closeProfileMenu","openCategoryDropdownMenu","closeCategoryDropdownMenu","openSearchForm","closeSearchForm","logOut","openItemSettings","closeItemSettings","Breakpoint","desktop","tablet","mobile","is","useMediaQuery","setBreakpoint","bool","oneOf","withBreakpoint","WithBreakpoint","isTablet","isDesktop","WISHLIST","BUY","LOCALIZATION","INVOICE_UNPAID","INVOICE_UNPAID_DESCRIPTION","INVOICE_OVERDUE","INVOICE_OVERDUE_DESCRIPTION","BANK_ACCOUNT_MISSING","BANK_ACCOUNT_MISSING_DESCRIPTION","PAYOUT_FAILED","PAYOUT_FAILED_DESCRIPTION","PAYMENT_READY_BANK_ACCOUNT_MISSING","PAYMENT_READY_BANK_ACCOUNT_MISSING_DESCRIPTION","SWISH_MISSING","SWISH_MISSING_DESCRIPTION","ADD_SWISH","NO_THANKS_SWISH","I_UNDERSTAND","IFRAME_NOT_SUPPORTED","COOKIES","DESC","READ_MORE","WELCOME_TO_TRADERA","GET_STARTED_BUYING","GET_STARTED_SELLING","VIEW_MORE_VIDEOS","DISCOVER","FILTERS","ALL_CATEGORIES","BRANDS","CONDITION","ITEM_TYPE","PRICE","SELLER_TYPE","COUNTY","ITEM_STATUS","SORTING","CLEAR","META","DEFAULT_SITE_NAME","DEFAULT_DESCRIPTION","NO_SELECTED_SHIPPING","SHIPPING_OPTIONS","SCHENKER","logoImgUrl","POSTNORD","POSTNORD_PARCEL","POSTNORD_STAMP","BUSSGODS","ALTERNATIVE","TAKE_AWAY","TAKE_AWAY_ONLY","NOT_SPECIFIED","mapInstance","FEDEX","UPS","map","obj","shippingProvidersMap","internationalShippingSlice","setInternationalShipping","shippingWeight","fetchInternationalShipping","WEB_API","selectMemberId","BANK_ID_CANCEL","DECLINED","DECLINED_PAYNOVA","PERSONAL_ID_INVALID","EMAIL_ADDRESS_INVALID","NotSpecifiedShippingOption","NO_PAYMENT_METHOD","CHECKOUT_ERROR_STRINGS","getCheckoutErrorMessage","SiteSubheader","responsiveClassNames","selectSyiAttributes","syi","attributes","categoryAttributes","selectSuggestedAttributes","sellerFilters","setEnum","buyerFilters","resetPageIndex","setPageSize","changeSortValue","sort","sorting","order","changeSortOrder","changeTypeValue","setDateFrom","dateRange","field","setSingleFilter","setDateTo","setFiltersByState","showSelectFiltersDropDown","updatedState","filterSelectors","defaults","changePage","updatedPaging","resetDateRangeTo","resetDateRangeFrom","resetFilters","changeSearchQuery","searchQuery","properties","changeReservationPrice","setFiltersForPage","locationChange","showHideFilterToolbar","SET_PAGE_SIZE","CHANGE_SORT_ORDER","CHANGE_TYPE_VALUE","CHANGE_SORTING_TO_BEST_MATCH","SET_DATE_FROM","SET_DATE_TO","SET_FILTERS_BY_STATE","CHANGE_PAGE","RESET_DATE_RANGE_TO","RESET_DATE_RANGE_FROM","RESET_FILTERS","CHANGE_SEARCH_QUERY","CHANGE_RESERVATION_PRICE","SET_FILTERS_FOR_PAGE","SHOW_HIDE_FILTERS","MENU","GRID","LIST","filterNameMappings","itemCondition","sellerType","county","countyBox","itemStatus","shoeTypes","subDepartments","shoeSizes","brandTags","sortBy","categorySelected","categoryHorizontalSelected","getFilterLabel","trackFilter","filter","trackNavigation","trackAccordion","trackButton","trackLink","trackPriceFilter","fromPrice","toPrice","lbl","trackNewSearch","reverseCategoryPath","c","trackGtmEvent","keywords","ga_page_title","getTranslatedImageLabel","labelKey","buyerActiveItemsLabelKeys","RESERVE_PRICE_NOT_REACHED","activeLabelKeys","unsoldLabelKeys","soldLabelKeys","NOT_PAID","purchasesLabelKeys","PAID","DONE","LEADING","OVERBIDDEN","BID_REMOVED","NOT_STARTED","HAS_BIDS","SOLD","NOT_SOLD","SHIPPING_BOOKED","SHIPPED","FORICBLY_CLOSED","RESTARTED","itemLostLabelKeys","REMOVED","LOST","buyerActiveItemsLabels","reservePriceNotReached","leading","overbidden","bidRemoved","activeLabels","notStarted","notSold","soldLabels","notPaid","done","unsoldLabels","forciblyClosed","restarted","purchasesLabels","itemLostLabels","lost","removed","itemHasBids","getActiveLabel","activityType","getActiveActiveLabel","unSold","getUnsoldLabel","closed","getStates","getBuyerActiveItemsLabel","getSoldLabel","states","getPurchasesLabel","getBuyerItemsLostLabel","FixedPriceLabel","PriceLabel","hasDiscount","currencyDisplay","getInitialCategoryId","memberCountry","activeBrands","activeFilters","attributeFilters","displayAllowedBuyerRegionFilter","isSwedenCountryNameOrUndefined","fallbackItemsById","filterCategories","filterPrice","hasResult","headerText","internalSearch","introText","isFetchingGeolocation","itemsById","itemsOnDisplayById","mainText","pagination","discoverTranslationResult","reduxContainer","ShippingProviderIcon","imgClass","HoverMenu","show","hoverContainer","toggleShowTimeoutId","setTimeout","componentDidUpdate","prevProps","toggleShow","Basic","Compact","Normal","getCampaignCode","campaignCode","brandAttributeValues","requestData","selectedCategories","selectedBrandAttributes","httpClient","SELLING_CAMPAING_CODE","isCancel","campaignCodeValid","validation","validationDisplayMessage","campaign","campaignCodeId","campaignCodeMessage","isCustomLengthFeeFree","isUnsoldFeeFree","provisionFactor","discountFactor","maxFeeCap","bannerMobileImageUrl","bannerTabletImageUrl","bannerDesktopImageUrl","CHARITIES","userData","charities","throttledCampaignCodeValidation","delayedValidationTimeoutId","resetCharityCampaign","getSyiSlice","charityCampaign","wasForceFreeShipping","resetCampaign","feesActions","resetDiscountFactor","resetCampaignCommission","updateCommission","updateMaxCommission","updatePrices","isReadOnly","findBrandAttributeValues","campaignService","draftCategoryId","campaignCodeDescription","isCompanyUser","setDiscountFactor","setCampaignCommission","commissionProcent","allowZeroDayAuctions","forcePaymentOption","setDisplayPromoted","setDisplayHighlighted","applyCharityFromCampaignCodeId","toggleShowInput","isChecked","setInitialCampaignCode","isChangeItem","saveTypedCampaignCode","inputCampaignCode","defaultDrafts","sellingGlobalData","resetUnwantedProperties","isNullOrUndefined","getType","hasOpeningPrice","hasFixedPrice","ensureApplicationId","metadata","applicationId","ensureBraintree","braintree","isBraintreeOnly","loadDraft","SELLING_DRAFT","loadDrafts","SELLING_DRAFTS","loadDraftFromTemplate","templateId","SELLING_DRAFT_LOAD_FROM_TEMPLATE","draftReason","saveDraft","SELLING_DRAFT_SAVE","getCustomEndTime","itemDuration","customEndTimeHour","customEndTimeMinute","deleteDrafts","draftIds","SELLING_DRAFTS_DELETE","isPureBin","isAuctionBin","getDefaultTemplateValue","propertyName","newTemplate","loadDefaultDraft","newItem","loadDefaultTemplateDraft","buildDraftFromState","syiSlice","MemberId","publishedPromoted","publishedHighlighted","createdDate","lastModifiedDate","publishedDate","publishedAsItemType","reference","additionalDescriptions","templateName","draftCategoryPath","slots","slot","imageId","isListingImage","draftImage","listingImage","rotationDegrees","filename","imageGroupId","resolveImages","isPureBinSelected","auctionBinPrice","vat","durationDays","customEndTime","selectedShippingOptions","fromCountry","selectedPaymentOptions","buyerRegion","selectedBuyerRegion","displayPromoted","extraFeatures","displayHighlighted","charity","userGenerated","deleteDraft","profileSlice","isTranslationOnDemandDisabled","setTranslatedReviews","translatedReviews","translatedReviewsLoading","translatedReviewsLoadingError","setTranslationOnDemandIsDisabled","showTranslatedReviews","reducer","prepare","beginLoadingTranslatedReviews","failedLoadingTranslatedReviews","beginLoadingModel","loadingModel","setModel","model","gradeId","feedbackItems","feedbackItem","setAds","ads","setTcfLoaded","Breadcrumbs","categoryTree","handleClick","breadcrumbRef","parsedCategoryPath","resolveActiveCategoryPath","scrollLeft","scrollWidth","clientWidth","itemScope","BreadcrumbItem","microDataPositionProperty","parents","child","isFirstElement","itemProp","TextElement","content","LiveShoppingIcon","animated","LiveIconAnimatedImg","LiveShoppingLink","WishListButton","showText","toggled","iconClasses","combinedClassName","ModalHeader","stopPropagation","LoadingSymbolSpinner","LoadingSymbolCards","itemsPerPage","localLazyLoadSettings","shippingRegionSlice","dismissLocalizationRegionPicker","WaitForConsentApiLoaded","placeHolder","onLoadRender","isTcfLoaded","node","func","ExpandableMenuItem","prevState","expanded","onOpen","defaultExpanded","imageContainerClassName","toggleOpen","matchedPage","matchPath","DEFAULT_ACTION","SET_IS_FETCHING_GEOLOCATION","SET_GEOLOCATION","FAILED_LOADING_GEOLOCATION","SET_MEMBER_HERO_IMAGE","reduxStore","configureStore","browserHistory","createStore","rootReducer","middlewares","ReduxThunk","routerMiddleware","applyMiddleware","getComposer","observe","select","currentState","nextState","unsubscribe","subscribe","accept","nextRootReducer","require","replaceReducer","enableWebPackHotModuleReplacementForReducers","adsActions","discoverResponse","searchActions","receiveSearchResults","stripItmFromQueryParameters","formatQueryParams","toQueryParameters","viewItemActions","traderaShopProduct","fetchSystemMessages","ProviderWithGlobalStore","assertNoUndefinedProperties","warnIfDevBuild","isHybridAppContext","isBasicApp","getElementsByClassName","AppToMount","App","setAttribute","setItemWishList","exists","ADD","addItemsToWishList","WISHLIST_ADD_RANGE","addRecentlyViewed","getStore","ADD_RECENTLY_VIEWED","recent","UPDATE_ITEM","shouldNotTrackEventBecauseNeedsToBeSameAsLegacyVip","onSignedOutError","gtmCore","postWishlistItem","TIMEOUT","minDelayInMs","alwaysDelay","lastActionTime","timeoutId","wrappedAction","timeNow","BuyNowLabel","SellerRating","includeTotal","sellerDsrAverage","isGood","isBad","formattedRating","formatSellerDsrAverage","textClassName","Number","SellerLink","sellerAlias","hasRating","abs","SHIPPING_TYPES","ShippingLabel","hasFreeShipping","isSwedishVisitor","showBids","ITEM_TYPES","AUCTION","AUCTION_BIN","showBuyNow","isShopItem","SHOP_ITEM","discountRate","isNewToday","isAfter","subtract","handleWishlist","priceBeforeDiscount","buyNowPrice","onDisplay","SELECT_RADIO_BAR","GET_SEARCH","SET_FILTERS_FROM_ROUTER","updatePageSize","setFiltersFromRouter","updateFiltersForSelectedPage","selectTypeChange","selectSortChange","changeSortingToBestMatch","setSingleFilterValue","selectReservationPriceChange","pageSize","filterByState","historyLocationDidUpdate","isPrevAndCurrentPathnameEqual","routingState","router","checkStateOfQueryParams","showCookies","getAdPosision","device","buildProps","deviceName","adFormats","autoscaleOffsetWidth","adContainerClass","DesktopAd","TabletAd","MobileAd","WatchListMenu","isSellerListEnabled","WishlistLink","wishlistText","selectMemberCountryCodeIso2","showDanishFromCountry","selectFeatureSwitches","createBrowserHistory","ATTRIBUTE_NAMES","AttributeButtonsList","visibleAttributes","PURE_BIN","getGeoPublicApiUrl","GEO_PUBLIC_API_URL","forceGeoDevCookie","defaultAction","setIsFetchingGeolocation","setMemberHeroImage","getGeolocation","fetchGeolocation","setCurrencyIfNotChosen","onDOMContentLoaded","readyState","onWindowLoad","throttledCategoriesRequest","loadCategories","executeImmediately","request","categoryService","loadChildCategories","prefetchChildren","closeLevel","disableLevel","toggleLevelLabel","selectLevelCategory","closeAllLevels","resetCategoryRestriction","syiActions","displayPaymentOptions","paymentOptionGroups","setDraftCategory","slice","levels","level","SELLING_CATEGORY_RESTRICTIONS","updateCategoryRestrictions","loadTopCategories","shortDescriptionForRecommendations","setPath","openLevel","toggleCategories","categoryLevel","categoriesVisible","selectCategory","isLeaf","setPathFromDraft","Overlay","toggleAllVisible","togglePaymentOption","paymentType","po","setSelectedPaymentOptions","ad","ae","af","ag","ai","al","am","an","ao","aq","ar","as","at","au","aw","az","ba","bb","bd","be","bf","bg","bh","bi","bj","bm","bn","bo","br","bs","bt","bv","bw","by","bz","ca","cc","cd","cf","cg","ch","ci","ck","cl","cm","cn","co","cr","cu","cx","cy","cz","dj","dm","do","dz","ec","ee","eg","eh","er","es","et","fi","fj","fk","fm","fo","fr","fx","gb","gd","ge","gf","gh","gi","gl","gm","gn","gp","gq","gr","gs","gt","gu","gw","gy","hk","hm","hn","hr","ht","hu","ie","il","in","io","iq","ir","it","jm","jo","jp","ke","kg","kh","ki","km","kn","kp","kr","kw","ky","kz","la","lb","lc","li","lk","lr","ls","lt","lu","lv","ly","ma","mc","md","mg","mh","mk","ml","mm","mn","mo","mp","mq","mr","ms","mt","mu","mv","mw","mx","my","mz","na","nc","ne","nf","ng","ni","nl","no","np","nr","nu","nz","om","pa","pe","pf","pg","ph","pk","pl","pm","pn","pr","ps","pt","pw","py","qa","re","ro","ru","rs","rw","sa","sb","sc","sd","sg","sh","si","sj","sk","sl","sm","sn","so","sr","st","sy","sz","tc","td","tf","tg","th","tj","tk","tl","tm","tn","tr","tt","tv","tw","tz","ua","ug","um","us","uy","uz","va","vc","ve","vg","vi","vn","vu","wf","ws","ye","yt","yu","za","zm","zw","BuyMenu","BuyingLink","buyingText","recommendationsRequestBuilder","slotId","seedItemIds","queryParameters","maxResults","pageNumber","similarItemsRequestBuilder","similarItemsFromShopRequestBuilder","similarItemsFromCampaignRequestBuilder","RadioGroup","ZignSecLogo","xmlns","transform","STATE","ZignSecModal","zignSecWebSDKUrl","onVerifyComplete","verifyingState","setVerifyingState","setIsLoading","dataAttributeName","js","addScriptToDom","currentTimeoutId","poll","zs","sessionId","call","getSessionStatus","memberIdentificationClient","relayState","ZignSec","ZsProduct","Scanning","openInIframe","relay_state","analysis_types","r","command","SyiZignSecModal","publish","startPageSlice","setStartPageConfigAction","setStartPageConfigStatusAction","setTrendingBrandsAction","setTrendingBrandsStatusAction","setTrendingSearchesAction","setTrendingSearchesStatusAction","setWishListAction","setWishListStatusAction","setFavouriteSellersAction","setFavouriteSellersStatusAction","PICK_LIST","uuidv4","initDataEL","checkStatus","ID","getInitData","tradVersion","parseJSON","res","DiscountedPriceLabel","payoutSlice","traderaPay","receivePayouts","payoutDestination","selectPayoutState","payout","mapDeviceNameToViewport","createGptSizeMapping","warn","sizes","adFormat","panorama","wide_skyscraper","half_page","medium_rectangle","mobile_rectangle","mobile_wideboard","mapSingleAdFormatToSizes","pre","cur","mapManyAdFormatsToSizes","sizeMap","viewport","categoryIcons","PriceIcon","VehiclesBoatsPartsIcon","BooksMagazinesIcon","ComputersAccessoriesIcon","DvdVideosIcon","PhotoCamerasOpticsIcon","StampIcon","ClothesIcon","ConsumerElectronicsIcon","HobbyIcon","WatchesIcon","AntiquesDesignIcon","MusicIcon","CurrencyIcon","ArtIcon","JewlryGemstonesIcon","SportsLeisureIcon","MobilePhoneTelecommunicationsIcon","PostcardsPicturesIcon","OtherIcon","CollectiblesIcon","VideoComputerGamesIcon","HomeHouseholdIcon","ConstructionToolsIcon","ChildrensClothingShoesIcon","TicketsTravelIcon","CharityIcon","HandmadeAppliedArtsIcon","GardenPlantsIcon","AccessoriesIcon","ShoesIcon","BeautyCareIcon","ToysChildrensItemsIcon","getCategoryIcon","IconComponent","COOKIE_NOTIFICATION","HIDE_WISH_LIST_INFO_CARD","ITEMS_CLICK","ITEMS_IN_VIEWPORT","SAVE_SEARCH_HINT","SEARCH_RECENT","WEB_PUSH_ACCEPTED","COMBINED_SHIPPING_ALERT_SOLD","COMBINED_SHIPPING_ALERT_BOUGHT","COMBINED_SHIPPING_ALERT_SYI","SELLER_LIST_COMPACT_VIEW","SYI_NEW_LAYOUT_INFO_DISMISSED","SYI_DESCRIPTION_LANGUAGE_DISMISSED","CACHE_MESSAGING_BADGES","CACHE_RECENTLY_VIEWED_ITEMS","CACHE_SYSTEM_MESSAGES","APPLE_ID_USER","STORAGE_VALUES","SAVE_SEARCH_HINT_CLICKED","TopDescription","descKey","ConnectedLocalizationRegionPicker","showLocalizationRegionPicker","LocalizationLink","hoverMenuClassName","ConnectedLocalizationLink","selectShowCurrencySelection","FooterLocalizationLink","isLocalizationSettingsVisible","setLocalizationSettingsVisible","shouldBeVisible","oneInstance","__tcfapi","FooterLinks","links","callerId","linksToRender","onlySwedish","rest","BuyingLinks","SellingLinks","ContactAndHelpLinks","ConsentService","openUi","CouponCodeLinks","isCouponationNavLinkEnabled","FooterPartners","groupedPartners","partners","logo","partner","useInView","threshold","symbolRef","inView","appName","getFullYear","postFavoriteSeller","isAlreadySaved","FAVORITE_SELLER_REMOVE","FAVORITE_SELLER_ADD","checkResponseLoggedOut","ModalBody","inlineStyle","useInterval","defaultStorage","storage","TEST_KEY","testStorage","localStorage","keys","delete","clear","setFilter","contexts","prefix","stringifiedLength","mobileOnlyProps","desktopOnlyProps","allDeviceProps","DialogModal","getDefaultMediaProps","mediaQueryProps","sendSessionStart","SELLING_SCRIBE_SESSION_START","sendSessionDuration","duration","madeByTemplate","SELLING_SCRIBE_SESSION_DURATION","durationMilliSeconds","sendDuration","measuredName","SELLING_SCRIBE_DURATION","sendIncrement","SELLING_SCRIBE_INCREMENT","sendValidationErrors","SELLING_SCRIBE_VALIDATION_ERRORS","TriotException","triot","bus","enumerable","writable","configurable","mixin","on","getLanguage","update","safeMount","selector","opts","mountedComponents","mount","setupTeardown","keepRootTag","unmounted","vdom","unmount","unmountAll","off","countryName","areCountryCodesIso2Equal","ModalContainer","AUCTION_HAS_ENDED","AUCTION_HAS_NOT_STARTED","BELOW_MINIMUM","BELOW_OWN_LEADING_BID","BELOW_RESERVE_PRICE","BID_NOT_FOUND","BIDDING_OR_BUYING_OWN_ITEM","BUYING_LIMIT_REACHED","EQUAL_OR_HIGHER_THAN_BUY_IT_NOW","ITEM_NO_LONGER_AVAILABLE","NO_LONGER_VALID","SUCCESSFULLY_CHANGED_AUTOBID","OFFLINE","BID_VALIDATION_RETRY","_extends","arguments","Object","prototype","apply","fill","opacity","fillRule","clipRule","fillOpacity","FavouriteSellersFallback","fromFavouriteSellersPage","startPageStyles","withArrowTop","gpt","adContainerRef","refresh","stickyBottom","stickyEnabled","stickyTop","canCreateDfpAd","adUnitPath","sizeMapping","minViewportWidth","maxViewportWidth","pageTargeting","customTargetingParameters","offsetWidth","slotTargeting","pos","availableAllowedBuyerRegions","defaultBuyerRegion","allowedBuyerRegions","selectedBuyerRegionText","availableAllowedBuyerRegionsForEditWithBids","isSetAllowedBuyerRegionToAtLeastEuEnabled","isTraderaPayEnabled","initModuleGlobals","buyerRegionSlice","setAllowedBuyerRegion","setAvailableAllowedBuyerRegions","availableRegions","draftState","regionState","regions","selectedRegion","Sweden","region","Nordic","EU","International","_getGdprSettings","segment","convertToExpiresStr","expiresStr","Infinity","String","toUTCString","cookieKey","cookieValue","domain","secure","encodeURIComponent","decodeURIComponent","disconnect","memberHeroImage","RadioButton","labelClassName","WISHLIST_ADD","WISHLIST_REMOVE","getItemDiscountQuota","ITEM_DISCOUNT_QUOTA","postItemSettings","SETTINGS","toInt","n","SELLING_SHIPPING_CALCULATOR","getShippingProviders","SHIPPING_PROVIDERS","prepareResultForView","useAdvancedWidget","products","variants","promotedProviders","promoted","isObsolete","isStamps","variant","texts","numberOfStamps","restrictionText","restrictionTexts","transformPostNordParcelProductId","productId","validProductIds","productIdsToTransform","compositeKey","setShippingOptionVariant","primary","setOfferTakeaway","offerTakeaway","setSuggestedShippingProducts","shippingProducts","getShippingProvidersWithProducts","primaryShippingProviders","isLoadingProvidersWithProducts","calculateShipping","shippingCalculatorService","additionalInfo","clearSuggestedShippingProducts","makeSecondaryShippingOptionPrimary","removeShippingOption","setCalculatorDimensions","dimensions","setOfferShipping","offerShipping","setSecondaryShippingOptionOpen","secondaryShippingOptionOpen","setShippingOptionCost","setShippingOptionsFromDraft","removeCostIfCostMatchesSelectedProduct","shippingState","getVariant","setShippingOptionVariantAfterDraft","isPrimary","getPrimaryOrSecondaryProducts","productVariant","toggleShippingCalculator","toggleShippingOption","setShippingFromcountry","NextArrow","arrowClassName","display","PreviousArrow","BasicCarousel","slider","slickNext","slickPrev","goTo","imageIndex","slickGoTo","dots","dotsClass","nextArrow","prevArrow","infinite","speed","slidesToShow","slidesToScroll","lazyLoad","ImageGalleryModal","initialSlideIndex","carouselRef","closeButtonRef","isMobileDevice","handleCloseModalClick","stopClickEventsFromImage","navigate","focus","initialSlide","adaptiveHeight","fade","useCss","useTransform","responsive","arrows","image","normal","ViewItemImage","imageContainer","zoomImage","bounds","zoomImageLargeEnough","handleMouseHover","hoverState","handleMouseMove","getBounds","containerWidth","containerHeight","zoomImageWidth","zoomImageHeight","widthDiff","heightDiff","widthRatio","nativeEvent","offsetX","heightRatio","offsetY","translateXValue","translateYValue","zoomImageElement","enableZoom","handleZoomClick","smallFit","mediumFit","largeFit","srcSet","onMouseMove","ViewItemCarouselZoom","showZoomModal","activeSlideIndex","basicCarousel","onMouseUp","customPaging","onMouseOver","multiThumbnail","afterChange","accessibility","HoverMenuItem","MESSAGING_STATES","MessagingModal","MESSAGING_REMOTE_URL","POST_MESSAGE_TYPE_PREFIX","handleClose","element","iframeElement","contentWindow","handleMessage","setIframeRef","scrolling","NotParticipatingMessage","openAddPhoto","setDraftImages","removeImageInSlot","slotIndex","isUploading","handleAttributeSuggestionsForSlot","setUploadFailed","setUploading","numberOfSlots","prepareUpload","selectedFilesCount","freeSlotCount","errorActions","numberOfFilesToUpload","MissingDraftId","setIsUploadingWithApp","isUploadingWithApp","cancelMobileUpload","draftSocket","imageIds","setUploadedImageInNextFreeSlot","freeSlotIndex","setUploadedImageInImageSlot","removeImageWithId","changeImagePosition","len","newSlots","rotateImage","setImageThunk","fileInput","flow","files","imageUploadService","uploadFromFileInput","nativeAppOpenAddPhotoThunk","saveNowIfQueued","currentDraftId","fetchImagesFromDraft","loadImagesFromDraft","Flag","BackgroundImageLoader","placeholderSrc","placeholderClassName","fallbackSrc","fallbackClassName","loadedClassName","useImageLoader","currentSrc","currentClassName","ItemCardImage","imageHeight","imageWidth","imageSecondaryUrl","linkProps","imageStyle","aspectRatio","paddingTop","secondaryImage","ALink","ToBuyLink","howTo","useMenuHeightFix","menuContentRef","parentElement","marginBottom","marginY","maxHeight","SingleFeedbackDialog","isSeller","MODAL_TYPE","BANK_ID","SWISH_APP_2_APP","SWISH_HANDEL","COMPLETE","PAYMENT_OPTIONS","CARD","PAYNOVA","PAYPAL","APPLEPAY","GOOGLEPAY","VISA_MASTERCARD","PAYMENT_OPTION_STATUS","AVAILABLE","UNAVAILABLE_DUE_TO_AMOUNT","getAvailableQueryParams","filtersState","checkModifiersExist","getDefaultFilters","datatype","processState","searchType","userIs","locationQuery","check","checkItem","AttributeButton","hoverIcon","LocalizedDfpAd","isCriteoDirectBidderEnabled","isLoggingEnabled","moduleName","onModuleLoaded","isModuleLoaded","MutationObserver","mutationsList","attributeName","COMPLETED_SEARCH","OPEN_MORE","SELECT_ITEM","SELECT_ALL_ITEMS","REMOVE_ITEMS","OPEN_DEL_LISTING_ITEM","REMOVE_ALL_SELECTED","UPDATE_ITEMS_WITH_ERROR","PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER","PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER","PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER","PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER","PURCHASE_ORDERS_HIDDEN_BY_SELLER","PURCHASE_ORDERS_HIDDEN_BY_BUYER","PURCHASE_ORDERS_SHOWN_BY_SELLER","PURCHASE_ORDERS_SHOWN_BY_BUYER","ITEM_HIDDEN","ITEM_SHOWN","PURCHASE_ORDERS_MARKED_AS_SHIPPED_BY_SELLER","PURCHASE_ORDERS_UNMARKED_AS_SHIPPED_BY_SELLER","PURCHASE_ORDERS_UNMARKED_AS_SHIPPING_BOOKED","SHIPMENT_DELETED","FEEDBACK_LEFT_BY_SELLER","FEEDBACK_LEFT_BY_BUYER","RESET_ITEMS","SET_RESTARTED","SET_NEW_SHIPPING_PRICE","updateItems","updateItemsWithError","resetSelectedCheckboxes","removeItems","locationDescriptor","purchaseOrderIds","messagingParticipation","newPaging","cancelItem","endItems","buyerActiveItemsHide","buyerActiveItemsShow","buyerActiveItemsHideItems","buyerActiveItemsShowItems","openMore","selectItem","selectAllItems","contactHighestBidder","modalTitle","messageSubject","itemEnddate","itemImageUrl","main","medium","receiverMemberAlias","receiverMemberId","senderMemberEmail","businessWarning","reloadAfterClose","markPurchaseOrdersAsPaidBySeller","unmarkPurchaseOrdersAsPaidBySeller","existingState","currentTime","purchaseOrdersShownBySeller","purchaseOrdersHiddenBySeller","sellerUnhideUnsold","unsoldItemsShown","sellerHideUnsold","unsoldItemsHidden","sellingMarkAsShipped","sellingUnmarkAsShipped","sellingUnmarkAsShippingBooked","transactionsUnmarkAsShippingBooked","sellingDeleteShipment","transactionDeleteShipment","sellingLeaveFeedback","markPurchaseOrdersAsPaidByBuyer","unmarkPurchaseOrdersAsPaidByBuyer","transactionsShownByBuyer","transactionsHiddenByBuyer","buyingLeaveFeedback","setRestarted","setNewShippingPrice","newPrice","getAllProducts","secondaryShippingProviders","getAllProviders","onlyPrimary","getSelectedProduct","getAllVariants","getIds","isTakeAway","commonActions","sellSimilar","unpaidShippingUrl","unpaidShippingId","isDiscountAfterPaymentSupported","dateLimit","hasTransactionDateNewerThen60Days","isDiscountBeforePaymentSupported","hide","unshift","itemsFromSeller","getActionsForItem","isLeading","fixedItemUrl","fixItemUrlIfNeeded","activeBuyerActions","dispute","lostActions","contains","hiddenByMember","unsoldActions","DISABLED","tooltip","activeSellerActions","labelFunc","columnFunc","getCheapestShippingPrice","substring","actionLabelMap","createReturnObject","hasIncorrectResponse","findKeysByPurchaseOrderId","findKeysByTransactionId","findKeysByItemId","updateStateAndLabels","myTraderaItemsSelector","updateUnsoldLabelsAndActions","setPaidState","flag","setShippedState","setTransactionHiddenState","setUnsoldItemHiddenState","removeFromList","setFeedback","markAsPaidBySellerReducer","stateItems","updateChangedItems","findUpdatedKeysByPurchaseOrderId","updatedOrders","updatedItems","updatedItem","unmarkAsPaidBySellerReducer","markAsShippedReducer","findUpdatedKeysByTransactionId","unmarkAsShippedReducer","markTransactionAsHiddenBySellerReducer","markTransactionAsShownBySellerReducer","markItemAsHiddenReducer","findUpdatedKeysByItemId","markItemAsShownReducer","unmarkAsShippingBooked","setRestartedReducer","feedbacksLeftBySeller","markAsPaidByBuyerReducer","unmarkAsPaidByBuyerReducer","markTransactionAsHiddenByBuyerReducer","markTransactionAsShownByBuyerReducer","feedbacksLeftByBuyer","poHiddenByBuyer","poShownByBuyer","isSubMenuOpen","bulkChecked","selectedCheckboxes","chosenBoxes","allItemsWithBulk","checkIfActive","isOpenDeleteItem","newItemsOrderedByID","purchaseOrderActionTypes","itemKeysForPurchaseOrderId","LOADING_STATES","GPT_PAGE_NAMES","Recommendations","collapseIfEmpty","createRequestUrl","enableQuickView","errorFallback","gtmLabel","infiniteScrollEnabled","itemCardProps","loader","noMoreItemsMarker","onReachedEnd","showAds","loadingState","setLoadingState","setItemIds","rootMargin","loadingTriggerRef","loadingTriggerInView","addItemIds","itemIdsToAdd","loadAds","getItems","defaultJsonRequestHeaders","itemsInResponse","reloadOnUnauthorized","nextPage","itemComponents","margin","adSenseQuery","adSenseShoppingPublisherId","isAutoStartAllowed","autoStartToken","onCompleteCallback","onCloseCallback","retryCount","normalize","responseData","normalized","internalSearchBar","itemsOnDisplay","fallbackUrl","categoryFilter","parameter","normalizeFilters","singleOptionFilters","selectedValue","ACTIVE_FILTER_STATES","priceRangeFilter","fallbackItems","requestSearchResults","handleSearchResultsError","addItemOnDisplay","removeItemOnDisplay","setCategoryPath","showOrHideAllowedBuyerRegionFilter","memberActionTypes","ITEM_CACHE_MAX_SIZE","cacheOrder","newCache","newCacheOrder","updatedRecent","recentItem","wishlistAddRange","metaTitleKey","metaTitleData","recentSearches","createInitialState","suggestionsAvailable","anyLevelOpen","showExplanation","previousDraftCategoryId","prevoiusDraftCategoryPath","suggestionsVisible","moreButtonVisible","hideButtonVisible","_paymentOptions","_paymentOptionsPresentationData","hasAnyValidPayment","shapePaymentOptions","filteredPaymentOptions","presentationData","pd","uiCheckedPaymentOptions","selectedPaymentOption","takeawaySelected","paymentOptionsTop","showToggle","forceBraintreeIfNeeded","allErrorsVisible","publishPending","publishFailed","publishFailedReasonDisplayText","publishedItemPendingVip","publishedItem","openModalData","autoSaveEnabled","draftCanBeResumed","itemUpdating","itemUpdated","step1","step2","step3","step4","optionHasError","globalValidationError","validationErrors","global","validateProviders","hasAnyNonValidOption","hasAnyValidOption","weightIsInvalid","isAdvanced","isWeightValid","weightValidationError","primaryValidations","secondaryValidations","getFirstValidationError","primaryValidationError","secondaryValidationError","secondary","getSelectedShippingOptions","selectedVariant","summaryDisplayName","takeAwayOption","showPrimaryShippingCalculator","hasPrimaryCalculatorSuggestions","showSecondaryShippingCalculator","hasSecondaryCalculatorSuggestions","defaultCalculatorDimensions","primaryCalculatorDimensions","secondaryCalculatorDimensions","getProviderByProductType","productType","createReducer","SET_SUGGESTED_SHIPPING_PRODUCTS","suggestedProduct","calculatorSuggestion","CLEAR_SUGGESTED_SHIPPING_PRODUCTS","suggestion","RESET_SHIPPING_OPTIONS","primaryShippingOption","secondaryShippingOption","RESET_SELECTED_SHIPPING_OPTIONS","SET_SHIPPING_OPTIONS","ensureGoodShippingOptions","updateProviderProducts","isProductForOption","updateProductIfType","typeToBeVisible","updateVisibilities","showMoreSecondaryOptions","TOGGLE_SHIPPING_OPTION","showShippingCalculator","productProvider","previousValue","matchingVariant","SET_SHIPPING_OPTION_COST","SET_SHIPPING_OPTION_VARIANT","SET_SHIPPING_SELECTED","SET_TAKEAWAY_SELECTED","SET_SECONDARY_SHIPPING_OPTION_OPEN","REMOVE_SHIPPING_OPTION","MAKE_SECONDARY_SHIPPING_OPTION_PRIMARY","tmp","FORCE_FREE_SHIPPING","FREE_SHIPPING_PAID_BY_PROVIDER","SET_SHIPPING_PROVIDERS_WITH_PRODUCTS","SET_SHIPPING_PROVIDERS_WITH_PRODUCTS_FETCHING","SET_SHIPPING_CALCULATOR_DIMENSIONS","SET_SHOW_SHIPPING_CALCULATOR","SET_SHIPPING_FROMCOUNTRY","saveAsDialogOpen","templatesLimitReachedDialogOpen","ignoreProperties","SET_SAVE_AS_DIALOG_OPEN","SET_TEMPLATES_LIMIT_REACHED_DIALOG_OPEN","RESET_IGNORE_PROPERTIES","ADD_IGNORE_PROPERTIES","REMOVE_IGNORE_PROPERTIES","selectionError","defaultCampaignProperties","campaignCodeChecked","firstTimeSubscribe","validCampaign","searchingDelayed","searchingDelayedTimeoutId","nullIfFalsy","ensureValidCampaignCodeId","defaultDraft","campaignCommissionProcent","minCommissionCost","commissionMinimum","maxCommissionCost","commissionCap","isVariableCommission","chosenExtraFeatures","hasChosenExtraFeatures","isCategoryWithNoCommissionCap","makeDaysOptions","maxDays","numberOfDays","dateText","toDisplayText","makeHourOptions","hour","makeMinuteOptions","minute","toDaysText","toDateText","resolveSummaryText","localizations","getValidationErrors","customEndTimeError","customHour","customMinute","splitTime","startOf","earliestEndDate","isBefore","uploadError","imageCount","resolveFirstEmpty","foundFirst","firstEmpty","resetUploadError","setImageCount","withUrl","isValidPrice","str","isInt","errorKey","validateFixedPrice","showAuctionBinPrice","validateAuctionBinPrice","showReservePrice","validateReservePrice","showCharityDonation","editCharity","selectableVats","selectableVatValues","reservePriceCanChangeButNotBeRemoved","draftBeforeChange","textWithHtml","elm","innerHTML","textContent","innerText","ensureString","s","isCurrentDescriptionFromDraft","fromDraftCounter","scrollY","isSchenkerPaidBySchenker","filterSelectableSuggestions","incomingSuggestedAttributes","selectableSuggestions","categoryAttribute","suggestedAttribute","isSelectableSuggestion","o","isMaxReached","draftAttributes","selectableSuggestedAttributes","selectableImageToColorSuggestedAttributes","imageToColorSuggestedAttributes","updateSelectableImageToColorSuggestedAttributes","draftAttributeValues","tav","RESET_ATTRIBUTES","RESET_SELECTED_ATTRIBUTES","RESET_IMAGE_ATTRIBUTES_SUGGESTIONS","SET_CATEGORY_ATTRIBUTES","SET_DRAFT_ATTRIBUTES","SET_CATEGORY_ATTRIBUTE_OPTION","UPDATE_CATEGORY_ATTRIBUTES_OPTIONS_STATUSES","SET_CATEGORY_ATTRIBUTES_SUGGESTIONS","SET_IMAGE_ATTRIBUTES_SUGGESTIONS","consent","shouldGiveConsent","isSyiMemberConsentEnabled","hasTraderaPayConsent","hasValidationError","createInitalState","SET_TRADERAPAY_CONSENT","hasLoaded","viewItemState","isBidding","placeBidResponse","initialBidFormValue","combineReducers","traderaStateBankId","newLevels","newDraft","referenceIsReadonly","isNewDraft","newAdditionalDescriptions","toISOString","drafts","edit","e1","step1Errors","e2","step2Errors","e3","step3Errors","e4","step4Errors","fees","newslots","removeLastLoading","numberOfLoading","setLoadingOnFreeSlots","daysOptions","hourOptions","minuteOptions","isCustomEndTimeVisible","customEndTimePrice","isRestartAvailable","selectedDaysText","selectedDateText","summaryText","newStateWithoutCampaignRelatedProps","draftService","memberConsent","isCreditCard","isSecure","helpModalId","isPhone","hasFee","allVisible","preview","mapItemDetails","transactionType","scroll","publishDelayed","reasonDisplayText","categoryRestriction","newValue","templates","template","imageRotationDegrees","updatePurchaseOrderRequestCombinedShipping","buyerRequestedCombinedShippingPriceDate","updatePurchaseOrderShippingPrice","sellerSetCombinedShippingPriceDate","shippingAmount","totalAmount","totalItemAmount","updatePurchaseOrderShipment","updatePurchaseOrderShippedBooked","updatePurchaseOrders","checkHaveGivenFeedBackTo","itemToGiveFeedBackTo","updatePurchaseOrderFeedback","updatePurchaseOrderHidden","checkout","cart","startPage","traderaShop","connectRouter","toIntOrNull","isFinite","setOpeningBid","setFixedPrice","setReservePrice","setAuctionBinPrice","setAuctionBinPriceVisibility","setReservePriceVisibility","setCharityDonationVisibility","setIsPureBinSelected","setVat","setEditCharity","setFromDraft","queryParamCharityId","hasOpeningBid","hasReservePrice","hasCharityId","isAuction","getBodyStringFromIDs","bodyString","formHeaders","restartItemsSummary","showPurchases","showActive","hideActive","restartItems","markPaid","AnimatedPriceLabel","showAnimation","setShowAnimation","useDidMountEffect","timer","priceLabelProps","LeadingBadge","OverbiddenBadge","ShippingBadge","SellerAliasBadge","gaCategory","showBidStatus","showShippingOrOnDisplay","showSellerAlias","getMediumFitImageUrl","isOverbidden","createPreferredCurrencyCookie","LocalizationMenuItem","onToggle","ConnectedLocalizationMenuItem","trackPaymentOnboarding","InvoiceUnpaidAlert","InvoiceOverdueAlert","BankAccountMissingAlert","PayoutFailedAlert","PayoutReadyBankAccountMissingAlert","SwishMissingAlert","dismissSwish","enableSwishUrl","HyperwalletPayeeVerificationAlert","HyperwalletPayeeVerificationReviewAlert","OnboardToTraderaPayAlert","getGaLinkAttributes","getGaButtonAttributes","ProfileCard","cleanedMemberAlias","imageAvailable","setImageAvailable","mediaBelowLarge","trackExpandItemClick","ProfileMenuContent","memberDetailedSellerRatingAverage","showMessagingLink","isSettingsEnabled","OnboardToTraderaPay","HyperwalletPayeeVerificationUnderReview","trackOnClick","SignInMenuContent","closeMenu","onLoad","iframe","iframeDocument","contentDocument","onIframeLoad","AddHumanyBot","botWidget","ProfileMenu","handleExpand","renderChild","TransitionGroup","mountOnEnter","facebookId","borderRadius","ProfileLink","handleProfileClick","menuExpanded","systemMessageCount","logInText","badgeType","multipleBadges","ProfileMenuLink","preventNavigationAndShowLogin","redirect","handleLoginClick","messagingThreads","profileMenuOpen","useIsDesktop","startTime","trackItemPublished","isFromTemplate","isDraftFromTemplate","scribe","sessionService","prepareForPublish","SELLING_ITEM_PUBLISH","handleServerValidationError","translator","invalidImageErrorCodes","imageErrors","nonImageErrors","imageErrorDisplayTexts","displayTexts","invalidImageCount","invalidImageIds","imageActions","handleInvalidImages","nonImageErrorDisplayTexts","translateErrorCode","errorDisplayTexts","errorDisplayText","ensureDraftReason","setDraft","categoryActions","setItemCondition","setDurationDays","setCustomEndTime","shortDescriptionActions","setCurrency","longDescriptionActions","priceActions","paymentActions","getShippingOptionsFromDraft","getFromCountryFromDraft","isShippingFromCountryEnabled","navigationService","finally","canBeResumed","hasShortDescription","hasLongDescription","hasImage","setResumableDrafts","hasAuctionBinPrice","hasResponseErrorCode","responseOrNull","arrayOfErrorCodesToCheck","triggerSave","setDraftVersion","setUsedAllowed","isAllowed","condition","isUsedAllowed","allowUsed","resumableDrafts","browserDraftImageUrls","serverDraft","serverDraftImages","serverDraftImageUrls","changedImages","imagesHaveChanged","imageSlots","setDraftId","resetDurationAndEndTime","setRestart","setReference","publishService","googleTagManager","trackAddonBeforePublish","draftSelectedAttributes","suggestionEngine","completionTimeInSeconds","comparer","localeCompare","trackAttributeSuggestions","loadDraftIfMissing","useDraftAsTemplate","resetItemCondition","publishAdditionalDescription","resetDraft","resetDrafts","restOfPayload","updatedData","gtm","updateItemLayout","defaultCookie","updateSiteLayout","MEMBER_SYSTEM_MESSAGES","fetchedMessages","fetchMessagingNotifications","messagingNotifications","PAYMENT_SWISH_OPTOUT","getJSValue","True","False","All","setJSValue","true","false","getEnum","categoryNames","paymentTerms","reasons","resultMessage","shippingTerms","viewState","resetInitialState","getItemState","breadCrumb","setCategories","updatePageMetaForSearchResults","pageMeta","pageTitleTranslation","rootCategory","rootCategoryId","secondHandCategories","resolvePageTitleTranslation","itemsToAdd","afterReceiveSearchResults","discoverTracking","fetchSearchResults","searchResults","isBreakpointOrLower","timeoutTimer","script","onload","onerror","head","async","ContentSwitch","defaultSelected","onSwitch","setSelected","renderedOptions","setRenderedOptions","leadingBidMemberId","isBuyItNow","TRANSACTION_TYPES","getEndedItemState","getOngoingItemState","BidsLabel","REASONS","NONE","SUSPECTED_FRAUD","ITEM_IS_A_COUNTERFEIT","BRAND_NAME_MISUSE","WRONG_CATEGORY","PROHIBITED_SHIPPINGvOR_PAYMEN_TMETHOD","OTHER_PROHIBITED_ITEM","OTHER_PROHIBITED_SETUP","OTHER","breadcrumbs","metaDescription","bodyClass","toAbsoluteUrl","categoryNodes","timers","sentCounter","pushToDataLayer","dataLayer","trackAddonAfterPublish","addOnfeatureName","trackTiming","timingCategory","timingVar","variable","timingValue","timingLabel","startTimer","sendTimer","trackSellItemEvent","sendTimerOnce","eventCategory","eventAction","eventValue","meta","getShippingDisplayText","DropDownMenuHamburger","MenuItemButton","CategoryMenuItems","trackAnalytics","filteredCategories","categoryList","searchPlaceholder","handleFilterKey","handleFilterChange","handleFilterBlur","CategoryMenuItem","categoryNode","DropdownMenuContent","mediaProps","sourceCategories","TopLevelCategories","SeoLinks","DropdownMenu","dropdownMenu","trackClick","onItemClick","sideMenuMediaProps","dropdownMenuMediaProps","MODALS","FILTER_MODAL","CATEGORY_MODAL","SettingsButton","preselectCharity","anonymous","logoUrl","percentageToDonate","isFreeShippingPaidByProvider","charitySlice","setCharityAnonymous","allowedFileExtensions","uploadFileWithFormData","file","imageFlow","replaceIndex","FormData","append","notifyImageUploaded","endTime","notifyImageUploadFailed","hasValidFileExtension","fileExt","endsWith","suffix","validateFile","eventBroadcaster","notifyImageValidationFailed","displayMessage","isMultifileSupported","uploadFiles","maxNumberOfFiles","iframe_name","form","fileInputParent","parentNode","theFile","responseText","uploadFileWithDom","uploadCroppedImageFile","imageFile","initialPlaceBidResponse","translatedDescriptionStates","SERVER_ERROR","TRANSLATION_ON_DEMAND_DISABLED","showLiveUpdates","viewItemSlice","resetPlaceBidResponse","setInitialBidFormValue","setIsApprovedBuyer","isApprovedBuyer","setIsInternationalWacko","isWackoViewModel","isInternationalWacko","setVipLiveUpdate","setItemDetails","setPurchaseInfo","purchaseInfo","setBreadCrumbs","setIsBidding","setPlaceBidResponse","bidError","setBidInfo","bidStatus","getLeadingBidStatus","existingBidCount","incomingBidCount","newBidInfo","currentItemId","bidInfoItemId","setMyMaxBidAmount","setItemState","setViewItemState","setServerSecondsLeft","setTranslatedDescription","setTranslationOnDemandDisabled","resetTranslatedDescription","beginLoadingTranslatedDescription","failedLoadingTranslatedDescription","setSellerItems","sellerItems","setReduxContainer","img","thumbnail","small","altText","handleItemModel","itemModel","previousItemId","inWishList","maxBidAmount","hasBidsWinnerToBeConfirmed","updateItemState","handleNewPage","hasWon","currentItemDetails","currentBidInfo","swedishCategoryPath","contentGroup","itemFixedPrice","itemCategory","itemEndDate","ensureCorrectUrlForItem","expectedItemId","shouldResetInititalState","previousBidInfo","hadLeadingBid","hadLostLeadingBid","toggleWishList","forceAdd","inWishListOldValue","inWishListNewValue","wishListCountOldValue","wishListCount","wishListCountNewValue","placeBid","setNotValidToBidOrBuyNow","priceInfo","auctionCommission","fixedPriceCommission","featureFees","feesTotal","highlightFeaturePrice","fee","isDomainNameCategory","domainNameCategoryId","companyMinCommissionProcent","companyMaxCommissionProcent","_cache","_title","existsInCache","isUndefined","clearCache","topCategories","levelToSearch","chain","isEmpty","categoryIds","each","categoryInfo","SiteHeader","autoFocusSearch","menu","activeHoverMenu","setTime","isForeignVisitor","shouldDisplayLanguageSelectionInHeader","formattedCartItems","hasCartItems","stickyEnabledOnPage","isMobileBreakpoint","hideElements","isLiveEnabled","enableTransforms","activeClass","handleClickSearch","handleMenuClick","handleMouseOverMenu","handleMouseOutMenu","handleMenuBlur","handleAlwaysOpenMenuClick","clickAction","handleRegisterClick","memberStateActions","searchParams","CardVerificationModal","setIsHidden","submitButtonRef","webApiClient","authorization","clientToken","container","threeDSecure","dropin","create","createErrors","instance","requestPaymentMethod","email","requestPaymentMethodErr","_braintreeWebError","nonce","isVerified","threeDSecureValidationFailed","liabilityShiftPossible","liabilityShifted","DiscountBadge","getStartPageConfig","CMS_API","sortByIndex","getFavouriteSellers","getSellerSuggestions","favouriteSellerCardDtos","defaultStartPageConfig","alternativeText","isCampaignMode","webpageUrl","contentLoggedOut","contentLoggedIn","fetchStartPageConfig","fetchTrendingBrandsIfNeeded","logoImageUrl","fetchTrendingSearchesIfNeeded","isTrendingSearchesFromMlEnabled","fetchWishList","fetchFavouriteSellers","isSellerSuggestionsEnabled","promise","suggestionsPromise","StartPageHeroBanner","bannerLinks","baseUrl","getImageSizes","imageSizes","getWebpImage","Video","poster","videoLarge","largeUrl","videoMedium","mediumUrl","videoSmall","smallUrl","loops","setLoops","videoRef","playVideo","play","isTabletBreakpoint","isDesktopBreakpoint","handleVideoEnded","videoLoops","videoElement","autoPlay","playsInline","muted","MediaItem","webpImage","effectiveConnectionType","useNetworkStatus","media","Tag","gaAction","Tags","onClickTag","titleOnSameLine","TrendingSearchesTags","inHeader","textOrIcon","useRecentSearchesUpdated","RecentSearchesTags","recentSearchesUpdated","getPreviousSearches","limit","previousResults","StartPageHeroTrustmark","trustmarkLanguages","StartPageHero","showRecentSearches","showTrendingSearches","backgroundVideo","searchElementRef","searchInView","searchInViewEntry","parsedCampaignUrl","toRelativeTraderaUrl","FallbackImage","isSpaLink","CarouselItem","videoEnabled","button","showHeading","showContent","stripHost","Carousel","hiddenOn","singleItemClass","swipeToSlide","InstagramImage","InstagramFeed","instagramFeed","posts","PopularCategories","multiRow","singleItem","slidesPerRow","ConnectedRecentlyViewed","trackPicksForYouClick","EndingSoonErrorMessage","LoadMoreButton","recommendationMode","PicksForYou","endingSoon","useSplitTestGroup","splitTestName","SuggestedSellerToggle","isFavouriteSeller","isFavoriteSeller","setFavoriteSeller","toggleFavoriteSeller","wasFavouriteSeller","trackFavoriteSellerClick","FavouriteSellerCard","sellerProfileUrl","matchedItems","heroImageUrl","isSuggestion","FavouriteSellerCardsGrid","allSellers","SellerSuggestions","FavouriteSellersInternal","triggerOnce","allFavouriteSellers","sellerSuggestionsPosition","showSellerSuggestionsPositionAbove","showSellerSuggestionsPositionBelow","showFallbackInfo","FavouriteSellers","WishListInfoCard","padding","boxSizing","WishListInternal","hideWishListInfoCard","setHideWishListInfoCard","showInfoCard","WishList","isWishListEnabled","Container","PageContent","ImageTag","ImageTags","limitTags","TrendingBrandsTags","PersonalisedBrandsTags","showFallback","useShowPersonalisedBrandsFallback","useIsPersonalisedBrandsTagsLoading","fallbackStatus","PersonalisedSearchesTags","useShowPersonalisedSearchesFallback","useIsPersonalisedSearchesTagsLoading","PersonalisedTags","StartPage","isPersonalisedSuggestionsEnabled","isPersonalisedBrandsTagsLoading","isPersonalisedSearchesTagsLoading","showPersonalisedSearchesFallback","showPersonalisedTags","isLoadingPersonalisedTags","moveTrendingSearchesToPersonalised","showTrendingBrands","showTrendingSearchesInHeader","showTrendingSearchesBelowHeader","showRecentSearchesInHeader","showRecentSearchesBelowHeader","hasTraderaPay","CartError","CartPage","fromAddItem","isCheckoutDisabled","orderRows","goBack","ship","toCountryCode","mapShippingOption","sum","merchantMemberId","merchantAlias","changeItemQuantity","goToSeller","merchantId","isCommitOnPayment","PageMeta","BrandPage","BrandListPage","CampaignPage","CategoryListPage","CategoryPage","CheckoutPage","CheckoutConfirmationPage","FavouriteSellersPage","Landing_GantXTradera","Landing_StadiumXTradera","ProfilePage","ShippingInfoPage","CombinedShippingInfoPage","RecommendationsPage","ReportItemPage","SearchPage","TraderaShopPage","VerifyPage","LiveShoppingListPage","LiveShoppingDetailsPage","LiveShoppingSignUpPage","ViewItemPage","UPI","INR","Cause","CausesLandingPage","CausesInfo","Messaging","ValuationPage","viewItemPage","traderaShopPage","causesInfoPage","causesPage","causePage","upiPage","inrPage","brandPage","brand","brandListPage","campaignPage","categoryListPage","checkoutConfirmationPage","checkoutPage","preSelectPayment","preSelectShipping","cartPage","searchResultPage","favouriteSellersPage","landing_GantXTradera","landing_StadiumXTradera","liveShoppingSignUpPage","liveShoppingDetailsPage","liveShoppingListPage","profilePage","recommendationsPage","reportItemPage","verifyPage","returnUrl","categoryResultPage","messagingiframe","legacyCategoryResultPage","categoryNameAndId","divider","pop","notFoundPage","SuspenseFallback","Routes","TOUCHWEB_URL","sellerResponse","participates","setUserMessagingParticipation","messagingSettings","userResponse","getUserMessagingEmailSetting","setUserMessagingEmailSetting","setting","u1","u2","redirectURL","SignUpLink","initState","shouldInitBankID","bankIdErrorMessage","swishDetails","bankAccountSaved","bankUnknown","hasFailedPayouts","isMemberSetForPayout","tinkOnboarding","iframeUrl","shouldInitTink","paginationLinks","swishApp2AppMember","braintreeMember","onboardToHyperwalletProblems","tinkLink","hyperwalletPayeeVerification","suggestedPhoneNumber","checkMark","maskedBankAccountNumber","isBankAccountSupplied","bankIdCompleted","sellingGlobalConfig","imageSizeX","imageSizeY","maxTemplates","URL_BASE","RIOT_MOUNTPOINT","ErrorContainer","CartLink","cartUrl","NewTodayLabel","gptData","debug","discoverEnabled","enableTimeMetrics","enableFastClick","isNativeAppContext","isNativeAppWithApplyPaySupport","isSinglePageApp","environmentHash","isInIframe","frameElement","isIOS","isMobileSafari","isSpaNavigationEnabled","memberBirthdate","initialCurrencyCode","availableLanguages","defaultLanguage","availableIsoCodes","lang","getStartPageState","getCheckoutState","getCartState","getTraderaShopState","initializers","args","initialize","previousSearchService","generateSuggestionId","previousSearchResults","suggestedResults","shops","campaigns","getSuggestionsFromBackend","withDuplicates","uniqueMap","uniqueResults","shopResults","suggestedCharitiesResults","charitiesResults","suggestedCampaignResults","campaignResults","capaignId","allSuggestions","normalizeSearches","SEARCH_SUGGESTIONS","output","prettySearchTerm","recentCount","GeneralError","deps","didMount","setIsLoaded"],"mappings":"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ACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJtgG,GAAI,aACJugG,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJzvB,GAAI,aACJ0vB,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJ/wF,GAAI,aACJgxF,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,a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","file":"script/chunks/chunk.tradera.0aafc9a084.js","sourcesContent":["import { BIN_VALIDATION_RESULTS } from '../../api/vip-api-constants';\n\nconst binValidationParser = error => {\n let validationTitle;\n let validationBody;\n switch (error) {\n case BIN_VALIDATION_RESULTS.ITEM_NOT_FOUND:\n validationTitle = 'vip_bid_itemNotFoundTitle';\n validationBody = 'vip_bid_itemNotFoundBody';\n break;\n case BIN_VALIDATION_RESULTS.BIDDER_IS_BLOCKED:\n validationTitle = 'vip_bid_bidderIsBlockedTitle';\n validationBody = 'vip_bid_bidderIsBlockedBody';\n break;\n case BIN_VALIDATION_RESULTS.BUYING_OWN_ITEM:\n validationTitle = 'vip_bid_biddingOrBuyingOwnItemTitle';\n validationBody = 'vip_bid_biddingOrBuyingOwnItemBody';\n break;\n case BIN_VALIDATION_RESULTS.ONLY_EU_BUYERS_ACCEPTED:\n validationTitle = 'vip_bid_onlyEUBuyersAcceptedTitle';\n validationBody = 'vip_bid_onlyEUBuyersAcceptedBody';\n break;\n case BIN_VALIDATION_RESULTS.ONLY_NORDIC_BUYERS_ACCEPTED:\n validationTitle = 'vip_bid_onlyNordicBuyersAcceptedTitle';\n validationBody = 'vip_bid_onlyNordicBuyersAcceptedBody';\n break;\n case BIN_VALIDATION_RESULTS.ONLY_SWEDISH_BUYERS_ACCEPTED:\n validationTitle = 'vip_bid_onlySwedishBuyersAcceptedTitle';\n validationBody = 'vip_bid_onlySwedishBuyersAcceptedBody';\n break;\n case BIN_VALIDATION_RESULTS.USER_IS_SUSPENDED:\n validationTitle = 'vip_bid_userIsSuspendedTitle';\n validationBody = 'vip_bid_userIsSuspendedBody';\n break;\n case BIN_VALIDATION_RESULTS.ITEM_HAS_ENDED:\n validationTitle = 'vip_bid_auctionHasEndedTitle';\n validationBody = 'vip_bid_auctionHasEndedBody';\n break;\n case BIN_VALIDATION_RESULTS.PURCHASE_DID_NOT_SUCCEED:\n case BIN_VALIDATION_RESULTS.ITEM_ALREADY_PURCHASED_BY_OTHER_USER:\n default:\n validationTitle = 'vip_bid_errorTitle';\n validationBody = 'vip_bid_errorDescription';\n break;\n }\n\n return {\n validationTitle,\n validationBody\n };\n};\n\nexport default binValidationParser;\n","import React from 'react';\n\nconst ItemDisplayConfirmed = ({\n itemImage,\n itemTitle,\n formattedPrice,\n itemUrl\n}) => {\n return (\n <>\n
\n
\n \n \n {itemTitle}\n \n
{formattedPrice}
\n
\n
\n
\n
\n \n
\n \n {itemTitle}\n \n
\n {formattedPrice}\n
\n
\n
\n
\n \n );\n};\n\nexport default ItemDisplayConfirmed;\n","import React, { useCallback, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n useUrlLocalizer,\n useCurrentLanguage,\n useTranslator\n} from 'tradera-lang/translate';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\nimport { purchaseBin } from 'tradera-state/views/checkout/api';\nimport { fetchItemAndBidInfo } from 'tradera-state/views/view-item/reducer';\nimport binValidationParser from './bin-validation-parser';\nimport CheckFillIcon from '@tradera/blueprint/theme/icons2/check-fill.svg?jsx';\nimport NotifyIcon from '@tradera/blueprint/theme/icons2/notify.svg?jsx';\nimport { formatPrice } from '@tradera/blueprint/utils';\nimport * as analytics from '../../helpers/analytics';\nimport TopDescription from './bin-modal-top-description';\nimport SellerName from './bin-modal-seller-name';\nimport ItemDisplay from './bin-modal-item-display';\nimport ItemDisplayConfirmed from './bin-modal-item-display-confirmed';\nimport ShippingDisplay from './bin-modal-shipping-display';\nimport PaymentSummary from './bin-modal-payment-summary';\nimport BottomButtons from './bin-modal-bottom-buttons';\nimport './bin-modal.scss';\nimport { CardVerificationModal } from 'tradera-components/wacko-bidder/card-verification-modal';\nimport { BID_VALIDATION_RESULTS } from 'tradera-apps/tradera/components/vip/api/vip-api-constants';\n\nconst BIN_FORM_STATES = {\n NOT_CONFIRMED: 'NOT_CONFIRMED',\n CONFIRMED: 'CONFIRMED',\n CONFIRMED_WITH_ERROR: 'CONFIRMED_WITH_ERROR'\n};\n\nconst CenteredIcon = ({ children }) => {\n return (\n
\n
{children}
\n
\n );\n};\n\nconst Separator = () =>
;\n\nconst BigSeparator = () => (\n
\n);\n\nconst CloseButton = ({ action, text }) => (\n
\n
\n \n {text}\n \n
\n
\n);\n\nconst BinModal = ({ onClose, preferredCurrency }) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const { t } = useTranslator();\n const dispatch = useDispatch();\n const [currentFormState, setCurrentFormState] = useState(\n BIN_FORM_STATES.NOT_CONFIRMED\n );\n const [error, setError] = useState(undefined);\n const [transactionId, setTransactionId] = useState(undefined);\n const { language } = useCurrentLanguage();\n\n const itemDetails = useSelector(state => state.views.viewItem.itemDetails);\n const {\n seller,\n itemMainImage,\n title: itemTitle,\n itemId,\n shippingOptions,\n fixedPrice\n } = itemDetails;\n const formattedPrice = formatPrice(fixedPrice, language, preferredCurrency);\n const buyerCountryCode = useSelector(\n state => state.shippingRegion.shippingCountry.countryCodeIso2\n );\n\n const onContinue = useCallback(() => {\n analytics.trackPayBin();\n window.location = toLocalizedUrl(\n `/Shopping/Checkout/SelectPaymentForTransaction?transactionId=${transactionId}`\n );\n }, [transactionId, toLocalizedUrl]);\n\n const onConfirm = () => {\n purchaseBin({\n itemId: itemId,\n googleAnalyticsData: analytics.getGaTrackingData()\n })\n .then(({ data }) => {\n setError(undefined);\n analytics.trackConfirmBin();\n setTransactionId(data.transactionId);\n setCurrentFormState(BIN_FORM_STATES.CONFIRMED);\n return;\n })\n .catch(e => {\n analytics.trackBinError();\n\n setError(e.response.data.responseStatus.errorCode);\n setCurrentFormState(BIN_FORM_STATES.CONFIRMED_WITH_ERROR);\n });\n };\n\n const closeModal = () => {\n if (currentFormState !== BIN_FORM_STATES.NOT_CONFIRMED) {\n dispatch(fetchItemAndBidInfo(itemId, false));\n }\n onClose();\n };\n\n const keepShopping = () => {\n analytics.trackKeepShopping();\n closeModal();\n };\n\n if (\n error === BID_VALIDATION_RESULTS.MAX_PLACED_BIDS_LIMIT ||\n error === BID_VALIDATION_RESULTS.BID_AMOUNT_LIMIT\n ) {\n return (\n \n );\n }\n\n return (\n \n
\n {currentFormState === BIN_FORM_STATES.NOT_CONFIRMED && (\n <>\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n )}\n\n {currentFormState === BIN_FORM_STATES.CONFIRMED && (\n <>\n \n \n \n\n \n\n \n\n \n\n \n \n )}\n\n {currentFormState === BIN_FORM_STATES.CONFIRMED_WITH_ERROR && (\n \n )}\n
\n \n );\n};\n\nconst ErrorFeedback = ({\n error,\n itemMainImage,\n itemTitle,\n formattedPrice,\n closeModal\n}) => {\n const { t } = useTranslator();\n const { validationTitle, validationBody } = binValidationParser(error);\n\n return (\n <>\n \n \n \n\n \n\n \n\n \n\n \n \n );\n};\n\nexport { Separator, BigSeparator };\n\nexport default BinModal;\n","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 modals: {\n currentModal: 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 loading: false\n },\n siteLayout,\n showHeaderSearch: !(\n initData.pageName && initData.pageName.includes('StartPage')\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 youtubeVideoModal: {\n open: CONSTANTS.MODAL.CLOSED,\n video: ''\n }\n };\n};\n","import { logger } from 'packages';\n//jshint module : true\nimport myTradera from './my-tradera';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport { removePayout } from '../payouts/reducer';\nimport { selectPaymentsState } from 'tradera-apps/my-tradera/app/state/reducers/payments-reducer';\nconst actionTypes = {\n // Init\n INIT_DATA_LOAD: 'INIT_DATA_LOAD',\n INIT_DATA_LOADED: 'INIT_DATA_LOADED',\n\n // Swish\n UPDATE_PHONENUMBER: 'UPDATE_PHONENUMBER',\n INVALID_PHONENUMBER: 'INVALID_PHONENUMBER',\n UPDATE_VERIFYCODE: 'UPDATE_VERIFYCODE',\n INVALID_VERIFYCODE: 'INVALID_VERIFYCODE',\n DELETE_PHONENUMBER: 'DELETE_PHONENUMBER',\n SAVE_PHONENUMBER: 'SAVE_PHONENUMBER',\n SWISH_ENABLED: 'SWISH_ENABLED',\n SWISH_ERROR: 'SWISH_ERROR',\n\n // Bank\n DELETE_BANK_ACCOUNT: 'DELETE_BANK_ACCOUNT',\n UPDATE_CLEARING_NUMBER: 'UPDATE_CLEARING_NUMBER',\n UPDATE_ACCOUNT_NUMBER: 'UPDATE_ACCOUNT_NUMBER',\n BANK_NOT_MATCHED: 'BANK_NOT_MATCHED',\n IGNORE_BANK_NOT_MATCHED: 'IGNORE_BANK_NOT_MATCHED',\n BANK_ACCOUNT_SAVED: 'BANK_ACCOUNT_SAVED',\n INVALID_CLEARINGNUMBER: 'INVALID_CLEARINGNUMBER',\n INVALID_BANKACCOUNTNUMBER: 'INVALID_BANKACCOUNTNUMBER',\n BANK_ERROR: 'BANK_ERROR',\n\n // Tink\n INIT_TINK: 'INIT_TINK',\n CANCEL_TINK: 'CANCEL_TINK',\n SHOW_BANK_ACCOUNTS: 'SHOW_BANK_ACCOUNTS',\n SELECT_BANK_ACCOUNT: 'SELECT_BANK_ACCOUNT',\n TINK_COMPLETED: 'TINK_COMPLETED',\n TINK_ERROR: 'TINK_ERROR',\n\n // BankId\n SKIP_BANKID_AUTH: 'SKIP_BANKID_AUTH',\n BEGIN_BANKID_AUTH: 'BEGIN_BANKID_AUTH',\n CANCEL_BANKID_AUTH: 'CANCEL_BANKID_AUTH',\n BANKID_IN_PROGRESS: 'BANKID_IN_PROGRESS',\n BANKID_COMPLETED: 'BANKID_COMPLETED',\n BANKID_ERROR: 'BANKID_ERROR',\n\n // Payouts\n PAYOUTS_LOADED: 'PAYOUTS_LOADED',\n PAYOUTS_ERROR: 'PAYOUTS_ERROR'\n};\n\n// Init\n\nconst loadInitData = toLocalizedUrl => {\n return async dispatch => {\n try {\n dispatch({ type: actionTypes.INIT_DATA_LOAD });\n const response = await fetch(\n toLocalizedUrl('/my/payments2/GetInitData'),\n {\n method: 'GET',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' }\n }\n );\n const result = await response.json();\n if (response.ok)\n dispatch({\n type: actionTypes.INIT_DATA_LOADED,\n payload: result\n });\n else\n dispatch({\n type: actionTypes.PAYOUTS_ERROR,\n payload: 'Det gick inte att ladda utbetalningar.'\n });\n\n dispatch(myTradera.searching(false));\n dispatch(myTradera.error(false));\n } catch (err) {\n logger(err);\n }\n };\n};\n\n// Swish\n\nconst updatePhoneNumber = newNumber => ({\n type: actionTypes.UPDATE_PHONENUMBER,\n payload: { number: newNumber, isValid: newNumber.length > 7 }\n});\n\nconst updateVerifyCode = verifyCode => ({\n type: actionTypes.UPDATE_VERIFYCODE,\n payload: verifyCode\n});\n\nconst deletePhoneNumber = () => {\n return async dispatch => {\n try {\n const response = await fetch('/my/payments2/DeletePhoneNumber', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' }\n });\n await response.json();\n if (response.ok) dispatch({ type: actionTypes.DELETE_PHONENUMBER });\n else\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\nconst verifyCode = code => {\n return async dispatch => {\n try {\n const response = await fetch('/my/payments2/VerifyCode', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ code: code })\n });\n const result = await response.json();\n const payload = {\n type: 'swish',\n completeText: 'Ditt Swish-nummer är nu tillagt och bekräftat.',\n verificationText: 'Bekräfta Swish-nummer'\n };\n if (response.ok) {\n dispatch({\n type: actionTypes.BEGIN_BANKID_AUTH,\n payload: payload\n });\n dispatch(bankIdAuthenticate());\n } else if (result.code == 'InvalidCode')\n dispatch({\n type: actionTypes.INVALID_VERIFYCODE,\n payload: 'Du har angett fel kod.'\n });\n else\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\nconst savePhoneNumber = newNumber => {\n return async dispatch => {\n try {\n const response = await fetch('/my/payments2/SavePhoneNumber', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ phoneNumber: newNumber })\n });\n const result = await response.json();\n if (\n response.ok &&\n !result.requireSmsVerification &&\n !result.requireBankIdVerification\n ) {\n const payload = {\n type: 'swish',\n completeText:\n 'Ditt Swish-nummer är nu tillagt och bekräftat.',\n verificationText: 'Bekräfta Swish-nummer'\n };\n dispatch({\n type: actionTypes.SAVE_PHONENUMBER,\n payload: newNumber\n });\n dispatch({ type: actionTypes.SWISH_ENABLED });\n dispatch({\n type: actionTypes.SKIP_BANKID_AUTH,\n payload: payload\n });\n } else if (response.ok)\n dispatch({\n type: actionTypes.SAVE_PHONENUMBER,\n payload: newNumber\n });\n else if (result.code == 'InvalidPhoneNumber')\n dispatch({\n type: actionTypes.INVALID_PHONENUMBER,\n payload: 'Du har angett ett felaktigt telefonnummer.'\n });\n else if (result.code == 'InvalidCompanySwishNumber')\n dispatch({\n type: actionTypes.INVALID_PHONENUMBER,\n payload: 'Du har angett ett felaktigt Swishnummer.'\n });\n else if (result.code == 'SendSmsError')\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Det gick inte att skicka SMS. Försök igen.'\n });\n else\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\nconst setVerifiedPhoneNumber = () => {\n return async dispatch => {\n try {\n const response = await fetch('/my/payments2/SetSwishVerified', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' }\n });\n await response.json();\n if (response.ok) dispatch({ type: actionTypes.SWISH_ENABLED });\n else\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.SWISH_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\n// Bank\n\nconst updateAccountNumber = newAccountNumber => ({\n type: actionTypes.UPDATE_ACCOUNT_NUMBER,\n payload: {\n newAccountNumber: newAccountNumber,\n isValid: newAccountNumber.length > 4\n }\n});\n\nconst updateClearingNumber = newClearingNumber => ({\n type: actionTypes.UPDATE_CLEARING_NUMBER,\n payload: {\n newClearingNumber: newClearingNumber,\n isValid: newClearingNumber.length > 3\n }\n});\n\nconst deleteBankAccount = () => {\n return async dispatch => {\n try {\n const response = await fetch('/my/payments2/DeleteBankAccount', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' }\n });\n if (response.ok) {\n dispatch({ type: actionTypes.DELETE_BANK_ACCOUNT });\n dispatch(removePayout());\n } else {\n dispatch({\n type: actionTypes.BANK_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.BANK_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\nconst saveBankAccount = () => {\n return async (dispatch, getState) => {\n try {\n const clearingNumber = selectPaymentsState(getState())\n .bankAccountDetails.newClearingNumber;\n const accountNumber = selectPaymentsState(getState())\n .bankAccountDetails.newAccountNumber;\n const response = await fetch('/my/payments2/SaveBankAccount', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n clearingNumber: clearingNumber,\n accountNumber: accountNumber\n })\n });\n const result = await response.json();\n if (response.ok) {\n dispatch({\n type: actionTypes.BANK_ACCOUNT_SAVED,\n payload: result.maskedAccountNumber\n });\n } else if (result.code == 'InvalidClearingNumber') {\n dispatch({\n type: actionTypes.INVALID_CLEARINGNUMBER,\n payload:\n 'Du har angett ett felaktigt clearingnummer. Clearingnumret ska vara 4-5 siffror långt.'\n });\n } else if (result.code == 'InvalidBankAccountNumber') {\n dispatch({\n type: actionTypes.INVALID_BANKACCOUNTNUMBER,\n payload:\n 'Du har angett ett felaktigt bankkontonummer. Bankkontonumret ska vara mellan 7-10 siffror långt.'\n });\n } else {\n dispatch({\n type: actionTypes.BANK_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.BANK_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\nconst initSaveBankAccount = () => {\n return async (dispatch, getState) => {\n try {\n const clearingNumber = selectPaymentsState(getState())\n .bankAccountDetails.newClearingNumber;\n const accountNumber = selectPaymentsState(getState())\n .bankAccountDetails.newAccountNumber;\n\n const response = await fetch('/my/payments2/MatchBank', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n clearingNumber: clearingNumber,\n accountNumber: accountNumber\n })\n });\n\n const result = await response.json();\n\n if (result.invalidNumber) {\n dispatch({\n type: actionTypes.BANK_ERROR,\n payload: 'Felaktigt kontonummer'\n });\n return;\n }\n const payload = {\n type: 'bank',\n completeText: 'Ditt bankkonto är nu tillagt och bekräftat.',\n verificationText: 'Bekräfta bankkonto'\n };\n if (result.ok && !result.requireBankIdVerification) {\n dispatch(saveBankAccount());\n dispatch({\n type: actionTypes.SKIP_BANKID_AUTH,\n payload: payload\n });\n return;\n }\n if (result.ok) {\n dispatch({\n type: actionTypes.BEGIN_BANKID_AUTH,\n payload: payload\n });\n dispatch(bankIdAuthenticate());\n return;\n }\n\n dispatch({ type: actionTypes.BANK_NOT_MATCHED });\n if (result.requireBankIdVerification) {\n dispatch({\n type: actionTypes.BEGIN_BANKID_AUTH,\n payload: payload\n });\n } else {\n dispatch({\n type: actionTypes.SKIP_BANKID_AUTH,\n payload: payload\n });\n }\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.BANK_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\n// Tink\nconst initTink = () => ({\n type: actionTypes.INIT_TINK\n});\n\nconst cancelTink = () => ({\n type: actionTypes.CANCEL_TINK\n});\n\nconst errorTink = () => ({\n type: actionTypes.TINK_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n});\n\nconst loadBankAccounts = data => {\n return async dispatch => {\n try {\n const response = await fetch(\n '/my/payments2/TinkCallback?code=' + data.data,\n {\n method: 'GET',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' }\n }\n );\n const result = await response.json();\n dispatch({\n type: actionTypes.SHOW_BANK_ACCOUNTS,\n payload: result.accounts\n });\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.TINK_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\nconst selectBankAccount = account => {\n return async dispatch => {\n dispatch({ type: actionTypes.SELECT_BANK_ACCOUNT, payload: account });\n const payload = {\n type: 'tink',\n completeText: 'Ditt bankkonto är nu tillagt och bekräftat.',\n verificationText: 'Bekräfta bankkonto'\n };\n dispatch({ type: actionTypes.BEGIN_BANKID_AUTH, payload: payload });\n };\n};\n\n// Needs better handling: 500 error on fetch does not catch\nconst saveTinkBankAccount = account => {\n return async dispatch => {\n try {\n const response = await fetch('/my/payments2/SaveTinkBankAccount', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ accountNumber: account.accountNumber })\n });\n const result = await response.json();\n if (result.errorMessage) {\n dispatch({\n type: actionTypes.TINK_ERROR,\n payload: result.errorMessage\n });\n } else {\n dispatch({\n type: actionTypes.TINK_COMPLETED,\n payload: result.maskedAccountNumber\n });\n }\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.TINK_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\n// BankId\n\nconst cancelBankId = () => {\n return async dispatch => {\n try {\n await fetch('/bankid/cancel', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' }\n });\n } catch (err) {\n logger(err);\n }\n\n dispatch({ type: actionTypes.CANCEL_BANKID_AUTH });\n };\n};\n\nconst bankIdContinue = () => {\n return async (dispatch, getState) => {\n dispatch({ type: actionTypes.IGNORE_BANK_NOT_MATCHED });\n if (\n selectPaymentsState(getState()).bankIdVerification\n .requireBankIdVerification\n ) {\n dispatch(bankIdAuthenticate());\n } else {\n dispatch(saveBankAccount());\n }\n };\n};\n\nconst bankIdAuthenticate = () => {\n return async (dispatch, getState) => {\n try {\n const response = await fetch(ENDPOINTS.BANK_ID_AUTHENTICATE, {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n purpose: 'confirm-bank-account-or-swish'\n })\n });\n\n const result = await response.json();\n if (result.errorMessage) {\n dispatch({\n type: actionTypes.BANKID_ERROR,\n payload: bankIdUserMessage(result.errorMessage)\n });\n return;\n }\n dispatch({ type: actionTypes.BANKID_IN_PROGRESS, payload: result });\n\n selectPaymentsState(getState()).bankIdVerification.errorCount = 0;\n\n dispatch(bankIdPollProgress());\n } catch (err) {\n logger(err);\n dispatch({\n type: actionTypes.BANKID_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n };\n};\n\nconst sleep = delay => new Promise(resolve => setTimeout(resolve, delay));\n\nconst bankIdPollProgress = () => {\n return async (dispatch, getState) => {\n try {\n const response = await fetch(\n `${ENDPOINTS.BANK_ID_PROGRESS}?${new Date().getTime()}`,\n {\n method: 'GET',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' }\n }\n );\n const result = await response.json();\n if (result.errorMessage) {\n dispatch({\n type: actionTypes.BANKID_ERROR,\n payload: bankIdUserMessage(result.errorMessage)\n });\n return;\n }\n if (result.isCompleted) {\n if (\n selectPaymentsState(getState()).bankIdVerification.type ===\n 'swish'\n ) {\n dispatch(setVerifiedPhoneNumber());\n } else if (\n selectPaymentsState(getState()).bankIdVerification.type ===\n 'bank'\n ) {\n dispatch(saveBankAccount());\n } else if (\n selectPaymentsState(getState()).bankIdVerification.type ===\n 'tink'\n ) {\n dispatch(\n saveTinkBankAccount(\n selectPaymentsState(getState()).tink.account\n )\n );\n }\n dispatch({ type: actionTypes.BANKID_COMPLETED });\n return;\n }\n await sleep(3000);\n if (\n !selectPaymentsState(getState()).bankIdVerification\n .bankIdInProgress\n ) {\n return;\n }\n dispatch(bankIdPollProgress());\n } catch (err) {\n selectPaymentsState(getState()).bankIdVerification.errorCount++;\n if (\n selectPaymentsState(getState()).bankIdVerification.errorCount <\n 3\n ) {\n dispatch(bankIdPollProgress());\n } else {\n logger(err);\n dispatch({\n type: actionTypes.BANKID_ERROR,\n payload: 'Ett fel uppstod. Försök igen.'\n });\n }\n }\n };\n};\n\nconst bankIdUserMessage = errorMessage => {\n switch (errorMessage) {\n case 'START_FAILED':\n return 'BankID-appen verkar inte finnas i din dator eller telefon. Installera den och hämta ett BankID hos din internetbank.';\n case 'EXPIRED_TRANSACTION':\n return 'BankID-appen svarar inte. Kontrollera att den är startad och att du har internetanslutning. Om du inte har något giltigt BankID kan du hämta ett hos din Bank. Försök sedan igen.';\n case 'ALREADY_IN_PROGRESS':\n return 'En identifiering för det här personnumret är redan påbörjad. Vänta en stund och försök igen.';\n case 'CERTIFICATE_ERROR':\n return 'Det BankID du försöker använda är för gammalt eller spärrat. Använd ett annat BankID eller hämta ett nytt hos din internetbank.';\n case 'CANCELLED':\n return 'Åtgärden avbruten. Försök igen.';\n case 'USER_CANCEL':\n return 'Åtgärden avbruten.';\n default:\n return 'Ett fel uppstod. Försök igen.';\n }\n};\n\n// Payouts\nconst loadPayouts = (toLocalizedUrl, page) => {\n return async dispatch => {\n var params = page ? '?page=' + page : '';\n try {\n const response = await fetch(\n toLocalizedUrl('/my/payments2/payouts' + params),\n {\n method: 'GET',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' }\n }\n );\n const result = await response.json();\n if (response.ok)\n dispatch({ type: actionTypes.PAYOUTS_LOADED, payload: result });\n else\n dispatch({\n type: actionTypes.PAYOUTS_ERROR,\n payload: 'Det gick inte att ladda utbetalningar.'\n });\n } catch (err) {\n logger(err);\n }\n };\n};\n\nexport default {\n actionTypes,\n loadInitData,\n deletePhoneNumber,\n updatePhoneNumber,\n savePhoneNumber,\n updateVerifyCode,\n verifyCode,\n deleteBankAccount,\n updateAccountNumber,\n updateClearingNumber,\n initSaveBankAccount,\n initTink,\n cancelTink,\n errorTink,\n loadBankAccounts,\n selectBankAccount,\n saveTinkBankAccount,\n cancelBankId,\n bankIdContinue,\n bankIdAuthenticate,\n loadPayouts\n};\n","export const HEADER = 'header';\nexport const LAST_CHANCE = 'lastChance';\nexport const PICKS_FOR_YOU = 'picksForYou';\nexport const POPULAR_CATEGORIES = 'popularCategories';\nexport const CAROUSEL = 'carousel';\nexport const RECENTLY_VIEWED = 'recentlyViewed';\nexport const INSTAGRAM_FEED = 'instagramPosts';\nexport const WISH_LIST = 'wishList';\nexport const FAVOURITE_SELLERS = 'favouriteSellers';\n","import React from 'react';\nimport { formatPrice } from './formats';\nimport { LIST_VIEW_TYPES } from './../constants/list-types';\nimport STRINGS from './../constants/text-strings';\n\nexport const generateSumOfDiscounts = discounts => {\n return discounts\n .map(discount => discount.amount)\n .reduce((total, currentAmount) => {\n return total + currentAmount;\n }, 0);\n};\n\nexport const getBidCount = item => {\n return item && item.bidInformation && item.bidInformation.bidCount > 0\n ? item.bidInformation.bidCount\n : 0;\n};\n\nexport const getSumOfDiscounts = item => {\n const transaction = item.transaction;\n return transaction &&\n transaction.discounts &&\n transaction.discounts.length > 0\n ? generateSumOfDiscounts(transaction.discounts)\n : null;\n};\n\nexport const getMaxBid = item =>\n item.caller && item.caller.maxBid && item.caller.maxBid > 0\n ? formatPrice(item.caller.maxBid)\n : null;\n\nexport const getTimeLeft = item => {\n return item.isActive === true && item.timeLeft && item.timeLeft.timeleft\n ? item.timeLeft.timeleft\n : null;\n};\n\nexport const isTimeLeftCritical = item => {\n return item.timeLeft && item.timeLeft.critical\n ? item.timeLeft.critical\n : false;\n};\n\nexport const getShippingCost = (item, listViewType) => {\n const translateShippingNames = name => {\n const names = {\n Takeaway: 'Avh.',\n TakeawayLong: 'Avhämtning',\n TakeawayOnly: 'Avhämtning',\n SchenkerPrivpak: 'DB Schenker',\n Alternative: 'Annat fraktsätt'\n };\n if (!names[name]) {\n return name;\n }\n if (name === 'Takeaway' && listViewType === LIST_VIEW_TYPES.BASIC) {\n return names['TakeawayLong'];\n }\n return names[name];\n };\n\n const shouldShowShippingPrice = shippingItem =>\n shippingItem.shippingType === 'Takeaway'\n ? ''\n : `: ${formatPrice(shippingItem.shippingCost)}`;\n const getShippingLabelWithPrice = shippingItem => {\n return `${translateShippingNames(\n shippingItem.shippingType\n )}${shouldShowShippingPrice(shippingItem)}`;\n };\n\n return () => {\n const shippingOptions = item.listing.shippingOptions;\n\n if (item.transaction) {\n // Logic from Areas/MyTradera/Models/ShippingPrice.cs\n const selectedShipping = item.transaction.selectedShipping;\n if (selectedShipping) {\n if (selectedShipping.isTakeaway) {\n return `${translateShippingNames(\n 'Takeaway'\n )}: ${formatPrice(item.transaction.selectedShipping.cost)}`;\n }\n\n if (selectedShipping.isFreeShipping) {\n return STRINGS.SHIPPING_LABELS.FREE_SHIPPING;\n }\n return `${translateShippingNames(\n selectedShipping.name\n )}: ${formatPrice(item.transaction.selectedShipping.cost)}`;\n } else {\n /*\n * @todo: This if should be fixed in the backend.\n */\n if (\n item.transaction.hasIntegratedPayment === true &&\n shippingOptions.length === 1\n ) {\n let theOnlyShippingOption = item.listing.shippingOptions[0];\n return theOnlyShippingOption.shippingType === 'Takeaway'\n ? STRINGS.SHIPPING_LABELS.TAKEAWAY\n : formatPrice(theOnlyShippingOption.shippingCost);\n }\n\n return shippingOptions.map((shippingItem, i) => {\n return listViewType === LIST_VIEW_TYPES.BASIC ? (\n

{getShippingLabelWithPrice(shippingItem)}

\n ) : (\n `${getShippingLabelWithPrice(shippingItem)}${\n i < shippingOptions.length ? ', ' : ''\n }`\n );\n });\n }\n }\n\n const itemOffersTakeawayOnly = () =>\n shippingOptions.length === 1 &&\n shippingOptions.find(\n shippingOption => shippingOption.shippingType === 'Takeaway'\n ) !== undefined\n ? true\n : false;\n const getCheapestShippingCost = () =>\n shippingOptions.length === 0\n ? { shippingCost: 0 }\n : shippingOptions.reduce((accumulator, currentValue) => {\n if (\n (currentValue.shippingCost <\n accumulator.shippingCost &&\n currentValue.shippingType !== 'Takeaway') ||\n accumulator.shippingType === 'Takeaway'\n ) {\n return currentValue;\n }\n return accumulator;\n });\n\n return itemOffersTakeawayOnly()\n ? STRINGS.SHIPPING_LABELS.TAKEAWAY\n : formatPrice(getCheapestShippingCost().shippingCost);\n };\n};\n\nexport const isNormalListViewType = listViewType =>\n listViewType === LIST_VIEW_TYPES.NORMAL;\n","import { Analytics } from 'packages';\nimport {\n POPULAR_CATEGORIES,\n CAROUSEL,\n PICKS_FOR_YOU,\n LAST_CHANCE,\n HEADER,\n INSTAGRAM_FEED,\n RECENTLY_VIEWED,\n FAVOURITE_SELLERS\n} from './content-types';\n\nconst containerTypes = {\n [POPULAR_CATEGORIES]: 'Popcats',\n [CAROUSEL]: 'Carousel',\n [PICKS_FOR_YOU]: 'Picks for you',\n [LAST_CHANCE]: 'Last chance',\n [INSTAGRAM_FEED]: 'Instagram feed',\n [RECENTLY_VIEWED]: 'Recently viewed',\n [HEADER]: 'Header image',\n [FAVOURITE_SELLERS]: 'Favourite sellers'\n};\n\nexport const trackContainerClick = (containerType, trackingId) => {\n Analytics.trackEvent({\n category: 'StartPage',\n action: `${containerTypes[containerType]}`,\n label: trackingId\n });\n};\n","import ENDPOINTS from 'tradera-constants/endpoints';\nimport { CHECKOUT_ERRORS } from './checkout-errors';\nimport {\n axiosWithTokenRefresh,\n axiosConfigs,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\n\nconst setErrorMessage = e => {\n if (e) {\n e.message = e.response?.data?.responseStatus?.errorCode;\n throw e;\n } else {\n throw new Error(CHECKOUT_ERRORS.GENERIC);\n }\n};\n\nexport const getCheckout = async purchaseOrderId =>\n axiosWithTokenRefresh()\n .get(`${ENDPOINTS.ORDER_CHECKOUT_VIEW}/${purchaseOrderId}`, {\n withCredentials: true\n })\n .then(finalizeResponse())\n .catch(handleError());\n\nexport const getPaymentOptions = async (purchaseOrderId, selectedShippingId) =>\n axiosWithTokenRefresh()\n .get(`${ENDPOINTS.ORDER_CHECKOUT_PAYMENT_OPTIONS}/${purchaseOrderId}`, {\n params: {\n selectedShippingId\n },\n withCredentials: true\n })\n .then(finalizeResponse())\n .catch(handleError());\n\nexport const initializePayment = async formData =>\n axiosWithTokenRefresh()\n .post(\n ENDPOINTS.ORDER_CHECKOUT_INIT_PAYMENT,\n formData,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(e => {\n setErrorMessage(e);\n });\n\nexport const getPaymentStatus = async paymentAttemptId =>\n axiosWithTokenRefresh()\n .get(\n `${ENDPOINTS.ORDER_CHECKOUT_PAYMENT_STATUS}/${paymentAttemptId}`,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n\nexport const completePayment = async formData =>\n axiosWithTokenRefresh()\n .post(\n ENDPOINTS.ORDER_CHECKOUT_COMPLETE_PAYMENT,\n formData,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n\nexport const purchaseBin = async formData =>\n axiosWithTokenRefresh()\n .post(\n ENDPOINTS.ORDER_PURCHASE_BIN,\n formData,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n\nexport const getBraintreeToken = async (purchaseOrderId, paymentOption) =>\n axiosWithTokenRefresh()\n .get(`${ENDPOINTS.ORDER_CHECKOUT_BRAINTREE}/${purchaseOrderId}`, {\n params: {\n paymentMethod: paymentOption\n },\n withCredentials: true\n })\n .then(finalizeResponse())\n .catch(handleError());\n\nexport const getExternalAuthData = async paymentAttemptId =>\n axiosWithTokenRefresh()\n .get(\n `${ENDPOINTS.ORDER_CHECKOUT_AUTH_DATA}/${paymentAttemptId}`,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n\nexport const sendSwishSms = async formData =>\n axiosWithTokenRefresh()\n .post(\n '/shopping/swishapp2app/send',\n formData,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n\nexport const requestCombinedShippingPrice = async formData =>\n axiosWithTokenRefresh()\n .post(\n ENDPOINTS.ORDER_CHECKOUT_REQUEST_COMBINED_PRICE,\n formData,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n\nexport const cancelPayment = async formData =>\n axiosWithTokenRefresh()\n .post(\n ENDPOINTS.ORDER_CHECKOUT_CANCEL_PAYMENT,\n formData,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n\n// Export object for Sinon stubbing\nexport default {\n getBraintreeToken,\n getCheckout,\n getExternalAuthData,\n getPaymentOptions,\n initializePayment,\n getPaymentStatus,\n completePayment,\n sendSwishSms,\n requestCombinedShippingPrice,\n cancelPayment\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst TraderaLogo = ({ width, height, className, style, ...otherProps }) => (\n \n Tradera\n \n \n);\nTraderaLogo.propTypes = {\n width: PropTypes.number,\n height: PropTypes.number,\n className: PropTypes.string,\n style: PropTypes.object\n};\nTraderaLogo.defaultProps = {\n width: 100,\n className: ''\n};\n\nexport default React.memo(TraderaLogo);\n","export { default as ViewItemCarouselZoom } from './view-item-carousel-zoom';\n","/* eslint-disable react/no-danger */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport IconPushSplashDefault from './push-splash-icon.svg';\nimport IconWishlist from './push-wishlist-icon.svg';\nimport IconSelling from './push-selling-icon.svg';\nimport * as pushNotificationActions from 'tradera-state/push-notifications/push-notifications-slice';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { useDispatch } from 'react-redux';\nimport { useTranslator } from 'tradera-lang/translate';\nimport CheckIcon from '@tradera/blueprint/theme/icons2/check.svg?jsx';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\n\nconst PushNotificationModal = ({\n modalType,\n gaLabel,\n title,\n description,\n tagGroups,\n closeModal\n}) => {\n const dispatch = useDispatch();\n const { t } = useTranslator();\n\n const trackGa = gaLabel => {\n GtmService.trackAction('Settings', 'Notifications', gaLabel);\n };\n\n const handleAccept = async () => {\n trackGa(gaLabel);\n closeModal();\n try {\n dispatch(pushNotificationActions.addTagGroups(tagGroups));\n dispatch(pushNotificationActions.setShownModalTrue(modalType));\n } catch (error) {\n // error, do not do anything\n }\n };\n\n const handleReject = async () => {\n closeModal();\n trackGa('Decline - Opt-in alert');\n dispatch(pushNotificationActions.setShownModalTrue(modalType));\n };\n\n let icon = IconPushSplashDefault;\n\n if (modalType === 'wishlistReminders') {\n icon = IconWishlist;\n } else if (modalType === 'selling') {\n icon = IconSelling;\n }\n\n return (\n \n
\n \"\"\n

{t(title)}

\n \n
\n
\n \n {t('pushModal_btn_no')}\n \n
\n
\n \n {' '}\n {t('pushModal_btn_yes')}\n \n
\n
\n
\n
\n );\n};\n\nPushNotificationModal.propTypes = {\n modalType: PropTypes.string.isRequired,\n gaLabel: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n tagGroups: PropTypes.array.isRequired,\n closeModal: PropTypes.func.isRequired\n};\n\nexport default PushNotificationModal;\n","export default \"//static.tradera.net/touchweb/static/output/images/push-splash-icon.4a7e4939.svg\";","export default \"//static.tradera.net/touchweb/static/output/images/push-wishlist-icon.77df35d5.svg\";","export default \"//static.tradera.net/touchweb/static/output/images/push-selling-icon.f032a8b4.svg\";","import { SUPPORTED_LANGUAGES } from 'tradera-utils/url';\nexport const OPTIONAL_LANG = `/:lang(${SUPPORTED_LANGUAGES.join('|')})?`;\n","export const selectAvailableLanguages = state => state.language.available;\n\nexport const selectPreferredLanguage = state => state.language.preferred;\n\nexport const selectLocale = state => {\n const language = state.language.preferred.languageCodeIso2 || 'sv';\n const country = state.language.memberCountryCodeIso2 || 'SE';\n\n return `${language}-${country}`;\n};\n\nexport const selectIsForeignLanguageActivated = state =>\n selectPreferredLanguage(state).languageCodeIso2 !== 'sv';\n\nexport const selectShouldAlwaysDisplayInMenu = state =>\n state.language.shouldAlwaysDisplayInMenu;\n\nexport const selectShouldDisplayInHeader = state =>\n state.language.shouldDisplayInHeader;\n","import React, { useState } from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { formatPrice } from '@tradera/blueprint/utils';\nimport MultiCurrency from 'tradera-components/multi-currency/multi-currency';\n\nconst MAX_DROPDOWN_SIZE = 10;\n\nconst ItemQuantitySelector = ({\n quantity,\n quantityInShop,\n onQuantityChange\n}) => {\n const { t } = useTranslator();\n const [inputMode, setInputMode] = useState(quantity > MAX_DROPDOWN_SIZE);\n\n const onChange = event => {\n const value = parseInt(event.target.value);\n if (isNaN(value)) return;\n\n if (value !== -1) {\n event.target.value = Math.min(value, quantityInShop);\n onQuantityChange(event);\n }\n\n if (value === -1) {\n setInputMode(true);\n }\n };\n\n return (\n
\n {!inputMode && (\n quantityInShop ? 'border-danger' : ''\n }`}\n onChange={onChange}>\n \n {[\n ...Array(\n Math.min(\n Math.max(quantityInShop, 0),\n MAX_DROPDOWN_SIZE\n )\n )\n ].map((_, i) => {\n const count = i + 1;\n return (\n \n );\n })}\n {quantity > quantityInShop && (\n \n )}\n {quantityInShop > MAX_DROPDOWN_SIZE && (\n \n )}\n \n )}\n {inputMode && (\n \n )}\n
\n );\n};\n\nconst ItemDisplay = ({\n itemImage,\n itemTitle,\n unitPrice,\n language,\n preferredCurrency,\n isFirstItem,\n quantity,\n quantityInShop,\n onQuantityChange,\n itemUrl,\n isUnavailable\n}) => {\n const { t } = useTranslator();\n\n const getError = () => {\n if (isUnavailable) {\n return t('checkout_item_noLongerAvailable');\n } else if (quantityInShop !== undefined && quantity > quantityInShop) {\n return t('checkout_item_outOfStock');\n }\n return null;\n };\n\n const error = getError();\n\n const renderPrice = () => {\n return (\n
\n
\n {quantity > 1 && ×}\n\n 1 ? 'ml-1' : 'font-weight-bold'\n }`}>\n {formatPrice(unitPrice, language, preferredCurrency)}\n \n
\n\n {quantity > 1 && (\n
\n =\n \n {formatPrice(\n unitPrice * quantity,\n language,\n preferredCurrency\n )}\n \n
\n )}\n\n \n
\n );\n };\n\n return (\n <>\n
\n
\n
\n {isFirstItem && (\n \n {t('checkout_item_title')}:\n \n )}\n
\n \n \n {itemTitle}\n \n\n {error &&
{error}
}\n\n {quantityInShop !== undefined && (\n \n )}\n\n {renderPrice()}\n
\n
\n {isFirstItem && (\n
\n
\n \n {t('checkout_item_title')}:\n \n
\n
\n )}\n
\n
\n \n
\n \n {itemTitle}\n \n\n
\n {quantityInShop !== undefined && (\n \n )}\n\n {renderPrice()}\n
\n
\n\n {quantityInShop !== undefined &&\n quantity > quantityInShop && (\n
\n {t('checkout_item_outOfStock')}\n
\n )}\n
\n
\n \n );\n};\n\nexport default ItemDisplay;\n","import { touchWebClient } from 'tradera-utils/http';\n\nexport const getReportItemModel = itemId => {\n return touchWebClient.get(`report-item/${itemId}.json`);\n};\n\nexport const postReport = (itemId, reason, message, categoryId) => {\n const payload = { reason, message, categoryId };\n return touchWebClient.post(`report-item/${itemId}`, payload);\n};\n","import { setReportItem, setViewState } from './reducer';\nimport { getReportItemModel, postReport } from './api';\nimport { VIEW_STATES } from './constants';\nimport { logger } from 'packages';\nimport { API_ERRORS } from 'tradera-utils/api';\nimport { getBackToHereRedirectUrl } from 'tradera-utils/url';\nimport { getReturnUrl } from 'tradera-utils/login';\n\nconst onLoggedOut = () => {\n window.location = `/login${getReturnUrl(getBackToHereRedirectUrl())}`;\n};\n\nexport const loadReportItemModel = itemId => async (dispatch, getState) => {\n const reportItem = getState().views.reportItem;\n const isLoaded = reportItem.itemId === itemId;\n if (isLoaded) {\n dispatch(\n setViewState(\n reportItem.hasEnded ? VIEW_STATES.ITEM_ENDED : VIEW_STATES.FORM\n )\n );\n return;\n }\n try {\n dispatch(setViewState(VIEW_STATES.LOADING));\n const { data } = await getReportItemModel(itemId);\n\n dispatch(handleReportItemModel(data));\n } catch (error) {\n if (error.message === API_ERRORS.LOGGED_OUT) {\n onLoggedOut();\n } else {\n logger(error);\n }\n }\n};\n\nexport const handleReportItemModel = reportItemModel => dispatch => {\n dispatch(setReportItem(reportItemModel));\n};\n\nexport const submitReport = (\n itemId,\n reason,\n message,\n categoryId\n) => async dispatch => {\n dispatch(setViewState(VIEW_STATES.SUBMITTING));\n try {\n await postReport(itemId, reason, message, categoryId);\n dispatch(setViewState(VIEW_STATES.SUBMIT_SUCCESS));\n } catch (error) {\n logger(error);\n dispatch(setViewState(VIEW_STATES.SUBMIT_FAILED));\n }\n};\n","export const VIEW_ITEM_STATES = {\n INITIALIZING: 'INITIALIZING',\n ACTIVE: 'ACTIVE',\n ENDING: 'ENDING',\n ENDED: 'ENDED'\n};\n\nexport const ITEM_STATES = {\n ONGOING_AUCTION: 'ONGOING_AUCTION',\n ONGOING_AUCTION_BIN: 'ONGOING_AUCTION_BIN',\n ONGOING_FIXED_PRICE: 'ONGOING_FIXED_PRICE',\n ENDED_AUCTION_WITHOUT_BID: 'ENDED_AUCTION_WITHOUT_BID',\n ENDED_AUCTION_WITH_WINNING_BID: 'ENDED_AUCTION_WITH_WINNING_BID',\n ENDED_AUCTION_WITHOUT_WINNING_BID: 'ENDED_AUCTION_WITHOUT_WINNING_BID',\n ENDED_AUCTION_BIN_BOUGHT_AS_BIN: 'ENDED_AUCTION_BIN_BOUGHT_AS_BIN',\n ENDED_FIXED_PRICE: 'ENDED_FIXED_PRICE',\n UNKNOWN: 'UNKNOWN'\n};\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport MultiCurrency from 'tradera-components/multi-currency/multi-currency';\n\nconst PaymentSummary = ({\n formattedPrice,\n shippingOptions,\n isSellpyCheckout,\n preferredCurrency,\n totalPrice\n}) => {\n const { t } = useTranslator();\n const showShippingSelectionRow =\n shippingOptions.length > 1 ||\n (isSellpyCheckout && shippingOptions.length > 0);\n\n return (\n <>\n \n
\n \n {t('checkout_summary_toPayTitle')}:\n \n
\n
\n
\n {t('checkout_bin_pricePlusShipping', {\n price: formattedPrice\n })}\n
\n \n
\n
\n {showShippingSelectionRow && (\n
\n
\n {isSellpyCheckout\n ? t('cart_sellpyShipping')\n : t('checkout_bin_shippingDescription')}\n
\n
\n )}\n \n );\n};\n\nexport default PaymentSummary;\n","export { default } from './alink';\n","export default window.sellingGlobalData;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { connect } from 'react-redux';\nimport { compose } from 'redux';\nimport { hot } from 'react-hot-loader';\nimport axios from 'axios';\n\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport { handleError, API_ERRORS } from 'tradera-utils/api';\nimport { logger } from 'packages';\nimport { LAST_CHANCE } from '../content-types';\nimport { trackContainerClick } from '../analytics';\nimport {\n withTranslator,\n useTranslator,\n withUrlLocalizer\n} from 'tradera-lang/translate';\nimport { registerLiveUpdates } from 'tradera-utils/register-live-updates';\nimport { ProviderWithGlobalStore } from 'tradera-state/configure-store';\nimport itemActions from 'tradera-state/items/actions';\nimport uiActions from 'tradera-state/ui/actions';\nimport { generateItemCardPlaceholders } from 'tradera-components/item-card/generate-item-card-placeholders';\nimport { lazyLoadSettings } from 'tradera-components/item-card/config';\nimport ItemCard from 'tradera-components/item-card/item-card';\nimport ApplicationErrorBoundary from 'tradera-components/application-error-boundary';\nimport useIsMobile from 'tradera-hooks/use-is-mobile';\nimport ALink from 'tradera-components/alink/alink';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\n\nconst LastChance = props => (\n \n \n \n \n \n);\n\nconst LastChanceNew = props => {\n const {\n addItems,\n webLiveUrl,\n inSPA,\n isLoggedIn,\n items,\n openQuickView,\n preferredCurrency,\n toggleWishlist,\n toLocalizedUrl,\n updateItem\n } = props;\n\n const isStartPageLiveUpdatesEnabled = useIsFeatureEnabled(\n 'start-page-live-updates'\n );\n\n const [state, setState] = useState({\n loading: true,\n error: false,\n itemIds: []\n });\n const { loading, error, itemIds } = state;\n\n useEffect(() => {\n const { cancel, token: cancelToken } = axios.CancelToken.source();\n axios\n .get(ENDPOINTS.LAST_CHANCE, { cancelToken })\n .then(({ data }) => {\n let itemIds = [];\n if (data) {\n addItems(data);\n itemIds = data.map(item => item.itemId);\n }\n return setState({\n loading: false,\n error: false,\n itemIds\n });\n })\n .catch(handleError())\n .catch(error => {\n switch (error.message) {\n case API_ERRORS.CANCELLED:\n return;\n case API_ERRORS.ABORTED:\n case API_ERRORS.NETWORK:\n break;\n default:\n logger(error);\n }\n setState({\n loading: false,\n error: true,\n itemIds: []\n });\n });\n return cancel;\n }, [addItems]);\n\n useEffect(() => {\n if (isStartPageLiveUpdatesEnabled) {\n return registerLiveUpdates({\n url: webLiveUrl,\n onConnect: socket => {\n for (let itemId of itemIds) {\n socket.emit('join', `item:${itemId}`);\n }\n },\n onClientEvent: data => {\n switch (data.Type) {\n case 'ItemSold':\n case 'ItemUnSold':\n break;\n case 'AuctionLeadingBidUpdated':\n case 'IAuctionLeadingBidUpdated':\n updateItem({\n itemId: data.Event.AuctionId,\n item: {\n price: data.Event.BidAmount,\n totalBids: data.Event.NumberOfBids\n }\n });\n break;\n }\n }\n });\n }\n }, [isStartPageLiveUpdatesEnabled, webLiveUrl, itemIds, updateItem]);\n\n const { t } = useTranslator();\n const itemCount = useIsMobile() ? 6 : 8;\n\n const handleQuickView = useCallback(\n itemId => {\n openQuickView(itemId, itemIds);\n },\n [itemIds, openQuickView]\n );\n\n if (error || (!loading && itemIds.length === 0)) return null;\n\n const resolveItems = (itemIds = [], itemsMap = {}, maxItemsCount = 0) => {\n const mappedItems = itemIds.map(itemId => itemsMap[itemId]);\n return mappedItems.filter(item => !!item).slice(0, maxItemsCount);\n };\n\n const displayItems = loading\n ? generateItemCardPlaceholders(itemCount)\n : resolveItems(itemIds, items, itemCount);\n\n return (\n
\n

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

\n
\n {displayItems.map(item => (\n
\n \n
\n ))}\n
\n
\n
\n \n trackContainerClick(\n LAST_CHANCE,\n 'Last chance button below'\n )\n }>\n {`${t('lastChance_showMore')} ->`}\n \n
\n
\n
\n );\n};\n\nconst mapStateToProps = state => ({\n webLiveUrl: state.initData.webLiveUrl,\n items: state.items.cache,\n isLoggedIn: state.member.isLoggedIn,\n preferredCurrency: state.multiCurrency.preferredCurrency\n});\n\nconst mapDispatchToProps = dispatch => ({\n addItems: items => {\n dispatch(itemActions.add(items));\n },\n openQuickView: (itemId, itemIds) =>\n dispatch(\n uiActions.openQuickView({\n itemIds,\n itemId,\n openedFrom: 'Last Chance'\n })\n ),\n toggleWishlist: itemId => dispatch(itemActions.wishlist(itemId)),\n updateItem: payload => dispatch(itemActions.updateItem(payload))\n});\n\nconst LastChanceNewConnected = connect(\n mapStateToProps,\n mapDispatchToProps\n)(LastChanceNew);\n\nexport default compose(\n withUrlLocalizer,\n withTranslator,\n hot(module)\n)(LastChance);\n","import GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport myTraderaItemActions from './my-tradera-items';\nimport { setCookie } from './cookies';\nimport TEXT_STRINGS from '../../constants/text-strings';\nimport uiActions from 'tradera-state/ui/actions';\nimport uiActionTypes from 'tradera-state/ui/action-types';\nimport { whenInitialized } from 'tradera-lang/boot-languages';\nimport { selectMyTraderaItemsState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera-items';\nimport { routeInformationFactory } from '../../constants/routes';\nimport fetch from '../../utils/fetch';\nimport purchaseOrderActions from './purchase-order';\n\nconst actionTypes = {\n SEARCHING: 'SEARCHING',\n CHANGE_URL_PARAMS: 'CHANGE_URL_PARAMS',\n ERROR: 'ERROR',\n HIDE_NOTIFICATIONS: 'HIDE_NOTIFICATION',\n OPEN_MODAL: 'OPEN_MODAL',\n SET_BREAKPOINT: 'SET_BREAKPOINT',\n MOBILE_MENU: 'INTERACT_W_MOBILE_MENU',\n MOBILE_ACTIONS: 'INTERACT_W_MOBILE_ACTIONS',\n SET_MEMBER_MESSAGING_PARTICIPATION: 'SET_MEMBER_MESSAGING_PARTICIPATION',\n OPEN_MESSAGING_MODAL: uiActionTypes.OPEN_MESSAGING_MODAL,\n CLOSE_MESSAGING_MODAL: uiActionTypes.CLOSE_MESSAGING_MODAL,\n SET_TRANSLATED_ROUTE_INFORMATION: 'SET_TRANSLATED_ROUTE_INFORMATION',\n OPEN_CHANGE_SHIPPING: 'MYT/OPEN_CHANGE_SHIPPING',\n CLOSE_CHANGE_SHIPPING: 'MYT/CLOSE_CHANGE_SHIPPING',\n OPEN_SET_DICOUNT: 'MYT/OPEN_SET_DICOUNT',\n CLOSE_SET_DICOUNT: 'MYT/CLOSE_SET_DICOUNT',\n SET_COMBINED_SHIPPING_ENABLED: 'MYT/SET_COMBINED_SHIPPING_ENABLED'\n};\n\nconst openModal = options => ({\n type: actionTypes.OPEN_MODAL,\n payload: options\n});\n\nconst searching = payload => ({\n type: actionTypes.SEARCHING,\n payload: payload\n});\n\nconst error = error => ({\n type: actionTypes.ERROR,\n payload: error === true ? TEXT_STRINGS.ERRORS.GENERIC : error\n});\n\nconst setCombinedShippingEnabled = () => async dispatch => {\n try {\n const data = await fetch(\n '/api/webapi/member/profile/getiscombinedshippingenabled',\n {\n method: 'GET'\n }\n );\n return dispatch({\n type: actionTypes.SET_COMBINED_SHIPPING_ENABLED,\n payload: data.isEnabled\n });\n } catch (error) {\n return myTraderaItemActions.handleError(dispatch, error);\n }\n};\n\nconst changeListViewType = (page, listViewType) => (dispatch, getState) => {\n const state = getState();\n const myTraderaItemsState = selectMyTraderaItemsState(state);\n\n dispatch(purchaseOrderActions.resetPurchaseOrder());\n dispatch(myTraderaItemActions.resetMyTraderaItems());\n\n dispatch(setCookie('LIST_VIEW_TYPE_' + page.listType, listViewType));\n\n if (myTraderaItemsState.itemsByID) {\n dispatch(myTraderaItemActions.rebuildList());\n }\n\n GtmService.trackAction('List view', 'Change list type', listViewType);\n};\n\nconst scrollToInitialScroll = () => {\n const initialScrollEls = document.querySelectorAll('[data-initial-scroll]');\n if (initialScrollEls.length > 0) {\n window.scrollTo(0, initialScrollEls[0].offsetTop || 0);\n }\n};\n\nconst hideActualNotification = notification => ({\n type: actionTypes.HIDE_NOTIFICATIONS,\n payload: notification\n});\n\nconst hideNotification = notification => dispatch => {\n const notificationName = `hideNotification-${notification}`;\n const expires = new Date();\n expires.setMonth(expires.getMonth() + 3);\n dispatch(setCookie(notificationName, notificationName, expires));\n dispatch(hideActualNotification(notification));\n};\n\nconst mobileMenu = forceClose => ({\n type: actionTypes.MOBILE_MENU,\n payload: forceClose\n});\n\nconst mobileActions = forceClose => ({\n type: actionTypes.MOBILE_ACTIONS,\n payload: forceClose\n});\n\nconst setBreakPoint = breakpoint => ({\n type: actionTypes.SET_BREAKPOINT,\n payload: breakpoint\n});\n\nconst setMemberMessagingParticipation = toggle => ({\n type: actionTypes.SET_MEMBER_MESSAGING_PARTICIPATION,\n payload: toggle\n});\n\n/*\n Reusing actions and reducers for messaging modal from global\n redux store to reduce duplicate code\n*/\nconst openMessagingModal = payload => uiActions.openMessagingModal(payload);\n\nconst closeMessagingModal = payload => uiActions.closeMessagingModal(payload);\n\nexport const setTranslatedRouteInformation = dispatch => {\n return whenInitialized().then(({ t, toLocalizedUrl }) => {\n const payload = routeInformationFactory(t, toLocalizedUrl);\n dispatch({\n type: actionTypes.SET_TRANSLATED_ROUTE_INFORMATION,\n payload\n });\n\n return undefined;\n });\n};\n\nconst openChangeShipping = payload => ({\n type: actionTypes.OPEN_CHANGE_SHIPPING,\n payload: payload\n});\n\nconst closeChangeShipping = () => ({\n type: actionTypes.CLOSE_CHANGE_SHIPPING,\n payload: false\n});\n\nconst openSetDiscount = payload => ({\n type: actionTypes.OPEN_SET_DICOUNT,\n payload: payload\n});\n\nconst closeSetDiscount = () => ({\n type: actionTypes.CLOSE_SET_DICOUNT,\n payload: false\n});\n\nexport default {\n setCombinedShippingEnabled,\n actionTypes,\n searching,\n hideNotification,\n changeListViewType,\n hideActualNotification,\n scrollToInitialScroll,\n openModal,\n setBreakPoint,\n error,\n mobileMenu,\n mobileActions,\n setMemberMessagingParticipation,\n openMessagingModal,\n closeMessagingModal,\n openChangeShipping,\n closeChangeShipping,\n openSetDiscount,\n closeSetDiscount\n};\n","import initData from 'init-data';\nimport actions from '../actions/my-tradera';\nimport uiReducers from 'tradera-state/ui/reducer';\nimport CONSTANTS from 'tradera-constants/state';\n\nconst defaultState = {\n isCombinedShippingEnabled: false,\n isSearching: false,\n page: {},\n error: false,\n initData: {\n environment: initData.environment || '',\n version: initData.environment || '',\n title: initData.title || '',\n description: initData.description || ''\n },\n splitTests: initData.splitTests || null,\n memberAlias: initData ? initData.memberAlias : '',\n memberFirstName: initData ? initData.memberFirstName : '',\n memberId: initData ? initData.memberId : '',\n memberLastName: initData ? initData.memberLastName : '',\n memberCountryCodeIso2: initData ? initData.memberCountryCodeIso2 : null,\n memberMessagingParticipation: false,\n mobileMenu: false,\n mobileActions: false,\n messagingModal: {\n open: CONSTANTS.MODAL.CLOSED,\n title: '',\n src: '',\n participating: false,\n recipientId: '',\n item: null\n },\n changeShippingModal: {\n open: false,\n purchaseOrderId: null\n },\n setDiscountModal: {\n open: false,\n purchaseOrderId: null\n }\n};\n\nexport default (state = defaultState, action) => {\n const setCombinedShippingEnabled = () => ({\n ...state,\n isCombinedShippingEnabled: action.payload\n });\n\n const searching = () => ({\n ...state,\n isSearching: action.payload\n });\n\n const error = () => ({\n ...state,\n error: action.payload\n });\n\n const hideNotifications = () => ({\n ...state,\n hideNotifications: action.payload\n });\n\n const openModal = () => ({\n ...state,\n openModal: action.payload === false ? false : action.payload\n });\n\n const setBreakPoint = () => ({\n ...state,\n breakpoint: action.payload\n });\n\n const mobileMenu = () => ({\n ...state,\n mobileMenu:\n action.payload && action.payload === false\n ? false\n : !state.mobileMenu\n });\n\n const mobileActions = () => ({\n ...state,\n mobileActions:\n action.payload && action.payload === false\n ? false\n : !state.mobileActions\n });\n\n const setMemberMessagingParticipation = () => ({\n ...state,\n memberMessagingParticipation: action.payload\n });\n\n const openChangeShipping = () => ({\n ...state,\n changeShippingModal: {\n ...state.changeShippingModal,\n open: true,\n purchaseOrderId: action.payload\n }\n });\n\n const closeChangeShipping = () => ({\n ...state,\n changeShippingModal: {\n ...state.changeShippingModal,\n open: false\n }\n });\n\n const openSetDiscount = () => ({\n ...state,\n setDiscountModal: {\n ...state.setDiscountModal,\n open: true,\n purchaseOrderId: action.payload\n }\n });\n\n const closeSetDiscount = () => ({\n ...state,\n setDiscountModal: {\n ...state.setDiscountModal,\n open: false\n }\n });\n\n /*\n Reusing actions and reducers for messaging modal from global\n redux store to reduce duplicate code\n */\n const openMessagingModal = () => uiReducers(state, action);\n\n const closeMessagingModal = () => uiReducers(state, action);\n\n const setTranslatedRouteInformation = () => ({\n ...state,\n page: action.payload\n });\n\n const def = () => state;\n\n const reducers = {\n [actions.actionTypes.SEARCHING]: searching,\n [actions.actionTypes.HIDE_NOTIFICATIONS]: hideNotifications,\n [actions.actionTypes.ERROR]: error,\n [actions.actionTypes.OPEN_MODAL]: openModal,\n [actions.actionTypes.SET_BREAKPOINT]: setBreakPoint,\n [actions.actionTypes.MOBILE_MENU]: mobileMenu,\n [actions.actionTypes.MOBILE_ACTIONS]: mobileActions,\n [actions.actionTypes\n .SET_MEMBER_MESSAGING_PARTICIPATION]: setMemberMessagingParticipation,\n [actions.actionTypes.OPEN_MESSAGING_MODAL]: openMessagingModal,\n [actions.actionTypes.CLOSE_MESSAGING_MODAL]: closeMessagingModal,\n [actions.actionTypes.OPEN_CHANGE_SHIPPING]: openChangeShipping,\n [actions.actionTypes.CLOSE_CHANGE_SHIPPING]: closeChangeShipping,\n [actions.actionTypes\n .SET_TRANSLATED_ROUTE_INFORMATION]: setTranslatedRouteInformation,\n [actions.actionTypes.OPEN_SET_DICOUNT]: openSetDiscount,\n [actions.actionTypes.CLOSE_SET_DICOUNT]: closeSetDiscount,\n [actions.actionTypes\n .SET_COMBINED_SHIPPING_ENABLED]: setCombinedShippingEnabled\n };\n\n return !reducers[action.type] ? def() : reducers[action.type]();\n};\n\nexport const selectMyTraderaState = state => state.views.myTradera.myTradera;\n","import { PAGE_LIST_TYPES } from 'tradera-apps/my-tradera/app/constants/list-types';\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 LIST_VIEW_TYPE_BUYER_ACTIVE_ITEMS: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.BUYER_ACTIVE_ITEMS,\n default: null,\n length: 365\n },\n LIST_VIEW_TYPE_BUYER_PURCHASES: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.BUYER_PURCHASES,\n default: null,\n length: 365\n },\n LIST_VIEW_TYPE_BUYER_ITEMS_LOST: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.BUYER_ITEMS_LOST,\n default: null,\n length: 365\n },\n LIST_VIEW_TYPE_SELLER_ACTIVE: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.SELLER_ACTIVE,\n default: null,\n length: 365\n },\n LIST_VIEW_TYPE_SELLER_SOLD: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.SELLER_SOLD,\n default: null,\n length: 365\n },\n LIST_VIEW_TYPE_SELLER_NOT_SOLD: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.SELLER_NOT_SOLD,\n default: null,\n length: 365\n }\n};\n\nexport const CURRENCY_SELECTED_BY_USER = 'currency_selected_by_user';\nexport const GDPR_CONSENT_ALERT_DISMISSED = 'gdpr_dismissed_v1';\nexport const GDPR_CONSENT_COOKIE = 'gdpr_consent_v1';\nexport const FORCE_GEO_DEV = 'force-geo-dev';\nexport const ITEMS_PER_PAGE = 'ITEMS_PER_PAGE';\nexport const LIST_VIEW_TYPE = 'LIST_VIEW_TYPE';\nexport const MOBILE_OPT_IN_TAGS = 'mobile-opt-in-tags';\nexport const PREFERRED_CURRENCY = 'preferred_currency';\nexport const PREFERRED_LANGUAGE = 'preferred_language';\nexport const REGION_PICKER_DISMISSED = 'region_picker_dismissed_session';\nexport const S = 's';\nexport const SHIPPING_COUNTRY = 'shipping_country';\nexport const SHOW_FILTERS = 'SHOW_FILTERS';\nexport const SIGNUP_REFERRAL_PATH = 'signup_referral_path';\nexport const SOLD_VIEW_PICKLIST = 'sold_view_picklist';\nexport const TEST = 'test';\nexport const USERPREFERENCES = 'UserPreferences';\nexport const CART_ID = 'cartId';\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 [GDPR_CONSENT_ALERT_DISMISSED]: COOKIE_CATEGORIES.Essential,\n [GDPR_CONSENT_COOKIE]: COOKIE_CATEGORIES.Essential,\n [TEST]: COOKIE_CATEGORIES.Essential, // Unit test cookie\n\n [CURRENCY_SELECTED_BY_USER]: COOKIE_CATEGORIES.Functional,\n [DEFAULT_COOKIES.ITEM_LAYOUT.key]: COOKIE_CATEGORIES.Functional,\n [DEFAULT_COOKIES.SITE_LAYOUT.key]: COOKIE_CATEGORIES.Functional,\n [FORCE_GEO_DEV]: COOKIE_CATEGORIES.Functional,\n [ITEMS_PER_PAGE]: COOKIE_CATEGORIES.Functional,\n [LIST_VIEW_TYPE]: COOKIE_CATEGORIES.Functional,\n [MOBILE_OPT_IN_TAGS]: COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.ITEMS_PER_PAGE.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.SHOW_FILTERS.key]: COOKIE_CATEGORIES.Functional,\n [PREFERRED_CURRENCY]: COOKIE_CATEGORIES.Functional,\n [PREFERRED_LANGUAGE]: COOKIE_CATEGORIES.Functional,\n [REGION_PICKER_DISMISSED]: COOKIE_CATEGORIES.Functional,\n [S]: COOKIE_CATEGORIES.Functional, // saved search\n [SHIPPING_COUNTRY]: COOKIE_CATEGORIES.Functional,\n [SHOW_FILTERS]: COOKIE_CATEGORIES.Functional,\n [SIGNUP_REFERRAL_PATH]: COOKIE_CATEGORIES.Functional,\n [SOLD_VIEW_PICKLIST]: COOKIE_CATEGORIES.Functional,\n [USERPREFERENCES]: COOKIE_CATEGORIES.Functional,\n [CART_ID]: COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_BUYER_ACTIVE_ITEMS.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_BUYER_ITEMS_LOST.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_BUYER_PURCHASES.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_SELLER_ACTIVE.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_SELLER_NOT_SOLD.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_SELLER_SOLD.key]:\n COOKIE_CATEGORIES.Functional\n};\n\nexport const COOKIE_DEFAULT_CATEGORY = COOKIE_CATEGORIES.Functional;\n","import { axiosConfigs } from 'tradera-utils/api';\nimport { marketingApiClient } from 'tradera-utils/http';\nimport {\n resetCharity,\n setCharityShippingInfo,\n setCharityId,\n setCharityFromDraft,\n setCharityInfo\n} from 'tradera-state/views/syi/reducers/charity';\nimport shippingActions from './shipping-actions';\nimport logger from 'packages/logger';\n\nexport const setCharityFromDraftAndFetchInfo = charityFromDraft => dispatch => {\n dispatch(setCharityFromDraft(charityFromDraft));\n dispatch(setCharityAndFetchInfo(charityFromDraft.charityId));\n};\n\nexport const resetCharityAndShippingInfo = () => setCharityAndFetchInfo(null);\n\nexport const setCharityAndFetchInfo = charityId => dispatch => {\n dispatch(shippingActions.resetSelected());\n dispatch(resetCharity());\n dispatch(setCharityId({ charityId }));\n dispatch(fetchCharityInfo(charityId));\n dispatch(fetchCharityShippingInfo(charityId));\n};\n\nconst fetchCharityInfo = charityId => async dispatch => {\n if (!charityId) {\n return;\n }\n try {\n const response = await getCharity(charityId);\n dispatch(setCharityInfo(response.data));\n } catch (error) {\n if (error?.response?.status !== 404) {\n logger(error);\n }\n }\n};\n\nconst fetchCharityShippingInfo = charityId => async dispatch => {\n if (!charityId) {\n return;\n }\n try {\n const response = await getCharityShippingInfo(charityId);\n dispatch(setCharityShippingInfo(response.data));\n if (response.data.freeShippingPaidByProviderName) {\n dispatch({\n type: 'FREE_SHIPPING_PAID_BY_PROVIDER',\n payload: {\n providerName: response.data.freeShippingPaidByProviderName\n }\n });\n }\n if (response.data.forceFreeShipping) {\n dispatch({\n type: 'FORCE_FREE_SHIPPING'\n });\n }\n } catch (error) {\n if (error?.response?.status !== 404) {\n logger(error);\n }\n }\n};\n\nconst getCharityShippingInfo = charityId =>\n marketingApiClient.get(`/charity-shipping-info?charityId=${charityId}`, {\n ...axiosConfigs.notAuthenticated,\n cancelTokenId: 'getCharityShippingInfo'\n });\n\nconst getCharity = charityId =>\n marketingApiClient.get(`/syi/charity-details?charityId=${charityId}`, {\n ...axiosConfigs.notAuthenticated,\n cancelTokenId: 'getCharity'\n });\n","import actionTypes from 'tradera-state/ui/action-types';\n\nexport const openModal = payload => ({\n type: actionTypes.OPEN_MODAL,\n payload\n});\n\nexport const closeModal = () => ({\n type: actionTypes.CLOSE_MODAL\n});\n","import React, { useEffect, useCallback } from 'react';\nimport PropType from 'prop-types';\nimport { RemoveScroll } from 'react-remove-scroll';\nimport './modal.scss';\n\nconst SimpleModal = ({\n children,\n className,\n classNameBody,\n closeModalCallback,\n style,\n styleBody\n}) => {\n const closeOnEscape = useCallback(\n e => {\n if (e.keyCode === 27) {\n e.preventDefault();\n closeModalCallback(e);\n }\n },\n [closeModalCallback]\n );\n\n useEffect(() => {\n window.addEventListener('keydown', closeOnEscape);\n return () => {\n window.removeEventListener('keydown', closeOnEscape);\n };\n }, [closeOnEscape]);\n\n return (\n \n \n \n {children}\n
\n \n \n );\n};\n\nSimpleModal.propTypes = {\n children: PropType.node.isRequired,\n className: PropType.string,\n classNameBody: PropType.string,\n closeModalCallback: PropType.func.isRequired,\n style: PropType.object,\n styleBody: PropType.object\n};\nSimpleModal.defaultProps = {\n className: '',\n classNameBody: '',\n style: {},\n styleBody: {}\n};\n\nexport default SimpleModal;\n","import React from 'react';\nimport AuctionIcon from '@tradera/blueprint/theme/icons2/auction.svg?jsx';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\n\nconst OngoingAuctionsLink = () => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n\n return (\n \n \n \n );\n};\n\nexport default OngoingAuctionsLink;\n","import { useSelector } from 'react-redux';\n\nconst useIsLoggedIn = () => useSelector(state => state.member?.isLoggedIn);\n\nexport default useIsLoggedIn;\n","/***\n *\n * Keep track of users' GDPR settings.\n *\n */\nimport dayjs from 'dayjs';\n\nimport CookieUtil from 'tradera-utils/cookie';\nimport {\n GDPR_CONSENT_COOKIE,\n COOKIE_CATEGORIES\n} from 'tradera-constants/cookies';\n\nclass GdprSettings {\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 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 CookieUtil.createCookie(\n GDPR_CONSENT_COOKIE,\n cookie.join(','),\n dayjs()\n .add(1, 'years')\n .toDate(),\n '/'\n );\n return this;\n }\n}\n\nexport default new GdprSettings();\n","export const isSwedishOrUndefined = languageCodeIso2 =>\n languageCodeIso2 === undefined || languageCodeIso2.toLowerCase() === 'sv';\n\nexport const getLanguageFromCountryCode = countryCodeIso2 => {\n countryCodeIso2 = countryCodeIso2?.toLowerCase() || 'se';\n const languageMap = {\n se: 'sv',\n dk: 'da',\n de: 'de'\n };\n return languageMap[countryCodeIso2] || 'en';\n};\n\nexport const getCountryCodeFromLanguage = languageCode => {\n languageCode = languageCode?.toLowerCase() || 'sv';\n const countryMap = {\n en: 'gb', // We default to GB which isn't strictly correct\n da: 'dk',\n de: 'de'\n };\n return countryMap[languageCode] || 'se';\n};\n\nexport const areLanguageCodesIso2Equal = (first, second) =>\n (first || 'SV').toUpperCase() === (second || 'SV').toUpperCase();\n","import { actionTypes } from '../actions/cookies';\nimport cookieUtil from 'tradera-utils/cookie';\nimport { MYTRADERA_DEFAULT_COOKIES } from 'tradera-constants/cookies';\nimport { logger } from 'packages';\n\nconst defaultState = () => {\n let defaultCookies = {};\n Object.keys(MYTRADERA_DEFAULT_COOKIES).forEach(value => {\n let val = cookieUtil.readCookie(MYTRADERA_DEFAULT_COOKIES[value].key);\n defaultCookies[value] = val\n ? val\n : MYTRADERA_DEFAULT_COOKIES[value].default;\n });\n return defaultCookies;\n};\n\nexport default (state = defaultState(), action) => {\n const set = () => {\n let def = MYTRADERA_DEFAULT_COOKIES[action.payload.name];\n const expires = def.length;\n try {\n cookieUtil.createCookie(def.key, action.payload.value, expires);\n } catch (e) {\n logger(e);\n }\n if (state[action.payload.name] === action.payload.value) {\n return state;\n }\n return {\n ...state,\n [action.payload.name]: action.payload.value\n };\n };\n\n const def = () => state;\n\n const reducers = {\n [actionTypes.SET]: set\n };\n return !reducers[action.type] ? def() : reducers[action.type]();\n};\n\nexport const selectCookiesState = state => state.views.myTradera.cookies;\n","import { formatDate } from 'tradera-utils/date';\nimport { PAGE_LIST_TYPES } from '../../constants/list-types';\n\nconst isTakeaway = shippingType => {\n return shippingType === 'Takeaway' || shippingType === 'TakeawayOnly';\n};\n\nconst getSoldItemStateFor = sellerState => {\n if (sellerState.shipped && sellerState.feedbackLeft) {\n return 'Done';\n }\n if (sellerState.shipped) {\n return 'Shipped';\n }\n return sellerState.paid ? 'Paid' : 'NotPaid';\n};\n\nexport const initialPayloadItems = (data, listType) => {\n return data.purchaseOrders\n .map(purchaseOrder =>\n purchaseOrder.rows.map(row => ({\n ...row,\n caller: {},\n haveMultipleRows: purchaseOrder.rows.length > 1,\n haveCombinedShipping: !!purchaseOrder.combinedShippingInformation,\n isArchived: purchaseOrder.state.isArchived,\n key: row.listing.itemId,\n itemId: row.listing.itemId,\n itemUrl: row.listing.itemUrl,\n listing: {\n ...row.listing,\n restart: {},\n endDate: {\n formatted: formatDate(row.listing.endDate)\n }\n },\n bidInformation: {\n bidCount: row.buying.bidCount\n },\n seller: {\n ...purchaseOrder.sellerMember,\n id: purchaseOrder.sellerMember.memberId\n },\n transaction: {\n ...row.transaction,\n ...(purchaseOrder.shipping.selectedShipping\n ? {\n selectedShipping: {\n ...purchaseOrder.shipping.selectedShipping,\n isTakeaway: isTakeaway(\n purchaseOrder.shipping.selectedShipping\n .shippingType\n )\n }\n }\n : null),\n ...(purchaseOrder.shipping.shippingDiscount\n ? {\n shippingDiscount: {\n ...purchaseOrder.shipping.shippingDiscount,\n isTakeaway: isTakeaway(\n purchaseOrder.shipping.shippingDiscount\n .shippingType\n )\n }\n }\n : null),\n ...(purchaseOrder.shipping.shipping?.url\n ? {\n trackingLink: purchaseOrder.shipping.shipping?.url\n }\n : null),\n bookedShipment: {\n ...purchaseOrder.shipping.shipping\n },\n isPaymentExpired: purchaseOrder.state.isPaymentExpired,\n paidShipmentCheckoutId:\n purchaseOrder.shipping.shipping?.shipmentCheckoutId,\n shipmentId: purchaseOrder.shipping.shipping?.shipmentId,\n hasUnpaidShipping: purchaseOrder.state.hasUnpaidShipping,\n isRefundAllowed: purchaseOrder.state.isRefundAllowed,\n isDiscountAllowed: purchaseOrder.state.isDiscountAllowed,\n isPaidWithIntegratedPaymentOption:\n purchaseOrder.state.isPaidWithIntegratedPayment,\n purchaseOrderId: purchaseOrder.purchaseOrderId,\n hasBuyerProtection:\n purchaseOrder.payment.hasBuyerProtection,\n ...(listType === PAGE_LIST_TYPES.BUYER_PURCHASES\n ? {\n buyerState: {\n ...row.transaction.sellerState,\n ...row.transaction.buyerState,\n paid:\n purchaseOrder.state.isPaid ||\n purchaseOrder.state.isMarkedAsPaidByBuyer,\n shippingBooked:\n purchaseOrder.state.isShippingBooked,\n shipped: purchaseOrder.state.isShipped,\n hidden: purchaseOrder.state.isHiddenForBuyer,\n inr: row.transaction.buyerState.isInrSubmitted\n }\n }\n : {\n sellerState: {\n upiSubmitted:\n purchaseOrder.state.isUpiSubmitted,\n state: getSoldItemStateFor({\n ...row.transaction.sellerState,\n shipped: purchaseOrder.state.isShipped,\n paid: purchaseOrder.state.isPaid\n }),\n ...row.transaction.sellerState,\n paid: purchaseOrder.state.isPaid,\n shippingBooked:\n purchaseOrder.state.isShippingBooked,\n shipped: purchaseOrder.state.isShipped,\n hidden: purchaseOrder.state.isHiddenForSeller\n }\n }),\n transactionDate: {\n formatted: formatDate(row.transaction.transactionDate)\n },\n buyer: {\n ...purchaseOrder.buyerMember,\n id: purchaseOrder.buyerMember.memberId\n }\n }\n }))\n )\n .flatMap(row => row);\n};\n\nexport const initialPayloadPurchaseOrders = (data, page) => {\n return data.purchaseOrders.map(purchaseOrder => {\n return {\n ...purchaseOrder,\n shipping: {\n ...purchaseOrder.shipping,\n ...(purchaseOrder.shipping.selectedShipping\n ? {\n selectedShipping: {\n ...purchaseOrder.shipping.selectedShipping,\n isTakeaway: isTakeaway(\n purchaseOrder.shipping.selectedShipping\n .shippingType\n )\n }\n }\n : null),\n ...(purchaseOrder.shipping.shippingDiscount\n ? {\n shippingDiscount: {\n ...purchaseOrder.shipping.shippingDiscount,\n isTakeaway: isTakeaway(\n purchaseOrder.shipping.shippingDiscount\n .shippingType\n )\n }\n }\n : null)\n },\n transactionIds: purchaseOrder.rows.map(row => {\n return row.transaction.transactionId;\n }),\n itemsToGiveFeedBackTo: purchaseOrder.rows\n .map(row => {\n if (\n row.transaction[\n page.listType === PAGE_LIST_TYPES.BUYER_PURCHASES\n ? 'buyerState'\n : 'sellerState'\n ].feedbackLeft !== true\n ) {\n return row.transaction.transactionId;\n }\n return null;\n })\n .filter(Boolean)\n };\n });\n};\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst SimpleToast = ({ lokaliseKey }) => {\n const { t } = useTranslator();\n\n return {t(lokaliseKey)};\n};\n\nexport default SimpleToast;\n","import { selectMyTraderaState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport { selectFiltersState } from 'tradera-apps/my-tradera/app/state/reducers/filters';\n\nimport fetch from '../../utils/fetch';\nimport myTraderaItemsActions from './my-tradera-items';\nimport myTraderaActions from './my-tradera';\nimport URLS from '../../constants/urls';\nimport { actionTypes } from '../action-types/purchase-order';\nimport {\n initialPayloadPurchaseOrders,\n initialPayloadItems\n} from '../../helpers/payloads/purchase-order';\nimport { toast } from 'react-toastify';\nimport SimpleToast from 'tradera-components/toasts/simple-toast';\nimport React from 'react';\n\nconst resetPurchaseOrder = () => ({\n type: actionTypes.PURCHASE_ORDER_RESET\n});\n\nconst runPurchaseOrders = (\n page,\n scrollToInitialScroll = false,\n listViewType,\n waitForBackend = false,\n dontModifyHistory = true\n) => async (dispatch, getState) => {\n const endPoint = page.searchUrlNormalView;\n\n if (!endPoint) {\n return;\n }\n\n const state = getState();\n\n const currentMemberId = state.member.memberId;\n\n dispatch(myTraderaActions.searching(true));\n dispatch(myTraderaActions.error(false));\n dispatch(resetPurchaseOrder());\n dispatch(myTraderaItemsActions.resetMyTraderaItems());\n\n const search = async () => {\n try {\n const modifiers = selectFiltersState(state).modifiers;\n\n modifiers.PageNumber = modifiers.paging.page;\n modifiers.PageSize = modifiers.paging.size;\n\n const data = await fetch(endPoint, {\n body: JSON.stringify(\n myTraderaItemsActions.changeParamsForBackend(modifiers)\n )\n });\n\n dispatch({\n type: myTraderaItemsActions.actionTypes.UPDATE_ITEMS,\n payload: {\n value: {\n currentMemberId,\n items: initialPayloadItems(data, page.listType)\n },\n page: page.pageName,\n listViewType,\n memberMessagingParticipation: selectMyTraderaState(state)\n .memberMessagingParticipation\n }\n });\n dispatch({\n type: actionTypes.PURCHASE_ORDER_LIST,\n payload: {\n paging: {\n from:\n modifiers.paging.size * (modifiers.paging.page - 1),\n page: modifiers.paging.page,\n size: modifiers.paging.size,\n totalPages: data.totalNumberOfPages,\n totalItems: data.totalNumberOfPurchaseOrders\n },\n purchaseOrders: initialPayloadPurchaseOrders(data, page),\n statistics: data.statistics\n }\n });\n\n if (scrollToInitialScroll === true) {\n myTraderaActions.scrollToInitialScroll();\n }\n\n dispatch(myTraderaActions.error(false));\n return dispatch(myTraderaActions.searching(false));\n } catch (error) {\n dispatch(myTraderaActions.searching(false));\n if (dontModifyHistory === false) {\n myTraderaItemsActions.updateURL(\n dispatch,\n page.url,\n selectFiltersState(state).modifiers\n );\n }\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n };\n\n // This is a hack to enable delay of searches since sometimes when modifying an item\n // outside of the SPA world, it could take some time for the backend to catch up\n if (waitForBackend === true) {\n setTimeout(search, 3000);\n } else {\n search();\n }\n};\n\nconst updatePurchaseOrderShipped = (\n purchaseOrderId,\n listViewType,\n transactionIds,\n isShipped\n) => async dispatch => {\n dispatch(myTraderaActions.searching(true));\n try {\n dispatch(myTraderaActions.error(false));\n if (isShipped) {\n await fetch(URLS.MARK_SHIPPED, {\n body: JSON.stringify({ ids: transactionIds })\n });\n dispatch(\n myTraderaItemsActions.transactionsMarkAsShippedBySeller(\n transactionIds,\n listViewType\n )\n );\n } else {\n await fetch(URLS.UNMARK_SHIPPED, {\n body: JSON.stringify({ ids: transactionIds })\n });\n dispatch(\n myTraderaItemsActions.transactionsUnmarkAsShippedBySeller(\n transactionIds,\n listViewType\n )\n );\n }\n dispatch({\n type: actionTypes.PURCHASE_ORDER_SHIPPED,\n payload: {\n isShipped,\n purchaseOrderId\n }\n });\n return dispatch(myTraderaActions.searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n};\n\nconst requestCombinedShippingPrice = (\n purchaseOrderId,\n hasBuyerRequestedCombinedShippingPrice\n) => async dispatch => {\n dispatch(myTraderaActions.searching(true));\n try {\n dispatch(myTraderaActions.error(false));\n\n await fetch(URLS.REQUEST_COMBINED_SHIPPING_PRICE, {\n body: JSON.stringify({\n purchaseOrderId,\n hasRequested: hasBuyerRequestedCombinedShippingPrice\n })\n });\n\n dispatch({\n type: actionTypes.PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING,\n payload: {\n purchaseOrderId,\n hasBuyerRequestedCombinedShippingPrice\n }\n });\n\n return dispatch(myTraderaActions.searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n};\n\nconst updatePurchaseOrderPaidByBuyer = (\n purchaseOrderId,\n listViewType,\n isMarkedAsPaidByBuyer\n) => async dispatch => {\n dispatch(myTraderaActions.searching(true));\n try {\n dispatch(myTraderaActions.error(false));\n if (isMarkedAsPaidByBuyer) {\n await fetch(URLS.BUYER_MARK_PAID, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(\n myTraderaItemsActions.purchaseOrdersMarkAsPaidByBuyer(\n [purchaseOrderId],\n listViewType\n )\n );\n } else {\n await fetch(URLS.BUYER_UNMARK_PAID, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(\n myTraderaItemsActions.purchaseOrdersUnmarkAsPaidByBuyer(\n [purchaseOrderId],\n listViewType\n )\n );\n }\n dispatch({\n type: actionTypes.PURCHASE_ORDER_PAID_BY_BUYER,\n payload: {\n isMarkedAsPaidByBuyer,\n purchaseOrderId\n }\n });\n return dispatch(myTraderaActions.searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n};\n\nconst updatePurchaseOrderPaidBySeller = (\n purchaseOrderId,\n listViewType,\n memberMessagingParticipation,\n isPaid\n) => async dispatch => {\n dispatch(myTraderaActions.searching(true));\n try {\n dispatch(myTraderaActions.error(false));\n if (isPaid) {\n await fetch(URLS.SELLER_MARK_PAID, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(\n myTraderaItemsActions.purchaseOrdersMarkAsPaidBySeller(\n [purchaseOrderId],\n listViewType,\n memberMessagingParticipation\n )\n );\n toast.success(\n \n );\n } else {\n await fetch(URLS.SELLER_UNMARK_PAID, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(\n myTraderaItemsActions.purchaseOrdersUnmarkAsPaidBySeller(\n [purchaseOrderId],\n listViewType,\n memberMessagingParticipation\n )\n );\n }\n dispatch({\n type: actionTypes.PURCHASE_ORDER_PAID_BY_SELLER,\n payload: {\n isPaid,\n purchaseOrderId\n }\n });\n return dispatch(myTraderaActions.searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n};\n\nconst deleteShipment = (\n shipmentId,\n purchaseOrderId,\n listViewType\n) => async dispatch => {\n dispatch(myTraderaActions.searching(true));\n try {\n await fetch(URLS.DELETE_SHIPMENT, {\n body: JSON.stringify({ shipmentId: shipmentId })\n });\n dispatch(myTraderaActions.error(false));\n dispatch({\n type: actionTypes.PURCHASE_ORDER_DELETE_SHIPMENT,\n payload: {\n purchaseOrderId,\n listViewType\n }\n });\n return dispatch(myTraderaActions.searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n};\n\nconst updateShippingBooked = (\n purchaseOrderId,\n listViewType\n) => async dispatch => {\n dispatch(myTraderaActions.searching(true));\n try {\n await fetch(URLS.UNMARK_BOOKED, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(myTraderaActions.error(false));\n dispatch({\n type: actionTypes.PURCHASE_ORDERS_SHIPPING_BOOKED,\n payload: {\n purchaseOrderId,\n listViewType\n }\n });\n dispatch(myTraderaActions.searching(false));\n } catch (error) {\n myTraderaItemsActions.handleError(dispatch, error);\n }\n};\n\nconst feedbackLeftBySeller = (purchaseOrderId, submittables, listViewType) => {\n return {\n type: actionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER,\n payload: {\n submittables,\n purchaseOrderId,\n listViewType\n }\n };\n};\n\nconst feedbackLeftByBuyer = (purchaseOrderId, submittables, listViewType) => {\n return {\n type: actionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER,\n payload: {\n purchaseOrderId,\n submittables,\n listViewType\n }\n };\n};\n\nconst updatePurchaseOrderHiddenForSeller = (\n purchaseOrderId,\n isHidden,\n listViewType\n) => async dispatch => {\n try {\n dispatch(myTraderaActions.searching(true));\n\n const action = isHidden\n ? myTraderaItemsActions.sellerHideTransaction\n : myTraderaItemsActions.sellerUnhideTransaction;\n\n dispatch(action([purchaseOrderId], listViewType));\n dispatch({\n type: actionTypes.PURCHASE_ORDER_HIDDEN,\n payload: {\n purchaseOrderId,\n listViewType\n }\n });\n return dispatch(myTraderaActions.searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n};\n\nconst updatePurchaseOrderHiddenForBuyer = (\n purchaseOrderId,\n transactionIds,\n isHidden,\n listViewType\n) => async dispatch => {\n try {\n dispatch(myTraderaActions.searching(true));\n\n const action = isHidden\n ? myTraderaItemsActions.buyerHideTransaction\n : myTraderaItemsActions.buyerUnhideTransaction;\n\n dispatch(action(transactionIds, listViewType));\n dispatch({\n type: actionTypes.PURCHASE_ORDER_HIDDEN,\n payload: {\n purchaseOrderId,\n listViewType\n }\n });\n return dispatch(myTraderaActions.searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n};\n\nexport default {\n feedbackLeftBySeller,\n feedbackLeftByBuyer,\n updateShippingBooked,\n deleteShipment,\n requestCombinedShippingPrice,\n updatePurchaseOrderShipped,\n updatePurchaseOrderPaidBySeller,\n updatePurchaseOrderPaidByBuyer,\n resetPurchaseOrder,\n runPurchaseOrders,\n updatePurchaseOrderHiddenForSeller,\n updatePurchaseOrderHiddenForBuyer\n};\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 { createSlice } from '@reduxjs/toolkit';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n axiosWithTokenRefresh,\n axiosConfigs,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\n\nimport {\n selectBox,\n isLoadingShippingProducts,\n selectIsBoxValid\n} from './selectors';\n\nconst defaultBox = {\n length: 15,\n height: 15,\n width: 15,\n weight: 1000\n};\n\nconst defaultCountry = 'SE';\n\nconst shippingCalculatorSlice = createSlice({\n name: 'shippingCalculator',\n initialState: {\n box: { ...defaultBox },\n selectedToCountry: defaultCountry,\n selectedFromCountry: defaultCountry,\n availableFromCountryCodes: [],\n availableToCountryCodes: [],\n defaultBox,\n weightUnit: 'kg',\n isLoadingShippingProducts: false,\n shippingProviders: [\n {\n providerName: 'SchenkerPrivpak'\n },\n {\n providerName: 'PostNordParcel'\n },\n {\n providerName: 'PostNordStamp'\n },\n {\n providerName: 'DHL'\n },\n {\n providerName: 'Bussgods'\n }\n ],\n internationalProductsGroupedByFromThenToCountry: {\n SE: { SE: [] }\n },\n showError: false\n },\n reducers: {\n setSelectedToCountry: (state, action) => {\n state.selectedToCountry = action.payload.selectedToCountry;\n },\n setSelectedFromCountry: (state, action) => {\n state.selectedFromCountry = action.payload.selectedFromCountry;\n },\n setDefaultValuesOnBox: state => {\n state.box = { ...defaultBox };\n },\n updateFilter: (state, action) => {\n const { filterName, value } = action.payload;\n state.box[filterName] = value;\n },\n setWeightFilter: (state, action) => {\n const map = {\n 1: 50,\n 2: 100,\n 3: 250,\n 4: 500,\n 5: 1000,\n 6: 2000,\n 7: 3000,\n 8: 5000,\n 9: 7000,\n 10: 9000,\n 11: 10000,\n 12: 12000,\n 13: 15000,\n 14: 20000,\n 15: 35000\n };\n\n const value = map[action.payload.value];\n state.weightUnit = value % 1000 === 0 ? 'kg' : 'g';\n state.box.weight = value;\n },\n setWeightUnit: (state, action) => {\n state.weightUnit = action.payload.weightUnit;\n },\n beginFetchingShippingProducts: state => {\n state.isLoadingShippingProducts = true;\n },\n setShowError: state => {\n state.showError = true;\n },\n setShippingProducts: (state, action) => {\n const { internationalShippingCalculatorProducts } = action.payload;\n\n const internationalProductsGroupedByFromThenToCountry = internationalShippingCalculatorProducts.reduce(\n (prev, product) => {\n const {\n fromCountryCodeIso2: from,\n toCountryCodeIso2: to\n } = product;\n prev[from] = prev[from] || {};\n prev[from][to] = prev[from][to] || [];\n prev[from][to].push(product);\n return prev;\n },\n {}\n );\n\n const availableToCountryCodes = [\n ...new Set(\n internationalShippingCalculatorProducts.map(\n ({ toCountryCodeIso2 }) => toCountryCodeIso2\n )\n )\n ];\n\n const availableFromCountryCodes = [\n ...new Set(\n internationalShippingCalculatorProducts.map(\n ({ fromCountryCodeIso2 }) => fromCountryCodeIso2\n )\n )\n ];\n\n state.availableFromCountryCodes = availableFromCountryCodes;\n state.availableToCountryCodes = availableToCountryCodes;\n state.showError = false;\n state.internationalProductsGroupedByFromThenToCountry = internationalProductsGroupedByFromThenToCountry;\n state.isLoadingShippingProducts = false;\n }\n }\n});\n\nexport const setDefaultValues = () => dispatch => {\n dispatch(setDefaultValuesOnBox());\n dispatch(fetchShippingProducts());\n dispatch(setSelectedToCountry({ selectedToCountry: defaultCountry }));\n dispatch(setSelectedFromCountry({ selectedFromCountry: defaultCountry }));\n};\n\nexport const fetchShippingProducts = () => async (dispatch, getState) => {\n const { length, height, width, weight } = selectBox(getState());\n\n if (isLoadingShippingProducts(getState())) {\n return;\n }\n\n if (!selectIsBoxValid(getState())) {\n dispatch(\n setShippingProducts({\n internationalShippingCalculatorProducts: []\n })\n );\n return;\n }\n dispatch(beginFetchingShippingProducts());\n\n try {\n const response = await axiosWithTokenRefresh()\n .get(ENDPOINTS.INTERNATIONAL_SHIPPING_CALCULATOR, {\n params: {\n lengthInMillimeters: length * 10,\n heightInMillimeters: height * 10,\n widthInMillimeters: width * 10,\n weightInGrams: weight\n },\n ...axiosConfigs.authenticated\n })\n .then(finalizeResponse())\n .catch(handleError());\n\n dispatch(\n setShippingProducts({\n internationalShippingCalculatorProducts:\n response.data.internationalShippingCalculatorProducts\n })\n );\n } catch (e) {\n dispatch(\n setShippingProducts({\n internationalShippingCalculatorProducts: []\n })\n );\n dispatch(setShowError());\n }\n};\n\nexport const {\n updateFilter,\n setWeightUnit,\n beginFetchingShippingProducts,\n setShippingProducts,\n setDefaultValuesOnBox,\n setSelectedToCountry,\n setSelectedFromCountry,\n setWeightFilter,\n setShowError\n} = shippingCalculatorSlice.actions;\nexport default shippingCalculatorSlice.reducer;\n","export const ITEM_CARD_IMAGE_MODES = {\n SQUARE: 'SQUARE',\n NATURAL: 'NATURAL'\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"international-shipping-modal-container\":\"international-shipping-modal-container--1Emfe\",\"internationalShippingModalContainer\":\"international-shipping-modal-container--1Emfe\",\"international-shipping-modal-body-country\":\"international-shipping-modal-body-country--1IU5f\",\"internationalShippingModalBodyCountry\":\"international-shipping-modal-body-country--1IU5f\",\"international-shipping-modal-header\":\"international-shipping-modal-header--2E4PO\",\"internationalShippingModalHeader\":\"international-shipping-modal-header--2E4PO\",\"international-shipping-modal-table\":\"international-shipping-modal-table--2Cobx\",\"internationalShippingModalTable\":\"international-shipping-modal-table--2Cobx\"};","import React from 'react';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\nimport ModalContainer from 'static/script/components/modals/modal-container';\nimport ModalHeader from 'static/script/components/modals/modal-header';\nimport ModalBody from 'static/script/components/modals/modal-body';\nimport { connect } from 'react-redux';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport { closeModal } from 'tradera-state/ui/action-creators';\nimport { mapCountryCodeToCountryKey } from 'tradera-utils/map-country-code-to-country-key';\nimport { selectShippingCountry } from 'tradera-state/shipping-region/selectors';\nimport { ShippingProviderIcon } from 'tradera-components/shipping/shipping-provider-icon';\nimport MessagingButton from 'tradera-components/messaging/messaging-button';\nimport Flag from 'tradera-components/flag/flag';\nimport { translateBuyerRegionText } from 'tradera-apps/tradera/components/vip-shared/shipping-options/translate-buyer-region-text';\nimport styles from './international-shipping-modal.module.scss';\n\nconst InternationalShippingModal = props => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n let sortedRows = props.internationalShipping.rows\n .map(row => ({\n ...row,\n country: t(mapCountryCodeToCountryKey(row.toCountryCodeIso2))\n }))\n .sort((a, b) => (a.country > b.country ? 1 : -1));\n const ownCountryRow = sortedRows.find(\n row =>\n row.toCountryCodeIso2.toLowerCase() ===\n props.shippingCountryCode.toLowerCase()\n ) || {\n country: t(mapCountryCodeToCountryKey(props.shippingCountryCode)),\n toCountryCodeIso2: props.shippingCountryCode\n };\n sortedRows = removeDuplicateOwnCountryRowIfOnlyRow(\n props.shippingCountryCode,\n sortedRows\n );\n\n const buyerRegionText = translateBuyerRegionText(\n t,\n props.internationalShipping.allowedBuyerRegion\n );\n\n return (\n \n
{t('internationalShippingModal_title')}
\n
\n \n \n {props.internationalShipping.title}\n \n \n {t('internationalShippingModal_readMore')}\n \n
\n
\n {buyerRegionText}\n {props.internationalShipping.fromCountryCodeIso2 !==\n props.shippingCountryCode && (\n <>\n {' '}\n {t('vip_from_country_text', {\n shippingOptionCountry: t(\n mapCountryCodeToCountryKey(\n props.internationalShipping\n .fromCountryCodeIso2\n )\n )\n })}{' '}\n \n \n )}\n
\n \n }\n body={\n props.internationalShipping.providers.length ? (\n \n \n \n \n {t(\n 'internationalShippingModal_destination'\n )}\n \n {props.internationalShipping.providers.map(\n provider => {\n return (\n \n {getProviderCell(provider, t)}\n \n );\n }\n )}\n \n \n \n \n \n {t(\n 'internationalShippingModal_providerWeight'\n )}\n \n {props.internationalShipping.weights.map(\n (weight, i) => (\n \n {weight ? `${weight} kg` : 'N/A'}\n \n )\n )}\n \n {\n \n }\n {sortedRows.map(row => (\n \n ))}\n \n \n ) : (\n
\n {t('internationalShippingModal_noShippingInfo')}\n \n {getMessagingCell(\n props.internationalShipping.messagingLink,\n props.internationalShipping.ownItem,\n t\n )}\n \n
\n )\n }\n />\n );\n};\n\nconst Modal = ({ closeModal, header, body }) => (\n \n \n \n {header}\n \n \n {body}\n \n \n \n);\n\nconst getMessagingCell = (\n { buyerId, sellerId, itemId, source, isLoggedIn, memberId },\n ownItem,\n t\n) =>\n !isLoggedIn ? (\n \n {t('internationalShippingModal_logIn')}\n \n ) : ownItem ? (\n ''\n ) : (\n \n );\n\nconst getValueCell = (row, provider, isOwnRow, messagingLink, ownItem, t) => {\n const getEmptyCell = () =>\n isOwnRow ? getMessagingCell(messagingLink, ownItem, t) : '-';\n\n return row[provider] || row[provider] === 0\n ? t('internationalShippingModal_currency', {\n price: row[provider]\n })\n : getEmptyCell();\n};\n\nconst getProviderIcon = provider => (\n \n);\nconst providerImageMap = {\n DHL: () => getProviderIcon('DHL'),\n Bussgods: () => getProviderIcon('Bussgods'),\n Posten: () => getProviderIcon('Posten'),\n PostNordParcel: () => getProviderIcon('PostNordParcel'),\n PostNordStamp: () => getProviderIcon('PostNordStamp'),\n Schenker: () => getProviderIcon('Schenker'),\n SchenkerPrivpak: () => getProviderIcon('SchenkerPrivpak'),\n Alternative: t => t('internationalShippingModal_other')\n};\n\nconst getProviderCell = (provider, t) =>\n providerImageMap[provider] ? providerImageMap[provider](t) : provider;\n\nconst removeDuplicateOwnCountryRowIfOnlyRow = (ownShippingCountryCode, rows) =>\n rows.length === 1 && rows[0].toCountryCodeIso2 === ownShippingCountryCode\n ? []\n : rows;\n\nconst ShippingRow = ({\n row,\n providers,\n t,\n isOwnRow,\n messagingLink,\n ownItem\n}) => (\n \n \n \n {row.country}\n {isOwnRow && (\n \n )}\n \n \n {providers.map((provider, i) => {\n return (\n \n {getValueCell(\n row,\n provider,\n isOwnRow,\n messagingLink,\n ownItem,\n t\n )}\n \n );\n })}\n \n);\n\nconst mapStateToProps = state => ({\n internationalShipping: state.internationalShipping,\n shippingCountryCode: selectShippingCountry(state)?.countryCodeIso2\n});\n\nconst mapDispatchToProps = {\n closeModal\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(InternationalShippingModal);\n\nexport { InternationalShippingModal };\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport InternationalShippingModal from 'tradera-components/international-shipping-modal/international-shipping-modal';\nimport { INTERNATIONAL_SHIPPING_MODAL_ID } from 'tradera-components/international-shipping-modal/constants';\nimport {\n SyiZignSecModal,\n syiZignSecModalId\n} from 'tradera-apps/syi/script/app_react/pages/summary-page/components/syi-zign-sec-modal';\n\nconst ModalRenderer = props => (\n
\n {\n {\n [INTERNATIONAL_SHIPPING_MODAL_ID]: (\n \n ),\n [syiZignSecModalId]: \n }[props.currentModal]\n }\n
\n);\n\nexport default connect(state => state.ui.modals)(ModalRenderer);\n\nexport { ModalRenderer };\n","import actionTypes from './action-types';\nimport { getCategoryList, getTopLevelCategories } from './api';\nimport { API_ERRORS } from 'tradera-utils/api';\nimport { reload } from 'tradera-utils/location';\n\nconst fetchTopLevelCategories = () => (dispatch, getState) => {\n dispatch(requestCategoryList());\n const { initData } = getState();\n\n return getTopLevelCategories(initData.version)\n .then(results => dispatch(receiveTopLevelCategories(results.data)))\n .catch(error => {\n switch (error.message) {\n case API_ERRORS.VERSION_MISMATCH:\n reload(true);\n break;\n case API_ERRORS.CANCELLED:\n break;\n default:\n dispatch(handleTopLevelCategoriesError(error));\n break;\n }\n });\n};\n\nconst fetchCategoryList = () => (dispatch, getState) => {\n dispatch(requestCategoryList());\n const { initData } = getState();\n\n return getCategoryList(initData.version)\n .then(results => dispatch(receiveCategoryList(results.data)))\n .catch(error => {\n switch (error.message) {\n case API_ERRORS.VERSION_MISMATCH:\n reload(true);\n break;\n case API_ERRORS.CANCELLED:\n break;\n default:\n dispatch(handleCategoryListError(error));\n break;\n }\n });\n};\n\nconst requestCategoryList = payload => ({\n type: actionTypes.REQUEST_CATEGORY_LIST,\n payload\n});\n\nconst receiveCategoryList = payload => ({\n type: actionTypes.RECEIVE_CATEGORY_LIST,\n payload\n});\n\nconst receiveTopLevelCategories = payload => ({\n type: actionTypes.RECEIVE_TOP_LEVEL_CATEGORIES,\n payload\n});\n\nconst handleCategoryListError = payload => ({\n type: actionTypes.HANDLE_CATEGORY_LIST_ERROR,\n payload\n});\n\nconst handleTopLevelCategoriesError = payload => ({\n type: actionTypes.HANDLE_TOP_LEVEL_CATEGORIES_ERROR,\n payload\n});\n\nexport default {\n fetchCategoryList,\n fetchTopLevelCategories\n};\n","import { touchWebClient } from 'tradera-utils/http';\n\nexport const getCategoryList = () =>\n touchWebClient.get('categories', { cancelTokenId: 'getCategoryList' });\n\nexport const getTopLevelCategories = () =>\n touchWebClient.get('top-level-categories', {\n cancelTokenId: 'getTopLevelCategories'\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 cookieUtil from 'tradera-utils/cookie';\nimport { SHIPPING_COUNTRY } from 'tradera-constants/cookies';\nimport { fetchAvailableShippingCountries } from './api';\nimport {\n selectIsLoadingAvailableShippingCountries,\n selectHasLoadedAvailableShippingCountries\n} from './selectors';\n\nimport {\n setShippingCountry,\n setAvailableShippingCountries,\n beginLoadingAvailableShippingOptions,\n setDefaultShippingCountry\n} from './reducer';\nimport { setPreferredCurrency } from 'tradera-state/multi-currency';\nimport { setPreferredLanguage } from 'tradera-state/language/actions';\nimport { Analytics } from 'packages';\nimport { getLanguageFromCountryCode } from 'tradera-utils/languagecode';\n\nconst yearInMilliseconds = 1000 * 60 * 60 * 24 * 365;\n\nexport const updateShippingRegion = countryCodeIso2 => dispatch => {\n const expireDate = new Date(new Date().getTime() + yearInMilliseconds);\n cookieUtil.createCookie(SHIPPING_COUNTRY, countryCodeIso2, expireDate);\n\n dispatch(setShippingCountry({ countryCodeIso2 }));\n};\n\nexport const removeShippingCountryCookieIfSwedish = geolocation => dispatch => {\n if (\n geolocation.isoCode === 'SE' &&\n cookieUtil.hasCookie(SHIPPING_COUNTRY)\n ) {\n cookieUtil.eraseCookie(SHIPPING_COUNTRY);\n dispatch(setDefaultShippingCountry());\n }\n};\n\nexport const getAvailableShippingCountries = () => async (\n dispatch,\n getState\n) => {\n if (\n selectIsLoadingAvailableShippingCountries(getState()) ||\n selectHasLoadedAvailableShippingCountries(getState())\n ) {\n return;\n }\n\n dispatch(beginLoadingAvailableShippingOptions());\n const { shippingCountries } = await fetchAvailableShippingCountries();\n dispatch(setAvailableShippingCountries({ shippingCountries }));\n\n if (cookieUtil.hasCookie(SHIPPING_COUNTRY)) {\n dispatch(\n setShippingCountry({\n countryCodeIso2: cookieUtil.readCookie(SHIPPING_COUNTRY)\n })\n );\n }\n};\n\nexport const onLocalizationShippingRegionSelected = ({\n countryCodeIso2,\n currencyCode,\n toLocalizedUrl\n}) => dispatch => {\n const languageCodeIso2 = getLanguageFromCountryCode(countryCodeIso2);\n\n Analytics.trackEvent({\n category: 'Top navigation',\n action: 'Localization menu tooltip',\n label: `Set localization region - ${countryCodeIso2}`\n });\n\n dispatch(getAvailableShippingCountries()); //make sure we have loaded countries\n dispatch(updateShippingRegion(countryCodeIso2));\n dispatch(setPreferredCurrency(currencyCode));\n dispatch(setPreferredLanguage(languageCodeIso2, toLocalizedUrl));\n};\n","import axios from 'axios';\n\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport { finalizeResponse, handleError } from 'tradera-utils/api';\n\nexport const fetchAvailableShippingCountries = () =>\n axios\n .get(ENDPOINTS.AVAILABLE_SHIPPING_COUNTRIES)\n .then(finalizeResponse())\n .then(({ data }) => ({\n shippingCountries: data.availableCountries.map(\n country => country.countryCodeIso2\n )\n }))\n .catch(handleError());\n","import BPOINT from '@tradera/blueprint/theme/scss/export/breakpoints.module.scss';\n\n// Explicit list of breakpoints for code completion\nconst BREAKPOINTS = {\n XS: 'XS',\n SM: 'SM',\n MD: 'MD',\n LG: 'LG',\n XL: 'XL'\n};\n\n/**\n * @type {Object.}\n */\nconst BREAKPOINT_SIZES = {};\nObject.entries(BPOINT)\n .filter(([bp]) => BREAKPOINTS[bp])\n .map(([name, size], index, entries) => {\n const min = parseInt(size, 10);\n // Look ahead to next breakpoint entry and get its size minus one as current breakpoint's max size\n const max =\n index + 1 in entries\n ? parseInt(entries[index + 1][1], 10) - 1\n : 99999;\n return {\n min,\n max,\n name\n };\n })\n .forEach(breakpoint => {\n BREAKPOINT_SIZES[breakpoint.name] = breakpoint;\n });\n\nexport { BREAKPOINTS, BREAKPOINT_SIZES };\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { useUrlLocalizer, useTranslator } from 'tradera-lang/translate';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { ViewItemCarouselZoom } from 'tradera-components/carousels/view-item-carousel';\nimport { LocalLoader } from 'tradera-components/loader';\nimport HeartIcon from '@tradera/blueprint/theme/icons2/heart.svg?jsx';\nimport HeartFillIcon from '@tradera/blueprint/theme/icons2/heart-fill.svg?jsx';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\n\nimport uiActions from 'tradera-state/ui/actions';\nimport itemActions from 'tradera-state/items/actions';\n\nimport './quick-view-modal.scss';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\n\nconst QuickView = ({\n dispatch,\n itemIds,\n open,\n isLoggedIn,\n item,\n currentItem,\n loading,\n existsInWishList\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const { t } = useTranslator();\n\n if (open !== 'open') {\n return null;\n }\n\n const { imageFormats, shortDescription, url } = item;\n\n const handleModalDismiss = () => {\n dispatch(uiActions.closeQuickView());\n };\n\n const handleWishlistClick = () => {\n if (!isLoggedIn) {\n handleModalDismiss();\n }\n dispatch(itemActions.wishlist(item.itemId));\n };\n\n const handlePreviousClick = () => {\n const prevItem = itemIds[itemIds.indexOf(currentItem) - 1];\n dispatch(\n uiActions.openQuickView({\n itemId: prevItem,\n openedFrom: 'Quick View'\n })\n );\n };\n\n const handleNextClick = () => {\n const nextItem = itemIds[itemIds.indexOf(currentItem) + 1];\n dispatch(\n uiActions.openQuickView({\n itemId: nextItem,\n openedFrom: 'Quick View'\n })\n );\n };\n\n const disableNext = itemIds.indexOf(currentItem) === itemIds.length - 1;\n const disablePrev = itemIds.indexOf(currentItem) < 1;\n\n return (\n \n {\n if (e.keyCode === 39 && !disableNext) {\n handleNextClick();\n } else if (e.keyCode === 37 && !disablePrev) {\n handlePreviousClick();\n }\n }}>\n \n handleModalDismiss()}>\n \n \n \n
\n {!imageFormats ? (\n
\n \n
\n ) : (\n \n )}\n
\n
\n
\n

\n {shortDescription}\n

\n
\n
\n
\n
\n handleWishlistClick()}>\n {existsInWishList ? (\n \n ) : (\n \n )}\n {existsInWishList\n ? t('mytQuickView_savedInWishlist')\n : t('mytQuickView_saveInWishlist')}\n \n {\n GtmService.trackAction(\n 'Quick View',\n 'Navigation',\n 'View full listing'\n );\n }}>\n {t('mytQuickView_viewFullListing')}\n \n
\n
\n \n {loading && (\n \n \n \n )}\n \n );\n};\n\nQuickView.propTypes = {\n itemIds: PropTypes.array.isRequired,\n open: PropTypes.string,\n item: PropTypes.object,\n currentItem: PropTypes.number,\n dispatch: PropTypes.func,\n loading: PropTypes.bool,\n existsInWishList: PropTypes.bool\n};\n\nconst mapStateToProps = state => ({\n itemIds: state.ui.quickView.itemIds,\n open: state.ui.quickView.open,\n isLoggedIn: state.member.isLoggedIn,\n item: state.items.cache[state.ui.quickView.currentItem] || null,\n currentItem: state.ui.quickView.currentItem,\n loading: state.ui.quickView.loading,\n existsInWishList: state.items.wishListItemIds.has(\n state.ui.quickView.currentItem\n )\n});\n\nexport default connect(mapStateToProps)(QuickView);\n","export const generateItemCardPlaceholders = itemCount =>\n [...new Array(itemCount)].map((_, index) => ({\n itemId: index,\n shortDescription: ''\n }));\n","import React from 'react';\nimport { useTranslator, useCurrentLanguage } from 'tradera-lang/translate';\nimport { formatPrice } from '@tradera/blueprint/utils';\nimport Flag from 'tradera-components/flag/flag';\nimport MultiCurrency from 'tradera-components/multi-currency/multi-currency';\nimport { isSwedenCountryCodeOrUndefined } from 'tradera-utils/countrycode';\n\nconst ShippingDisplay = ({\n buyerCountryCode,\n shippingOptions,\n shippingPriceRange,\n preferredCurrency,\n isSellpyCheckout\n}) => {\n const { t } = useTranslator();\n const { language } = useCurrentLanguage();\n\n // TODO: Remove the \"x kr\" or \"x SEK\" in backend instead\n const removeCostInShippingOption = option =>\n option.replace(/\\s*\\d+\\s*kr$/, '').replace(/\\s*\\d+\\s*SEK$/, '');\n\n const isFromAndToCountryDifferent = shippingOptions.some(\n ({ fromCountryCodeIso2, toCountryCodeIso2 }) =>\n fromCountryCodeIso2 !== toCountryCodeIso2\n );\n let displayOptions = shippingOptions;\n if (buyerCountryCode !== undefined && isFromAndToCountryDifferent) {\n displayOptions = [\n ...displayOptions.filter(\n option => option.toCountryCodeIso2 === buyerCountryCode\n )\n ];\n }\n\n const shippingOptionsPart = (\n <>\n {!shippingPriceRange &&\n displayOptions.map((shippingOption, index) => {\n const description = removeCostInShippingOption(\n shippingOption.displayText\n );\n const shouldShowFromCountry =\n !isSwedenCountryCodeOrUndefined(\n shippingOption.fromCountryCodeIso2\n ) &&\n shippingOption.fromCountryCodeIso2 !==\n shippingOption.toCountryCodeIso2;\n return (\n \n {shouldShowFromCountry && (\n \n )}\n
\n {description}\n
\n
\n
\n {formatPrice(\n shippingOption.cost,\n language,\n preferredCurrency\n )}\n
\n \n
\n \n );\n })}\n {shippingPriceRange && (\n
\n
\n {t('checkout_shipping_priceRange', {\n min: shippingPriceRange.minPrice,\n max: shippingPriceRange.maxPrice\n })}\n
\n {isSellpyCheckout && (\n
\n {t('cart_sellpyShippingRange')}\n
\n )}\n
\n )}\n \n );\n\n return (\n
\n
\n \n {shippingPriceRange\n ? t('checkout_bin_shippingPriceRange')\n : t('checkout_bin_shippingOptions')}\n :\n \n
\n
\n {shippingOptionsPart}\n
\n
\n
{shippingOptionsPart}
\n
\n
\n );\n};\n\nexport default ShippingDisplay;\n","import ENDPOINTS from 'tradera-constants/endpoints';\nimport qs from 'qs';\n\nconst specialSearchTerms = {\n stammisglaset: '/campaign/stammisglaset'\n};\n\n/**\n *\n * @param {string} searchTerm search term\n * @param {object} queryParams query paramters of the current page\n * @param {int} currentCategoryId id of the current selected category\n * @param {array} allCategories array with all the categories\n */\nexport const getNewSearchUrl = (\n searchTerm,\n queryParams,\n currentCategoryId,\n allCategories\n) => {\n // Search with search term\n if (searchTerm) {\n // ----------------------------------\n // Special case redirects\n const specialTermUrl = specialSearchTerms[searchTerm.toLowerCase()];\n if (specialTermUrl) {\n return specialTermUrl;\n }\n\n // Filter out params not to pass on in query reformulation\n const {\n q,\n categoryId,\n paging,\n spage,\n ...filteredQueryParams\n } = queryParams;\n\n // Query reformulation = First \"Nike\" and then \"Nike air\" or the other way around\n const isQueryReformulation =\n searchTerm.includes(q) || (q && q.includes(searchTerm));\n\n return (\n ENDPOINTS.SEARCH +\n qs.stringify(\n {\n // Keep\n ...(isQueryReformulation ? filteredQueryParams : {}),\n q: searchTerm,\n categoryId: currentCategoryId\n ? currentCategoryId\n : undefined\n },\n {\n addQueryPrefix: true\n }\n )\n );\n }\n\n if (currentCategoryId > 0) {\n // Search without search term, just category\n const currentCategory = allCategories.find(\n category => category.id === currentCategoryId\n );\n\n if (currentCategory) {\n return currentCategory.href;\n }\n return;\n }\n // Fall back to category page for empty search\n return '/kategorier';\n};\n\n/**\n *\n * @param {function} t translator function\n * @param {array} allCategories all categories\n * @param {array} categoryPath path to the current category. it's in the reverse order\n * @param {int} currentCategoryId id of the current category\n */\nexport const getCategoryDropdownConfig = (\n t,\n allCategories,\n categoryPath,\n currentCategoryId\n) => {\n const allCategoriesOption = {\n id: 0,\n name: t('searchSelect_allCategories'),\n isTopLevel: false,\n selected: false\n };\n\n const optionDivider = {\n id: 0,\n isTopLevel: false,\n name: '------------------',\n selected: false\n };\n\n /**\n * Strip \"all categories\" (may be multiple) from categorypath\n * Add rest of categorypath\n * Add \"all categories\"\n * Add all level1 categories\n */\n const optionsList = [\n ...categoryPath.filter(category => category.id !== 0),\n allCategoriesOption,\n optionDivider,\n ...allCategories\n ];\n\n /**\n * Get selected category from list, fallback to \"all categories\"\n */\n const selectedOption =\n optionsList.find(category => category.id === currentCategoryId) ||\n allCategoriesOption;\n\n return {\n selectedOption,\n optionsList\n };\n};\n\nexport const getNextIndex = (incrementBy, currentIndex, totalElements) => {\n if (currentIndex === null) {\n currentIndex = incrementBy > 0 ? -1 : 0;\n }\n\n let newIndex = currentIndex + incrementBy;\n if (newIndex < 0) {\n return totalElements - 1;\n }\n if (newIndex >= totalElements) {\n return 0;\n }\n return newIndex;\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport DropdownIcon from '@tradera/blueprint/theme/icons2/dropdown.svg?jsx';\n\nconst SearchCategory = ({\n handleCategoryChange,\n selectOptions,\n selectedCategoryId,\n chosenCategory\n}) => {\n if (!selectOptions) {\n return null;\n }\n\n const isDefaultSelected = selectedCategoryId === 0;\n\n return (\n \n \n {chosenCategory.name}\n \n \n \n \n \n {selectOptions.map((option, index) => {\n return (\n option && (\n \n )\n );\n })}\n \n \n );\n};\n\nSearchCategory.propTypes = {\n handleCategoryChange: PropTypes.func,\n selectOptions: PropTypes.array,\n selectedCategoryId: PropTypes.number,\n chosenCategory: PropTypes.object\n};\n\nexport default SearchCategory;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect, useDispatch } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport PAGE_TYPES from 'tradera-constants/page-types';\nimport discoverActions from 'tradera-state/discover/actions';\nimport { debounce } from 'packages';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport { getSuggestions, addRecentSearch } from './helpers/suggestions-api';\nimport {\n trackSearch,\n trackSearchCategoryChanges,\n trackResetButton\n} from './helpers/search.analytics';\nimport {\n getNewSearchUrl,\n getCategoryDropdownConfig,\n getNextIndex\n} from './helpers/helper';\n\nimport SearchCategory from 'components/search-category/search-category';\nimport SearchInput from './components/search-input';\nimport SearchSuggestion from './components/search-suggestion';\n\nexport const KEYCODE = {\n ENTER: 13,\n ESC: 27,\n UP: 38,\n DOWN: 40\n};\n\nexport const MIN_CHARS_FOR_SUGGESTIONS = 2;\n\nexport const Search = ({\n inSPA,\n allCategories = [],\n categoryPath = [],\n inputClassName = '',\n placeholderText = null,\n discoverCurrentCategoryId = 0,\n discoverSearchTerm = '',\n queryParams,\n history\n}) => {\n const dispatch = useDispatch();\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const searchSuggestionsElementRef = React.createRef();\n const searchInputRef = React.createRef();\n\n const [currentCategoryId, setCurrentCategoryId] = useState(\n discoverCurrentCategoryId\n );\n const [isSearchInputFocused, setIsSearchInputFocused] = useState(false);\n const [searchTerm, setSearchTerm] = useState(discoverSearchTerm || '');\n const [suggestions, setSuggestions] = useState([]);\n const [selectedSuggestionIndex, setSelectedSuggestionIndex] = useState(\n null\n );\n\n useEffect(() => {\n setCurrentCategoryId(discoverCurrentCategoryId);\n }, [discoverCurrentCategoryId]);\n\n useEffect(() => {\n setSearchTerm(discoverSearchTerm);\n }, [discoverSearchTerm]);\n\n const loadSuggestionsDebounce = debounce(async (searchTerm, callback) => {\n const suggestions = await getSuggestionsWrapper(searchTerm);\n if (suggestions) {\n callback(suggestions);\n }\n }, 200);\n\n /**\n * this function wraps the getSuggestions and makes sure the paramters to the getSuggestions are consistent\n * @param {string} searchTerm\n */\n const getSuggestionsWrapper = async searchTerm => {\n const enableSuggestionsFromBackend =\n searchTerm.length >= MIN_CHARS_FOR_SUGGESTIONS;\n const suggestions = await getSuggestions({\n searchTerm,\n limitPrevious: enableSuggestionsFromBackend ? 3 : 7,\n enablePrevious: true,\n enableSuggestions: enableSuggestionsFromBackend\n });\n return suggestions;\n };\n\n const handleUpDownArrowKeys = keyCode => {\n let incrementBy = null;\n if (keyCode === KEYCODE.DOWN) {\n incrementBy = 1;\n } else if (keyCode === KEYCODE.UP) {\n incrementBy = -1;\n }\n if (incrementBy !== null) {\n const newIndex = getNextIndex(\n incrementBy,\n selectedSuggestionIndex,\n suggestions.length\n );\n setSelectedSuggestionIndex(newIndex);\n }\n };\n\n const handleUserKeyUp = evt => {\n switch (evt.which) {\n case KEYCODE.ESC:\n evt.target.blur();\n return;\n\n case KEYCODE.ENTER:\n // eslint-disable-next-line no-case-declarations\n const suggestions = searchSuggestionsElementRef.current?.querySelectorAll(\n '[data-suggestion]'\n );\n\n if (suggestions && suggestions[selectedSuggestionIndex]) {\n evt.preventDefault();\n suggestions[selectedSuggestionIndex].click();\n }\n return;\n\n case KEYCODE.DOWN:\n case KEYCODE.UP:\n handleUpDownArrowKeys(evt.which);\n return;\n }\n };\n\n const loadSearchSuggestions = async newSearchTerm => {\n setSelectedSuggestionIndex(null);\n setSearchTerm(newSearchTerm);\n setIsSearchInputFocused(true);\n\n if (typeof newSearchTerm !== 'string') return null;\n\n if (newSearchTerm.length >= MIN_CHARS_FOR_SUGGESTIONS) {\n loadSuggestionsDebounce(newSearchTerm, suggestions => {\n setSuggestions(suggestions);\n });\n return;\n }\n const suggestions = await getSuggestionsWrapper(newSearchTerm);\n\n setSuggestions(suggestions);\n };\n\n const handleUserInputChange = evt =>\n loadSearchSuggestions(evt.target.value);\n\n const handleBlur = () => setIsSearchInputFocused(false);\n\n const handleFocus = () => {\n loadSearchSuggestions(searchTerm);\n };\n\n const handlePreviousSearchRemoved = () => {\n loadSearchSuggestions(searchTerm);\n };\n\n const handleCategoryChange = event => {\n const currentCategoryId = parseInt(event.target.value, 10);\n setCurrentCategoryId(currentCategoryId);\n dispatch(discoverActions.setCurrentCategoryId(currentCategoryId));\n trackSearchCategoryChanges(event);\n };\n\n const changeWindowLocation = newQuery => {\n // Trim search term to avoid empty searches\n const trimmedSearchTerm = newQuery.trim();\n let newSearchUrl = getNewSearchUrl(\n trimmedSearchTerm,\n queryParams,\n currentCategoryId,\n [...allCategories, ...categoryPath]\n );\n\n // Search with search term\n if (trimmedSearchTerm) {\n addRecentSearch(trimmedSearchTerm);\n trackSearch(trimmedSearchTerm);\n }\n if (inSPA) {\n searchInputRef.current.blur();\n history.push(toLocalizedUrl(newSearchUrl));\n } else {\n window.location.href = toLocalizedUrl(newSearchUrl);\n }\n setIsSearchInputFocused(false);\n };\n\n const handleFormSubmit = event => {\n event.preventDefault();\n changeWindowLocation(searchTerm);\n };\n\n const clearSearchInputAndGoToBrowse = event => {\n event.preventDefault();\n trackResetButton();\n setSearchTerm('');\n changeWindowLocation('');\n };\n\n const handleSuggestionsChangingSearchTerm = newSearchTerm => {\n // fixes case when user is on the same url as the current selected serach term. To reproduce:\n // 1. search tröja\n // 2. change the search term in the search box to \"tröj\" without hitting enter\n // 3. now you get previous searches \"tröja\", click on it\n // 4. without next line nothing will happen\n if (newSearchTerm !== searchTerm) {\n setSearchTerm(newSearchTerm);\n }\n setIsSearchInputFocused(false);\n searchInputRef.current.blur();\n };\n\n const {\n selectedOption: selectedCategory,\n optionsList: categorySelectOptions\n } = getCategoryDropdownConfig(\n t,\n allCategories,\n categoryPath,\n currentCategoryId\n );\n\n return (\n \n }\n inputClassName={inputClassName}\n placeholderText={placeholderText}\n onBlur={handleBlur}\n onClearSearchInput={clearSearchInputAndGoToBrowse}\n onFocus={handleFocus}\n onFormSubmit={handleFormSubmit}\n onUserInputChange={handleUserInputChange}\n onUserKeyUp={handleUserKeyUp}\n searchInputRef={searchInputRef}\n searchTerm={searchTerm}\n selectedCategory={selectedCategory}\n suggestionsElement={\n \n }\n />\n );\n};\n\nconst mapStateToProps = state => {\n const pageType = state.page.type;\n let categoryPath = undefined;\n let discoverCurrentCategoryId = 0;\n let discoverSearchTerm = '';\n\n // Reflect search state on search & category pages\n if (\n [\n PAGE_TYPES.SEARCH_RESULT_PAGE,\n PAGE_TYPES.CATEGORY_RESULT_PAGE\n ].includes(pageType)\n ) {\n categoryPath = state.discover.categoryPath;\n discoverCurrentCategoryId = state.discover.currentCategoryId;\n discoverSearchTerm = state.discover.queryParams?.q || '';\n }\n\n return {\n allCategories: state.page.allCategories,\n categories: state.categories,\n categoryPath,\n discoverCurrentCategoryId,\n queryParams: state.discover.queryParams,\n discoverSearchTerm\n };\n};\n\nSearch.propTypes = {\n inSPA: PropTypes.bool.isRequired,\n allCategories: PropTypes.array,\n categoryPath: PropTypes.array,\n placeholderText: PropTypes.string,\n discoverCurrentCategoryId: PropTypes.number,\n queryParams: PropTypes.object\n};\n\nconst ConnectedSearch = connect(mapStateToProps)(Search);\nexport const SearchInSpa = withRouter(ConnectedSearch);\nexport const SearchOutsideSpa = ConnectedSearch;\n","import { Analytics } from 'packages';\n\nexport const trackSearchCategoryChanges = evt => {\n const selectBox = evt.target;\n const selectedOption =\n selectBox &&\n selectBox.selectedOptions &&\n selectBox.selectedOptions.length > 0 &&\n selectBox.selectedOptions[0];\n if (!selectedOption) {\n return;\n }\n Analytics.trackEvent({\n category: 'User search',\n action: 'Top search box Category dropdown',\n label: selectedOption.text\n });\n};\n\nexport const trackSearch = label => {\n Analytics.trackEvent({\n category: 'User search',\n action: 'Search Query',\n label: label\n });\n};\n\nexport const trackResetButton = () => {\n Analytics.trackEvent({\n category: 'User search',\n action: ' Top search box Reset'\n });\n};\n","export const translateBuyerRegionText = (t, allowedBuyerRegion) => {\n switch (allowedBuyerRegion) {\n case 'Sweden':\n return t('vip_buyer_region_text_sweden');\n case 'Nordic':\n return t('vip_buyer_region_text_nordic');\n case 'EU':\n return t('vip_buyer_region_text_eu');\n case 'International':\n return t('vip_buyer_region_text_international');\n default:\n return allowedBuyerRegion;\n }\n};\n","import { createSlice } from '@reduxjs/toolkit';\nimport getInitialState, {\n MODAL_STATUS\n} from 'tradera-state/views/checkout/initial-state';\n\nconst checkoutSlice = createSlice({\n name: 'checkout',\n initialState: getInitialState(),\n reducers: {\n receiveCheckout: (state, { payload }) => {\n const {\n buyerMember,\n purchaseOrder,\n sellerMember,\n shippingInfo,\n combinedShippingInfo,\n ongoingPaymentAttempt,\n shippingFeeRule\n } = payload;\n state.buyerMember = { ...buyerMember };\n state.sellerMember = { ...sellerMember };\n state.items = purchaseOrder.items;\n state.isFetching = false;\n state.hasError = false;\n state.purchaseOrderId = purchaseOrder.purchaseOrderId;\n state.orderNumber = purchaseOrder.orderNumber;\n state.isPaid = purchaseOrder.isPaid;\n state.isMarkedAsPaidByBuyer = purchaseOrder.isMarkedAsPaidByBuyer;\n state.ongoingPaymentAttempt = ongoingPaymentAttempt;\n state.shippingInfo.shippingOptions = shippingInfo.shippingOptions;\n state.shippingInfo.shippingPriceRange =\n shippingInfo.shippingPriceRange;\n state.shippingInfo.shippingDiscount = shippingInfo.shippingDiscount;\n state.combinedShippingInfo = combinedShippingInfo;\n state.shippingFeeRule = shippingFeeRule;\n state.purchaseOrder = {\n isOpen: purchaseOrder.isOpen,\n created: purchaseOrder.created\n };\n },\n receivePaymentOptions: (state, { payload }) => {\n const { paymentOptions } = payload;\n state.payment.paymentOptions = paymentOptions;\n state.payment.isFetching = false;\n },\n setFetching: (state, { payload }) => {\n state.isFetching = payload;\n state.hasError = false;\n },\n openModal: (state, { payload }) => {\n const { open, status, paymentAttemptId } = payload;\n state.modal = {\n open,\n status,\n paymentAttemptId\n };\n },\n cancelPayment: state => {\n state.checkoutSummary.hasError = false;\n state.checkoutSummary.isFetching = false;\n state.showDisableOverlay = false;\n },\n closeModal: state => {\n state.modal = {\n open: '',\n status: MODAL_STATUS.START\n };\n },\n setHasError: (state, { payload }) => {\n state.hasError = payload;\n state.isFetching = false;\n state.showDisableOverlay = 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 state.showDisableOverlay = false;\n },\n setPaymentMethodData: (state, { payload }) => {\n state.payment.paymentMethodData = payload;\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 state.showDisableOverlay = false;\n state.modal.status = MODAL_STATUS.ERROR;\n },\n setSelectedPayment: (state, { payload }) => {\n state.payment.selectedPayment = payload;\n state.payment.paymentMethodData = null;\n state.checkoutSummary.hasError = false;\n },\n setSelectedShipping: (state, { payload }) => {\n state.selectedShipping = payload;\n },\n setShowDisableOverlay: (state, { payload }) => {\n state.showDisableOverlay = payload;\n },\n setOngoingPaymentAttempt: (state, { payload }) => {\n state.ongoingPaymentAttempt = payload;\n },\n setCombinedShippingInfo: (state, { payload }) => {\n state.combinedShippingInfo = {\n ...state.combinedShippingInfo,\n ...payload\n };\n }\n }\n});\n\nexport const {\n openModal,\n closeModal,\n cancelPayment,\n receiveCheckout,\n receivePaymentOptions,\n setFetching,\n setHasError,\n setCheckoutSummaryFetching,\n setCheckoutSummaryHasError,\n setPaymentFetching,\n setPaymentHasError,\n setPaymentMethodData,\n setSelectedPayment,\n setSelectedShipping,\n setShowDisableOverlay,\n setOngoingPaymentAttempt,\n setCombinedShippingInfo\n} = checkoutSlice.actions;\n\nexport default checkoutSlice.reducer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst MenuItemSeparator = ({ label, className, style }) => (\n \n {label}\n \n);\n\nMenuItemSeparator.defaultProps = {\n className: '',\n style: {}\n};\n\nMenuItemSeparator.propTypes = {\n label: PropTypes.node,\n className: PropTypes.string,\n style: PropTypes.object\n};\n\nexport default MenuItemSeparator;\n","import { useLayoutEffect, useState } from 'react';\nimport { isMobile } from 'tradera-utils/breakpoints';\n\nexport function useBreakpointMobile() {\n const [active, setActive] = useState(isMobile(window.innerWidth));\n useLayoutEffect(() => {\n const handleResize = event =>\n setActive(isMobile(event.target.innerWidth));\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n });\n return active;\n}\n","import { useEffect } from 'react';\n\nexport const useOnMount = fn => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(fn, []);\n};\n","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { useTranslator } from 'tradera-lang/translate';\nimport PAGE_TYPES from 'tradera-constants/page-types';\nimport pageActions from 'tradera-state/page/actions';\n\n/**\n * Set page metadata, either with a pagemeta id or a page metadata object\n *\n * @param {string} [type]\n * @param {object} [customPageMetaData]\n */\nconst usePageMeta = (\n type = PAGE_TYPES.DEFAULT,\n customPageMetaData,\n setMetaTitle = true\n) => {\n const { t } = useTranslator();\n const dispatch = useDispatch();\n useEffect(() => {\n const pageMetaData = {\n metaRobots: null,\n metaTitle: setMetaTitle ? t(`pageMeta_title_${type}`) : '',\n type,\n ...(customPageMetaData || { canonicalLink: location.pathname })\n };\n dispatch(pageActions.setPageMeta(pageMetaData));\n }, [customPageMetaData, dispatch, setMetaTitle, t, type]);\n};\n\nexport { usePageMeta, PAGE_TYPES };\n","import { useEffect } from 'react';\n\nconst useScrollToTopOnMount = () => {\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n return null;\n};\n\nexport { useScrollToTopOnMount };\n","export const PAGE_NAMES = {\n Overview: 'MyTradera',\n BuyerActiveItems: 'MyTradera_ActiveBids',\n BuyerItemsLost: 'MyTradera_LostBids',\n MyTraderaLeaveFeedback: 'MyTradera_LeaveFeedback',\n SellerActive: 'MyTradera_ActiveItems',\n SellerSold: 'MyTradera_SoldItems',\n SellerUnsold: 'MyTradera_UnsoldItems',\n BuyerPurchases: 'MyTradera_Purchases',\n Profile: 'MyTradera_Profile',\n Settings: 'MyTradera_Settings',\n SettingsAccount: 'MyTradera_SettingsAccount',\n SettingsEmail: 'MyTradera_SettingsEmail',\n SettingsNotifications: 'MyTradera_SettingsNotifications',\n SettingsSeller: 'MyTradera_SettingsSeller',\n SettingsSecurity: 'MyTradera_SettingsSecurity',\n Payouts: 'MyTradera_Payouts'\n};\n","export const getMessagingUrl = toLocalizedUrl =>\n toLocalizedUrl(`${window.origin}/messagingiframe`);\n","import GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { BID_VALIDATION_RESULTS } from '../api/vip-api-constants';\n\nexport const CATEGORIES = {\n VIEW_ITEM: 'View item',\n BIDDING: 'Bidding',\n CART: 'Cart',\n CHECKOUT_BIN: 'Checkout bin'\n};\n\nconst trackAction = (category, action, label) => {\n GtmService.trackAction(category, action, label);\n};\n\nexport const trackBiddingConfirmBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Bid button', 'Bekräfta bud');\n\nexport const trackBiddingShowEnterBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Show', 'EnterBid');\n\nexport const trackBiddingShowConfirmBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Show', 'ConfirmBid');\n\nexport const trackBiddingShowChangeMaxBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Show', 'ChangeMaxBid');\n\nexport const trackBiddingQuickBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Bid button', 'Lägg snabbud');\n\nexport const trackBiddingNewMaxBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Bid button', 'Lägg maxbud');\n\nexport const trackNewBid = () =>\n trackAction(CATEGORIES.VIEW_ITEM, 'Bid button', 'Lägg bud');\n\nexport const trackNewMaxBid = () =>\n trackAction(CATEGORIES.VIEW_ITEM, 'Bid button', 'Ändra maxbud');\n\nexport const trackOpenCheckoutBin = () =>\n trackAction(CATEGORIES.CHECKOUT_BIN, 'Show', 'Open BIN modal');\n\nexport const trackConfirmBin = () =>\n trackAction(\n CATEGORIES.CHECKOUT_BIN,\n 'Bin navigation',\n 'Confirm BIN purchase'\n );\n\nexport const trackPayBin = () =>\n trackAction(CATEGORIES.CHECKOUT_BIN, 'Bin navigation', 'Pay BIN');\n\nexport const trackKeepShopping = () =>\n trackAction(CATEGORIES.CHECKOUT_BIN, 'Bin navigation', 'Keep shopping');\n\nexport const trackBinError = () =>\n trackAction(CATEGORIES.CHECKOUT_BIN, 'Bin navigation', 'Error');\n\nexport const trackBidPlaced = (\n itemId,\n validationCode,\n isMaxBid,\n potentialBidChange,\n bidId,\n transactionTotal,\n weightedBidValue\n) => {\n switch (validationCode) {\n case BID_VALIDATION_RESULTS.LEADING_BIDDER:\n case BID_VALIDATION_RESULTS.HIGHER_BIDDER_EXISTS:\n // LeadingBidder.cshtml and HigherBidderExists renders _PlaceBidDataLayerTracking.cshtml\n // which has this tracking.\n GtmService.push({\n event: 'auctionEvent',\n transactionTotal: `${transactionTotal}`\n });\n GtmService.trackAction(\n CATEGORIES.BIDDING,\n 'PlacedBidPotential',\n isMaxBid ? 'MaxBid' : 'MinBid',\n `${potentialBidChange}`,\n true\n );\n GtmService.push({\n event: 'bidPlacedEvent',\n itemId: `${itemId}`,\n placedBidId: `${bidId}`,\n bidValue: `${transactionTotal}`,\n weightedBidValue: `${weightedBidValue}`\n });\n break;\n }\n GtmService.trackAction(\n CATEGORIES.BIDDING,\n 'Show',\n validationCode,\n '0',\n true\n );\n};\n\nexport const trackWishlist = (itemId, isAdding) => {\n const action = isAdding ? 'Added to wish list' : 'Removed from wish list';\n const label = isAdding\n ? `Added item: ${itemId}`\n : `Removed item: ${itemId}`;\n GtmService.trackAction('View item', action, label);\n};\n\nexport const trackAddToCart = (sellerMemberAlias, fixedPrice, redirectUrl) =>\n GtmService.trackLinkClickAndGotoUrl(\n CATEGORIES.CART,\n 'Add to cart',\n `Added ${sellerMemberAlias}`,\n redirectUrl,\n fixedPrice\n );\n\nconst defaultClientId = '2ab8b9da-aeb2-4790-86cf-bd1cd3c51453';\nexport const getGaTrackingData = () => {\n /* global gaData */\n return {\n clientId: window?.ga?.getAll?.()[0]?.get('clientId') || defaultClientId,\n trackingIds:\n typeof gaData !== 'undefined' ? [Object.keys(gaData)[1]] : []\n };\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n selectAvailableLanguages,\n selectPreferredLanguage\n} from 'tradera-state/language/selectors';\nimport { setPreferredLanguage } from 'tradera-state/language/actions';\nimport RadioGroup from 'tradera-components/form-controls/radio-group';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport { SURVEYS } from 'tradera-constants/surveys';\nimport { QualtiveButton } from 'tradera-components/feedback/qualtive-button';\nimport LanguageIcon from '@tradera/blueprint/theme/icons2/language.svg?jsx';\nimport { mapLanguageCodeToLanguageKey } from 'tradera-utils/map-language-code-to-language-key';\n\nexport const LanguageSelect = ({\n idPrefix,\n languages,\n preferredLanguage,\n setPreferredLanguage,\n onLanguageSelected\n}) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n onLanguageSelected = onLanguageSelected || (() => {});\n const onLanguageChanged = (code, e) => {\n setPreferredLanguage(code, toLocalizedUrl);\n onLanguageSelected(code, e);\n };\n return (\n
\n
\n \n {t('siteHeader_language')}\n \n Beta\n \n
\n
\n \n {t('siteHeader_languageDisclaimerShort')}\n \n {t('siteHeader_languageLeaveFeedBack')}\n \n \n
\n ({\n name: `${t(\n mapLanguageCodeToLanguageKey(languageCodeIso2)\n )} - ${languageCodeIso3}`,\n value: languageCodeIso2\n })\n )}\n checked={preferredLanguage.languageCodeIso2}\n handleOnChange={onLanguageChanged}\n className=\"form-check-sm mt-1\"\n radioButtonClassName=\"form-check-sm\"\n />\n
\n );\n};\n\nLanguageSelect.propTypes = {\n idPrefix: PropTypes.string.isRequired,\n languages: PropTypes.arrayOf(\n PropTypes.shape({\n languageCodeIso2: PropTypes.string,\n displayName: PropTypes.string,\n languageCodeIso3: PropTypes.string\n })\n ),\n preferredLanguage: PropTypes.object,\n onLanguageSelected: PropTypes.func\n};\n\nconst mapStateToProps = state => ({\n languages: selectAvailableLanguages(state),\n preferredLanguage: selectPreferredLanguage(state)\n});\n\nconst mapDispatchToProps = {\n setPreferredLanguage\n};\n\nexport const ConnectedLanguageSelect = connect(\n mapStateToProps,\n mapDispatchToProps\n)(LanguageSelect);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport RadioGroup from 'tradera-components/form-controls/radio-group';\nimport {\n selectCurrencies,\n selectPreferredCurrency,\n setPreferredCurrency\n} from 'tradera-state/multi-currency';\nimport { useTranslator } from 'tradera-lang/translate';\nimport CurrencyIcon from '@tradera/blueprint/theme/icons2/currency.svg?jsx';\n\nexport const CurrencySelect = ({\n idPrefix,\n currencies,\n preferredCurrency,\n onCurrencySelected\n}) => {\n const { t } = useTranslator();\n return (\n
\n
\n \n {t('siteHeader_currency')}\n
\n ({\n name: ` ${currency.shortName} - ${currency.longName}`,\n value: currency.code\n }))}\n checked={preferredCurrency.code}\n handleOnChange={onCurrencySelected}\n className=\"form-check-sm mt-1\"\n radioButtonClassName=\"form-check-sm\"\n />\n
\n );\n};\n\nCurrencySelect.propTypes = {\n idPrefix: PropTypes.string.isRequired,\n currencies: PropTypes.arrayOf(\n PropTypes.shape({\n code: PropTypes.string,\n shortName: PropTypes.string,\n longName: PropTypes.string\n })\n ),\n preferredCurrency: PropTypes.shape({\n code: PropTypes.string\n }),\n onCurrencySelected: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n currencies: selectCurrencies(state),\n preferredCurrency: selectPreferredCurrency(state)\n});\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n onCurrencySelected: (code, e) => {\n dispatch(setPreferredCurrency(code));\n ownProps.onCurrencySelected && ownProps.onCurrencySelected(code, e);\n }\n});\n\nexport const ConnectedCurrencySelect = connect(\n mapStateToProps,\n mapDispatchToProps\n)(CurrencySelect);\n","import React, { useState } from 'react';\nimport { FixedSizeList } from 'react-window';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport ArrowDownIcon from '@tradera/blueprint/theme/icons2/arrow-down.svg?jsx';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { mapCountryCodeToCountryKey } from 'tradera-utils/map-country-code-to-country-key';\nimport Flag from 'tradera-components/flag/flag';\n\nexport const ShippingCountrySelectDropdown = ({\n shippingCountries,\n selectedShippingCountry,\n onSelect\n}) => {\n const { t } = useTranslator();\n const [searchFocus, setSearchFocus] = useState(false);\n const [search, setSearch] = useState('');\n const [isSearchEnabled, setIsSearchEnabled] = useState(false);\n const includesSearch = v => v.toLowerCase().includes(search.toLowerCase());\n const filteredShippingCountries = shippingCountries\n .map(countryCodeIso2 => ({\n countryCodeIso2,\n name: t(mapCountryCodeToCountryKey(countryCodeIso2))\n }))\n .filter(\n ({ name, countryCodeIso2 }) =>\n includesSearch(name) || includesSearch(countryCodeIso2)\n );\n\n const listStyle = {\n height:\n filteredShippingCountries.length < 6\n ? `${(filteredShippingCountries.length || 1) * 35}px`\n : '165px'\n };\n\n const Row = ({ index, style }) => (\n \n \n onSelect(filteredShippingCountries[index].countryCodeIso2)\n }>\n \n {filteredShippingCountries[index].name}\n \n \n );\n\n return (\n <>\n \n \n {!isSearchEnabled ? (\n <>\n {\n setIsSearchEnabled(true);\n setSearchFocus(true);\n }}>\n {t(\n mapCountryCodeToCountryKey(\n selectedShippingCountry.countryCodeIso2\n )\n )}\n \n \n \n ) : (\n <>\n setSearch(e.target.value)}\n onFocus={() => setSearchFocus(true)}\n onBlur={() => {\n setTimeout(() => {\n setSearchFocus(false);\n }, 100);\n }}\n />\n {\n setSearch('');\n setSearchFocus(false);\n setIsSearchEnabled(false);\n }}>\n \n \n \n )}\n \n \n {isSearchEnabled && (search || searchFocus) && (\n e.preventDefault()}\n style={listStyle}>\n {filteredShippingCountries.length > 0 ? (\n \n {({ height, width }) => (\n \n {Row}\n \n )}\n \n ) : (\n
\n
\n {t('siteHeader_shippingCountryNoResults')}\n
\n
\n )}\n \n )}\n
\n \n );\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { useTranslator } from 'tradera-lang/translate';\nimport ShippingIcon from '@tradera/blueprint/theme/icons2/shipping.svg?jsx';\nimport {\n selectAvailableShippingCountries,\n selectShippingCountry,\n selectIsLoadingAvailableShippingCountries,\n selectHasLoadedAvailableShippingCountries\n} from 'tradera-state/shipping-region/selectors';\nimport {\n updateShippingRegion,\n getAvailableShippingCountries\n} from 'tradera-state/shipping-region/actions';\nimport Spinner from 'components/spinner/spinner';\nimport { ShippingCountrySelectDropdown } from './shipping-country-select-dropdown';\n\nexport const ShippingCountrySelect = ({\n getAvailableShippingCountries,\n shippingCountry,\n shippingCountries,\n updateShippingRegion,\n showShippingCountries,\n isLoadingAvailableShippingCountries,\n onShippingCountrySelected\n}) => {\n const { t } = useTranslator();\n getAvailableShippingCountries();\n\n return (\n
\n \n \n \n {t('siteHeader_shippingCountry')}\n \n \n
\n {isLoadingAvailableShippingCountries && (\n
\n \n
\n )}\n {showShippingCountries && (\n {\n onShippingCountrySelected(countryCodeIso2);\n updateShippingRegion(countryCodeIso2);\n }}\n />\n )}\n
\n
\n );\n};\n\nShippingCountrySelect.propTypes = {\n shippingCountries: PropTypes.arrayOf(PropTypes.string),\n shippingCountry: PropTypes.object,\n updateShippingRegion: PropTypes.func\n};\n\nconst mapStateToProps = state => ({\n shippingCountry: selectShippingCountry(state),\n shippingCountries: selectAvailableShippingCountries(state),\n isLoadingAvailableShippingCountries: selectIsLoadingAvailableShippingCountries(\n state\n ),\n showShippingCountries:\n selectHasLoadedAvailableShippingCountries(state) &&\n !selectIsLoadingAvailableShippingCountries(state)\n});\n\nconst mapDispatchToProps = {\n updateShippingRegion,\n getAvailableShippingCountries\n};\n\nexport const ConnectedShippingCountrySelect = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ShippingCountrySelect);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { ConnectedLanguageSelect } from './language-select';\nimport { ConnectedCurrencySelect } from './currency-select';\nimport { ConnectedShippingCountrySelect } from './shipping-country-select';\n\nexport const LocalizationMenu = ({\n idPrefix,\n onBlur,\n showCurrencySelection,\n showRegionSelection,\n className\n}) => (\n
\n {showRegionSelection && (\n <>\n \n
\n \n )}\n <>\n \n
\n \n {showCurrencySelection && (\n \n )}\n
\n);\n\nLocalizationMenu.propTypes = {\n idPrefix: PropTypes.string,\n showRegionSelection: PropTypes.bool.isRequired,\n showCurrencySelection: PropTypes.bool.isRequired,\n className: PropTypes.string\n};\n\nLocalizationMenu.defaultProps = {\n className: ''\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'tradera-components/atoms/button/button';\nimport { useQualtive } from 'tradera-hooks/use-qualtive';\n\nexport const QualtiveButton = ({ survey, icon, children, ...buttonProps }) => {\n const { isQualtiveEnabled, openQualtiveModal } = useQualtive();\n\n if (!isQualtiveEnabled) {\n return null;\n }\n\n return (\n \n );\n};\n\nQualtiveButton.propTypes = {\n survey: PropTypes.object.isRequired,\n children: PropTypes.node.isRequired,\n icon: PropTypes.node\n};\n","import initData from 'init-data';\n\nexport default {\n BUYER_ACTIVE_ITEMS_HIDE: initData.pageSpecificData?.BUYER_ACTIVE_ITEMS_HIDE,\n BUYER_ACTIVE_ITEMS_SHOW: initData.pageSpecificData?.BUYER_ACTIVE_ITEMS_SHOW,\n ACTIVE_ITEMS_RESTART_SUMMARY:\n initData.pageSpecificData?.ACTIVE_ITEMS_RESTART_SUMMARY,\n MARK_PAID: initData.pageSpecificData?.MARK_PAID,\n SELLER_MARK_PAID: initData.pageSpecificData?.SELLER_MARK_PAID,\n SELLER_UNMARK_PAID: initData.pageSpecificData?.SELLER_UNMARK_PAID,\n MARK_SHIPPED: initData.pageSpecificData?.MARK_SHIPPED,\n UNMARK_SHIPPED: initData.pageSpecificData?.UNMARK_SHIPPED,\n DELETE_SHIPMENT: initData.pageSpecificData?.DELETE_SHIPMENT,\n SELLER_HIDE: initData.pageSpecificData?.SELLER_HIDE,\n SELLER_SHOW: initData.pageSpecificData?.SELLER_SHOW,\n UNSOLDHIDE: initData.pageSpecificData?.UNSOLDHIDE,\n UNSOLDSHOW: initData.pageSpecificData?.UNSOLDSHOW,\n UNMARK_BOOKED: initData.pageSpecificData?.UNMARK_BOOKED,\n ACTIVE_END_ITEMS: initData.pageSpecificData?.ACTIVE_END_ITEMS,\n UNSOLD_RESTART_ITEMS: initData.pageSpecificData?.UNSOLD_RESTART_ITEMS,\n BUYER_MARK_PAID: initData.pageSpecificData?.BUYER_MARK_PAID,\n BUYER_UNMARK_PAID: initData.pageSpecificData?.BUYER_UNMARK_PAID,\n BUYER_HIDE: initData.pageSpecificData?.BUYER_HIDE,\n BUYER_SHOW: initData.pageSpecificData?.BUYER_SHOW,\n REQUEST_COMBINED_SHIPPING_PRICE:\n '/api/webapi/shopping/ordercheckout/requestcombinedshippingprice'\n};\n","import { getTimeSpanParts, TIME_SPAN_UNITS } from 'tradera-utils/date';\nimport { formatEndDate } from './format';\n\nconst DAY_IN_SECONDS = 24 * 60 * 60;\nconst HOUR_IN_SECONDS = 60 * 60;\nconst MINUTE_IN_SECONDS = 60;\n\nconst TIME_LEFT_DAY_LIMIT = 24 * 60 * 60;\nconst TIME_LEFT_HOUR_LIMIT = 60 * 60;\nconst TIME_LEFT_MINUTE_LIMIT = 60;\n\nexport const formatVipTimeLeft = (secondsLeft, t) => {\n const hoursOrEmpty = (hours, t) =>\n hours ? t('vip_hours', { count: hours }) : '';\n\n const minutesOrEmpty = (minutes, t) =>\n minutes ? t('vip_minutes', { count: minutes }) : '';\n\n if (secondsLeft < 1) {\n return '';\n }\n let formattedTimeLeft;\n if (secondsLeft > TIME_LEFT_DAY_LIMIT) {\n const { days, hours } = getTimeSpanParts(secondsLeft, {\n endUnit: TIME_SPAN_UNITS.HOURS\n });\n formattedTimeLeft = (\n t('vip_days', { count: days }) +\n ' ' +\n hoursOrEmpty(hours, t)\n ).trim();\n } else if (secondsLeft > TIME_LEFT_HOUR_LIMIT) {\n const { hours, minutes } = getTimeSpanParts(secondsLeft, {\n startUnit: TIME_SPAN_UNITS.HOURS,\n endUnit: TIME_SPAN_UNITS.MINUTES\n });\n formattedTimeLeft = (\n t('vip_hours', { count: hours }) +\n ' ' +\n minutesOrEmpty(minutes, t)\n ).trim();\n } else if (secondsLeft > TIME_LEFT_MINUTE_LIMIT) {\n const { minutes, seconds } = getTimeSpanParts(secondsLeft, {\n startUnit: TIME_SPAN_UNITS.MINUTES,\n endUnit: TIME_SPAN_UNITS.SECONDS\n });\n formattedTimeLeft =\n t('vip_minutes', { count: minutes }) +\n ' ' +\n t('vip_seconds', { count: seconds || 0 });\n } else {\n formattedTimeLeft = t('vip_seconds', { count: secondsLeft });\n }\n return formattedTimeLeft;\n};\n\nexport const formatItemCardTimeLeft = (secondsLeft, t, endDate, serverDate) => {\n if (Number.isInteger(secondsLeft)) {\n if (secondsLeft > DAY_IN_SECONDS) {\n return formatEndDate(endDate, t, serverDate);\n }\n\n if (secondsLeft > HOUR_IN_SECONDS) {\n const ifValueNotZeroShowLabel = (label, value) =>\n value > 0 ? ' ' + t(label, { count: value }) : '';\n const hours = Math.floor(secondsLeft / HOUR_IN_SECONDS);\n const minutes = Math.floor(\n Math.floor(secondsLeft % HOUR_IN_SECONDS) / MINUTE_IN_SECONDS\n );\n return (\n t('vip_hours', { count: hours }) +\n ifValueNotZeroShowLabel('vip_minutes', minutes)\n );\n }\n\n if (secondsLeft > 2 * MINUTE_IN_SECONDS) {\n const minutes = Math.floor(secondsLeft / MINUTE_IN_SECONDS);\n return t('vip_minutes', { count: minutes });\n }\n\n return t('vip_seconds', { count: secondsLeft });\n } else {\n return '';\n }\n};\n","import { toLocalizedRiotUrl } from './../utils/language';\nimport history from '../../app_react/history';\n\nconst goToStart = function() {\n history.push(toLocalizedRiotUrl('/selling/'));\n};\n\nconst goToSummary = function(draftId) {\n history.push(toLocalizedRiotUrl('/selling/summary/' + draftId));\n};\n\nconst goToPublished = function(itemId) {\n history.push(toLocalizedRiotUrl('/selling/published/' + itemId));\n};\n\nconst setDraftUrlWithoutReload = function(draftId) {\n window.history.replaceState(\n {},\n document.title,\n toLocalizedRiotUrl('/selling/draft/' + draftId)\n );\n};\n\nexport default {\n goToStart,\n goToSummary,\n goToPublished,\n setDraftUrlWithoutReload\n};\n","import {\n PREFERRED_LANGUAGE,\n REGION_PICKER_DISMISSED,\n SHIPPING_COUNTRY\n} from 'tradera-constants/cookies';\nimport cookieUtil from 'tradera-utils/cookie';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\n\nexport default initData => {\n const localizationRegionPickerEnabled =\n initData &&\n initData.featureSwitches &&\n initData.featureSwitches['localization-region-picker'];\n const regionPickerDismissed =\n GdprSettings.isFunctionalEnabled() &&\n cookieUtil.hasCookie(REGION_PICKER_DISMISSED);\n const preferredLanguage =\n GdprSettings.isFunctionalEnabled() &&\n cookieUtil.hasCookie(PREFERRED_LANGUAGE);\n const preferredShippingCountry = initData.isLoggedIn\n ? initData.memberCountryCodeIso2\n : GdprSettings.isFunctionalEnabled() &&\n cookieUtil.hasCookie(SHIPPING_COUNTRY) &&\n cookieUtil.readCookie(SHIPPING_COUNTRY);\n\n return {\n availableShippingCountries: [],\n isLoadingAvailableShippingCountries: false,\n hasLoadedAvailableShippingCountries: false,\n shippingCountry: { countryCodeIso2: preferredShippingCountry || 'SE' },\n localizationRegionPickerEnabled,\n regionPickerDismissed,\n preferredLanguage\n };\n};\n","import { useCallback, useEffect } from 'react';\n\nconst intervals = {};\n\n/**\n * Set up an periodical call to a component callback.\n * Intervals with the same period time are reused.\n * The interval can be cancelled with the returned function. It also cancels itself when no component uses it.\n *\n * @param {function} callback\n * @param {int} period - Milliseconds\n * @returns {function}\n */\nexport function useTicker(callback, period) {\n // Remove callback from interval and cancel interval if no callbacks remain\n const cleanup = useCallback(() => {\n if (intervals[period]) {\n intervals[period].callbacks = intervals[period].callbacks.filter(\n cb => cb !== callback\n );\n if (intervals[period].callbacks.length === 0) {\n clearInterval(intervals[period].intervalId);\n intervals[period] = undefined;\n }\n }\n }, [callback, period]);\n\n useEffect(() => {\n if (period <= 0) {\n return;\n }\n // Reuse existing interval\n if (intervals[period]) {\n intervals[period].callbacks.push(callback);\n // Add callback to new interval and save interval id for cancellation\n } else {\n const intervalId = setInterval(() => {\n intervals[period].callbacks.forEach(cb => cb());\n }, period);\n intervals[period] = { callbacks: [callback], intervalId };\n }\n\n // Return cancellation callback\n return cleanup;\n }, [callback, cleanup, period]);\n\n return cleanup;\n}\n","import { useCallback, useState, useEffect, useMemo, useRef } from 'react';\nimport { useTicker } from 'tradera-hooks/use-ticker';\nimport { getServerDate } from 'tradera-utils/server-date';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst COUNTDOWN_TICK_INTERVAL = 1000;\nconst COUNTDOWN_DEFAULT_WARNING_LIMIT = 12 * 60 * 60;\n\n/**\n *\n * @return {{timeLeftText: string, isCountdownEnabled: boolean, isCountdownDone: boolean, isTimeLeftBelowWarningLimit: boolean}}\n * isCountdownEnabled - True if client time is synched with server time.\n * isCountdownDone - True if there is no time left after counting down.\n * timeLeftText - The time left, formatted by the given formatter function.\n * isTimeLeftBelowWarningLimit - True if time is below the given warningLimit.\n */\nexport const useCountdown = (\n endDateStr,\n formatTimeLeft,\n warningLimit = COUNTDOWN_DEFAULT_WARNING_LIMIT\n) => {\n const { t } = useTranslator();\n const [isCountdownDone, setIsCountdownDone] = useState(false);\n const [timeLeftText, setTimeLeftText] = useState('');\n const [isCountdownEnabled, setIsCountdownEnabled] = useState(false);\n const [\n isTimeLeftBelowWarningLimit,\n setIsTimeLeftBelowWarningLimit\n ] = useState(false);\n const previousAdjustment = useRef(0);\n const endDate = useMemo(() => new Date(endDateStr), [endDateStr]);\n\n const updateTimeLeft = useCallback(\n async (isInitialCall = false) => {\n const serverDate = await getServerDate();\n if (!serverDate) {\n // In case server date is lost we need to\n // ensure everything looks OK.\n setIsCountdownEnabled(false);\n setIsCountdownDone(false);\n setTimeLeftText('');\n setIsTimeLeftBelowWarningLimit(false);\n return;\n }\n setIsCountdownEnabled(true);\n\n const secondsLeftWithFractions = (endDate - serverDate) / 1000;\n let adjustedSecondsLeftWithFractions =\n secondsLeftWithFractions - previousAdjustment.current;\n let secondsLeft = Math.round(adjustedSecondsLeftWithFractions);\n\n // The amount we adjusted the time at this tick.\n // We use this at the next tick to make adjustedSecondsLeftWithFractions\n // as close to whole seconds as possible.\n // In other words adjustedSecondsLeftWithFractions - secondsLeft should be as close to zero\n // as possible.\n let adjustment = secondsLeftWithFractions - secondsLeft;\n\n // Don't let the adjustment to drift over a second up or down.\n if (adjustment >= 1 || adjustment <= -1) {\n // Reset the adjustment\n secondsLeft = Math.round(secondsLeftWithFractions);\n adjustment = secondsLeftWithFractions - secondsLeft;\n }\n\n // The first time here we are not in a tick so\n // ignore adjustment.\n if (!isInitialCall) {\n previousAdjustment.current = adjustment;\n }\n\n const formattedTimeLeft =\n secondsLeft > 0\n ? formatTimeLeft(secondsLeft, t, endDate, serverDate)\n : t('vip_ended');\n\n setTimeLeftText(formattedTimeLeft);\n setIsTimeLeftBelowWarningLimit(secondsLeft <= warningLimit);\n\n if (secondsLeft <= 0) {\n setIsCountdownDone(true);\n }\n },\n [endDate, formatTimeLeft, t, warningLimit]\n );\n\n useEffect(() => {\n updateTimeLeft(true);\n }, [updateTimeLeft]);\n\n useTicker(updateTimeLeft, isCountdownDone ? 0 : COUNTDOWN_TICK_INTERVAL);\n\n return {\n timeLeftText,\n isCountdownDone,\n isCountdownEnabled,\n isTimeLeftBelowWarningLimit\n };\n};\n","import React from 'react';\n\nconst HoverMenuItemSeparator = () => (\n
  • \n);\n\nexport default HoverMenuItemSeparator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ALink from 'tradera-components/alink/alink';\n\nconst MenuItem = ({\n alerts,\n bold,\n border,\n className,\n follow,\n gaAttributes,\n icon,\n imageUrl,\n inSPA,\n label,\n link,\n notify,\n notificationDot,\n onClick\n}) => {\n const containerClass = `site-dropdown__item d-flex flex-row align-items-center ${\n alerts?.length > 0 ? 'flex-wrap' : ''\n } ${className} `;\n\n return (\n
  • \n {link ? (\n \n \n \n ) : (\n
    \n \n
    \n )}\n
  • \n );\n};\n\nconst MenuItemContent = ({\n icon,\n bold,\n imageUrl,\n label,\n notify,\n alerts,\n notificationDot\n}) => {\n return (\n <>\n {icon && (\n \n {icon}\n \n )}\n \n {label}\n \n\n \n\n {alerts}\n \n );\n};\n\nconst NotificationDot = ({ notify, notificationDot }) => {\n if (notify > 0) {\n return (\n \n \n {notify}\n \n \n );\n }\n\n switch (notificationDot) {\n case 'info':\n case 'success':\n case 'warning':\n case 'danger':\n return (\n \n \n \n );\n default:\n return null;\n }\n};\n\nMenuItem.propTypes = {\n bold: PropTypes.bool,\n border: PropTypes.bool,\n gaAttributes: PropTypes.object,\n inSPA: PropTypes.bool,\n label: PropTypes.node,\n link: PropTypes.string,\n notify: PropTypes.number\n};\n\nMenuItem.defaultProps = {\n bold: false,\n border: false,\n className: 'site-dropdown__item-default',\n follow: true,\n inSPA: false,\n notify: 0\n};\n\nexport default MenuItem;\n","import React from 'react';\n\nimport { useTranslator } from 'tradera-lang/translate';\nimport ErrorContainer from './error-container';\nimport WarningIcon from '@tradera/blueprint/theme/icons/warning.svg?jsx';\n\nconst NotFoundError = () => {\n const { t } = useTranslator();\n return (\n \n

    \n \n

    \n

    {t('error_pageNotFound')}

    \n

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

    \n
    \n );\n};\n\nexport default NotFoundError;\n","export const selectBox = state => state.views.shippingCalculator.box;\n\nexport const selectFilterValue = filterName => state =>\n state.views.shippingCalculator.box[filterName];\n\nexport const selectIsBoxValid = state =>\n state.views.shippingCalculator.box.height &&\n state.views.shippingCalculator.box.length &&\n state.views.shippingCalculator.box.width &&\n state.views.shippingCalculator.box.weight;\n\nexport const selectWeightUnit = state =>\n state.views.shippingCalculator.weightUnit;\n\nexport const selectNormalizedWeight = state =>\n state.views.shippingCalculator.box.weight % 1000 === 0\n ? state.views.shippingCalculator.box.weight / 1000\n : state.views.shippingCalculator.box.weight;\n\nexport const selectWeightString = state =>\n `${selectNormalizedWeight(state)} ${selectWeightUnit(state)}`;\n\nexport const isLoadingShippingProducts = state =>\n state.views.shippingCalculator.isLoadingShippingProducts;\n\nexport const selectShippingProviders = state =>\n state.views.shippingCalculator.shippingProviders.map(provider => ({\n ...provider,\n domesticProducts:\n selectShippingProducts(state)[\n state.views.shippingCalculator.selectedFromCountry\n ]?.filter(\n ({ shippingProvider }) =>\n shippingProvider === provider.providerName\n ) || []\n }));\n\nexport const selectInternationalShippingProviders = state =>\n state.views.shippingCalculator.shippingProviders.filter(\n ({ providerName }) =>\n ['SchenkerPrivpak', 'PostNordParcel', 'PostNordStamp'].find(\n p => p === providerName\n )\n );\n\nexport const selectShippingProducts = state => {\n const {\n internationalProductsGroupedByFromThenToCountry,\n selectedFromCountry\n } = state.views.shippingCalculator;\n return (\n internationalProductsGroupedByFromThenToCountry[selectedFromCountry] ||\n {}\n );\n};\n\nexport const selectIsDifferentFromDefaultBox = state =>\n !(\n state.views.shippingCalculator.box.length ===\n state.views.shippingCalculator.defaultBox.length &&\n state.views.shippingCalculator.box.width ===\n state.views.shippingCalculator.defaultBox.width &&\n state.views.shippingCalculator.box.height ===\n state.views.shippingCalculator.defaultBox.height &&\n state.views.shippingCalculator.box.weight ===\n state.views.shippingCalculator.defaultBox.weight\n );\n\nexport const selectSelectedCountries = state => ({\n selectedFromCountry: state.views.shippingCalculator.selectedFromCountry,\n selectedToCountry: state.views.shippingCalculator.selectedToCountry\n});\n\nexport const selectAvailableCountryCodes = state => ({\n availableFromCountryCodes:\n state.views.shippingCalculator.availableFromCountryCodes,\n availableToCountryCodes:\n state.views.shippingCalculator.availableToCountryCodes\n});\n\nexport const selectShowError = state =>\n state.views.shippingCalculator.showError;\n","import { Analytics } from 'packages';\n\nexport const getMenuGaAttributes = (category, action, label) => ({\n 'data-ga-category': category,\n 'data-ga-action': action,\n 'data-ga-label': `Link - ${label}`\n});\n\nexport const trackProfileClick = (isLoggedIn, open) => {\n Analytics.trackEvent({\n category: 'Top navigation',\n action: `${isLoggedIn ? 'Account' : 'Login'} menu`,\n label: `${open ? 'Menu open' : 'Menu close'}`\n });\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useCurrentLanguage } from 'tradera-lang/translate';\nimport { formatPrice } from 'tradera-utils/format';\n\nconst MultiCurrency = ({\n amountInSek,\n className,\n preferredCurrency,\n tagName: TagName\n}) => {\n const { language } = useCurrentLanguage();\n if (!MultiCurrency.isVisible(amountInSek, preferredCurrency)) {\n return null;\n }\n const formattedPrice = formatPrice(\n amountInSek * preferredCurrency.rate,\n language,\n {\n currency: preferredCurrency.code,\n maximumFractionDigits: preferredCurrency.decimals\n }\n );\n return (\n \n ≈ {formattedPrice}\n \n );\n};\n\nMultiCurrency.isVisible = (amountInSek, preferredCurrency) => {\n return (\n preferredCurrency &&\n preferredCurrency.code !== 'SEK' &&\n amountInSek &&\n amountInSek * preferredCurrency.rate > 0\n );\n};\n\nexport const preferredCurrencyPropTypes = PropTypes.shape({\n // Rate in percent\n rate: PropTypes.number.isRequired,\n decimals: PropTypes.number.isRequired,\n code: PropTypes.string.isRequired,\n symbolPrefix: PropTypes.string,\n symbolSuffix: PropTypes.string\n});\n\nMultiCurrency.propTypes = {\n amountInSek: PropTypes.number,\n className: PropTypes.string,\n preferredCurrency: preferredCurrencyPropTypes,\n tagName: PropTypes.string\n};\n\nMultiCurrency.defaultProps = {\n tagName: 'span'\n};\n\nexport default MultiCurrency;\n","const getDisplayRating = rating => {\n if (rating) {\n let decimals = decimalPlaces(rating);\n if (decimals === 0) decimals = 1;\n return rating.toFixed(decimals);\n }\n};\n\nconst decimalPlaces = num => {\n var match = ('' + num).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n if (!match) {\n return 0;\n }\n return Math.max(\n 0,\n // Number of digits right of decimal point.\n (match[1] ? match[1].length : 0) -\n // Adjust for scientific notation.\n (match[2] ? +match[2] : 0)\n );\n};\n\nexport default {\n getDisplayRating\n};\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { useUrlLocalizer } from 'tradera-lang/translate';\nimport utils from './rating-utils';\nimport RatingIcon from '@tradera/blueprint/theme/icons2/rating.svg?jsx';\nimport './rating-stars.scss';\n\n// Rating is multipled with 20.5 to account for margin between stars and rounding up\nimport ALink from 'tradera-components/alink/alink';\n\nconst RatingStars = ({\n memberAlias,\n memberId,\n rating,\n gaAttributes,\n link,\n dark = false,\n onClick\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const displayRating = utils.getDisplayRating(rating);\n\n const Stars = () => (\n <>\n \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n \n );\n return link ? (\n \n
    \n \n \n \n\n
    \n \n {displayRating}\n \n
    \n
    \n
    \n ) : (\n \n
    \n
    \n \n
    \n
    \n {displayRating}\n
    \n
    \n
    \n );\n};\n\nRatingStars.defaultProps = {};\n\nRatingStars.propTypes = {\n memberAlias: PropTypes.string,\n memberId: PropTypes.number,\n rating: PropTypes.number,\n gaAttributes: PropTypes.object,\n dark: PropTypes.bool,\n link: PropTypes.bool\n};\n\nexport default RatingStars;\n","import {\n addRecentSearch,\n removeRecentSearch\n} from 'components/search/helpers/suggestions-api';\nimport { getPersonalisedBrands, getPersonalisedSearches } from './api';\n\nconst setPersonalisedBrandsAction = (items, status) => ({\n type: 'PERSONALISATION/SET_BRANDS',\n items,\n status\n});\n\nconst setPersonalisedSearchesAction = (items, status) => ({\n type: 'PERSONALISATION/SET_SEARCHES',\n items,\n status\n});\n\nconst setPersonalisedBrandsStatusAction = status => ({\n type: 'PERSONALISATION/FETCH_BRANDS_STATUS',\n status\n});\n\nconst setPersonalisedSearchesStatusAction = status => ({\n type: 'PERSONALISATION/FETCH_SEARCHES_STATUS',\n status\n});\n\nconst recentSearchesIsUpdatedAction = () => ({\n type: 'RECENT_SEARCHES_LAST_UPDATED',\n lastUpdated: Date.now()\n});\n\nexport const fetchPersonalisedBrandsIfNeeded = () => async (\n dispatch,\n getState\n) => {\n const { status } = getState().personalisation.brands;\n if (status !== 'NOT_FETCHED') return;\n\n dispatch(setPersonalisedBrandsStatusAction('LOADING'));\n\n const brandsResult = await getPersonalisedBrands();\n\n const newStatus = brandsResult.length > 0 ? 'HAS_DATA' : 'HAS_NO_DATA';\n dispatch(setPersonalisedBrandsAction(brandsResult, newStatus));\n};\n\nexport const fetchPersonalisedSearchesIfNeeded = () => async (\n dispatch,\n getState\n) => {\n const { status } = getState().personalisation.searches;\n if (status !== 'NOT_FETCHED') return;\n\n dispatch(setPersonalisedSearchesStatusAction('LOADING'));\n\n const searchesResult = await getPersonalisedSearches();\n\n const newStatus = searchesResult.length > 0 ? 'HAS_DATA' : 'HAS_NO_DATA';\n dispatch(setPersonalisedSearchesAction(searchesResult, newStatus));\n};\n\nexport const addRecentSearchText = text => async dispatch => {\n addRecentSearch(text);\n dispatch(recentSearchesIsUpdatedAction());\n};\n\nexport const removeRecentSearchText = text => async dispatch => {\n removeRecentSearch(text);\n dispatch(recentSearchesIsUpdatedAction());\n};\n","import ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n axiosWithTokenRefresh,\n handleError,\n logError\n} from 'tradera-utils/api';\n\nexport const getPersonalisedBrands = () => {\n return axiosWithTokenRefresh()\n .get(`${ENDPOINTS.PERSONALISED_SUGGESTIONS}/brands`)\n .catch(handleError())\n .catch(logError)\n .then(response => response?.data || []);\n};\n\nexport const getPersonalisedSearches = () => {\n return axiosWithTokenRefresh()\n .get(`${ENDPOINTS.PERSONALISED_SUGGESTIONS}/searches`)\n .catch(handleError())\n .catch(logError)\n .then(response => response?.data || []);\n};\n","import { useSelector } from 'react-redux';\n\nexport const useIsFeatureEnabled = featureName =>\n useSelector(state => state.environment.featureSwitches[featureName]);\n","import draftActions from './draft-actions';\n\nexport default {\n setLongDescription: longDescription => dispatch => {\n dispatch({\n type: 'SET_LONG_DESCRIPTION',\n payload: longDescription\n });\n dispatch(draftActions.updateDraftCanBeResumed());\n },\n setLongDescriptionFromDraft: longDescription => dispatch => {\n dispatch({\n type: 'SET_LONG_DESCRIPTION_FROM_DRAFT',\n payload: longDescription\n });\n dispatch(draftActions.updateDraftCanBeResumed());\n },\n reset: () => dispatch => {\n dispatch({\n type: 'RESET_LONG_DESCRIPTION'\n });\n dispatch(draftActions.updateDraftCanBeResumed());\n }\n};\n","import initData from 'init-data';\n\nconst isEnabled = key => {\n return (\n initData && initData.featureSwitches && initData.featureSwitches[key]\n );\n};\n\nexport const errors = {\n ELASTIC_MYTRADERA:\n 'Just nu har vi driftstörningar på delar av Mitt Tradera. Vi arbetar på att lösa problemet.'\n};\n\nexport default {\n isBuyerOrderInformationEnabled: isEnabled('buyer-order-information'),\n isDisputesEntranceEnabled: isEnabled('disputes-entrance'),\n isLeaveFeedbackReactEnabled: isEnabled('leave-feedback-react'),\n isMyTraderaElasticEnabled: isEnabled('mytradera-elasticsearch'),\n isMessagingEnabled: isEnabled('messaging'),\n isMessagingBuyerButtonsEnabled: isEnabled(\n 'messaging-contact-buyer-buttons'\n ),\n isMessagingSellerButtonsEnabled: isEnabled(\n 'messaging-contact-seller-buttons'\n ),\n isOrderCheckoutBinEnabled: isEnabled('order-checkout-bin'),\n downloadCsvPayouts: isEnabled('download-csv-payouts'),\n isCombinedShippingListEnabled: isEnabled('combined-shipping-list'),\n isCombinedShippingListBuyerViewEnabled: isEnabled(\n 'combined-shipping-list-buyer-view'\n ),\n isInrPurchaseOrderEnabled: isEnabled('inr-purchaseorder'),\n isUpiPurchaseOrderEnabled: isEnabled('upi-purchaseorder'),\n isPennybridgeCharitiesEnabled: isEnabled('pennybridge-charities'),\n isValuationPageEnabled: isEnabled('valuation-page')\n};\n","import 'react';\nimport { itemHasBidsButReservePriceNotReached } from './item-labels';\nimport { columns } from '../../constants/column-definitions';\nimport { PAGE_NAMES } from '../../constants/page';\nimport { formatPrice } from '../../helpers/formats';\nimport {\n getBidCount,\n getMaxBid,\n getShippingCost\n} from '../../helpers/item-helper';\nimport { infoItemComponents } from 'tradera-apps/my-tradera/app/components/listing/item/info-item-components';\n\nconst labels = {\n [columns.CurrentPrice]: 'Pris',\n [columns.TransactionDate]: 'Avslutad',\n [columns.EndDate]: 'Sluttid',\n [columns.ShippingCost]: 'Frakt',\n [columns.Bids]: '#Bud',\n [columns.ItemId]: 'Objektnr',\n [columns.OpeningBid]: 'Utrop',\n [columns.ReservePrice]: 'Res.pris',\n [columns.BuyItNow]: 'Köp nu',\n [columns.OwnReference]: 'Ref',\n [columns.MaxBid]: 'Maxbud',\n [columns.TimeLeft]: 'Tid kvar'\n};\n\nconst columnCssClassCore = {\n [columns.CurrentPrice]: 'myt-list3__table-column-current-price', // show tablet\n [columns.TransactionDate]: 'myt-list3__table-column-end-date',\n [columns.EndDate]: 'myt-list3__table-column-end-date',\n [columns.ShippingCost]: 'myt-list3__table-column-shipping-cost', // show tablet\n [columns.Bids]: 'myt-list3__table-column-current-bids', // show tablet\n [columns.ItemId]: 'myt-list3__table-column-item-id',\n [columns.OpeningBid]: 'myt-list3__table-column-opening-bid',\n [columns.ReservePrice]: 'myt-list3__table-column-reserve-price',\n [columns.BuyItNow]: 'myt-list3__table-column-buy-it-now',\n [columns.OwnReference]: 'myt-list3__table-column-own-reference',\n [columns.MaxBid]: 'myt-list3__table-column-maxbid',\n [columns.TimeLeft]: 'myt-list3__table-column-timeleft'\n};\n\nconst getCoreCssClass = column => columnCssClassCore[column];\nconst getHeading = (label, cssClass, columnKey) => ({\n term: label,\n cssClass: cssClass,\n columnKey\n});\n\nexport const getTranslatedColumnKey = (t, columnKey) => {\n switch (columnKey) {\n case columns.CurrentPrice:\n return t('myt_columns_price');\n case columns.TransactionDate:\n return t('myt_columns_transactionDate');\n case columns.EndDate:\n return t('myt_columns_endTime');\n case columns.ShippingCost:\n return t('myt_columns_shipping');\n case columns.Bids:\n return `#${t('myt_columns_bids')}`;\n case columns.ItemId:\n return t('myt_columns_objectNo');\n case columns.OpeningBid:\n return t('myt_columns_startingPrice');\n case columns.ReservePrice:\n return t('myt_columns_reservePrice');\n case columns.BuyItNow:\n return t('myt_columns_buyNow');\n case columns.OwnReference:\n return t('myt_columns_ownReference');\n case columns.MaxBid:\n return t('myt_columns_maxBid');\n case columns.TimeLeft:\n return t('myt_columns_timeLeft');\n default:\n return '';\n }\n};\n\nexport const getHeadings = (t, columnDefinitions) => {\n return columnDefinitions\n ? columnDefinitions.map(columnKey =>\n getHeading(\n getTranslatedColumnKey(t, columnKey),\n columnCssClassCore[columnKey]\n )\n )\n : [];\n};\n\nexport const getUserHeading = (t, pageName) => {\n const highestBidder = t('myt_columns_highestBidder');\n\n switch (pageName) {\n case PAGE_NAMES.BuyerActiveItems:\n return getHeading(\n highestBidder,\n 'myt-list3__table-column-counterpart'\n );\n case PAGE_NAMES.SellerActive:\n return getHeading(\n highestBidder,\n 'myt-list3__table-column-counterpart'\n );\n case PAGE_NAMES.SellerUnsold:\n return getHeading(\n highestBidder,\n 'myt-list3__table-column-counterpart'\n );\n case PAGE_NAMES.BuyerPurchases:\n return getHeading(\n 'Mina Köp',\n 'myt-list3__table-column-counterpart'\n );\n default:\n return null;\n }\n};\n\n/**\n * @name GetColumns\n * @desc Builds the columns out for a single item;\n */\nexport const getColumns = (columnDefinitions, listViewType) => item => {\n // eslint-disable-line\n\n const getColumn = (label, value, cssClass, title, columnKey) => ({\n term: label,\n definition: value,\n cssClass: cssClass,\n tagTitle: title,\n columnKey\n });\n\n const hasTransactionDate =\n !!item &&\n item.transaction &&\n item.transaction &&\n item.transaction.transactionDate;\n const price = item.transaction\n ? parseInt(item.transaction.price)\n : parseInt(item.currentPrice);\n\n const getCurrentPriceMeta = () =>\n itemHasBidsButReservePriceNotReached(item)\n ? columnCssClassCore[columns.CurrentPrice] + ' text-alert bold'\n : columnCssClassCore[columns.CurrentPrice];\n\n const getItemId = item.itemId;\n const itemType = item.listing.itemType;\n const hasHighestBidder =\n item && item.bidInformation && item.bidInformation.leadingBidder\n ? true\n : false;\n const shouldShowBids =\n itemType === 'Auction' ||\n (hasHighestBidder && itemType === 'AuctionBin') ||\n (hasHighestBidder &&\n item.transaction &&\n item.listing.purchaseType === 'Auction')\n ? true\n : false;\n const bidCount = getBidCount(item);\n const getTransactionDate = hasTransactionDate\n ? item.transaction.transactionDate.formatted\n : null;\n const getEndDate = item.listing.endDate.formatted;\n const getCurrentPrice = () => ({\n component: infoItemComponents.ITEM_PRICE,\n transaction: item.transaction,\n price: formatPrice(price)\n });\n const getTimeLeftAsString = item.listing.timeLeft\n ? item.listing.timeLeft.timeleft\n : null;\n\n const columnCssClass = {\n [columns.CurrentPrice]: getCurrentPriceMeta(),\n [columns.TransactionDate]:\n getCoreCssClass(columns.TransactionDate) +\n (hasTransactionDate && item.transaction.transactionDate.critical\n ? ' text-alert'\n : ''),\n [columns.EndDate]:\n getCoreCssClass(columns.EndDate) +\n (item.listing.endDate.critical ? ' text-alert' : ''),\n [columns.ShippingCost]: getCoreCssClass(columns.ShippingCost),\n [columns.Bids]: getCoreCssClass(columns.Bids),\n [columns.ItemId]: getCoreCssClass(columns.ItemId),\n [columns.OpeningBid]: getCoreCssClass(columns.OpeningBid),\n [columns.ReservePrice]: getCoreCssClass(columns.ReservePrice),\n [columns.BuyItNow]: getCoreCssClass(columns.BuyItNow),\n [columns.OwnReference]: getCoreCssClass(columns.OwnReference),\n [columns.Discount]: getCoreCssClass(columns.Discount) + ' text-alert',\n [columns.TimeLeft]: getCoreCssClass(columns.TimeLeft),\n [columns.MaxBid]: getCoreCssClass(columns.MaxBid)\n };\n\n const columnTitle = {\n [columns.CurrentPrice]: itemHasBidsButReservePriceNotReached(item)\n ? 'Reservationspris ej uppnått'\n : formatPrice(price),\n [columns.TransactionDate]: hasTransactionDate\n ? item.transaction.transactionDate.full\n : null,\n [columns.EndDate]:\n item &&\n item.listing &&\n item.listing.endDate &&\n item.listing.endDate.critical\n ? item.listing.timeLeft.timeleft\n : item.listing.endDate.full,\n [columns.ShippingCost]: '',\n [columns.Bids]: bidCount,\n [columns.ItemId]: '',\n [columns.OpeningBid]: '',\n [columns.ReservePrice]: '',\n [columns.BuyItNow]: '',\n [columns.OwnReference]: '',\n [columns.Discount]: '',\n [columns.TimeLeft]: getTimeLeftAsString\n };\n\n const getBids =\n shouldShowBids && bidCount\n ? {\n component: infoItemComponents.BIDS,\n itemId: getItemId,\n bidCount: bidCount\n }\n : '-';\n const getOpeningBid =\n item.listing.pricing.openingBid > 0\n ? formatPrice(item.listing.pricing.openingBid)\n : ' ';\n const getReservePrice =\n item.listing.pricing.reservePrice > 0\n ? formatPrice(item.listing.pricing.reservePrice)\n : '-';\n const getBuyItNow =\n item.listing.pricing.buyItNow > 0\n ? formatPrice(item.listing.pricing.buyItNow)\n : '-';\n const getOwnReference = item.listing.ownReference\n ? item.listing.ownReference\n : ' ';\n const callerMaxBid = getMaxBid(item) || '-';\n const getTimeLeft = {\n component: infoItemComponents.TIME_LEFT,\n timeLeft: item.listing.timeLeft\n };\n const shippingCost = getShippingCost(item, listViewType)();\n\n const definitions = {\n [columns.CurrentPrice]: getCurrentPrice(),\n [columns.TransactionDate]: getTransactionDate,\n [columns.EndDate]: getEndDate,\n [columns.ShippingCost]: shippingCost,\n [columns.Bids]: getBids,\n [columns.ItemId]: getItemId,\n [columns.OpeningBid]: getOpeningBid,\n [columns.ReservePrice]: getReservePrice,\n [columns.BuyItNow]: getBuyItNow,\n [columns.OwnReference]: getOwnReference,\n [columns.MaxBid]: callerMaxBid,\n [columns.TimeLeft]: getTimeLeft\n };\n\n return columnDefinitions.map(columnKey =>\n getColumn(\n columnKey === 'CurrentPrice' ? undefined : labels[columnKey],\n definitions[columnKey],\n columnCssClass[columnKey],\n columnTitle[columnKey],\n columnKey\n )\n );\n};\n\nexport default {\n getColumns,\n getHeadings\n};\n","import React from 'react';\nimport {\n buyerActiveItemsColumns,\n buyerItemsLostColumns,\n buyerPurchasesColumns,\n sellerActiveColumns,\n sellerSoldColumns,\n sellerUnsoldColumns,\n payments2Columns\n} from './../constants/column-definitions';\nimport { PAGE_LIST_TYPES } from '../constants/list-types';\nimport { PAGE_NAMES } from '../constants/page';\nimport HeartIcon from '@tradera/blueprint/theme/icons2/heart.svg?jsx';\nimport BookmarkIcon from '@tradera/blueprint/theme/icons2/bookmark.svg?jsx';\nimport StarIcon from '@tradera/blueprint/theme/icons2/star.svg?jsx';\nimport MessageIcon from '@tradera/blueprint/theme/icons2/message.svg?jsx';\nimport BidLostIcon from '@tradera/blueprint/theme/icons2/bid-lost.svg?jsx';\nimport TagIcon from '@tradera/blueprint/theme/icons2/sale.svg?jsx';\nimport ListIcon from '@tradera/blueprint/theme/icons2/list.svg?jsx';\nimport WriteIcon from '@tradera/blueprint/theme/icons2/write.svg?jsx';\nimport SettingsIcon from '@tradera/blueprint/theme/icons2/settings.svg?jsx';\nimport BiddingIcon from '@tradera/blueprint/theme/icons2/auction.svg?jsx';\nimport WonIcon from '@tradera/blueprint/theme/icons2/winning.svg?jsx';\nimport DocumentIcon from '@tradera/blueprint/theme/icons2/document.svg?jsx';\nimport PenIcon from '@tradera/blueprint/theme/icons2/pen.svg?jsx';\nimport RatingPositiveIcon from '@tradera/blueprint/theme/icons2/rating-positive.svg?jsx';\nimport SoldIcon from '@tradera/blueprint/theme/icons2/sold.svg?jsx';\nimport LockIcon from '@tradera/blueprint/theme/icons2/lock.svg?jsx';\nimport UnsoldIcon from '@tradera/blueprint/theme/icons2/unsold.svg?jsx';\nimport UserIcon from '@tradera/blueprint/theme/icons2/user.svg?jsx';\nimport WalletIcon from '@tradera/blueprint/theme/icons2/wallet.svg?jsx';\nimport PackageIcon from '@tradera/blueprint/theme/icons2/package.svg?jsx';\n\nexport const getLocalizedUrls = toLocalizedUrl => ({\n overview: toLocalizedUrl('/my/overview'),\n buyerOverview: toLocalizedUrl('/my/overview-buyer'),\n sellerOverview: toLocalizedUrl('/my/overview-seller'),\n accountOverview: toLocalizedUrl('/my/overview-my-account'),\n wishlist: toLocalizedUrl('/my/wish-list'),\n activeItems: toLocalizedUrl('/my/active-items'),\n itemsLost: toLocalizedUrl('/my/items-lost'),\n active: toLocalizedUrl('/my/active'),\n sold: toLocalizedUrl('/my/sold'),\n unsold: toLocalizedUrl('/my/unsold'),\n purchases: toLocalizedUrl('/my/purchases'),\n savedSearches: toLocalizedUrl('/my/saved-searches'),\n favouriteSellers: toLocalizedUrl('/my/favourite-sellers'),\n sellerList: toLocalizedUrl('/my/seller-list'),\n pickList: toLocalizedUrl('/my/picklist'),\n buyerFeedback: toLocalizedUrl('/my/leave-feedback/buyer'),\n sellerFeedback: toLocalizedUrl('/my/leave-feedback/seller'),\n myFeedback: toLocalizedUrl('/my/feedback'),\n profile: toLocalizedUrl('/my/profile'),\n invoices: toLocalizedUrl('/my/Invoices'),\n payments: toLocalizedUrl('/my/Payments'),\n payments2: toLocalizedUrl('/my/Payments2'),\n payouts: toLocalizedUrl('/my/payouts'),\n messaging: toLocalizedUrl('/messaging'),\n selling: toLocalizedUrl('/selling'),\n settings: toLocalizedUrl('/my/settings'),\n settingsAccount: toLocalizedUrl('/my/settings/account'),\n settingsEmail: toLocalizedUrl('/my/settings/email'),\n settingsSelling: toLocalizedUrl('/my/settings/selling'),\n settingsNotifications: toLocalizedUrl('/my/settings/notifications'),\n settingsSecurity: toLocalizedUrl('/my/settings/security'),\n settingsPayouts: toLocalizedUrl('/my/settings/payouts'),\n buyShippingBags: toLocalizedUrl('/tradera-shop/shippping-bags')\n});\n\n/**\n * This is default information used to differentiate UI elements based on different pages.\n * @returns {object}\n */\nexport const routeInformationFactory = (t, toLocalizedUrl) => {\n const urls = getLocalizedUrls(toLocalizedUrl);\n return {\n [urls.overview]: {\n url: toLocalizedUrl('/my/overview'),\n class: 'myt-menu-list-item-subtitle myt-menu-list-item-overview',\n label: t('myt_overview_label'),\n isExternal: true\n },\n [urls.wishlist]: {\n url: toLocalizedUrl('/my/wish-list'),\n title: t('myt_wishlist_title'),\n isExternal: true,\n icon: \n },\n [urls.savedSearches]: {\n url: toLocalizedUrl('/my/saved-searches'),\n title: t('myt_savedSearches_title'),\n isExternal: true,\n icon: \n },\n [urls.favouriteSellers]: {\n url: toLocalizedUrl('/my/favourite-sellers'),\n title: t('myt_favouriteSellers_title'),\n isExternal: true,\n icon: ,\n showBasedOnInitData: initData =>\n !initData?.featureSwitches['my-tradera-seller-list']\n },\n [urls.sellerList]: {\n url: toLocalizedUrl('/my/seller-list'),\n title: t('myt_sellerList_title'),\n isExternal: false,\n icon: ,\n overview: urls.overview,\n showBasedOnInitData: initData =>\n initData?.featureSwitches['my-tradera-seller-list']\n },\n [urls.activeItems]: {\n isBuyerPage: true,\n searchUrl: toLocalizedUrl('/my/api/buyer/active'),\n pageName: PAGE_NAMES.BuyerActiveItems,\n listType: PAGE_LIST_TYPES.BUYER_ACTIVE_ITEMS,\n url: toLocalizedUrl('/my/active-items'),\n title: t('myt_activeItems_title'),\n columns: buyerActiveItemsColumns,\n overview: urls.buyerOverview,\n hasLabels: false,\n shouldShowCompact: false,\n shouldShowListToggle: false,\n gaLabel: 'Pågående budgivningar',\n bulkEditEnabled: true,\n icon: ,\n noResultsText: t('myt_activeItems_noResultsText')\n },\n [urls.itemsLost]: {\n isBuyerPage: true,\n searchUrl: toLocalizedUrl('/my/api/buyer/items-lost'),\n pageName: PAGE_NAMES.BuyerItemsLost,\n listType: PAGE_LIST_TYPES.BUYER_ITEMS_LOST,\n overview: urls.buyerOverview,\n url: toLocalizedUrl('/my/items-lost'),\n title: t('myt_lostItems_title'),\n columns: buyerItemsLostColumns,\n hasLabels: false,\n shouldShowCompact: false,\n shouldShowListToggle: false,\n bulkEditEnabled: true,\n icon: ,\n noResultsText: t('myt_lostItems_noResultsText')\n },\n [urls.selling]: {\n url: toLocalizedUrl('/selling'),\n title: t('siteHeader_createItem'),\n isExternal: true,\n icon: \n },\n [urls.active]: {\n searchUrl: toLocalizedUrl('/my/api/seller/active'),\n pageName: PAGE_NAMES.SellerActive,\n listType: PAGE_LIST_TYPES.SELLER_ACTIVE,\n url: toLocalizedUrl('/my/active'),\n overview: urls.sellerOverview,\n title: t('myt_activeListings_title'),\n columns: sellerActiveColumns,\n hasLabels: false,\n shouldShowCompact: true,\n shouldShowListToggle: true,\n stats: {\n FastPris: {\n label: 'Fast pris',\n value: '0'\n },\n Auktioner: {\n label: 'Auktioner',\n value: '0'\n },\n Bud: {\n label: 'Bud',\n value: '0'\n },\n SummaUtropspris: {\n label: 'Summa utropspris',\n value: '0'\n },\n SummaBud: {\n label: 'Summa bud',\n value: '0'\n }\n },\n bulkEditEnabled: true,\n icon: ,\n noResultsText: t('myt_activeListings_noResultsText')\n },\n [urls.sold]: {\n searchUrl: toLocalizedUrl('/my/api/seller/sold'),\n searchUrlNormalView: toLocalizedUrl(\n '/api/webapi/mytradera/seller/soldpurchaseorders'\n ),\n pageName: PAGE_NAMES.SellerSold,\n listType: PAGE_LIST_TYPES.SELLER_SOLD,\n url: toLocalizedUrl('/my/sold'),\n title: t('myt_soldItems_title'),\n columns: sellerSoldColumns,\n overview: urls.sellerOverview,\n hasLabels: true,\n shouldShowCompact: true,\n shouldShowListToggle: true,\n stats: {\n Butiksobjekt: {\n label: 'Butiksobjekt',\n value: '0'\n },\n FastPris: {\n label: 'Fast pris',\n value: '0'\n },\n Auktioner: {\n label: 'Auktioner',\n value: '0'\n },\n Bud: {\n label: 'Bud',\n value: '0t'\n },\n SummaUtropspris: {\n label: 'Summa utropspris',\n value: '0'\n },\n SummaBud: {\n label: 'Summa bud',\n value: '0'\n }\n },\n bulkEditEnabled: false,\n icon: ,\n noResultsText: t('myt_soldItems_noResultsText')\n },\n [urls.unsold]: {\n searchUrl: toLocalizedUrl('/my/api/seller/unsold'),\n pageName: PAGE_NAMES.SellerUnsold,\n listType: PAGE_LIST_TYPES.SELLER_NOT_SOLD,\n overview: urls.sellerOverview,\n url: toLocalizedUrl('/my/unsold'),\n title: t('myt_unsoldItems_title'),\n columns: sellerUnsoldColumns,\n shouldShowCompact: true,\n shouldShowListToggle: true,\n stats: {},\n bulkEditEnabled: true,\n icon: ,\n noResultsText: t('myt_unsoldItems_noResultsText')\n },\n [urls.purchases]: {\n isBuyerPage: true,\n searchUrl: toLocalizedUrl('/my/api/buyer/purchases'),\n searchUrlNormalView: toLocalizedUrl(\n '/api/webapi/mytradera/buyer/boughtpurchaseorders'\n ),\n pageName: PAGE_NAMES.BuyerPurchases,\n listType: PAGE_LIST_TYPES.BUYER_PURCHASES,\n url: toLocalizedUrl('/my/purchases'),\n overview: urls.buyerOverview,\n title: t('myt_boughtItems_title'),\n columns: buyerPurchasesColumns,\n shouldShowCompact: false,\n shouldShowListToggle: true,\n stats: {},\n bulkEditEnabled: true,\n icon: ,\n noResultsText: t('myt_boughtItems_noResultsText')\n },\n [urls.pickList]: {\n url: toLocalizedUrl('/my/picklist'),\n title: t('myt_picklist_title'),\n isExternal: true,\n icon: \n },\n [urls.buyerFeedback]: {\n pageName: PAGE_NAMES.MyTraderaLeaveFeedback,\n url: toLocalizedUrl('/my/leave-feedback/buyer?transactionId=0'),\n title: t('myt_buyerFeedback_title'),\n isExternal: true,\n icon: ,\n hasCustomHeader: true,\n overview: urls.buyerOverview\n },\n [urls.sellerFeedback]: {\n pageName: PAGE_NAMES.MyTraderaLeaveFeedback,\n url: toLocalizedUrl('/my/leave-feedback/seller?transactionId=0'),\n title: t('myt_sellerFeedback_title'),\n isExternal: true,\n icon: ,\n hasCustomHeader: true,\n overview: urls.sellerOverview\n },\n [urls.myFeedback]: {\n url: toLocalizedUrl('/getUrlMyFeedback'),\n title: t('myt_myFeedback_title'),\n isExternal: true,\n icon: \n },\n [urls.profile]: {\n url: toLocalizedUrl('/my/profile'),\n title: t('myt_settings_title'),\n pageName: PAGE_NAMES.Profile,\n overview: urls.accountOverview,\n showBasedOnInitData: initData =>\n !initData?.featureSwitches['my-tradera-settings'],\n isExternal: true,\n icon: \n },\n [urls.settings]: {\n url: urls.settings,\n title: t('myt_settings_title'),\n pageName: PAGE_NAMES.Settings,\n overview: urls.accountOverview,\n showBasedOnInitData: initData =>\n initData?.featureSwitches['my-tradera-settings'],\n isExternal: false,\n icon: \n },\n [urls.settingsAccount]: {\n url: urls.settingsAccount,\n title: t('myt_settings_account_title'),\n subTitle: t('myt_settings_account_subTitle'),\n pageName: PAGE_NAMES.SettingsAccount,\n overview: urls.settings,\n isInternalOverview: true,\n isExternal: false,\n icon: \n },\n [urls.settingsEmail]: {\n url: urls.settingsEmail,\n title: t('myt_settings_email_title'),\n subTitle: t('myt_settings_email_subTitle'),\n pageName: PAGE_NAMES.SettingsEmail,\n overview: urls.settings,\n isInternalOverview: true,\n isExternal: false,\n icon: \n },\n [urls.settingsSelling]: {\n url: urls.settingsSelling,\n title: t('myt_settings_selling_title'),\n subTitle: t('myt_settings_selling_subTitle'),\n pageName: PAGE_NAMES.SettingsSeller,\n overview: urls.settings,\n isInternalOverview: true,\n isExternal: false,\n icon: \n },\n [urls.settingsNotifications]: {\n url: urls.settingsNotifications,\n title: t('myt_settings_notifications_title'),\n subTitle: t('myt_settings_notifications_subTitle'),\n pageName: PAGE_NAMES.SettingsNotifications,\n overview: urls.settings,\n isInternalOverview: true,\n isExternal: false,\n icon: \n },\n [urls.settingsSecurity]: {\n url: urls.settingsSecurity,\n title: t('myt_settings_security_title'),\n subTitle: t('myt_settings_security_subTitle'),\n pageName: PAGE_NAMES.SettingsSecurity,\n overview: urls.settings,\n isInternalOverview: true,\n isExternal: false,\n icon: \n },\n [urls.settingsPayouts]: {\n url: urls.settingsPayouts,\n title: t('myt_settings_payouts_title'),\n subTitle: t('myt_settings_payouts_subTitle'),\n pageName: PAGE_NAMES.Settings,\n overview: urls.settings,\n isInternalOverview: true,\n isExternal: false,\n icon: \n },\n [urls.invoices]: {\n url: toLocalizedUrl('/my/Invoices?page=1'),\n title: t('myt_invoices_title'),\n isExternal: true,\n icon: \n },\n [urls.payments]: {\n url: toLocalizedUrl('/my/Payments'),\n title: t('myt_payments_title'),\n isExternal: true,\n showBasedOnInitData: initData => {\n return (\n initData &&\n initData.paymentSettings &&\n initData.paymentSettings.showPayments1Menu === true &&\n initData.paymentSettings.showPayments2Menu === false\n );\n },\n icon: \n },\n [urls.payments2]: {\n url: toLocalizedUrl('/my/Payments2'),\n title: t('myt_payments_title'),\n isExternal: true,\n overview: urls.accountOverview,\n showBasedOnInitData: initData => {\n return (\n initData?.paymentSettings?.showPayments2Menu &&\n !initData?.hasWallet\n );\n },\n icon: ,\n columns: payments2Columns\n },\n [urls.payouts]: {\n url: urls.payouts,\n title: t('myt_payouts_title'),\n pageName: PAGE_NAMES.Payouts,\n overview: urls.accountOverview,\n showBasedOnInitData: initData =>\n initData?.paymentSettings?.showPayments2Menu &&\n initData?.hasWallet,\n isExternal: false,\n icon: \n },\n [urls.messaging]: {\n url: toLocalizedUrl('/messaging'),\n label: t('myt_messaging_label'),\n class: 'myt-menu-list-item-subtitle',\n hideMainNav: true,\n isExternal: true,\n icon: \n },\n [urls.buyShippingBags]: {\n url: toLocalizedUrl('/tradera-shop/shipping-bags'),\n title: (\n <>\n {t('myt_buyShippingBags_title')}{' '}\n \n {t('myt_badge_new')}\n \n \n ),\n isExternal: true,\n icon: ,\n showBasedOnInitData: initData =>\n initData?.featureSwitches['tradera-shop']\n }\n };\n};\n","import React from 'react';\nimport PropType from 'prop-types';\n\nconst ModalFooter = ({ children, className }) => (\n
    {children}
    \n);\n\nModalFooter.propTypes = {\n children: PropType.node.isRequired,\n className: PropType.string\n};\n\nexport default ModalFooter;\n","export default {\n SET_IS_LOADING: 'TRADERA_SHOP/SET_IS_LOADING',\n SET_ITEM_DETAILS: 'TRADERA_SHOP/SET_ITEM_DETAILS',\n SET_PRODUCT: 'TRADERA_SHOP/SET_PRODUCT'\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useUrlLocalizer, useTranslator } from 'tradera-lang/translate';\nimport CloseNarrowIcon from '@tradera/blueprint/theme/icons/close-narrow.svg?jsx';\nimport SearchIcon from '@tradera/blueprint/theme/icons2/search.svg?jsx';\n\nconst SearchInput = ({\n categoriesElement,\n inputClassName,\n onBlur,\n onClearSearchInput,\n onFocus,\n onFormSubmit,\n onUserInputChange,\n onUserKeyUp,\n searchInputRef,\n searchTerm,\n selectedCategory,\n suggestionsElement,\n placeholderText\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const { t } = useTranslator();\n\n const placeHolderTranslation =\n selectedCategory && selectedCategory.id !== 0 && selectedCategory.name\n ? t('siteHeader_categorySearchPlaceholder', {\n categoryName: selectedCategory.name\n })\n : t('siteHeader_generalSearchPlaceholder');\n\n const showClearButton = searchTerm !== '';\n\n return (\n \n
    \n {categoriesElement}\n
    \n
    \n \n
    \n {showClearButton ? (\n \n \n \n ) : (\n \n \n \n )}\n
    \n {suggestionsElement}\n
    \n \n );\n};\n\nSearchInput.propTypes = {\n categoriesElement: PropTypes.element,\n inputClassName: PropTypes.string,\n onBlur: PropTypes.func,\n onClearSearchInput: PropTypes.func,\n onFocus: PropTypes.func,\n onFormSubmit: PropTypes.func.isRequired,\n onUserInputChange: PropTypes.func,\n onUserKeyUp: PropTypes.func,\n searchInputRef: PropTypes.object,\n searchTerm: PropTypes.string.isRequired,\n selectedCategory: PropTypes.object,\n suggestionsElement: PropTypes.element,\n placeholderText: PropTypes.string\n};\n\nSearchInput.defaultProps = {\n categoriesElement: null,\n inputClassName: '',\n onBlur: () => {},\n onFocus: () => {},\n onUserInputChange: () => {},\n onUserKeyUp: () => {},\n selectedCategory: null,\n suggestionsElement: null,\n placeholderText: null\n};\n\nexport default SearchInput;\n","import { 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","import React from 'react';\nimport { Router } from 'react-router';\nimport history from 'tradera-utils/history';\nimport { hot } from 'react-hot-loader';\nimport ApplicationErrorBoundary from 'tradera-components/application-error-boundary';\nimport { ProviderWithGlobalStore } from 'tradera-state/configure-store';\nimport { GeneralError } from 'tradera-components/errors';\nimport PageHead from 'tradera-components/page-head/page-head';\nimport SiteHeader from 'tradera-components/site-header/site-header';\nimport SiteFooter from 'tradera-components/site-footer/site-footer';\nimport GdprContainer from 'tradera-components/alerts/gdpr/gpdr-container';\n\nimport { Routes } from './routes';\nimport './app.scss';\n\nconst headerElement = document.querySelector('[data-site-header-slim]');\n\n// Full SPA app with header, footer & everything\nfunction App() {\n const cartItemCount = headerElement?.getAttribute('data-cart-item-count');\n const cartSum = headerElement?.getAttribute('data-cart-sum');\n return (\n // TODO: Replace with general error fallback, move ShowItemsError to discover error boundary\n }>\n \n \n \n \n
    \n \n
    \n \n \n
    \n
    \n
    \n );\n}\n\n// Basic app without header, footer & other stuff, for old React pages & native app web views\nfunction BasicApp() {\n return (\n }>\n \n \n
    \n \n
    \n
    \n
    \n
    \n );\n}\n\nexport default hot(module)(App);\nexport { App, BasicApp };\n","import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport './transitions.scss';\n\nexport const Expand = ({ children, ...props }) => (\n \n {children}\n \n);\n\nexport const EnterFrom = ({ children, from, ...props }) => (\n \n {children}\n \n);\n\nexport const EnterFade = ({ children, ...props }) => (\n \n {children}\n \n);\n","// extracted by mini-css-extract-plugin\nexport default {\"animate-on-value-change\":\"animate-on-value-change--oN6-7\",\"animateOnValueChange\":\"animate-on-value-change--oN6-7\",\"animate\":\"animate--1oeJ_\"};","import React, { useEffect, useRef, useState } from 'react';\nimport styles from './animate-on-value-change.module.scss';\n\nexport const AnimateOnValueChange = ({ trigger, children }) => {\n const [animate, setAnimate] = useState(false);\n const firstUpdate = useRef(true);\n\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n setAnimate(true);\n }, [trigger]);\n\n return (\n setAnimate(false)}>\n {children}\n \n );\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { formatNumberWithSeparators } from '@tradera/blueprint/utils';\nimport MultiCurrency from 'tradera-components/multi-currency/multi-currency';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { formatDate } from 'tradera-utils/date';\nimport TimeLeft from '../helpers/time-left';\nimport { ITEM_STATES } from 'tradera-state/views/view-item/constants';\nimport { AnimateOnValueChange } from './animate-on-value-change';\nimport './bid-details.scss';\n\nexport const BidDetails = ({\n bidCount,\n endDate,\n fixedPrice,\n hasEnded,\n isEnding,\n itemState,\n leadingBidAmount,\n onShowBids,\n openingBid,\n preferredCurrency,\n timeLeftText,\n isTimeLeftBelowWarningLimit,\n winningBidAmount\n}) => {\n const { t } = useTranslator();\n\n const hasBids = bidCount > 0;\n const amountDetails = getAmountDetails(\n t,\n itemState,\n fixedPrice,\n leadingBidAmount,\n openingBid,\n hasBids,\n winningBidAmount\n );\n\n const amountTitle = (\n

    \n {amountDetails.title}\n

    \n );\n const amountValue = (\n <>\n \n \n {formatNumberWithSeparators(amountDetails.amount)}{' '}\n {t('vip_currency')}\n \n

    \n \n \n );\n const timeTitle =\n isEnding || hasEnded ? (\n

    \n {t('vip_hasEndedTime')} {formatDate(new Date(endDate))}\n

    \n ) : (\n

    \n {t('vip_willEndTime')} {formatDate(new Date(endDate))}\n

    \n );\n const timeValue =\n isEnding || hasEnded ? (\n \n {hasEnded ? t('vip_ended') : t('vip_ending')}\n

    \n ) : (\n

    \n \n

    \n );\n const bidTitle = (\n

    \n {t('vip_bid')}{' '}\n {hasBids && (\n \n (\n {\n e.preventDefault();\n onShowBids();\n }}>\n {t('vip_show')}\n \n )\n \n )}\n

    \n );\n const bidValue = (\n

    \n {bidCount} {t('vip_amount')}\n

    \n );\n\n return (\n
    \n
    \n
    {amountTitle}
    \n
    {amountValue}
    \n
    \n
    \n
    {timeTitle}
    \n
    {timeValue}
    \n
    \n
    \n
    {bidTitle}
    \n
    {bidValue}
    \n
    \n
    \n );\n};\n\nBidDetails.propTypes = {\n bidCount: PropTypes.number,\n endDate: PropTypes.string.isRequired,\n hasEnded: PropTypes.bool.isRequired,\n itemState: PropTypes.string.isRequired,\n leadingBidAmount: PropTypes.number,\n onShowBids: PropTypes.func,\n openingBid: PropTypes.number,\n winningBidAmount: PropTypes.number\n};\n\nBidDetails.defaultProps = {\n className: '',\n hasLeadingBid: false,\n hasLostLeadingBid: false\n};\n\nexport const getAmountDetails = (\n t,\n itemState,\n fixedPrice,\n leadingBid,\n openingBid,\n hasBids,\n winningBidAmount\n) => {\n if (itemState === ITEM_STATES.ENDED_AUCTION_BIN_BOUGHT_AS_BIN) {\n return {\n title: t('vip_finalPrice'),\n amount: fixedPrice\n };\n }\n\n if (itemState === ITEM_STATES.ENDED_AUCTION_WITH_WINNING_BID) {\n return {\n title: t('vip_finalPrice'),\n amount: winningBidAmount\n };\n }\n\n if (hasBids) {\n return {\n title: t('vip_leadingBid'),\n amount: leadingBid\n };\n }\n return {\n title: t('vip_openingBid'),\n amount: openingBid\n };\n};\n","export default {\n BRAND_PAGE: 'Brand',\n BRAND_LIST_PAGE: 'BrandList',\n CATEGORY_LIST: 'CategoryList',\n CATEGORY_RESULT_PAGE: 'Category',\n CUSTOM_RESULT_PAGE: 'CustomResults',\n DEFAULT: 'default',\n ENDLESS_RECOMMENDATIONS_PAGE: 'EndlessRecommendation',\n ERROR_PAGE: 'ErrorPage',\n FAVOURITE_SELLERS_PAGE: 'FavouriteSellers',\n LIVE_SHOPPING: 'LiveShoppingEventList',\n MY_TRADERA_PAGE: 'MyTradera',\n PROFILE_PAGE: 'ProfilePage',\n REPORT_ITEM_PAGE: 'ReportItem',\n SEARCH_RESULT_PAGE: 'SearchResults',\n START_PAGE: 'StartPage',\n SYI_PAGE: 'SellItem',\n TRADERA_SHOP_PAGE: 'TraderaShop',\n VIEW_ITEM_PAGE: 'VIP'\n};\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 RESET: 'SEARCH/RESET'\n};\n","import * as actions from './actions';\nimport reducer from './reducer';\nimport {\n selectIsLoggedIn,\n selectGeolocation,\n selectIsOutsideSweden\n} from './selectors';\n\nexport {\n actions,\n reducer,\n selectIsLoggedIn,\n selectGeolocation,\n selectIsOutsideSweden\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst RadioSwitch = ({\n checked,\n className,\n handleOnChange,\n id,\n optionClasses,\n options,\n ...otherProps\n}) => {\n return (\n \n {options.map(option => {\n return (\n option.value && (\n \n {\n handleOnChange(e.target.value);\n }}\n />\n \n {option.name}\n \n \n )\n );\n })}\n
    \n );\n};\n\nfunction getOptionClasses(classMap) {\n if (classMap) {\n const classes = [];\n if (classMap.size) {\n classes.push(`form-check-inline-${classMap.size}`);\n }\n if (classMap.noclip) {\n classes.push('form-check-inline-noclip');\n }\n return classes.join(' ');\n } else {\n return '';\n }\n}\n\nRadioSwitch.propTypes = {\n options: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.string,\n name: PropTypes.node,\n className: PropTypes.string\n })\n ),\n optionClasses: PropTypes.shape({\n size: PropTypes.oneOf(['sm', 'lg', 'xl']),\n noclip: PropTypes.bool\n }),\n checked: PropTypes.string,\n handleOnChange: PropTypes.func,\n className: PropTypes.string,\n id: PropTypes.string.isRequired\n};\n\nRadioSwitch.defaultProps = {\n className: ''\n};\n\nexport default RadioSwitch;\n","import ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n axiosWithTokenRefresh,\n axiosConfigs,\n utilizeCancelToken,\n finalizeResponse,\n handleError,\n API_ERRORS\n} from 'tradera-utils/api';\nimport { toLocalizedUrl } from 'tradera-utils/url';\nimport { getCurrentLanguage } from 'tradera-lang/boot-languages';\nimport logger from 'packages/logger';\n\nexport const fetchDescription = (\n itemId,\n languageCodeIso2,\n fromLanguageCodeIso2\n) => {\n const { cancel, cancelToken } = utilizeCancelToken(\n 'getItemDescriptionTranslated'\n );\n\n if (cancel) cancel();\n return axiosWithTokenRefresh()\n .get(ENDPOINTS.ITEM_DESCRIPTION(itemId), {\n cancelToken,\n ...axiosConfigs.authenticated,\n params: {\n languageCodeIso2,\n fromLanguageCodeIso2\n }\n })\n .then(finalizeResponse())\n .catch(handleError());\n};\n\n/**\n * Returns an object with bid information for the item with the given ID.\n * @param {*} itemId\n */\nexport const getItemApi = async itemId => {\n return axiosWithTokenRefresh()\n .get(toLocalizedUrl(`/item/${itemId}.json`, getCurrentLanguage()))\n .then(finalizeResponse())\n .then(({ data, status }) => {\n // Normalize & format API response data\n // if (data) {\n // data = normalizeItemModel(data);\n // }\n return { data, status };\n })\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\n/**\n * Places a bid for the given auction\n * @param {*} itemId\n * @param {*} amount\n */\nexport const placeBidApi = async (itemId, amount, onLoggedOut) => {\n try {\n const response = await axiosWithTokenRefresh().post(\n toLocalizedUrl(`/item/place-bid/${itemId}`, getCurrentLanguage()),\n { amount },\n axiosConfigs.authenticated\n );\n const {\n data: {\n bid,\n item,\n transactionTotal,\n potentialBidChange,\n isMaxBid,\n weightedBidValue,\n serverSecondsLeft\n }\n } = response;\n\n const {\n bidId,\n isSuccessful,\n leadingBidAmount,\n leadingBidderMemberId,\n leadingMemberAlias: leadingBidMemberAlias,\n nextBidAmount: nextValidBidAmount,\n validationResult,\n placedBid\n } = bid;\n\n const {\n bidCount,\n categoryId,\n endDate,\n itemType,\n openingBid,\n reservePriceReached,\n sellermemberId: sellerMemberId,\n startDate\n } = item;\n\n return {\n isSuccessful,\n validationResult,\n item: {\n bidCount,\n categoryId,\n endDate,\n itemId: item.itemId,\n itemType,\n openingBid,\n reservePriceReached,\n sellerMemberId,\n startDate\n },\n bidInfo: {\n bidCount,\n bidId,\n isMaxBid,\n leadingBidAmount,\n leadingBidderMemberId,\n leadingBidMemberAlias,\n nextValidBidAmount,\n potentialBidChange,\n reservePriceReached,\n transactionTotal,\n weightedBidValue\n },\n analyticsData: {\n bidId,\n transactionTotal,\n potentialBidChange,\n isMaxBid,\n weightedBidValue\n },\n myMaxBidAmount: placedBid,\n serverSecondsLeft\n };\n } catch (error) {\n if (error.message === API_ERRORS.LOGGED_OUT) {\n onLoggedOut();\n } else {\n logger(error);\n }\n }\n};\n\nexport const getItemsFromSeller = params => {\n return axiosWithTokenRefresh()\n .get(\n toLocalizedUrl(\n '/api/webapi/discover/more-from-seller/',\n getCurrentLanguage()\n ),\n { params }\n )\n .then(finalizeResponse())\n .catch(handleError());\n};\n\nexport const getCombinedShippingUpsell = params => {\n return axiosWithTokenRefresh()\n .post(\n ENDPOINTS.COMBINED_SHIPPING_UPSELL,\n params,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n};\n","import { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport './loading-portal.scss';\n\nexport default class LoadingPortal extends Component {\n static propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n };\n\n constructor() {\n super();\n this.el = document.createElement('div');\n this.loadingPortalRoot = document.getElementById('loading-portal');\n }\n\n componentDidMount() {\n if (this.loadingPortalRoot) {\n this.loadingPortalRoot.appendChild(this.el);\n setTimeout(() => {\n this.el.classList.add('loading-portal-visible');\n }, 0);\n }\n }\n\n componentWillUnmount() {\n if (this.loadingPortalRoot) {\n this.loadingPortalRoot.removeChild(this.el);\n }\n }\n\n render() {\n const { children, className = 'loading-portal' } = this.props;\n this.el.className = className;\n return ReactDOM.createPortal(children, this.el);\n }\n}\n","import React from 'react';\nimport { cssTransition, ToastContainer } from 'react-toastify';\nimport AlertIcon from '@tradera/blueprint/theme/icons2/alert.svg?jsx';\nimport CheckIcon from '@tradera/blueprint/theme/icons2/check.svg?jsx';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\n\nimport 'react-toastify/dist/ReactToastify.css';\nimport './toasts.scss';\n\nvar SlideFade = /*#__PURE__*/ cssTransition({\n enter: 'Toastify--animate Toastify__slideFade-enter',\n exit: 'Toastify--animate Toastify__slideFade-exit'\n});\nconst options = {\n className: 'bp',\n transition: SlideFade,\n hideProgressBar: true,\n theme: 'colored',\n closeOnClick: false,\n draggablePercent: 40,\n autoClose: 5000,\n pauseOnFocusLoss: false,\n icon: ({ type }) =>\n ({\n // default, - no icon.\n info: ,\n success: ,\n warning: ,\n error: \n }[type]),\n closeButton({ closeToast }) {\n return (\n
    \n \n
    \n );\n }\n};\n\nexport const TraderaToastContainer = () => {\n return ;\n};\n","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 LOADING_QUICK_VIEW: 'UI/LOADING_QUICK_VIEW',\n OPEN_VIDEO_MODAL: 'UI/OPEN_VIDEO_MODAL',\n CLOSE_VIDEO_MODAL: 'UI/CLOSE_VIDEO_MODAL',\n OPEN_YOUTUBE_VIDEO_MODAL: 'UI/OPEN_YOUTUBE_VIDEO_MODAL',\n CLOSE_YOUTUBE_VIDEO_MODAL: 'UI/CLOSE_YOUTUBE_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 OPEN_MODAL: 'UI/OPEN_MODAL',\n CLOSE_MODAL: 'UI/CLOSE_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","import riot from 'riot';\nimport ajax from 'app/data/ajax';\nimport { localStore } from 'utils/storage';\nimport { toLocalizedRiotUrl } from 'tradera-apps/syi/script/app_react/utils/language';\n\nconst service = riot.observable();\nlet storageKey;\nlet rootUrl;\n\nconst get = function(url, data, onSuccess, onError) {\n ajax({\n url: url,\n method: 'GET',\n data: data,\n traditional: true,\n cache: false,\n statusCode: {\n 200: function(response) {\n onSuccess(response);\n }.bind(this),\n 500: function(response) {\n if (onError) {\n onError(response);\n }\n }\n }\n });\n};\n\nservice.setRootUrl = function(url) {\n rootUrl = toLocalizedRiotUrl(url);\n};\n\nservice.setStorageKey = function(key) {\n storageKey = key;\n};\n\nservice.getFeedbackItems = function(transactionIds, onSuccess, onError) {\n let data = {\n ids: transactionIds\n };\n\n const url = rootUrl + 'items';\n\n get(url, data, onSuccess, onError);\n};\n\nservice.getAllFeedbackItems = function(skip, take, onSuccess, onError) {\n let data = {\n skip: skip || 0,\n take: take || 10\n };\n let url = rootUrl + 'pageditems';\n\n get(url, data, onSuccess, onError);\n};\n\nconst getFeedbackStorageAsArray = function() {\n let currentStorageArray = localStore.getItem(storageKey);\n\n if (!Array.isArray(currentStorageArray)) {\n currentStorageArray = [];\n }\n\n return currentStorageArray;\n};\n\nconst _mergeAndSortStorage = function(newStorageArray, newItems, maxStorage) {\n newStorageArray = _.reject(newStorageArray, function(item) {\n return _.findWhere(newItems, { text: item.text });\n });\n\n newStorageArray = newStorageArray.concat(newItems);\n newStorageArray.sort(function(curr, next) {\n // Sorting on multiple values are tricky - but so am I.\n return (\n next.counter +\n '.' +\n next.searchTime -\n (curr.counter + '.' + curr.searchTime)\n );\n });\n\n return newStorageArray.slice(0, maxStorage);\n};\n\nconst _createNewFeedbackItemsToStore = function(data, newStorageArray) {\n let newItemsCounter = 0;\n let newItems = [];\n let existingItem;\n\n for (let i = 0; i < data.length; i++) {\n if (data[i].comment && data[i].comment.length > 0) {\n // Om data finns.\n existingItem = _.find(newStorageArray, { text: data[i].comment });\n if (existingItem) {\n newItems[newItemsCounter] = {\n text: existingItem.text,\n counter: existingItem.counter + 1\n };\n } else {\n newItems[newItemsCounter] = {\n text: data[i].comment,\n counter: 1\n };\n }\n newItems[newItemsCounter].searchTime = Date.now();\n newItemsCounter++;\n }\n }\n\n return newItems;\n};\n\nconst addFeedbackToStorage = function(data) {\n let newStorageArray = getFeedbackStorageAsArray() || [];\n let maxStorage = 10;\n let newItems = _createNewFeedbackItemsToStore(data, newStorageArray);\n\n if (newItems.length > 0) {\n newStorageArray = _mergeAndSortStorage(\n newStorageArray,\n newItems,\n maxStorage\n );\n localStore.setItem(storageKey, newStorageArray);\n }\n};\n\nservice.getFeedbackHistory = function() {\n return getFeedbackStorageAsArray();\n};\n\nservice.getStorageKey = function() {\n return storageKey;\n};\n\nservice.submitData = function(data, cb, error) {\n ajax({\n url: rootUrl + 'save',\n method: 'POST',\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n traditional: true,\n statusCode: {\n 200: function(response) {\n addFeedbackToStorage(data);\n if (response.failures?.length > 0) {\n error(response);\n } else {\n cb(response);\n }\n },\n 400: function(response) {\n error(response);\n }\n }\n });\n};\n\nservice.saveAutomaticFeedback = function(data, cb) {\n ajax({\n url: toLocalizedRiotUrl('/my/profile/save-automatic-feedback'),\n method: 'POST',\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n traditional: true,\n statusCode: {\n 200: function(response) {\n let comments = [];\n if (data.message && data.message.length > 0) {\n comments.push({ comment: data.message });\n addFeedbackToStorage(comments);\n }\n cb(response);\n }\n }\n });\n};\n\nexport default service;\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst OnDisplayBadge = ({ className }) => {\n const { t } = useTranslator();\n return (\n \n {t('itemCard_onDisplay')}\n \n );\n};\n\nexport default OnDisplayBadge;\n","export default {\n SET_PAGE_TYPE: 'PAGE/SET_PAGE_TYPE',\n SET_PAGE_META_FROM_SEARCH_RESULT: 'PAGE/SET_PAGE_META_FROM_SEARCH_RESULT',\n SET_PAGE_META: 'PAGE/SET_PAGE_META'\n};\n","import React from 'react';\nimport { compose } from 'redux';\nimport PropTypes from 'prop-types';\n\nimport MessagingIcon from '@tradera/blueprint/theme/icons/mail.svg?jsx';\nimport uiActions from 'tradera-state/ui/actions';\nimport { logger } from 'packages';\nimport { withTranslator, withUrlLocalizer } from 'tradera-lang/translate';\n\nimport {\n checkUserMessagingParticipation,\n getMessagingPageLink,\n getMessagingThreadLink\n} from 'tradera-apps/my-tradera/app/helpers/messaging-helpers';\n\nclass MessagingButton extends React.Component {\n state = {\n buttonVisible: false\n };\n\n componentDidMount() {\n // Only show button if participation returns true\n checkUserMessagingParticipation(this.props.sellerId)\n .then(buttonVisible => {\n this.setState({\n buttonVisible\n });\n return undefined;\n })\n .catch(err => {\n this.setState({\n buttonVisible: false\n });\n logger(err);\n });\n }\n\n openMessagingModal = (title, src, participating) => {\n const { dispatch, isLoggedIn } = this.props;\n if (isLoggedIn) {\n dispatch(\n uiActions.openMessagingModal({ title, src, participating })\n );\n } else {\n this.handleLogin(src);\n }\n };\n\n handleLogin = href =>\n this.props.dispatch(uiActions.signIn({ redirectUrl: href }));\n\n render() {\n const {\n buyerId,\n sellerId,\n itemId,\n source,\n mode,\n className,\n memberId,\n toLocalizedUrl,\n t\n } = this.props;\n const { buttonVisible } = this.state;\n\n let href;\n if (buyerId && sellerId) {\n if (mode === 'modal') {\n href = getMessagingThreadLink(buyerId, sellerId, itemId, {\n traderaUserId: memberId,\n singleThread: true,\n openForm: true,\n source\n });\n } else {\n href = getMessagingPageLink(buyerId, sellerId, itemId, {\n traderaUserId: memberId,\n source\n });\n }\n } else {\n href = window.location.pathname;\n }\n\n const BUTTON_LABELS = {\n ask_seller: t('messaging_askTheSeller'),\n contact_seller: t('messaging_contactSeller'),\n contact_buyer: t('messaging_contactBuyer')\n };\n\n // Disable on user's own items\n const disableButton = buyerId === sellerId;\n\n if (buttonVisible) {\n if (mode === 'modal') {\n return (\n \n \n this.openMessagingModal(\n BUTTON_LABELS[source],\n toLocalizedUrl(href),\n buttonVisible\n )\n }\n disabled={disableButton}>\n \n \n {BUTTON_LABELS[source]}\n \n \n {disableButton && (\n \n {t('messaging_contactSelfText')}\n \n )}\n \n );\n } else {\n return (\n \n \n \n {BUTTON_LABELS[source]}\n \n \n );\n }\n } else {\n return null;\n }\n }\n}\nMessagingButton.propTypes = {\n isLoggedIn: PropTypes.bool,\n memberId: PropTypes.string,\n className: PropTypes.string,\n buyerId: PropTypes.string.isRequired,\n sellerId: PropTypes.string.isRequired,\n itemId: PropTypes.string.isRequired,\n source: PropTypes.string.isRequired,\n mode: PropTypes.string,\n t: PropTypes.func.isRequired\n};\n\nMessagingButton.defaultProps = {\n className: '',\n buyerId: '',\n sellerId: '',\n itemId: '',\n source: '',\n mode: 'link'\n};\n\nexport default compose(withUrlLocalizer, withTranslator)(MessagingButton);\n","import axios from 'axios';\nimport { handleError } from 'tradera-utils/api';\n\nexport const saveLanguageSetting = (code, toLocalizedUrl) =>\n axios\n .post(toLocalizedUrl('/my/profile/save-language-setting'), {\n languageCodeIso2: code\n })\n .catch(handleError());\n\n// Export object for Sinon stubbing\nexport default {\n saveLanguageSetting\n};\n","import Analytics from 'packages/analytics';\nimport logger from 'packages/logger';\nimport locationUtils from 'tradera-utils/location';\nimport api from './api';\nimport { selectIsLoggedIn } from 'tradera-state/member';\nimport { setPreferred } from './reducer';\nimport cookieUtil from 'tradera-utils/cookie';\nimport { PREFERRED_LANGUAGE } from 'tradera-constants/cookies';\n\n/**\n * Sets new preferred language\n * @param {string} code - example: 'sv' or 'en'\n */\nexport const setPreferredLanguage = (code, toLocalizedUrl) => async (\n dispatch,\n getState\n) => {\n Analytics.trackEvent({\n category: 'Settings',\n action: 'Language',\n label: code\n });\n\n try {\n if (selectIsLoggedIn(getState())) {\n await api.saveLanguageSetting(code, toLocalizedUrl);\n } else {\n cookieUtil.createCookie(PREFERRED_LANGUAGE, code);\n }\n dispatch(setPreferred(code));\n locationUtils.reloadLocalized(code);\n } catch (error) {\n logger(error);\n }\n};\n","export const TRACK_REDUX_ACTIONS = ['SET_DRAFT_ID', 'SET_DRAFT_VERSION'];\n// Note: Don't add large objects - Sentry will reject events over 200kB\nexport const SAVE_REDUX_STATE_PATHS = [\n 'views.syi.draft.draftId',\n 'views.syi.draft.itemId',\n 'views.syi.draft.version',\n 'views.syi.syi.autoSaveEnabled'\n];\n","import _ from 'underscore';\nimport * as Sentry from '@sentry/react';\nimport { setNestedObjectValue } from 'tradera-utils/set-nested-object-value';\nimport {\n TRACK_REDUX_ACTIONS,\n SAVE_REDUX_STATE_PATHS\n} from 'tradera-constants/sentry-redux-filters';\n\nexport const actionTransformer = action =>\n TRACK_REDUX_ACTIONS.includes(action.type) ? action : null;\n\nexport const stateTransformer = state =>\n SAVE_REDUX_STATE_PATHS.reduce((sentryState, keyString) => {\n const keyArray = keyString.split('.');\n if (_.has(state, keyArray)) {\n const value = _.get(state, keyArray);\n setNestedObjectValue(sentryState, keyArray, value);\n }\n\n return sentryState;\n }, {});\n\nexport const sentryReduxEnhancer = Sentry.createReduxEnhancer({\n actionTransformer,\n stateTransformer\n});\n","export const setNestedObjectValue = (object, keyPathArray, value) => {\n keyPathArray.reduce((acc, key, index, array) => {\n if (index + 1 < array.length) {\n acc[key] = acc[key] || {};\n } else {\n acc[key] = value;\n }\n return acc[key];\n }, object);\n};\n","import { globalStore } from 'tradera-state/configure-store';\nimport draftActions from './draft-actions';\n\nconst store = globalStore();\n\nexport default {\n setIsPropertyEditMode: function(isPropertyEditMode) {\n store.dispatch({\n type: 'SET_IS_PROPERTY_EDIT_MODE',\n payload: isPropertyEditMode\n });\n },\n setCreationType: function(creationType) {\n store.dispatch({\n type: 'SET_CREATION_TYPE',\n payload: creationType\n });\n },\n showAllErrors: function() {\n store.dispatch({\n type: 'SHOW_ALL_ERRORS'\n });\n },\n hideAllErrors: function() {\n store.dispatch({\n type: 'HIDE_ALL_ERRORS'\n });\n },\n setIsEditOfPublishedItem: isEditOfPublishedItem => dispatch => {\n dispatch({\n type: 'SET_IS_EDIT_OF_PUBLISHED_ITEM',\n payload: isEditOfPublishedItem\n });\n },\n resetPublishState: function() {\n store.dispatch({\n type: 'RESET_PUBLISH_STATE'\n });\n },\n\n setCategoryRestriction: function(restriction) {\n store.dispatch({\n type: 'SET_CATEGORY_RESTRICTION',\n payload: restriction\n });\n store.dispatch(\n draftActions.updateItemConditionRestrictionForCategory()\n );\n },\n toggleModal: modalId => ({\n type: 'TOGGLE_MODAL',\n payload: modalId\n }),\n showModal: function(modalId, modalData) {\n store.dispatch({\n type: 'SHOW_MODAL',\n modalId: modalId,\n modalData: modalData\n });\n },\n hideModal: function() {\n store.dispatch({\n type: 'HIDE_MODAL'\n });\n },\n reset: function() {\n store.dispatch({\n type: 'RESET_SYI'\n });\n },\n enableAutoSave: () => dispatch => {\n dispatch({\n type: 'ENABLE_AUTOSAVE'\n });\n },\n disableAutoSave: () => dispatch => {\n dispatch({\n type: 'DISABLE_AUTOSAVE'\n });\n }\n};\n","import { createSlice } from '@reduxjs/toolkit';\nimport getInitialState from 'tradera-state/views/cart/initial-state';\n\nconst cartSlice = createSlice({\n name: 'cart',\n initialState: getInitialState(),\n reducers: {\n setFetching: (state, { payload }) => {\n state.isFetching = payload;\n },\n setCartData: (state, { payload }) => {\n state.isFetching = false;\n state.merchantPreOrders = payload.merchantPreOrders;\n state.errors = {};\n },\n setError: (state, { payload }) => {\n state.errors[payload.id] = payload.message;\n }\n }\n});\n\nexport const { setFetching, setCartData, setError } = cartSlice.actions;\n\nexport default cartSlice.reducer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport HoverMenu from './hover-menu/hover-menu';\nimport HoverMenuItem from './hover-menu/hover-menu-item';\nimport HoverMenuItemSeparator from './hover-menu/hover-menu-separator';\nimport { getMenuGaAttributes } from './site-header.analytics.js';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport PenIcon from '@tradera/blueprint/theme/icons2/pen.svg?jsx';\nimport WriteIcon from '@tradera/blueprint/theme/icons2/write.svg?jsx';\nimport SaleIcon from '@tradera/blueprint/theme/icons2/sale.svg?jsx';\nimport ListIcon from '@tradera/blueprint/theme/icons2/list.svg?jsx';\nimport PackageIcon from '@tradera/blueprint/theme/icons2/package.svg?jsx';\nimport RatingPositiveIcon from '@tradera/blueprint/theme/icons2/rating-positive.svg?jsx';\nimport SoldIcon from '@tradera/blueprint/theme/icons2/sold.svg?jsx';\nimport UnsoldIcon from '@tradera/blueprint/theme/icons2/unsold.svg?jsx';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\n\nconst getGaAttributes = label =>\n getMenuGaAttributes('Top navigation', 'Selling menu', label);\n\nconst SellMenu = ({ showMenu }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const isTraderaShopEnabled = useIsFeatureEnabled('tradera-shop');\n return (\n \n }\n gaAttributes={getGaAttributes('Create new listing')}\n />\n }\n gaAttributes={getGaAttributes('Listing templates')}\n />\n \n }\n gaAttributes={getGaAttributes('Active listings')}\n />\n }\n gaAttributes={getGaAttributes('Sold listings')}\n />\n }\n gaAttributes={getGaAttributes('Unsold listings')}\n />\n }\n gaAttributes={getGaAttributes('Picklist')}\n />\n \n }\n gaAttributes={getGaAttributes('Rate buyer')}\n />\n {isTraderaShopEnabled && (\n <>\n \n \n {t('siteHeader_buyShippingBags')}{' '}\n \n {t('siteHeader_new')}\n \n \n }\n link={toLocalizedUrl('/tradera-shop/shipping-bags')}\n icon={}\n gaAttributes={getGaAttributes('Buy shipping bags')}\n />\n \n )}\n \n );\n};\n\nSellMenu.propTypes = {\n showMenu: PropTypes.bool\n};\n\nexport default SellMenu;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport SaleIcon from '@tradera/blueprint/theme/icons2/sale.svg?jsx';\nimport SellMenu from './sell-menu';\nimport { HOVER_MENUS } from './hover-menu/constants';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\n\nconst SellingLink = ({\n onClick,\n mouseOver,\n mouseOut,\n onBlur,\n transparentHeader,\n showMenu\n}) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const selling = t('siteHeader_selling');\n\n return (\n mouseOver(HOVER_MENUS.SELL)}\n onMouseLeave={mouseOut}>\n {\n onClick(e, HOVER_MENUS.SELL);\n }}\n onBlur={onBlur}>\n \n \n {selling}\n \n \n \n \n );\n};\n\nSellingLink.propTypes = {\n onClick: PropTypes.func,\n mouseOver: PropTypes.func,\n mouseOut: PropTypes.func,\n showMenu: PropTypes.bool\n};\n\nexport default React.memo(SellingLink);\n","// extracted by mini-css-extract-plugin\nexport default {\"with-arrow-top\":\"with-arrow-top--3SozC\",\"withArrowTop\":\"with-arrow-top--3SozC\"};","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","import dayjs from 'dayjs';\n\nexport const formatDate = date => dayjs(date).format('D MMM HH:mm');\n\n/**\n * Format a number of seconds to an object of time units\n *\n * @param {number} seconds\n * @param {object} [options]\n * @param {string} [options.startUnit] - Time part to start counting from, empty for all parts\n * @param {string} [options.endUnit] - Time part to stop counting on, empty for all parts\n * @returns {{string: integer}}\n */\nexport const getTimeSpanParts = (seconds, options = {}) => {\n const optionsWithDefaults = {\n startUnit: '',\n endUnit: '',\n ...options\n };\n const parts = {};\n let remaining = seconds;\n let started = !optionsWithDefaults.startUnit;\n for (const [part, length] of Object.entries(TIME_SPAN_UNIT_LENGTHS)) {\n if (!started && part === optionsWithDefaults.startUnit) started = true;\n if (started) {\n if (remaining >= length) {\n parts[part] = Math.floor(remaining / length);\n }\n remaining %= length;\n if (remaining === 0 || optionsWithDefaults.endUnit === part) break;\n }\n }\n return parts;\n};\n\nexport const TIME_SPAN_UNITS = {\n DAYS: 'days',\n HOURS: 'hours',\n MINUTES: 'minutes',\n SECONDS: 'seconds'\n};\n\nconst TIME_SPAN_UNIT_LENGTHS = {\n [TIME_SPAN_UNITS.DAYS]: 24 * 60 * 60,\n [TIME_SPAN_UNITS.HOURS]: 60 * 60,\n [TIME_SPAN_UNITS.MINUTES]: 60,\n [TIME_SPAN_UNITS.SECONDS]: 1\n};\n","import React from 'react';\nimport Spinner from 'static/script/libs/spin';\n\nexport default class JsxSpinner extends React.Component {\n componentDidMount() {\n const { config } = this.props;\n const spinjsConfig = {\n width: 2,\n length: 4,\n radius: 5,\n lines: 11,\n color: '#404a54',\n ...config // overwrite default\n };\n\n this.spinner = new Spinner(spinjsConfig);\n this.spinner.spin(this.spinnerEl);\n }\n\n componentWillUnmount() {\n this.spinner.stop();\n }\n\n render() {\n const { className } = this.props;\n return (\n {\n this.spinnerEl = el;\n }}\n />\n );\n }\n}\n","import React from 'react';\n\nconst BottomButtons = ({ leftButton, rightButton }) => {\n return (\n
    \n
    \n \n {leftButton.text}\n \n
    \n
    \n \n {rightButton.text}\n \n
    \n
    \n );\n};\n\nexport default BottomButtons;\n","export const actionTypes = {\n PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING:\n 'PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING',\n PURCHASE_ORDER_SHIPPED: 'PURCHASE_ORDER_SHIPPED',\n PURCHASE_ORDER_LIST: 'PURCHASE_ORDER_LIST',\n PURCHASE_ORDER_PAID_BY_SELLER: 'PURCHASE_ORDER_PAID_BY_SELLER',\n PURCHASE_ORDER_PAID_BY_BUYER: 'PURCHASE_ORDER_PAID_BY_BUYER',\n PURCHASE_ORDER_RESET: 'PURCHASE_ORDER_RESET',\n PURCHASE_ORDER_DELETE_SHIPMENT: 'PURCHASE_ORDER_DELETE_SHIPMENT',\n PURCHASE_ORDER_HIDDEN: 'PURCHASE_ORDER_HIDDEN',\n PURCHASE_ORDERS_SHIPPING_BOOKED: 'PURCHASE_ORDERS_SHIPPING_BOOKED',\n PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER:\n 'PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER',\n PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER:\n 'PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER'\n};\n","import ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n axiosWithTokenRefresh,\n finalizeResponse,\n handleError,\n axiosConfigs\n} from 'tradera-utils/api';\n\nexport const getCartOverview = async (cartId, countryCode) => {\n return axiosWithTokenRefresh()\n .get(\n `${ENDPOINTS.CART_OVERVIEW_VIEW}/${cartId}?shippingCountryCodeIso2=${countryCode}`,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n};\n\nexport const addItemToCart = async (cartId, itemId, price) => {\n const params = { cartId: cartId, itemId: itemId, price: price };\n return axiosWithTokenRefresh()\n .post(`${ENDPOINTS.CART_ADD_ITEM}`, params, axiosConfigs.authenticated)\n .then(finalizeResponse())\n .catch(handleError());\n};\n\nexport const removeItemsFromCart = async (cartId, itemIds) => {\n const params = { cartId: cartId, itemIds: itemIds };\n return axiosWithTokenRefresh()\n .post(\n `${ENDPOINTS.CART_REMOVE_ITEMS}`,\n params,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n};\n\nexport const setCartItemQuantity = async (cartId, itemId, quantity) => {\n const params = { cartId: cartId, itemId: itemId, quantity: quantity };\n return axiosWithTokenRefresh()\n .post(\n `${ENDPOINTS.CART_SET_ITEM_QUANTITY}`,\n params,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n};\n\nexport const confirmCartPurchase = async (shopItems, googleAnalyticsData) => {\n const params = {\n shopItems: shopItems,\n googleAnalyticsData: googleAnalyticsData\n };\n return axiosWithTokenRefresh()\n .post(\n `${ENDPOINTS.ORDER_PURCHASE_SHOP_ITEMS}`,\n params,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n};\n\nexport const startOffPlatformCheckout = async itemId => {\n const params = { itemId: itemId };\n return axiosWithTokenRefresh()\n .post(\n `${ENDPOINTS.START_OFF_PLATFORM_CHECKOUT}`,\n params,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n};\n\nexport const createUncommittedPurchaseOrder = async (\n purchaseOrderId,\n sellerMemberId,\n shopItems\n) => {\n const params = {\n purchaseOrderId,\n sellerMemberId,\n purchaseOrderItems: shopItems\n };\n return axiosWithTokenRefresh()\n .post(\n `${ENDPOINTS.ORDER_CHECKOUT_CREATE_UNCOMMITTED_PURCHASE_ORDER}`,\n params,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n};\n\n// Temporary call to make TouchWeb update the cart item count + price. Remove once it's fully moved to React.\nexport const updateCartSummary = async cartId => {\n const params = { cartId: cartId };\n return axiosWithTokenRefresh()\n .post(\n `${ENDPOINTS.CART_UPDATE_SUMMARY}`,\n params,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n};\n\n// Export object for Sinon stubbing\nexport default {\n getCartOverview,\n addItemToCart,\n removeItemsFromCart,\n setCartItemQuantity,\n updateCartSummary,\n confirmCartPurchase,\n startOffPlatformCheckout,\n createUncommittedPurchaseOrder\n};\n","import { logger } from 'packages';\nimport api from './api';\nimport utils from '../checkout/utils';\nimport { setFetching, setCartData, setError } from './reducer';\nimport * as analytics from 'tradera-apps/tradera/components/vip/helpers/analytics';\nimport cookieUtil from 'tradera-utils/cookie';\nimport { CART_ID } from 'tradera-constants/cookies';\nimport { selectShippingCountry } from 'tradera-state/shipping-region/selectors';\n\nexport const fetchCartData = cartId => async (dispatch, getState) => {\n dispatch(setFetching(true));\n\n try {\n const { countryCodeIso2 } = selectShippingCountry(getState());\n const checkoutData = await api.getCartOverview(cartId, countryCodeIso2);\n\n const { data } = checkoutData;\n\n dispatch(setCartData(data));\n } catch (error) {\n logger(error);\n dispatch(setFetching(false));\n }\n};\n\nexport const addItemToCart = (\n cartId,\n itemId,\n price,\n onSuccess\n) => async dispatch => {\n dispatch(setFetching(true));\n\n try {\n const addItemResult = await api.addItemToCart(cartId, itemId, price);\n if (addItemResult.status === 200) {\n cartId = addItemResult.data.cartId;\n let date = new Date();\n date.setMonth(date.getMonth() + 2);\n cookieUtil.createCookie(CART_ID, cartId, date);\n }\n await api.updateCartSummary(cartId);\n onSuccess();\n } catch (error) {\n logger(error);\n dispatch(setFetching(false));\n }\n};\n\nexport const removeItemsFromCart = (cartId, itemIds) => async dispatch => {\n dispatch(setFetching(true));\n\n try {\n await api.removeItemsFromCart(cartId, itemIds);\n await api.updateCartSummary(cartId);\n dispatch(fetchCartData(cartId));\n } catch (error) {\n logger(error);\n dispatch(setFetching(false));\n }\n};\n\nexport const setCartItemQuantity = (\n cartId,\n itemId,\n quantity\n) => async dispatch => {\n dispatch(setFetching(true));\n\n try {\n await api.setCartItemQuantity(cartId, itemId, quantity);\n await api.updateCartSummary(cartId);\n dispatch(fetchCartData(cartId));\n } catch (error) {\n logger(error);\n dispatch(setFetching(false));\n }\n};\n\nexport const confirmCartPurchase = (\n cartId,\n preorderId,\n shopItems,\n onSuccess\n) => async (dispatch, getState) => {\n dispatch(setFetching(true));\n\n try {\n const confirmData = await api.confirmCartPurchase(\n shopItems,\n analytics.getGaTrackingData()\n );\n\n const { countryCodeIso2 } = selectShippingCountry(getState());\n await removeFromCartWithoutReload(\n cartId,\n shopItems.map(item => item.itemId),\n countryCodeIso2\n );\n\n onSuccess(confirmData.data.transactionIds[0]);\n } catch (error) {\n logger(error);\n dispatch(setFetching(false));\n\n const errorCode = error?.response?.data?.responseStatus?.errorCode;\n dispatch(setError({ id: preorderId, message: errorCode }));\n }\n};\n\nexport const createUncommittedPurchaseOrder = (\n cartId,\n preorderId,\n sellerMemberId,\n shopItems,\n onSuccess\n) => async dispatch => {\n dispatch(setFetching(true));\n const purchaseOrderId = utils.getUuid();\n\n try {\n await api.createUncommittedPurchaseOrder(\n purchaseOrderId,\n sellerMemberId,\n shopItems.flatMap(item =>\n Array(item.quantity).fill({\n itemId: item.itemId,\n itemPrice: item.expectedItemPrice\n })\n )\n );\n\n onSuccess(purchaseOrderId);\n } catch (error) {\n logger(error);\n dispatch(setFetching(false));\n\n const errorCode = error?.response?.data?.responseStatus?.errorCode;\n dispatch(setError({ id: preorderId, message: errorCode }));\n }\n};\n\nexport const startOffPlatformCheckout = (\n itemId,\n onSuccess\n) => async dispatch => {\n dispatch(setFetching(true));\n\n try {\n await api.startOffPlatformCheckout(itemId);\n onSuccess();\n } catch (error) {\n logger(error);\n dispatch(setFetching(false));\n }\n};\n\nexport const removeFromCartWithoutReload = async (\n cartId,\n itemIds,\n countryCodeIso2\n) => {\n if (!cartId) return;\n await api.removeItemsFromCart(cartId, itemIds);\n await api.updateCartSummary(cartId);\n\n const { data } = await api.getCartOverview(cartId, countryCodeIso2);\n setCartData(data);\n};\n","import React from 'react';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\nimport { useSelector } from 'react-redux';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { loadScript } from 'tradera-utils/script';\n\nconst LOCALES = {\n sv: 'sv-se',\n en: 'en-us',\n da: 'da-dk',\n de: 'de-de'\n};\n\nconst mapLocale = languageCodeIso2 =>\n languageCodeIso2 in LOCALES ? LOCALES[languageCodeIso2] : LOCALES['sv'];\n\nconst openQualtiveModal = async (config, translate) => {\n const { survey, title, ...surveyOptions } = config;\n const options = {\n title: translate(title ? title : 'qualtiveTitle_default'),\n darkMode: 'never',\n ...surveyOptions\n };\n\n if (!window.qualtive) {\n await loadScript('https://static.qualtive.io/client/web.v1.js');\n }\n window.qualtive?.present(survey, options);\n};\n\nexport const useQualtive = () => {\n const { t } = useTranslator();\n const isQualtiveFeatureToggleEnabled = useSelector(\n state => state.environment?.featureSwitches?.['qualtive-feedback']\n );\n const memberId = useSelector(state => state.member?.memberId);\n const languageCodeIso2 = useSelector(\n state => state.language?.preferred?.languageCodeIso2\n );\n const isQualtiveEnabled =\n isQualtiveFeatureToggleEnabled && GdprSettings.isFunctionalEnabled();\n const config = {\n locale: mapLocale(languageCodeIso2)\n };\n if (memberId) {\n config.user = { id: memberId };\n }\n\n return {\n isQualtiveEnabled,\n openQualtiveModal: survey => {\n if (isQualtiveEnabled) {\n openQualtiveModal(\n {\n ...config,\n ...survey\n },\n t\n );\n }\n }\n };\n};\n\nexport const withQualtive = WrappedComponent => {\n function WithQualtive(props) {\n const { isQualtiveEnabled, openQualtiveModal } = useQualtive();\n return (\n \n );\n }\n\n WithQualtive.displayName = `withQualtive(${WrappedComponent.displayName ||\n WrappedComponent.name}`;\n\n return WithQualtive;\n};\n","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","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { logger } from 'packages';\n\nclass ApplicationErrorBoundary extends React.Component {\n state = { hasError: false };\n\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n\n componentDidCatch(error) {\n const { capture } = this.props;\n if (capture) capture(error);\n }\n\n render() {\n const { hasError } = this.state;\n const { children, fallback } = this.props;\n return hasError ? fallback : children;\n }\n}\n\nApplicationErrorBoundary.propTypes = {\n // Capture function, if false then errors are silently ignored\n capture: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]).isRequired,\n fallback: PropTypes.node\n};\n\nApplicationErrorBoundary.defaultProps = {\n capture: logger,\n fallback: null\n};\n\nexport default ApplicationErrorBoundary;\n","export const INTERNATIONAL_SHIPPING_MODAL_ID = 'internationalShippingModalId';\n","import { useCallback, useState, useRef } from 'react';\nimport { useHistory, useLocation } from 'react-router';\nimport googleTagManagerService from 'app/ui/google-tagmanager-service';\n\nimport { getCurrentPageFromRoute } from 'tradera-helpers/get-current-page-helper';\nimport { isDev } from 'static/script/utils/environment';\nimport { useOnMount } from 'tradera-hooks';\nimport { useTimeout } from 'tradera-hooks/use-timeout';\nimport { useStore } from 'react-redux';\n\nconst loadWarningTimeout = 5000;\n\nconst logDebug = message => {\n if (isDev()) {\n console.log(\n `%c ${message} `,\n 'background:green; color:white; font-size:12px;'\n );\n }\n};\n\nconst logWarning = message => {\n if (isDev()) {\n console.log(\n `%c Warning! ${message} `,\n 'background:yellow; color:black; font-size:12px;'\n );\n }\n};\n\nexport const useLoading = routeMap => {\n const NOT_LOADED = 0;\n const LOADING = 1;\n const LOADED = 2;\n const [currentPage, setCurrentPage] = useState(null);\n const [status, setStatus] = useState(NOT_LOADED);\n const navigationKeyRef = useRef(0);\n const [navigationKey, setNavigationKey] = useState(\n navigationKeyRef.current\n );\n const store = useStore();\n const location = useLocation();\n const history = useHistory();\n const isLoading = status === LOADING;\n const isLoaded = status === LOADED;\n\n const setLoading = useCallback(() => {\n if (navigationKey !== navigationKeyRef.current) {\n logWarning('Old setLoading was called');\n return;\n }\n setStatus(oldStatus => {\n if (oldStatus !== NOT_LOADED) {\n logWarning(`Bad state: ${oldStatus}`);\n }\n return LOADING;\n });\n }, [navigationKey]);\n\n const setLoaded = useCallback(() => {\n if (navigationKey !== navigationKeyRef.current) {\n logWarning('Old setLoaded was called');\n return;\n }\n currentPage.onLoaded && currentPage.onLoaded(store.getState);\n googleTagManagerService.trackPageView();\n logDebug(`${currentPage.pageType} page is loaded`);\n setStatus(oldStatus => {\n if (oldStatus === LOADED) {\n logWarning('Already loaded');\n }\n return LOADED;\n });\n }, [navigationKey, currentPage, store]);\n\n const onNavigate = useCallback(\n location => {\n const page = getCurrentPageFromRoute(routeMap, location);\n if (!page) {\n logWarning(`No page for ${location.pathname}`);\n return;\n }\n\n googleTagManagerService.newSpaPage(page.pageType);\n setNavigationKey(++navigationKeyRef.current);\n setCurrentPage(previousPage => {\n logDebug(`${previousPage?.pageType} -> ${page?.pageType}`);\n return page;\n });\n setStatus(NOT_LOADED);\n\n if (!page.mustLoadDataBeforePageTracking) {\n page.onLoaded && page.onLoaded(store.getState);\n googleTagManagerService.trackPageView();\n setStatus(() => {\n logDebug(\n `${page.pageType} page is loaded, data not required.`\n );\n return LOADED;\n });\n }\n },\n [routeMap, store]\n );\n\n useOnMount(() => {\n onNavigate(location);\n return history.listen(onNavigate);\n });\n\n // Monitor that a page comes loaded. If not we need to know\n useTimeout(\n () => {\n logWarning(\n `Page tracking may not be working, still waiting for data to load after ${loadWarningTimeout /\n 1000} s. PageType: ${currentPage.pageType} path: ${\n location.pathname\n }`\n );\n },\n isLoaded ? 0 : loadWarningTimeout,\n [isLoaded]\n );\n\n return {\n isLoading,\n isLoaded,\n setLoaded,\n setLoading\n };\n};\n","import { useEffect, useRef } from 'react';\n\nexport function useTimeout(callback, delay, dependencies) {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n if (delay > 0) {\n const id = setTimeout(() => savedCallback.current(), delay);\n return () => clearTimeout(id);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [delay, ...dependencies]);\n}\n","import React from 'react';\nimport { Route, Switch } from 'react-router';\nimport { useLoading } from './use-loading';\n\nconst render = (page, loadStatus) => {\n return props =>\n page.render({\n ...props,\n loadStatus,\n pageType: page.pageType\n });\n};\n\nexport const RouteMapRoutes = ({ routeMap }) => {\n const loading = useLoading(routeMap);\n return (\n <>\n \n {Object.keys(routeMap).map(page => (\n \n ))}\n \n \n );\n};\n","import { localStore } from 'utils/storage';\n\nclass ResultSet {\n constructor(result) {\n this._result = result;\n this._result.orderByTimestamp = this.orderByTimestamp.bind(this);\n this._result.orderByValue = this.orderByValue.bind(this);\n this._result.orderByExpire = this.orderByExpire.bind(this);\n }\n\n get() {\n return this._result;\n }\n\n _orderBy(orderProp) {\n function orderByProp(a, b) {\n if (a[orderProp] === b[orderProp]) {\n return 0;\n }\n\n return a[orderProp] < b[orderProp] ? 1 : -1;\n }\n\n return this._result.sort(orderByProp);\n }\n\n orderByTimestamp() {\n return this._orderBy('timestamp');\n }\n\n orderByValue() {\n return this._orderBy('value');\n }\n\n orderByExpire() {\n return this._orderBy('expires');\n }\n}\n\nclass StorageService {\n constructor(namespace, options = {}) {\n this.namespace = namespace || 'default';\n this.datastore = options.datastore || localStore;\n }\n\n getDataSafe() {\n return this.datastore.getItem(this.namespace) || {};\n }\n\n store(data) {\n this.datastore.setItem(this.namespace, data);\n return true;\n }\n\n remove(key) {\n let data = this.getDataSafe(),\n encodedKey = encodeURI(key).toLowerCase();\n\n this.purge(encodedKey, data);\n }\n\n purge(key, data) {\n delete data[key];\n this.store(data);\n return true;\n }\n\n get(key) {\n let data = this.getDataSafe(),\n encodedKey = encodeURI(key).toLowerCase();\n\n if (\n data[encodedKey] &&\n data[encodedKey].expires &&\n data[encodedKey].expires < new Date().getTime()\n ) {\n this.purge(encodedKey, data);\n }\n\n return (data[encodedKey] && data[encodedKey].value) || null;\n }\n\n set(key, value, expires, timestamp) {\n let data = this.getDataSafe(),\n encodedKey = encodeURI(key).toLowerCase();\n\n data[encodedKey] = {\n expires: (expires && expires.getTime()) || null,\n timestamp:\n (timestamp && timestamp.getTime()) || new Date().getTime(),\n value: value\n };\n\n this.datastore.setItem(this.namespace, data);\n\n return data[encodedKey] || null;\n }\n\n removeExpired() {\n let data = this.getDataSafe(),\n prop;\n\n for (prop in data) {\n if (data.hasOwnProperty(prop)) {\n if (\n data[prop].expires &&\n data[prop].expires < new Date().getTime()\n ) {\n this.purge(prop, data);\n }\n }\n }\n }\n\n fetch() {\n function addRow(row, prop, propValue) {\n row.key = decodeURI(prop);\n row.value = propValue.value;\n row.timestamp = propValue.timestamp;\n return row;\n }\n\n let data = this.getDataSafe(),\n rows = [],\n prop;\n\n for (prop in data) {\n if (data.hasOwnProperty(prop)) {\n rows.push(addRow({}, prop, data[prop]));\n }\n }\n\n return new ResultSet(rows).get();\n }\n\n flush() {\n return this.datastore.clearByPrefix(this.namespace);\n }\n}\n\nexport default StorageService;\n","export default {\n list: [],\n topLevelCategories: [],\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 React from 'react';\nimport { useUrlLocalizer, useTranslator } from 'tradera-lang/translate';\n\nconst SellerName = ({\n memberId,\n cleanedAlias,\n alias,\n hasBackground,\n isCompany,\n hasShop\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const { t } = useTranslator();\n\n const badgeText =\n (hasShop && t('vip_sellerInfoHasStore')) ||\n (isCompany && t('vip_sellerInfoCompany'));\n\n return (\n <>\n \n \n {badgeText && (\n \n {badgeText}\n \n )}\n \n {alias}\n \n \n \n \n );\n};\n\nexport default SellerName;\n","import React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport LoadingIcon from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\nimport LoadingPortal from 'tradera-components/portals/loading-portal';\nimport 'tradera-components/portals/loading-portal.scss';\nimport './loader.scss';\n\nconst LoaderComponent = ({\n className,\n children,\n visibleClassName,\n ...otherProps\n}) => {\n const loaderRef = useRef(null);\n useEffect(() => {\n const timeout = setTimeout(() => {\n loaderRef?.current?.classList.add(visibleClassName);\n }, 0);\n return () => clearTimeout(timeout);\n }, [visibleClassName]);\n\n return (\n
    \n {children}\n
    \n );\n};\n\n// Global loading with overlay that covers the whole page, except top menu\nconst GlobalLoader = () => (\n \n \n \n);\n\n// Legacy global loader that uses portal\nconst PortalLoader = () => (\n \n \n \n);\n\n// Local loader that covers its closest positioned parent\n// Tip: use position-relative class for containing parent\nconst LocalLoader = ({ className = '', ...otherProps }) => (\n \n \n \n);\n\nconst Loader = ({ usePortal }) => {\n return usePortal ? : ;\n};\n\nLoader.propTypes = {\n usePortal: PropTypes.bool.isRequired\n};\n\nLoader.defaultProps = {\n usePortal: true\n};\n\nexport default Loader;\nexport { PortalLoader, GlobalLoader, LocalLoader };\n","import axios from 'axios';\nimport qs from 'qs';\nimport {\n utilizeCancelToken,\n checkResponseVersion,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\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 console.warn(\n 'getSearchResults must have queryParams as the first argument'\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 React from 'react';\nimport ItemCard from 'tradera-components/item-card/item-card';\nimport ItemListCard from 'tradera-components/item-card/item-list-card';\nimport {\n useBreakpoint,\n BREAKPOINTS\n} from 'tradera-components/breakpoint/breakpoint';\nimport { DesktopAd, TabletAd, MobileAd } from './ads/search-results-ads';\nimport { lazyLoadSettings } from 'tradera-components/item-card/config';\nimport useIsMobile from 'tradera-hooks/use-is-mobile';\n\nconst DESKTOP_AD_OFFSET = 0;\nconst TABLET_AD_OFFSET = 0;\nconst MOBILE_AD_OFFSET = 6;\nconst AD_FREQUENCY = 12;\nconst AD_FREQUENCY_FULL_WIDTH = 16;\n\nconst getAdFrequency = (currentBreakpoint, itemLayout, siteLayout) => {\n if (\n currentBreakpoint === BREAKPOINTS.XL &&\n itemLayout === 'layout-grid' &&\n siteLayout === 'site-width-full'\n ) {\n return AD_FREQUENCY_FULL_WIDTH;\n } else {\n return AD_FREQUENCY;\n }\n};\n\nconst ItemsWithStitchedAds = ({\n adsEnabled,\n handleAddToWishlist,\n handleQuickViewClick,\n handleRemoveFromWishlist,\n handleOpenItemSettings,\n handleItemAttributesForFilterClick,\n itemLayout,\n items,\n pageIndex,\n preferredCurrency,\n quickViewEnabled,\n siteLayout,\n skipTopAd,\n isShopOwnedByCurrentMember\n}) => {\n const ItemCardComponent =\n itemLayout === 'layout-list' ? ItemListCard : ItemCard;\n\n const shouldUseNaturalImageMode =\n useIsMobile() && itemLayout === 'layout-grid-large';\n\n const imageMode = shouldUseNaturalImageMode ? 'NATURAL' : 'SQUARE';\n\n if (!(items && items.length > 0)) {\n return null;\n }\n\n return (\n (\n \n \n \n ))}\n />\n );\n};\n\nexport const ComponentsWithStitchAds = ({\n adsEnabled,\n components,\n itemLayout,\n pageIndex,\n siteLayout,\n skipTopAd\n}) => {\n const result = [];\n let mobileAdIndex = 0;\n let tabletAdIndex = 0;\n let desktopAdIndex = 0;\n\n const currentBreakpoint = useBreakpoint();\n\n if (!(components && components.length > 0)) {\n return null;\n }\n\n const adFrequency = getAdFrequency(\n currentBreakpoint,\n itemLayout,\n siteLayout\n );\n\n for (const [index, component] of components.entries()) {\n if (adsEnabled && pageIndex > 0) {\n if ((index - MOBILE_AD_OFFSET) % adFrequency === 0) {\n result.push(\n \n );\n mobileAdIndex += 1;\n }\n if ((index - TABLET_AD_OFFSET) % adFrequency === 0) {\n if (skipTopAd && index === 0) {\n desktopAdIndex += 1;\n } else {\n result.push(\n \n );\n tabletAdIndex += 1;\n }\n }\n if ((index - DESKTOP_AD_OFFSET) % adFrequency === 0) {\n if (skipTopAd && index === 0) {\n desktopAdIndex += 1;\n } else {\n result.push(\n \n );\n desktopAdIndex += 1;\n }\n }\n }\n result.push(component);\n\n //Add extra ad to the end for desktop if frequency 16\n if (index === components.length - 1 && adFrequency === 16) {\n result.push(\n \n );\n desktopAdIndex += 1;\n }\n }\n\n return result;\n};\n\nexport default ItemsWithStitchedAds;\n","import { createSlice } from '@reduxjs/toolkit';\nimport { isDenmarkCountryCode } from 'tradera-utils/countrycode';\nimport initData from 'init-data';\n\nconst initialState = {\n shortDescription: null,\n validationError: null,\n descriptionLanguageCodeIso2: null,\n isDescriptionLanguageCodeIso2ChangeAvailable:\n initData &&\n initData.memberCountryCodeIso2 &&\n isDenmarkCountryCode(initData.memberCountryCodeIso2) &&\n initData.featureSwitches &&\n initData.featureSwitches['danish-description']\n};\n\nconst getValidationError = state => {\n if (!state.shortDescription || state.shortDescription.trim() === '') {\n return 'syi_validation_missing_title';\n }\n\n if (\n state.isDescriptionLanguageCodeIso2ChangeAvailable &&\n !state.descriptionLanguageCodeIso2\n ) {\n return 'syi_validation_missing_descriptionLanguageCodeIso2';\n }\n};\n\nconst validate = state => ({\n ...state,\n validationError: getValidationError(state)\n});\n\nconst shortDescriptionSlice = createSlice({\n name: 'shortDescription',\n initialState,\n reducers: {\n setShortDescription: (state, action) =>\n validate({ ...state, shortDescription: action.payload }),\n resetShortDescription: state =>\n validate({ ...state, shortDescription: null }),\n setDescriptionLanguageCodeIso2: (state, action) =>\n validate({\n ...state,\n descriptionLanguageCodeIso2: action.payload\n })\n }\n});\n\nexport const {\n setShortDescription,\n resetShortDescription,\n setDescriptionLanguageCodeIso2\n} = shortDescriptionSlice.actions;\n\nexport default shortDescriptionSlice.reducer;\n","import React from 'react';\nimport QuickViewIcon from '@tradera/blueprint/theme/icons2/quick-view.svg?jsx';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst QuickViewButton = ({ className, iconClassName, onClick }) => {\n const { t } = useTranslator();\n return (\n \n \n \n );\n};\nexport default QuickViewButton;\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport ALink from 'tradera-components/alink';\nimport LoadingIcon from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\n\nconst noop = () => {};\n\nexport const Button = props => {\n const {\n theme,\n size,\n children,\n link,\n disabled,\n unbutton,\n wide,\n round,\n translucent,\n className,\n branded,\n outline,\n fluid,\n click,\n iconHidden,\n iconFixed,\n href,\n tag,\n loading,\n toggle,\n toggleActive,\n hoverColor,\n input,\n nowrap,\n ...otherProps\n } = props;\n\n const allClasses = {\n color:\n theme && outline\n ? `btn-outline-${theme}`\n : theme\n ? `btn-${theme}`\n : '',\n hover: hoverColor && `btn-hover-${hoverColor}`,\n size: size && `btn-${size}`,\n reset: unbutton && 'unbutton',\n transparent: translucent && 'btn-translucent',\n link: link && 'btn-link',\n wide: wide && 'btn-wide',\n round: round && 'btn-round',\n fluid: fluid && 'btn-fluid',\n loading: loading && 'btn-loading',\n tag: tag && 'btn-tag',\n hiddenIcon: iconHidden && 'btn--icon-hidden',\n fixedIcon: iconFixed && 'btn--icon-fixed',\n nowrap: nowrap && 'text-nowrap text-truncate',\n toggle:\n toggle && toggleActive\n ? 'btn-toggle active'\n : toggle\n ? 'btn-toggle'\n : ''\n };\n\n const buttonClasses = ['btn', className, ...Object.values(allClasses)]\n .filter(Boolean)\n .join(' ');\n\n const onBtnClick = useCallback(\n event => {\n if (typeof click === 'function' && !loading) {\n click(event);\n }\n },\n [click, loading]\n );\n\n if (input) {\n return ;\n }\n\n return href ? (\n \n {children}\n \n ) : (\n \n {children}\n {loading ? (\n \n ) : null}\n \n );\n};\n\nButton.propTypes = {\n theme: PropTypes.oneOf([\n 'branded',\n 'primary',\n 'secondary',\n 'tertiary',\n 'success',\n 'warning',\n 'danger',\n 'dark',\n 'function',\n 'info',\n 'light',\n 'white'\n ]),\n size: PropTypes.oneOf(['xs', 'sm', 'md', 'lg']),\n link: PropTypes.bool,\n disabled: PropTypes.bool,\n unbutton: PropTypes.bool,\n wide: PropTypes.bool,\n round: PropTypes.bool,\n translucent: PropTypes.bool,\n className: PropTypes.string,\n click: PropTypes.func,\n children: PropTypes.node,\n branded: PropTypes.bool,\n outline: PropTypes.bool,\n fluid: PropTypes.bool,\n iconHidden: PropTypes.bool,\n iconFixed: PropTypes.bool,\n href: PropTypes.string,\n tag: PropTypes.bool,\n loading: PropTypes.bool,\n toggle: PropTypes.bool,\n toggleActive: PropTypes.bool,\n hoverColor: PropTypes.string\n};\n\nButton.defaultProps = {\n click: noop,\n disabled: false\n};\n","export const ROLES = {\n BUYER: 'buyer',\n SELLER: 'seller'\n};\nexport const MAX_COMMENT_LENGTH = 80;\nexport const UNSET_RATING_VALUE = 0;\nexport const MIN_RATING_VALUE = 1;\nexport const MAX_RATING_VALUE = 5;\n\nexport const RATING_NAMES = {\n DESCRIPTION: 'ItemAsDescribed',\n COMMUNICATION: 'CommResponsiveness',\n SHIPPING_TIME: 'ShippingTime',\n SHIPPING_COST: 'ShippingHandlingCharges',\n PAYMENT_TIME: 'PaymentTime'\n};\n\nexport const RATING_NAMES_SELLER = [RATING_NAMES.PAYMENT_TIME];\n\nexport const RATING_NAMES_BUYER = [\n RATING_NAMES.DESCRIPTION,\n RATING_NAMES.COMMUNICATION,\n RATING_NAMES.SHIPPING_TIME,\n RATING_NAMES.SHIPPING_COST\n];\n\nexport const RATING_SETTINGS = {\n [RATING_NAMES.DESCRIPTION]: {\n name: RATING_NAMES.DESCRIPTION,\n titleKey: 'leaveFeedback_rateItemAsDecribedTitle',\n descriptionKeys: [\n 'leaveFeedback_rateItemAsDecribed_ratingOne',\n 'leaveFeedback_rateItemAsDecribed_ratingTwo',\n 'leaveFeedback_rateItemAsDecribed_ratingThree',\n 'leaveFeedback_rateItemAsDecribed_ratingFour',\n 'leaveFeedback_rateItemAsDecribed_ratingFive'\n ]\n },\n [RATING_NAMES.COMMUNICATION]: {\n name: RATING_NAMES.COMMUNICATION,\n titleKey: 'leaveFeedback_rateCommResponsivenessTitle',\n descriptionKeys: [\n 'leaveFeedback_rateCommResponsiveness_ratingOne',\n 'leaveFeedback_rateCommResponsiveness_ratingTwo',\n 'leaveFeedback_rateCommResponsiveness_ratingThree',\n 'leaveFeedback_rateCommResponsiveness_ratingFour',\n 'leaveFeedback_rateCommResponsiveness_ratingFive'\n ]\n },\n [RATING_NAMES.SHIPPING_TIME]: {\n name: RATING_NAMES.SHIPPING_TIME,\n titleKey: 'leaveFeedback_rateShippingTimeTitle',\n descriptionKeys: [\n 'leaveFeedback_rateShippingTime_ratingOne',\n 'leaveFeedback_rateShippingTime_ratingTwo',\n 'leaveFeedback_rateShippingTime_ratingThree',\n 'leaveFeedback_rateShippingTime_ratingFour',\n 'leaveFeedback_rateShippingTime_ratingFive'\n ]\n },\n [RATING_NAMES.SHIPPING_COST]: {\n name: RATING_NAMES.SHIPPING_COST,\n titleKey: 'leaveFeedback_rateShippingHandlingChargesTitle',\n descriptionKeys: [\n 'leaveFeedback_rateShippingHandlingCharges_ratingOne',\n 'leaveFeedback_rateShippingHandlingCharges_ratingTwo',\n 'leaveFeedback_rateShippingHandlingCharges_ratingThree',\n 'leaveFeedback_rateShippingHandlingCharges_ratingFour',\n 'leaveFeedback_rateShippingHandlingCharges_ratingFive'\n ]\n },\n [RATING_NAMES.PAYMENT_TIME]: {\n name: RATING_NAMES.PAYMENT_TIME,\n titleKey: 'leaveFeedback_ratePaymentTimeTitle',\n descriptionKeys: [\n 'leaveFeedback_ratePaymentTime_ratingOne',\n 'leaveFeedback_ratePaymentTime_ratingTwo',\n 'leaveFeedback_ratePaymentTime_ratingThree',\n 'leaveFeedback_ratePaymentTime_ratingFour',\n 'leaveFeedback_ratePaymentTime_ratingFive'\n ]\n }\n};\n","import ENDPOINTS from 'tradera-constants/endpoints';\nimport { axiosConfigs } from 'tradera-utils/api';\nimport campaignCodeActions from './campaign-code-actions';\nimport { defaultClient } from 'tradera-utils/http';\nimport { selectCategoryAttributes } from '../selectors/attribute-selectors';\nimport ThrottledAction from 'tradera-apps/syi/script/app_react/utils/throttled-action';\nimport logger from 'packages/logger';\n\nconst throttleTimeout = 2000;\nconst suggestionsThrottle = new ThrottledAction(throttleTimeout, true);\nconst imageToColorsThrottle = new ThrottledAction(throttleTimeout, false);\n\nconst INPUT_TYPE_MAP = {\n Button: 'button',\n Color: 'color',\n Dropdown: 'dropdown'\n};\n\nconst COLOR_ATTRIBUTE_ID = 2;\n\nconst transformServerOption = serverOption => {\n return {\n value:\n typeof serverOption === 'string'\n ? serverOption\n : serverOption.value,\n isActive: false,\n warningLabel: {\n title:\n serverOption.warningLabel !== undefined &&\n serverOption.warningLabel !== null\n ? serverOption.warningLabel.title\n : null,\n text:\n serverOption.warningLabel !== undefined &&\n serverOption.warningLabel !== null\n ? serverOption.warningLabel.text\n : null\n }\n };\n};\n\nconst transformServerAttribute = attribute => {\n return {\n id: attribute.id,\n title: attribute.displayName,\n description: attribute.description,\n sortOrder: attribute.sortOrder,\n backingField: attribute.backingField,\n options: attribute.possibleValues.map(transformServerOption),\n inputType: INPUT_TYPE_MAP[attribute.type],\n isMultiSelect: attribute.isMultiSelect,\n maxNumberOfValues: attribute.maxNumberOfValues,\n minNumberOfValues: attribute.minNumberOfValues,\n numberOfValuesSelected: 0,\n shouldTranslateValues: attribute.shouldTranslateValues\n };\n};\n\nexport const setAttributesFromDraft = draft => dispatch => {\n dispatch({\n type: 'SET_DRAFT_ATTRIBUTES',\n payload: draft.attributeValues\n });\n};\n\nexport const reset = () => dispatch => {\n dispatch({\n type: 'RESET_ATTRIBUTES'\n });\n};\n\nexport const resetSelectedAttributes = () => dispatch => {\n dispatch({\n type: 'RESET_SELECTED_ATTRIBUTES'\n });\n};\n\nexport const fetchForCategory = categoryId => async dispatch => {\n dispatch(reset());\n\n if (!categoryId) {\n return;\n }\n\n try {\n const response = await defaultClient.get(\n `${ENDPOINTS.SELLING_ATTRIBUTES}/?categoryId=${categoryId}`,\n {\n ...axiosConfigs.authenticated\n }\n );\n dispatch({\n type: 'SET_CATEGORY_ATTRIBUTES',\n payload: response.data.attributeDefinitions.map(\n transformServerAttribute\n )\n });\n dispatch(updateCategoryAttributesOptionsStatuses());\n dispatch(campaignCodeActions.validateCampaignCode());\n } catch (error) {\n dispatch(reset());\n throw error;\n }\n};\n\nconst updateCategoryAttributesOptionsStatuses = () => dispatch => {\n dispatch({\n type: 'UPDATE_CATEGORY_ATTRIBUTES_OPTIONS_STATUSES'\n });\n};\n\nexport const updateAttribute = (\n attributeId,\n optionValue,\n activate,\n onUpdated\n) => (dispatch, getState) => {\n const {\n maxNumberOfValues,\n numberOfValuesSelected,\n isMultiSelect\n } = selectCategoryAttributes(getState()).find(a => a.id === attributeId);\n\n if (\n activate &&\n isMultiSelect &&\n maxNumberOfValues === numberOfValuesSelected\n ) {\n return;\n }\n\n dispatch({\n type: 'SET_CATEGORY_ATTRIBUTE_OPTION',\n payload: {\n attributeId,\n optionValue,\n activate\n }\n });\n dispatch(campaignCodeActions.validateCampaignCode());\n if (onUpdated) {\n onUpdated();\n }\n};\n\nexport const resetAttribute = attributeId => dispatch => {\n dispatch({\n type: 'SET_CATEGORY_ATTRIBUTE_OPTION',\n payload: {\n attributeId,\n activate: false\n }\n });\n dispatch(campaignCodeActions.validateCampaignCode());\n};\n\nexport const throttledFetchCategoryAttributeSuggestions = (\n categoryId,\n shortDescription\n) => dispatch => {\n const action = () => {\n dispatch(\n fetchCategoryAttributeSuggestions(categoryId, shortDescription)\n );\n };\n suggestionsThrottle.execute(action);\n};\n\nexport const throttledFetchImageAttributeSuggestions = draftImageIds => (\n dispatch,\n getState\n) => {\n const featureSwitches = getState().environment.featureSwitches;\n if (\n !featureSwitches['syi-image-attribute-suggestions'] ||\n !draftImageIds ||\n draftImageIds.length === 0\n ) {\n return;\n }\n const action = () => {\n dispatch(fetchImageAttributeSuggestions(draftImageIds));\n };\n imageToColorsThrottle.execute(action);\n};\n\nexport const resetImageAttributesSuggestions = () => ({\n type: 'RESET_IMAGE_ATTRIBUTES_SUGGESTIONS'\n});\n\nconst fetchImageAttributeSuggestions = draftImageIds => async dispatch => {\n dispatch(resetImageAttributesSuggestions());\n\n const paramKeyPart = 'imageIds=';\n const query = paramKeyPart + draftImageIds.join(`&${paramKeyPart}`);\n\n try {\n const response = await defaultClient.get(\n `${ENDPOINTS.SELLING_DRAFT_IMAGE_COLORS}?${query}`\n );\n\n const colors = response.data?.colorValues?.map(cv => cv.color) || [];\n\n dispatch({\n type: 'SET_IMAGE_ATTRIBUTES_SUGGESTIONS',\n payload: {\n suggestedAttributes: [\n {\n id: COLOR_ATTRIBUTE_ID,\n name: 'color',\n values: colors\n }\n ]\n }\n });\n } catch (error) {\n logger(error);\n }\n};\n\nexport const fetchCategoryAttributeSuggestions = (\n categoryId,\n shortDescription\n) => async (dispatch, getState) => {\n const featureSwitches = getState().environment.featureSwitches;\n if (!featureSwitches['syi-attribute-suggestions']) {\n return;\n }\n\n if (!categoryId || !shortDescription) {\n dispatch({\n type: 'RESET_ATTRIBUTES_SUGGESTIONS'\n });\n return;\n }\n\n const splitTestGroup = getState().environment.splitTestGroups[\n 'attribute_suggestion_extractor'\n ];\n if (!splitTestEnabled(splitTestGroup)) {\n return;\n }\n const extractorType = getAttributeSuggestionExtractor(splitTestGroup);\n\n try {\n let params = {\n categoryId,\n shortDescription,\n extractorType\n };\n const response = await defaultClient.post(\n `${ENDPOINTS.SELLING_SUGGEST_ATTRIBUTES}`,\n params,\n {\n ...axiosConfigs.authenticated\n }\n );\n\n dispatch({\n type: 'SET_CATEGORY_ATTRIBUTES_SUGGESTIONS',\n payload: {\n suggestedAttributes: response.data.attributeValues.termAttributeValues.map(\n transformServerAttributeSuggestion\n ),\n suggestionsExtractorType: response.data.extractorType\n }\n });\n } catch (error) {\n dispatch({\n type: 'RESET_ATTRIBUTES_SUGGESTIONS'\n });\n throw error;\n }\n};\n\nconst splitTestEnabled = splitTest => splitTest !== 'control';\n\nconst getAttributeSuggestionExtractor = splitTest => {\n switch (splitTest) {\n case 'code':\n return 0;\n case 'tradera':\n return 1;\n case 'google':\n return 2;\n default:\n return 0;\n }\n};\n\nconst transformServerAttributeSuggestion = attributeSuggestion => {\n return {\n id: attributeSuggestion.id,\n name: attributeSuggestion.name,\n values: attributeSuggestion.values\n };\n};\n","import React from 'react';\nimport {\n BREAKPOINTS,\n BREAKPOINT_SIZES,\n getCurrentBreakpoint,\n isBreakpointOrHigher\n} from 'tradera-utils/breakpoints';\n\n// eslint-disable-next-line react/display-name\nconst largeScreens = ComposedComponent => ({ breakpoint, ...props }) => {\n if (!breakpoint) {\n const current = getCurrentBreakpoint();\n breakpoint = BREAKPOINT_SIZES[current];\n }\n if (isBreakpointOrHigher(BREAKPOINTS.LG)) {\n return ;\n } else {\n return null;\n }\n};\n\nexport default largeScreens;\n","import React from 'react';\nimport {\n BREAKPOINTS,\n BREAKPOINT_SIZES,\n getCurrentBreakpoint,\n isBreakpoint\n} from 'tradera-utils/breakpoints';\n\n// eslint-disable-next-line react/display-name\nconst mediumScreens = ComposedComponent => ({ breakpoint, ...props }) => {\n if (!breakpoint) {\n const current = getCurrentBreakpoint();\n breakpoint = BREAKPOINT_SIZES[current];\n }\n if (isBreakpoint(BREAKPOINTS.MD)) {\n return ;\n } else {\n return null;\n }\n};\n\nexport default mediumScreens;\n","import React from 'react';\nimport {\n BREAKPOINTS,\n BREAKPOINT_SIZES,\n getCurrentBreakpoint,\n isBreakpointOrHigher\n} from 'tradera-utils/breakpoints';\n\n// eslint-disable-next-line react/display-name\nconst mediumScreensUp = ComposedComponent => ({ breakpoint, ...props }) => {\n if (!breakpoint) {\n const current = getCurrentBreakpoint();\n breakpoint = BREAKPOINT_SIZES[current];\n }\n if (isBreakpointOrHigher(BREAKPOINTS.MD)) {\n return ;\n } else {\n return null;\n }\n};\n\nexport default mediumScreensUp;\n","import qs from 'qs';\n\nexport const getInitialFilters = filters => {\n let newFilters = { ...filters };\n let defaultFilters = { ...filters };\n if (window.location.search) {\n const defaultSearchParams = qs.parse(\n window.location.search.replace('?', '')\n );\n newFilters.modifiers = {\n ...newFilters.modifiers,\n ...defaultSearchParams.filters\n };\n }\n return {\n newFilters,\n defaultFilters\n };\n};\n","import { openModal } from 'tradera-state/ui/action-creators';\nimport { types } from './item-actions-helper';\nimport purchaseOrderActions from '../state/actions/purchase-order';\nimport myTraderaActions from '../state/actions/my-tradera';\nimport { SINGLE_FEEDBACK_DIALOG_ID } from '../components/leave-feedback/single-feedback-dialog';\nimport featureToggles from '../utils/feature-toggles';\n\nconst isTakeaway = purchaseOrder => {\n return (\n (purchaseOrder.shipping.selectedShipping &&\n purchaseOrder.shipping.selectedShipping.isTakeaway) ||\n (purchaseOrder.shipping.shippingDiscount &&\n purchaseOrder.shipping.shippingDiscount.isTakeaway)\n );\n};\n\nconst getId = purchaseOrder => purchaseOrder.purchaseOrderId;\n\nexport const soldActions = (\n purchaseOrder,\n listViewType,\n memberMessagingParticipation\n) => {\n const actions = [\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Ange samfraktpris',\n getTranslatedLabel: t =>\n purchaseOrder.shipping.shippingDiscount\n ? t('myt_itemCard_actions_update_combinedshipping_change')\n : t('myt_itemCard_actions_update_combinedshipping'),\n dispatch: dispatch => {\n dispatch(\n myTraderaActions.openChangeShipping(\n purchaseOrder?.purchaseOrderId\n )\n );\n },\n gaLabel: 'ChangeShippingPriceSold',\n isVisible: () =>\n purchaseOrder.combinedShippingInformation &&\n !purchaseOrder.state.isPaid,\n isPrimaryAction: () =>\n !purchaseOrder.shipping.shippingDiscount &&\n purchaseOrder.transactionIds.length > 1\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Orderinformation',\n getTranslatedLabel: t => t('myt_itemCard_actions_orderInformation'),\n url: `/my/sold/buyer-info?purchaseOrderId=${purchaseOrder.purchaseOrderId}`,\n gaLabel: 'BuyerInfo',\n isVisible: () => !!purchaseOrder.purchaseOrderId,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Markera som betald',\n getTranslatedLabel: t => t('myt_itemCard_actions_markAsPaid'),\n dispatch: dispatch =>\n dispatch(\n purchaseOrderActions.updatePurchaseOrderPaidBySeller(\n purchaseOrder.purchaseOrderId,\n listViewType,\n memberMessagingParticipation,\n true\n )\n ),\n gaLabel: 'MarkAsPaid',\n isVisible: () => {\n if (purchaseOrder.state.isPaidWithIntegratedPayment) {\n return false;\n }\n if (\n purchaseOrder.combinedShippingInformation &&\n purchaseOrder.combinedShippingInformation\n .hasBuyerRequestedCombinedShippingPrice &&\n !purchaseOrder.shipping.shippingDiscount\n ) {\n return false;\n }\n return !purchaseOrder.state.isPaid;\n },\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Boka frakt',\n getTranslatedLabel: t => t('myt_itemCard_actions_bookShipping'),\n url: `/my/shipping?purchaseOrderId=${purchaseOrder.purchaseOrderId}&originUrl=%2fmy%2fsold`,\n gaLabel: 'BookShipping',\n isVisible: () => {\n if (\n purchaseOrder.state.isShippingBooked ||\n purchaseOrder.state.isShipped ||\n purchaseOrder.state.hasUnpaidShipping ||\n purchaseOrder.state.isArchived ||\n (purchaseOrder.combinedShippingInformation &&\n purchaseOrder.combinedShippingInformation\n .hasBuyerRequestedCombinedShippingPrice &&\n !purchaseOrder.shipping.shippingDiscount)\n ) {\n return false;\n }\n return true;\n },\n isPrimaryAction: () => {\n return (\n !purchaseOrder.state.hasUnpaidShipping &&\n !isTakeaway(purchaseOrder) &&\n !purchaseOrder.state.isArchived\n );\n }\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Betala frakt',\n getTranslatedLabel: t => t('myt_itemCard_actions_payShipping'),\n url:\n purchaseOrder.shipping?.unpaidShipping?.url ||\n `/my/shipping/checkout`,\n gaLabel: 'PayShipping',\n isVisible: () => purchaseOrder.state.hasUnpaidShipping,\n isPrimaryAction: () => purchaseOrder.state.hasUnpaidShipping\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Avbryt fraktbokning',\n getTranslatedLabel: t => t('myt_itemCard_actions_deleteShipping'),\n dispatch: dispatch => {\n dispatch(\n purchaseOrderActions.deleteShipment(\n purchaseOrder.shipping.unpaidShipping.id,\n purchaseOrder.purchaseOrderId,\n listViewType\n )\n );\n },\n gaLabel: 'DeleteShipping',\n isVisible: () => purchaseOrder.state.hasUnpaidShipping,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Avmarkera som bokad',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_unmarkAsShippingBooked'),\n dispatch: dispatch => {\n dispatch(\n purchaseOrderActions.updateShippingBooked(\n purchaseOrder.purchaseOrderId,\n listViewType,\n memberMessagingParticipation\n )\n );\n },\n gaLabel: 'UnmarkAsShippingBooked',\n isVisible: () => {\n return (\n !purchaseOrder.shipping.shipping?.url &&\n purchaseOrder.state.isShippingBooked &&\n !purchaseOrder.state.isShipped\n );\n },\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Spåra paket',\n getTranslatedLabel: t => t('myt_itemCard_actions_trackShipment'),\n url: `/my/sold/buyer-info?purchaseOrderId=${purchaseOrder.purchaseOrderId}#shipping`,\n gaLabel: 'TrackShipment',\n isVisible: () => !!purchaseOrder.shipping.shipping?.url,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.EXTERNAL_LINK,\n label: 'Kvitto för frakt',\n getTranslatedLabel: t => t('myt_itemCard_actions_shippingReceipt'),\n url: `/my/shipping/receipt/${purchaseOrder.shipping.shipping?.shipmentCheckoutId}`,\n gaLabel: 'ShippingReceipt',\n isVisible: () =>\n purchaseOrder.shipping.shipping?.hasShipmentReceipt,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.EXTERNAL_LINK,\n label: 'Ladda ner fraktsedel',\n getTranslatedLabel: t => t('myt_itemCard_actions_shippingLabel'),\n url: `/my/shipping/label/${purchaseOrder.shipping.shipping?.shipmentId}`,\n gaLabel: 'ShippingLabel',\n isVisible: () => purchaseOrder.shipping.shipping?.hasShipmentLabel,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: isTakeaway(purchaseOrder)\n ? 'Avmarkera som hämtad'\n : 'Avmarkera som skickad',\n getTranslatedLabel: t =>\n isTakeaway(purchaseOrder)\n ? t('myt_itemCard_actions_unmarkAsCollected')\n : t('myt_itemCard_actions_unmarkAsSent'),\n dispatch: dispatch => {\n dispatch(\n purchaseOrderActions.updatePurchaseOrderShipped(\n purchaseOrder.purchaseOrderId,\n listViewType,\n purchaseOrder.transactionIds,\n false\n )\n );\n },\n gaLabel: 'UnmarkAsShipped',\n isVisible: () => purchaseOrder.state.isShipped,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: isTakeaway(purchaseOrder)\n ? 'Markera som hämtad'\n : 'Markera som skickad',\n getTranslatedLabel: t =>\n isTakeaway(purchaseOrder)\n ? t('myt_itemCard_actions_markAsCollected')\n : t('myt_itemCard_actions_markAsSent'),\n dispatch: dispatch => {\n dispatch(\n purchaseOrderActions.updatePurchaseOrderShipped(\n purchaseOrder.purchaseOrderId,\n listViewType,\n purchaseOrder.transactionIds,\n true\n )\n );\n },\n gaLabel: 'MarkAsShipped',\n isVisible: () => {\n return !purchaseOrder.state.isShipped;\n },\n isPrimaryAction: () => !purchaseOrder.state.hasUnpaidShipping\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Lämna omdöme',\n getTranslatedLabel: t => t('myt_itemCard_actions_leaveFeedback'),\n dispatch: dispatch => {\n dispatch(\n openModal({\n modalId: SINGLE_FEEDBACK_DIALOG_ID,\n data: {\n purchaseOrderId: purchaseOrder.purchaseOrderId,\n transactionIds: purchaseOrder.itemsToGiveFeedBackTo\n }\n })\n );\n },\n gaLabel: 'LeaveFeedbackOnBuyer',\n isVisible: () => !!purchaseOrder.itemsToGiveFeedBackTo.length,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Återbetala',\n getTranslatedLabel: t => t('myt_itemCard_actions_refund'),\n dispatch: dispatch =>\n dispatch(\n myTraderaActions.openSetDiscount(\n purchaseOrder.purchaseOrderId\n )\n ),\n gaLabel: 'Refund',\n isVisible: () => purchaseOrder.state.isRefundAllowed,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Köparens omdömen',\n getTranslatedLabel: t => t('myt_itemCard_actions_buyerFeedback'),\n url: `/profile/feedback/${purchaseOrder.buyerMember.memberId}`,\n gaLabel: 'BuyerProfile',\n isVisible: () => true,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Avmarkera som betald',\n getTranslatedLabel: t => t('myt_itemCard_actions_unmarkAsPaid'),\n dispatch: dispatch =>\n dispatch(\n purchaseOrderActions.updatePurchaseOrderPaidBySeller(\n purchaseOrder.purchaseOrderId,\n listViewType,\n memberMessagingParticipation,\n false\n )\n ),\n gaLabel: 'UnmarkAsPaid',\n isVisible: () => {\n if (purchaseOrder.state.isPaidWithIntegratedPayment) {\n return false;\n }\n return !!purchaseOrder.state.isPaid;\n },\n isPrimaryAction: () => true\n }),\n () => ({\n // \"UPI\" = \"Unpaid Item\"\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Anmäl utebliven betalning',\n getTranslatedLabel: t => t('myt_itemCard_actions_reportUnpaidItem'),\n url: `/resolution/UPI2/${purchaseOrder.purchaseOrderId}`,\n gaLabel: 'ReportUnpaidItem',\n isVisible: () =>\n featureToggles.isUpiPurchaseOrderEnabled &&\n !purchaseOrder.state.isPaid &&\n !purchaseOrder.state.isUpiSubmitted,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Lämna rabatt',\n getTranslatedLabel: t => t('myt_itemCard_actions_giveDiscount'),\n dispatch: dispatch =>\n dispatch(\n myTraderaActions.openSetDiscount(\n purchaseOrder.purchaseOrderId\n )\n ),\n gaLabel: 'Discount',\n isVisible: () => purchaseOrder.state.isDiscountAllowed,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_hide'),\n dispatch: dispatch =>\n dispatch(\n purchaseOrderActions.updatePurchaseOrderHiddenForSeller(\n purchaseOrder.purchaseOrderId,\n true,\n listViewType\n )\n ),\n gaLabel: 'HideSold',\n isVisible: () => !purchaseOrder.state.isHiddenForSeller,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Ångra dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_unhide'),\n dispatch: dispatch =>\n dispatch(\n purchaseOrderActions.updatePurchaseOrderHiddenForSeller(\n purchaseOrder.purchaseOrderId,\n false,\n listViewType\n )\n ),\n gaLabel: 'UnhideSold',\n isVisible: () => purchaseOrder.state.isHiddenForSeller,\n isPrimaryAction: () => false\n })\n ];\n\n return actions;\n};\n","import { openModal } from 'tradera-state/ui/action-creators';\nimport { types } from './item-actions-helper';\nimport purchaseOrderActions from '../state/actions/purchase-order';\nimport { SINGLE_FEEDBACK_DIALOG_ID } from '../components/leave-feedback/single-feedback-dialog';\nimport featureToggles from '../utils/feature-toggles';\nimport myTraderaActions from '../state/actions/my-tradera';\n\nconst getId = purchaseOrder => purchaseOrder.purchaseOrderId;\n\nconst showModal = translationKey => {\n return myTraderaActions.openModal({\n bulkAction: 'MytListInfo',\n modal: {\n cssClass: 'fixed',\n icon: 'check',\n isSingleButton: true,\n getTranslatedMessage: t => t(translationKey)\n }\n });\n};\n\nexport const boughtActions = (purchaseOrder, listViewType) => {\n const actions = [\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Begär samfraktpris',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_request_combinedshipping'),\n dispatch: dispatch => {\n dispatch(\n purchaseOrderActions.requestCombinedShippingPrice(\n purchaseOrder.purchaseOrderId,\n !purchaseOrder.combinedShippingInformation\n .hasBuyerRequestedCombinedShippingPrice\n )\n );\n },\n gaLabel: 'RequestCombinedShipping',\n isVisible: () =>\n purchaseOrder.combinedShippingInformation &&\n !purchaseOrder.combinedShippingInformation\n .hasBuyerRequestedCombinedShippingPrice &&\n !purchaseOrder.shipping.shippingDiscount &&\n !purchaseOrder.state.isPaid &&\n purchaseOrder.shipping.shippingOptions?.length < 1,\n isPrimaryAction: () => !purchaseOrder.shipping.shippingDiscount\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Betala',\n getTranslatedLabel: t => t('myt_itemCard_actions_pay'),\n dispatch: dispatch => {\n if (purchaseOrder.state.isPaymentExpired) {\n return dispatch(showModal('myt_orderinfo_paymentExpired'));\n }\n return (window.location.href = `/Shopping/Checkout/SelectPayment?purchaseOrderId=${purchaseOrder.purchaseOrderId}`);\n },\n gaLabel: 'Pay',\n buttonTheme: 'success',\n isVisible: () => {\n if (purchaseOrder.state.isPaid) {\n return false;\n }\n if (\n purchaseOrder.combinedShippingInformation &&\n purchaseOrder.combinedShippingInformation\n .hasBuyerRequestedCombinedShippingPrice &&\n !purchaseOrder.shipping.shippingDiscount\n ) {\n return false;\n }\n return (\n !purchaseOrder.state.isPaid &&\n !purchaseOrder.state.isMarkedAsPaidByBuyer\n );\n },\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Markera som betald',\n getTranslatedLabel: t => t('myt_itemCard_actions_markAsPaid'),\n dispatch: dispatch => {\n if (purchaseOrder.state.isPaymentExpired) {\n return dispatch(showModal('myt_orderinfo_paymentExpired'));\n }\n if (\n purchaseOrder.combinedShippingInformation &&\n !purchaseOrder.shipping.shippingDiscount &&\n !purchaseOrder.shipping.selectedShipping\n ) {\n return dispatch(showModal('myt_modal_mark_as_paid_info'));\n }\n dispatch(\n purchaseOrderActions.updatePurchaseOrderPaidByBuyer(\n purchaseOrder.purchaseOrderId,\n listViewType,\n true\n )\n );\n },\n gaLabel: 'MarkAsPaid',\n isVisible: () => {\n if (purchaseOrder.state.isPaid) {\n return false;\n }\n if (\n !purchaseOrder.combinedShippingInformation &&\n !purchaseOrder.shipping.selectedShipping &&\n !purchaseOrder.shipping.shippingDiscount\n ) {\n return false;\n }\n return (\n !purchaseOrder.state.isPaidWithIntegratedPayment &&\n !purchaseOrder.state.isMarkedAsPaidByBuyer\n );\n },\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Avmarkera som betald',\n getTranslatedLabel: t => t('myt_itemCard_actions_unmarkAsPaid'),\n dispatch: dispatch =>\n dispatch(\n purchaseOrderActions.updatePurchaseOrderPaidByBuyer(\n purchaseOrder.purchaseOrderId,\n listViewType,\n false\n )\n ),\n gaLabel: 'UnmarkAsPaid',\n isVisible: () => {\n if (purchaseOrder.state.isPaid) {\n return false;\n }\n return (\n !purchaseOrder.state.isPaidWithIntegratedPayment &&\n purchaseOrder.state.isMarkedAsPaidByBuyer &&\n !purchaseOrder.state.isPaymentExpired\n );\n },\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Lämna omdöme',\n getTranslatedLabel: t => t('myt_itemCard_actions_leaveFeedback'),\n dispatch: dispatch => {\n dispatch(\n openModal({\n modalId: SINGLE_FEEDBACK_DIALOG_ID,\n data: {\n purchaseOrderId: purchaseOrder.purchaseOrderId,\n transactionIds: purchaseOrder.itemsToGiveFeedBackTo\n }\n })\n );\n },\n gaLabel: 'LeaveFeedbackOnSeller',\n isVisible: () => !!purchaseOrder.itemsToGiveFeedBackTo.length,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Orderbekräftelse',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_orderConfirmation'),\n url: `/Shopping/OrderConfirmation?purchaseOrderId=${purchaseOrder.purchaseOrderId}`,\n gaLabel: 'OrderConfirmation',\n isVisible: () => !featureToggles.isBuyerOrderInformationEnabled,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Orderinformation',\n getTranslatedLabel: t => t('myt_itemCard_actions_orderInformation'),\n url: `/my/order/${purchaseOrder.purchaseOrderId}`,\n gaLabel: 'OrderInformation',\n isVisible: () => featureToggles.isBuyerOrderInformationEnabled,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.EXTERNAL_LINK,\n label: 'Spåra paket',\n getTranslatedLabel: t => t('myt_itemCard_actions_trackShipment'),\n url: `${purchaseOrder.shipping.shipping?.url}`,\n gaLabel: 'BuyerTrackShipment',\n isVisible: () =>\n !featureToggles.isBuyerOrderInformationEnabled &&\n !!purchaseOrder.shipping.shipping?.url,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Spåra paket',\n getTranslatedLabel: t => t('myt_itemCard_actions_trackShipment'),\n url: `/my/order/${purchaseOrder.purchaseOrderId}#shipping`,\n gaLabel: 'BuyerTrackShipment',\n isVisible: () =>\n featureToggles.isBuyerOrderInformationEnabled &&\n !!purchaseOrder.shipping.shipping?.url,\n isPrimaryAction: () => true\n }),\n () => ({\n // \"INR\" = \"Item Not Received\"\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Anmäl utebliven leverans',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_reportFailureToDeliver'),\n url: `/resolution/INR2/${purchaseOrder.purchaseOrderId}`,\n gaLabel: 'ReportItemNotReceived',\n isVisible: () =>\n !purchaseOrder.payment.hasBuyerProtection &&\n !purchaseOrder.state.isInrSubmitted &&\n featureToggles.isInrPurchaseOrderEnabled,\n isPrimaryAction: () => true\n }),\n // () => ({ TODO REWRITE TO REACT\n // id: getId(item),\n // type: types.LINK,\n // label: 'Anmäl utebliven vara',\n // getTranslatedLabel: t => t('myt_itemCard_actions_createDispute'),\n // url: `/resolution/disputes/${item.transaction.transactionId}`,\n // gaLabel: 'CreateDispute',\n // isVisible: () =>\n // featureToggles.isDisputesEntranceEnabled &&\n // item.transaction.hasBuyerProtection &&\n // !item.transaction.dispute,\n // isPrimaryAction: () => !item.haveMultipleRows\n // }),\n () => ({\n id: getId(purchaseOrder),\n type: types.LINK,\n label: 'Säljarens annonser',\n getTranslatedLabel: t => t('myt_itemCard_actions_itemsFromSeller'),\n url: `/profile/items/${purchaseOrder.sellerMember.memberId}/${purchaseOrder.sellerMember.cleanedAlias}`,\n gaLabel: 'SellerOtherItems',\n isVisible: () => true,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_hide'),\n dispatch: dispatch =>\n dispatch(\n purchaseOrderActions.updatePurchaseOrderHiddenForBuyer(\n purchaseOrder.purchaseOrderId,\n purchaseOrder.transactionIds,\n true,\n listViewType\n )\n ),\n gaLabel: 'HideSold',\n isVisible: () => !purchaseOrder.state.isHiddenForBuyer,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(purchaseOrder),\n type: types.DISPATCH,\n label: 'Ångra dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_unhide'),\n dispatch: dispatch =>\n dispatch(\n purchaseOrderActions.updatePurchaseOrderHiddenForBuyer(\n purchaseOrder.purchaseOrderId,\n purchaseOrder.transactionIds,\n false,\n listViewType\n )\n ),\n gaLabel: 'UnhideSold',\n isVisible: () => purchaseOrder.state.isHiddenForBuyer,\n isPrimaryAction: () => false\n })\n ];\n\n return actions;\n};\n","import { soldActions } from '../../helpers/purchase-order-actions-helper-seller';\nimport { boughtActions } from '../../helpers/purchase-order-actions-helper-buyer';\nimport logger from 'packages/logger';\nimport { PAGE_NAMES } from '../../constants/page';\n\nexport const getActionsForPurchaseOrder = (\n purchaseOrder,\n listViewType,\n memberMessagingParticipation,\n pageName\n) => {\n const secondaryActions = [];\n let primaryAction = null;\n\n const checkAndAdd = action => {\n try {\n if (!action.isVisible) {\n throw 'Action is not compatible: ' + action.label;\n }\n if (!action.isVisible()) {\n return;\n }\n if (primaryAction === null && action.isPrimaryAction()) {\n primaryAction = action;\n } else {\n secondaryActions.push(action);\n }\n } catch (error) {\n logger(error);\n }\n };\n\n const resolveActions = potentialActions => {\n potentialActions.forEach(actionCreator => {\n const action = actionCreator();\n checkAndAdd(action);\n });\n return {\n primaryAction,\n secondaryActions\n };\n };\n\n let actionsForItem = [];\n\n switch (pageName) {\n case PAGE_NAMES.SellerSold:\n actionsForItem = resolveActions(\n soldActions(\n purchaseOrder,\n listViewType,\n memberMessagingParticipation\n )\n );\n break;\n case PAGE_NAMES.BuyerPurchases:\n actionsForItem = resolveActions(\n boughtActions(purchaseOrder, listViewType)\n );\n break;\n }\n return actionsForItem;\n};\n","import { selectMyTraderaItemsState } from '../reducers/my-tradera-items';\nimport { selectCookiesState } from 'tradera-apps/my-tradera/app/state/reducers/cookies';\nimport { selectMyTraderaState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport { selectRouterState } from 'tradera-apps/my-tradera/app/state/selectors/router';\nimport { getActionsForPurchaseOrder } from '../selectors/purchase-actions';\n\nexport const selectPurchaseOrderState = state => {\n const listViewType = selectCookiesState(state).LIST_VIEW_TYPE;\n const memberMessagingParticipation = selectMyTraderaState(state)\n .memberMessagingParticipation;\n const pageName =\n selectMyTraderaState(state).page &&\n selectMyTraderaState(state).page[\n selectRouterState(state).location.pathname\n ]?.pageName;\n\n const purchaseOrders = state.views.myTradera.purchaseOrder.purchaseOrders.map(\n purchaseOrder => {\n const rows = selectMyTraderaItemsState(state).itemsOrderedByID.map(\n id => {\n return state.views.myTradera.myTraderaItems.itemsByID[id];\n }\n );\n return {\n ...purchaseOrder,\n actions: getActionsForPurchaseOrder(\n purchaseOrder,\n listViewType,\n memberMessagingParticipation,\n pageName\n ),\n rows: rows.filter(\n row =>\n row.transaction.purchaseOrderId ===\n purchaseOrder.purchaseOrderId\n )\n };\n }\n );\n return {\n ...state.views.myTradera.purchaseOrder,\n purchaseOrders\n };\n};\n","import qs from 'qs';\n\nexport const waitForBackend = () => {\n let waitForBackend = false;\n if (window.location.search) {\n const searchParams = qs.parse(window.location.search.replace('?', ''));\n waitForBackend = !!searchParams.updateditems;\n }\n return waitForBackend;\n};\n","import React, { useEffect, useState, useCallback } from 'react';\nimport myTraderaActions from '../../state/actions/my-tradera';\nimport myTraderaItemActions from '../../state/actions/my-tradera-items';\nimport purchaseOrderActions from '../../state/actions/purchase-order';\nimport { getInitialFilters } from '../../helpers/payloads/initial-payload';\nimport filtersActions from '../../state/actions/filters';\nimport { setCookie } from '../../state/actions/cookies';\nimport { LIST_VIEW_TYPES, PAGE_LIST_TYPES } from '../../constants/list-types';\nimport featureToggles, {\n errors as featureToggleErrors\n} from '../../utils/feature-toggles';\n\nimport { useTranslator } from 'tradera-lang/translate';\nimport { selectMyTraderaState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport { selectMyTraderaItemsState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera-items';\nimport { selectCookiesState } from 'tradera-apps/my-tradera/app/state/reducers/cookies';\nimport { selectFiltersState } from 'tradera-apps/my-tradera/app/state/reducers/filters';\nimport { selectPurchaseOrderState } from 'tradera-apps/my-tradera/app/state/selectors/purchase-order';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { waitForBackend } from '../../helpers/payloads/wait-for-backend';\nimport {\n removeHashFromUrl,\n URL_HASHES,\n shouldOpenChangeCombinedShippingModal,\n shouldMarkAsPaid\n} from 'tradera-apps/tradera/components/vip/helpers/navigation-helper';\n\nconst modifyHistory = (match, history) => {\n return !(history.action === 'POP' && match.params.length > 0); // When using back button from a list to another (ie from \"sold\" to \"not sold\"), we should not modify the history object\n};\n\nconst defaultPayload = () => {\n return {\n filters: {\n modifiers: {\n query: {},\n paging: {}\n },\n filterBar: null,\n shownFilters: null\n }\n };\n};\n\n// eslint-disable-next-line react/display-name\nconst withPageInit = (Component, initialPayload = defaultPayload) => props => {\n const { t } = useTranslator();\n const dispatch = useDispatch();\n\n const state = {\n filters: useSelector(selectFiltersState),\n myTradera: useSelector(selectMyTraderaState),\n\n myTraderaItems: useSelector(selectMyTraderaItemsState),\n breakpoint: useSelector(selectMyTraderaState).breakpoint || {},\n page:\n useSelector(selectMyTraderaState).page[props.location.pathname] ||\n false,\n purchaseOrder: useSelector(selectPurchaseOrderState),\n sellerEmail: useSelector(state => state.member.memberEmail)\n };\n\n const stateCookies = useSelector(selectCookiesState);\n const { isCombinedShippingEnabled } = state.myTradera;\n const [pageListType, setPageListType] = useState();\n const { match } = props;\n const { LIST_VIEW_TYPE } = stateCookies;\n\n const listViewTypeWithFallBack =\n stateCookies['LIST_VIEW_TYPE_' + state.page.listType] || LIST_VIEW_TYPE;\n const listViewType = stateCookies['LIST_VIEW_TYPE_' + state.page.listType];\n\n useEffect(() => {\n let initialState = initialPayload ? initialPayload(t) : null;\n\n if (!featureToggles.isMyTraderaElasticEnabled) {\n dispatch(\n myTraderaActions.error(featureToggleErrors.ELASTIC_MYTRADERA)\n );\n }\n\n if (initialState) {\n dispatch(\n filtersActions.setFiltersForSelectedPage(\n getInitialFilters(initialState.filters)\n )\n );\n }\n }, [dispatch, t]);\n\n useEffect(() => {\n const getPurchaseOrderIdFromHash = hash =>\n document.location.hash.split(hash)[1];\n\n const removeHashAndSetNormalList = () => {\n removeHashFromUrl();\n dispatch(\n setCookie(\n `LIST_VIEW_TYPE_${state.page.listType}`,\n LIST_VIEW_TYPES.NORMAL\n )\n );\n };\n\n const changeShippingPurchaseOrderId = getPurchaseOrderIdFromHash(\n URL_HASHES.openChangeCombinedShippingModal\n );\n if (\n shouldOpenChangeCombinedShippingModal() &&\n changeShippingPurchaseOrderId\n ) {\n dispatch(\n myTraderaActions.openChangeShipping(\n changeShippingPurchaseOrderId\n )\n );\n removeHashAndSetNormalList();\n }\n\n const markAsPaidPurchaseOrderId = getPurchaseOrderIdFromHash(\n URL_HASHES.markAsPaid\n );\n if (shouldMarkAsPaid() && markAsPaidPurchaseOrderId) {\n dispatch(\n purchaseOrderActions.updatePurchaseOrderPaidBySeller(\n markAsPaidPurchaseOrderId,\n state.page.listType,\n false,\n true\n )\n );\n removeHashAndSetNormalList();\n }\n }, [dispatch, state.page.listType]);\n\n const setDefaultListViewType = useCallback(() => {\n if (window.location.search.length !== 0) {\n return null;\n }\n if (\n featureToggles.isCombinedShippingListBuyerViewEnabled &&\n state.page.listType === PAGE_LIST_TYPES.BUYER_PURCHASES &&\n !listViewType\n ) {\n return dispatch(\n setCookie(\n 'LIST_VIEW_TYPE_' + state.page.listType,\n LIST_VIEW_TYPES.NORMAL\n )\n );\n }\n if (\n isCombinedShippingEnabled &&\n (state.page.listType === PAGE_LIST_TYPES.SELLER_SOLD ||\n state.page.listType === PAGE_LIST_TYPES.BUYER_PURCHASES) &&\n !listViewType\n ) {\n return dispatch(\n setCookie(\n 'LIST_VIEW_TYPE_' + state.page.listType,\n LIST_VIEW_TYPES.NORMAL\n )\n );\n }\n if (\n state.page.listType !== PAGE_LIST_TYPES.SELLER_SOLD &&\n state.page.listType !== PAGE_LIST_TYPES.BUYER_PURCHASES &&\n !listViewType\n ) {\n return dispatch(setCookie('LIST_VIEW_TYPE', LIST_VIEW_TYPES.BASIC));\n }\n }, [\n dispatch,\n state.page.listType,\n isCombinedShippingEnabled,\n listViewType\n ]);\n\n useEffect(() => {\n setDefaultListViewType();\n }, [setDefaultListViewType]);\n\n useEffect(() => {\n setPageListType(state.page.listType);\n }, [state.page.listType]);\n\n const getData = useCallback(() => {\n const shouldWaitForBackend = waitForBackend();\n if (!pageListType) {\n return null;\n }\n if (listViewTypeWithFallBack === LIST_VIEW_TYPES.NORMAL) {\n return dispatch(\n purchaseOrderActions.runPurchaseOrders(\n state.page,\n false,\n listViewTypeWithFallBack,\n shouldWaitForBackend,\n !modifyHistory(match, history)\n )\n );\n }\n return dispatch(\n myTraderaItemActions.runSearch(\n state.page,\n false,\n listViewTypeWithFallBack,\n shouldWaitForBackend,\n !modifyHistory(match, history)\n )\n );\n }, [dispatch, state.page, pageListType, listViewTypeWithFallBack, match]);\n\n useEffect(() => {\n getData();\n }, [pageListType, getData]);\n\n const cookies = {\n ...stateCookies,\n LIST_VIEW_TYPE: listViewTypeWithFallBack\n };\n\n return (\n \n );\n};\n\nexport default withPageInit;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport myTradera from '../../state/actions/my-tradera';\nimport { BREAKPOINT_SIZES } from 'tradera-utils/breakpoints';\nimport { selectMyTraderaState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\n\nconst MakeResponsive = ComposedComponent => {\n class Responsive extends React.Component {\n constructor(props) {\n super(props);\n this.removeMediaQueries = [];\n }\n\n componentDidMount() {\n if (window.matchMedia) {\n this.addMediaQueries();\n }\n }\n\n componentWillUnmount() {\n if (window.matchMedia && this.removeMediaQueries) {\n this.removeMediaQueries.forEach(removeMediaQuery =>\n removeMediaQuery()\n );\n }\n }\n\n setBreakPoint = breakpoint => {\n this.props.dispatch(myTradera.setBreakPoint(breakpoint));\n };\n\n addMediaQueries = () => {\n for (let breakpoint of Object.values(BREAKPOINT_SIZES)) {\n const matchMedia = window.matchMedia(\n `screen and (min-width: ${breakpoint.min}px) and (max-width: ${breakpoint.max}px)`\n );\n if (matchMedia.matches) {\n this.setBreakPoint(breakpoint);\n }\n const handleMediaChange = val => {\n if (val.matches) {\n this.setBreakPoint(breakpoint);\n }\n };\n // addListener is an alias for addEventListener https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList/addListener\n matchMedia.addListener(handleMediaChange);\n this.removeMediaQueries.push(() => {\n matchMedia.removeListener(handleMediaChange);\n });\n }\n };\n\n render() {\n return ;\n }\n }\n\n const mapStateToProps = state => ({\n breakpoint: selectMyTraderaState(state).breakpoint\n });\n\n return connect(mapStateToProps)(Responsive);\n};\n\nexport default MakeResponsive;\n","//@ts-check --jsx\n/* eslint-disable react/no-set-state */\nimport React from 'react';\nimport { throttle } from 'underscore';\nimport 'tradera-apps/my-tradera/style/components/myt-sticky.scss';\n\nconst MakeSticky = ComposedComponent =>\n class Sticky extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n sticky: false,\n height: null\n };\n this.onScroll = this.onScroll.bind(this);\n this.onScrollThrottled = throttle(this.onScroll, props.wait || 0);\n }\n\n componentDidMount() {\n window.addEventListener('scroll', this.onScrollThrottled, false);\n }\n\n componentWillUnmount() {\n this.doc = null;\n window.removeEventListener('scroll', this.onScrollThrottled, false);\n }\n\n onScroll() {\n this.doc = document.documentElement;\n if (!this.el) {\n return;\n }\n const position = this.el.getBoundingClientRect();\n if (!this.state.height && position.height) {\n this.setState({\n height: position.height\n });\n }\n // const top = (window.pageYOffset || this.doc.scrollTop) - (this.doc.clientTop || 0);\n if (position && position.top <= 0) {\n if (!this.state.sticky) {\n this.setState({\n sticky: true\n });\n }\n } else {\n if (this.state.sticky) {\n this.setState({\n sticky: false\n });\n }\n }\n }\n\n render() {\n let { position, zIndex } = this.props;\n\n //return before doing anything, we don't know how to make the element sticky.\n if (!position) {\n return null;\n }\n\n const positions = {\n top: 'sticky-top',\n bottom: 'sticky-bottom'\n };\n\n const getStickyClasses = () =>\n this.state.sticky ? `myt-sticky ${positions[position]}` : '';\n const wrapperStyles = {\n height: this.state.height ? this.state.height : 'auto'\n };\n const stickyStyles = {\n zIndex: zIndex ? zIndex : 10\n };\n\n return (\n <>\n (this.el = el)}\n style={wrapperStyles}>\n \n \n \n \n \n );\n }\n };\n\nexport default MakeSticky;\n","import { isSwedenCountryNameOrUndefined } from 'tradera-utils/countrycode';\n\nexport const selectViewItem = state => state.views.viewItem;\n\nexport const selectTranslatedDescription = state =>\n state.views.viewItem.translatedDescription || null;\n\nexport const selectItemDetails = state => selectViewItem(state).itemDetails;\n\nexport const selectBreadcrumbs = state => selectViewItem(state).breadCrumbs;\n\nexport const selectItemId = state => selectItemDetails(state)?.itemId;\n\nexport const selectBidInfo = state => selectViewItem(state).bidInfo;\n\nexport const selectAllowedBuyerRegionOutsideSweden = state =>\n selectItemDetails(state)?.allowedBuyerRegion &&\n !isSwedenCountryNameOrUndefined(\n selectItemDetails(state).allowedBuyerRegion\n );\n\nexport const selectTranslatedDescriptionState = state =>\n selectViewItem(state).translatedDescriptionState;\n","import { createSlice } from '@reduxjs/toolkit';\n\nexport const languageSlice = createSlice({\n name: 'language',\n initialState: {},\n reducers: {\n setPreferred: (state, action) => {\n state.preferred =\n state.available.find(\n language => language.languageCodeIso2 === action.payload\n ) || {};\n }\n }\n});\n\nexport const { setPreferred } = languageSlice.actions;\nexport default languageSlice.reducer;\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport SearchIcon from '@tradera/blueprint/theme/icons2/search.svg?jsx';\n\nconst SearchButton = ({ showSearch, onClick }) => {\n const { t } = useTranslator();\n\n return (\n \n \n \n );\n};\n\nexport { SearchButton };\n","export const formatPrice = price => {\n const format = formatMe =>\n formatMe.toLocaleString('sv', {\n symbol: ' kr',\n symbolPosition: 'end',\n decimal: ',',\n comma: '.'\n });\n return typeof price !== 'number'\n ? `${format(parseInt(price))} kr`\n : `${format(price)} kr`;\n};\n","import React from 'react';\nimport RatingPositiveIcon from '@tradera/blueprint/theme/icons2/rating-positive.svg?jsx';\nimport RatingNegativeIcon from '@tradera/blueprint/theme/icons2/rating-negative.svg?jsx';\n\nconst nonActiveButtonClasses = 'btn btn-light btn-lg btn-round border';\nconst activeButtonClasses = 'btn btn-lg btn-round';\n\nconst _Happy = ({ active, className = '', onClick }) => (\n \n \n \n);\n\nconst _Sad = ({ active, className = '', onClick }) => (\n \n \n \n);\n\nexport const Happy = React.memo(_Happy);\nexport const Sad = React.memo(_Sad);\n","// extracted by mini-css-extract-plugin\nexport default {\"figure\":\"figure--3epop\",\"red\":\"red----iUA\",\"green\":\"green--31wnP\",\"grey-soft\":\"grey-soft--3B9wq\",\"greySoft\":\"grey-soft--3B9wq\",\"grey-hard\":\"grey-hard--3KnOi\",\"greyHard\":\"grey-hard--3KnOi\",\"blue\":\"blue--1s_-z\"};","import React from 'react';\nimport styles from './figure.module.scss';\n\nconst Caption = ({ color, className = '', text }) => {\n return (\n \n {text}\n \n );\n};\n\nexport const Figure = ({\n className = '',\n imageUrl,\n title,\n captionText,\n captionColor\n}) => {\n return (\n \n {title}\n \n \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"rating-button\":\"rating-button--3AWTI\",\"ratingButton\":\"rating-button--3AWTI\",\"rating-color1\":\"rating-color1--2vIUS\",\"ratingColor1\":\"rating-color1--2vIUS\",\"rating-color2\":\"rating-color2--2sNAQ\",\"ratingColor2\":\"rating-color2--2sNAQ\",\"rating-color3\":\"rating-color3--T0NBU\",\"ratingColor3\":\"rating-color3--T0NBU\",\"rating-color4\":\"rating-color4--Qbqs7\",\"ratingColor4\":\"rating-color4--Qbqs7\",\"rating-color5\":\"rating-color5--2Ovw4\",\"ratingColor5\":\"rating-color5--2Ovw4\"};","import React from 'react';\nimport styles from './rating.module.scss';\n\nconst _Rating = ({ selectedRating = 0, onRatingClicked }) => {\n return (\n
      \n {[...Array(5)]\n .map((e, i) => i + 1)\n .map(number => (\n onRatingClicked(number)}\n className={`btn border ${styles.ratingButton}\n ${\n selectedRating === number\n ? styles['ratingColor' + number]\n : 'bg-white'\n }`}>\n {number}\n \n ))}\n
    \n );\n};\nexport const Rating = React.memo(_Rating);\n","// extracted by mini-css-extract-plugin\nexport default {\"detailedRating\":\"detailedRating--EQ0ij\"};","import React from 'react';\nimport { Rating } from './rating';\nimport styles from './detailed-rating.module.scss';\n\nconst _DetailedRating = ({\n children,\n className = '',\n onRatingClicked,\n ratingDescriptions = [],\n selectedRating = 0,\n title\n}) => {\n const ratingDescriptionExist =\n ratingDescriptions.length > 0 &&\n ratingDescriptions.length >= selectedRating;\n const ratingDescription = ratingDescriptionExist\n ? ratingDescriptions[selectedRating - 1]\n : null;\n\n return (\n
    \n
    {title}
    \n \n {ratingDescription && (\n

    \n {ratingDescription}\n

    \n )}\n {children}\n
    \n );\n};\nexport const DetailedRating = React.memo(_DetailedRating);\n","const namespace = 'FEEDBACKS';\nexport const ACTION_TYPES = {\n SET_FEEDBACKS: `${namespace}/SET_FEEDBACKS`,\n TOGGLE_IS_POSITIVE: `${namespace}/TOGGLE_IS_POSITIVE`,\n SET_IS_POSITIVE: `${namespace}/SET_IS_POSITIVE`,\n SET_IS_ITEM_NOT_RECEIVED: `${namespace}/SET_IS_ITEM_NOT_RECEIVED`,\n SET_COMMENT: `${namespace}/SET_COMMENT`,\n SET_RATING: `${namespace}/SET_RATING`\n};\n\nexport const setFeedbacks = payload => ({\n type: ACTION_TYPES.SET_FEEDBACKS,\n payload\n});\n\n/**\n * If previously null, isPositive value becomes the given value.\n * If previously true, isPositive becomes null if given true or false if given false.\n * If previously false, isPositive becomes null if given false or true if given true.\n * @param {*} transactionId\n * @param {*} isPositive\n * @returns\n */\nexport const toggleIsPositive = (transactionId, isPositive) => ({\n type: ACTION_TYPES.TOGGLE_IS_POSITIVE,\n payload: { transactionId, isPositive }\n});\n\nexport const setComment = (transactionId, comment) => ({\n type: ACTION_TYPES.SET_COMMENT,\n payload: { transactionId, comment }\n});\n\nexport const setRating = (transactionId, ratingName, rating) => ({\n type: ACTION_TYPES.SET_RATING,\n payload: { transactionId, rating, ratingName }\n});\n\nexport const setItemNotReceived = (transactionId, isItemNotReceived) => ({\n type: ACTION_TYPES.SET_IS_ITEM_NOT_RECEIVED,\n payload: { transactionId, isItemNotReceived }\n});\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport AlertIcon from '@tradera/blueprint/theme/icons2/alert.svg?jsx';\nimport { setItemNotReceived } from './feedbacks-actions';\n\nconst _ItemNotReceived = ({ dispatch, isItemNotReceived, transactionId }) => {\n const { t } = useTranslator();\n const checkboxId = `inr-checkbox-${transactionId}`;\n return (\n
    \n
    \n \n
    {t('leaveFeedback_inrHeading')}
    \n
    \n\n

    {t('leaveFeedback_inrText')}

    \n
    \n \n dispatch(\n setItemNotReceived(\n transactionId,\n !isItemNotReceived\n )\n )\n }\n checked={isItemNotReceived}\n />\n \n
    \n
    \n );\n};\nexport const ItemNotReceived = React.memo(_ItemNotReceived);\n","import React from 'react';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport AlertIcon from '@tradera/blueprint/theme/icons2/alert.svg?jsx';\n\nconst _UnpaidItem = ({ unpaidItemUrl }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n
    \n
    \n \n
    {t('leaveFeedback_upiHeading')}
    \n
    \n\n

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

    \n
    \n );\n};\nexport const UnpaidItem = React.memo(_UnpaidItem);\n","// extracted by mini-css-extract-plugin\nexport default {\"commentInput\":\"commentInput--2nFgi\"};","import React, { useRef, useState, useEffect } from 'react';\n\nexport const AutoHeightTextArea = props => {\n const textAreaRef = useRef(null);\n const [text, setText] = useState('');\n const [textAreaHeight, setTextAreaHeight] = useState('auto');\n const [parentHeight, setParentHeight] = useState('auto');\n\n useEffect(() => {\n setParentHeight(`${textAreaRef.current.scrollHeight}px`);\n setTextAreaHeight(`${textAreaRef.current.scrollHeight}px`);\n }, [text, textAreaRef]);\n\n const onChangeHandler = event => {\n setTextAreaHeight('auto');\n setParentHeight(`${textAreaRef.current.scrollHeight}px`);\n setText(event.target.value);\n\n if (props.onChange) {\n props.onChange(event);\n }\n };\n\n return (\n \n \n \n );\n};\n","import React from 'react';\nimport { setComment } from './feedbacks-actions';\nimport styles from './comment-input.module.scss';\nimport { AutoHeightTextArea } from 'tradera-components/form-controls/auto-height-text-area';\n\nexport const CommentInput = ({\n className = '',\n dispatch,\n value,\n transactionId\n}) => {\n return (\n {\n if (evt.key === 'Enter') {\n evt.preventDefault();\n }\n }}\n onChange={evt => {\n dispatch(setComment(transactionId, evt.target.value));\n }}\n />\n );\n};\n","import {\n MAX_COMMENT_LENGTH,\n MAX_RATING_VALUE,\n MIN_RATING_VALUE,\n RATING_SETTINGS,\n RATING_NAMES_BUYER,\n RATING_NAMES_SELLER,\n UNSET_RATING_VALUE\n} from './constants';\n\nexport const togglePositive = (previous, isPositive) => {\n let result;\n if (previous === null) {\n result = isPositive;\n } else {\n result = previous === isPositive ? null : isPositive;\n }\n return result;\n};\n\nexport const createFeedbackPayload = (\n itemId,\n memberId,\n transactionId,\n ratingNames\n) => {\n const ratings = {};\n ratingNames.forEach(name => {\n ratings[name] = MAX_RATING_VALUE;\n });\n return {\n comment: '',\n ratings,\n inr: false,\n transactionId: transactionId,\n isPositive: null,\n itemId: itemId,\n memberId: memberId\n };\n};\n\nexport const createFeedbackPayloadsMap = (groups, isBuyer) => {\n const ratingNames = isBuyer ? RATING_NAMES_BUYER : RATING_NAMES_SELLER;\n const feedbacks = {};\n groups.map(group => {\n group.items.map(item => {\n const feedback = createFeedbackPayload(\n item.itemId,\n item.memberId,\n item.transactionId,\n ratingNames\n );\n feedbacks[item.transactionId] = feedback;\n });\n });\n return feedbacks;\n};\n\nexport const getRatingSettings = isBuyer => {\n const ratingNames = isBuyer ? RATING_NAMES_BUYER : RATING_NAMES_SELLER;\n return ratingNames.map(ratingName => RATING_SETTINGS[ratingName]);\n};\n\nexport const isCommentTooLong = comment =>\n comment.trim().length > MAX_COMMENT_LENGTH;\nexport const isCommentWithLinebreaks = comment => !!comment.match(/\\r|\\n/);\nexport const isPositiveOrNegative = feedback => feedback.isPositive !== null;\nexport const isAllRatingsValid = feedback =>\n Object.values(feedback.ratings).every(\n value => value === UNSET_RATING_VALUE || value >= MIN_RATING_VALUE\n );\n\nexport const isValidFeedback = feedback =>\n isAllRatingsValid(feedback) &&\n !isCommentTooLong(feedback.comment) &&\n !isCommentWithLinebreaks(feedback.comment) &&\n isPositiveOrNegative(feedback);\n\nexport const getValidationErrorTranslationKeys = feedback => {\n const result = [];\n if (isCommentWithLinebreaks(feedback.comment)) {\n result.push('leaveFeedback_noLineBreaks');\n }\n return result;\n};\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { isMobile } from 'tradera-utils/breakpoints';\nimport { DetailedRating } from './detailed-rating';\nimport { ItemNotReceived } from './item-not-received';\nimport { UnpaidItem } from './unpaid-item';\nimport { setRating } from './feedbacks-actions';\nimport { CommentInput } from './comment-input';\nimport {\n MAX_COMMENT_LENGTH,\n MIN_RATING_VALUE,\n RATING_NAMES\n} from './constants';\nimport {\n isCommentTooLong,\n isCommentWithLinebreaks\n} from './leave-feedback-helper';\n\nexport const Form = ({\n comment,\n dispatch,\n errorMessageTranslationKeys,\n isItemNotReceived,\n transactionId,\n ratingSettings,\n ratingValues,\n unpaidItemUrl\n}) => {\n const { t } = useTranslator();\n const isCommentInvalid =\n isCommentTooLong(comment) || isCommentWithLinebreaks(comment);\n\n const indexOfShippingTime = ratingSettings.findIndex(\n ratingSetting => ratingSetting.name === RATING_NAMES.SHIPPING_TIME\n );\n const showItemNotReceived =\n indexOfShippingTime > -1 &&\n ratingValues[indexOfShippingTime] === MIN_RATING_VALUE;\n\n const indexOfPaymentTime = ratingSettings.findIndex(\n ratingSetting => ratingSetting.name === RATING_NAMES.PAYMENT_TIME\n );\n const showUnpaidItem =\n indexOfPaymentTime > -1 &&\n ratingValues[indexOfPaymentTime] === MIN_RATING_VALUE;\n\n return (\n <>\n
    \n
    \n
    {t('leaveFeedback_leaveComment')}
    \n \n {t('leaveFeedback_charsLeft_v2', {\n charsCount: comment.length,\n max: MAX_COMMENT_LENGTH\n })}\n \n
    \n {errorMessageTranslationKeys.map(translationKey => (\n

    \n {t(translationKey)}\n

    \n ))}\n \n
    \n
    \n {ratingSettings.map((ratingSetting, index) => {\n return (\n t(key)\n )}\n selectedRating={ratingValues[index]}\n onRatingClicked={value =>\n dispatch(\n setRating(\n transactionId,\n ratingSetting.name,\n value\n )\n )\n }>\n {showItemNotReceived &&\n isMobile() &&\n indexOfShippingTime === index && (\n \n )}\n {showUnpaidItem &&\n isMobile() &&\n indexOfPaymentTime === index && (\n \n )}\n \n );\n })}\n
    \n {showItemNotReceived && !isMobile() && (\n \n )}\n {showUnpaidItem && !isMobile() && (\n \n )}\n \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"title--6bE9A\",\"price\":\"price--2QiBg\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ALink from 'tradera-components/alink';\nimport { useUrlLocalizer } from 'tradera-lang/translate';\nimport styles from './details-and-price.module.scss';\n\nexport const DetailsAndPrice = ({\n url,\n title,\n transactionDate,\n memberUrl,\n alias,\n price,\n shippingPrice\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n
    \n
    \n

    \n \n {title}\n \n

    \n
    \n

    \n {transactionDate} |{' '}\n \n {alias}\n \n

    \n
    \n
    \n
    \n
    {price}
    \n \n {shippingPrice}\n
    \n
    \n \n );\n};\n\nDetailsAndPrice.propTypes = {\n url: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n transactionDate: PropTypes.string.isRequired,\n memberUrl: PropTypes.string.isRequired,\n alias: PropTypes.string.isRequired,\n price: PropTypes.string.isRequired,\n shippingPrice: PropTypes.string.isRequired\n};\n","import React from 'react';\nimport { Happy, Sad } from './smiley';\nimport { Figure } from './figure';\nimport { Form } from './form';\nimport { toggleIsPositive } from './feedbacks-actions';\nimport { DetailsAndPrice } from './details-and-price';\n\nexport const _LeaveFeedbackItem = ({\n alias,\n className = '',\n comment = '',\n dispatch,\n errorMessageTranslationKeys,\n imageUrl,\n isItemNotReceived,\n memberUrl,\n price,\n title,\n shippingPrice,\n transactionDate,\n transactionId,\n url,\n isPositive,\n isNegative,\n ratingSettings,\n ratingValues,\n state,\n unpaidItemUrl\n}) => {\n const Image = ({ className = '' }) => (\n \n );\n\n const showForm = isNegative || isPositive;\n\n return (\n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n dispatch(toggleIsPositive(transactionId, true))\n }\n />\n \n dispatch(toggleIsPositive(transactionId, false))\n }\n className=\"ml-3\"\n />\n
    \n {showForm && (\n \n )}\n
    \n
    \n );\n};\n\nexport const LeaveFeedbackItem = React.memo(_LeaveFeedbackItem);\n","// extracted by mini-css-extract-plugin\nexport default {\"thinDivider\":\"thinDivider--35UZk\",\"thickDivider\":\"thickDivider--CR6ys\"};","import React from 'react';\nimport styles from './divider.module.scss';\n\nexport const ThinDivider = ({ className = '' }) => (\n
    \n);\n\nexport const ThickDivider = ({ className = '' }) => (\n
    \n);\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\nimport CheckmarkIcon from '@tradera/blueprint/theme/icons2/check-circle.svg?jsx';\nimport AlertIcon from '@tradera/blueprint/theme/icons2/alert.svg?jsx';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\n\nexport const Dialog = ({\n title,\n text,\n icon,\n dismissActionText,\n onDismiss,\n confirmActionText,\n onConfirm\n}) => {\n return (\n \n
    \n \n \n
    \n

    {title}

    \n
    {icon}
    \n

    {text}

    \n {onConfirm ? (\n
    \n \n {confirmActionText}\n \n \n {dismissActionText}\n \n
    \n ) : (\n
    \n \n {dismissActionText}\n \n
    \n )}\n
    \n \n );\n};\n\nexport const SubmittedDialog = ({ submittedFeedbackCount, onDismiss }) => {\n const { t } = useTranslator();\n return (\n }\n dismissActionText={t('leaveFeedback_submittedClose')}\n onDismiss={onDismiss}\n />\n );\n};\n\nexport const SubmitErrorDialog = ({ onDismiss }) => {\n const { t } = useTranslator();\n return (\n }\n dismissActionText={t('leaveFeedback_submittedClose')}\n onDismiss={onDismiss}\n />\n );\n};\n\nexport const AlreadySubmittedErrorDialog = ({ onDismiss }) => {\n const { t } = useTranslator();\n return (\n }\n dismissActionText={t('leaveFeedback_errorClose')}\n onDismiss={onDismiss}\n />\n );\n};\n\nexport const ConfirmSubmitDialog = ({\n negativeCount,\n isInMultipleFeedbacksContext = false,\n onConfirm,\n onDismiss\n}) => {\n const { t } = useTranslator();\n return (\n 0\n ? 'leaveFeedback_negativeWarningTextWithCount'\n : 'leaveFeedback_negativeWarningText',\n {\n count: negativeCount\n }\n )}\n text={t('leaveFeedback_negativeDisclaimer')}\n icon={}\n dismissActionText={t('leaveFeedback_negativeWarningAbort')}\n onDismiss={onDismiss}\n confirmActionText={t('leaveFeedback_negativeWarningConfirm')}\n onConfirm={onConfirm}\n />\n );\n};\n","import { ACTION_TYPES } from './feedbacks-actions';\nimport {\n getValidationErrorTranslationKeys,\n isValidFeedback,\n togglePositive\n} from './leave-feedback-helper';\nimport {\n MAX_RATING_VALUE,\n MIN_RATING_VALUE,\n RATING_NAMES,\n UNSET_RATING_VALUE\n} from './constants';\n\nexport const initialState = {\n feedbacks: {},\n submittables: []\n};\n\nconst updateValidationError = state => {\n Object.values(state.feedbacks).forEach(feedback => {\n feedback.errorMessageTranslationKeys = getValidationErrorTranslationKeys(\n feedback\n );\n });\n};\n\nconst updateSubmittables = state => {\n state.submittables = Object.values(state.feedbacks)\n .filter(feedback => isValidFeedback(feedback))\n .map(validFeedback => {\n const feedback = { ...validFeedback };\n delete feedback.errorMessageTranslationKeys;\n return feedback;\n });\n};\n\nconst isAllRatings = (feedback, rating) =>\n Object.values(feedback.ratings).every(value => value === rating);\n\nconst setAllRatings = (feedback, rating) =>\n Object.keys(feedback.ratings).forEach(\n key => (feedback.ratings[key] = rating)\n );\n\nconst resetItemNotReceivedIfNeeded = feedback => {\n if (feedback.ratings[RATING_NAMES.SHIPPING_TIME] !== MIN_RATING_VALUE) {\n feedback.inr = false;\n }\n};\n\nexport const feedbacksReducer = (state, action) => {\n switch (action.type) {\n case ACTION_TYPES.SET_FEEDBACKS: {\n const newState = { ...state, feedbacks: { ...action.payload } };\n updateSubmittables(newState);\n updateValidationError(newState);\n return newState;\n }\n case ACTION_TYPES.TOGGLE_IS_POSITIVE: {\n const { transactionId, isPositive } = action.payload;\n const oldFeedback = state.feedbacks[transactionId];\n const newFeedback = {\n ...oldFeedback,\n isPositive: togglePositive(oldFeedback.isPositive, isPositive)\n };\n\n const shouldSetAllRatings =\n oldFeedback.isPositive === null ||\n isAllRatings(newFeedback, UNSET_RATING_VALUE) ||\n isAllRatings(newFeedback, MAX_RATING_VALUE);\n if (shouldSetAllRatings) {\n setAllRatings(\n newFeedback,\n newFeedback.isPositive\n ? MAX_RATING_VALUE\n : UNSET_RATING_VALUE\n );\n }\n\n const newState = { ...state };\n resetItemNotReceivedIfNeeded(newFeedback);\n newState.feedbacks[transactionId] = newFeedback;\n updateSubmittables(newState);\n updateValidationError(newState);\n return newState;\n }\n case ACTION_TYPES.SET_RATING: {\n const { transactionId, ratingName, rating } = action.payload;\n const oldFeedback = state.feedbacks[transactionId];\n const newRatings = {\n ...oldFeedback.ratings,\n [ratingName]: rating\n };\n const newFeedback = {\n ...oldFeedback,\n ratings: newRatings\n };\n const newState = { ...state };\n resetItemNotReceivedIfNeeded(newFeedback);\n newState.feedbacks[transactionId] = newFeedback;\n updateSubmittables(newState);\n updateValidationError(newState);\n return newState;\n }\n case ACTION_TYPES.SET_COMMENT: {\n const { transactionId, comment } = action.payload;\n const newFeedback = {\n ...state.feedbacks[transactionId],\n comment\n };\n const newState = { ...state };\n resetItemNotReceivedIfNeeded(newFeedback);\n newState.feedbacks[transactionId] = newFeedback;\n updateSubmittables(newState);\n updateValidationError(newState);\n return newState;\n }\n case ACTION_TYPES.SET_IS_ITEM_NOT_RECEIVED: {\n const { transactionId, isItemNotReceived } = action.payload;\n const newFeedback = {\n ...state.feedbacks[transactionId],\n inr: isItemNotReceived\n };\n const newState = { ...state };\n newState.feedbacks[transactionId] = newFeedback;\n updateSubmittables(newState);\n updateValidationError(newState);\n return newState;\n }\n default: {\n throw new Error(`Unhandled action type: ${action.type}`);\n }\n }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const PageHeader = ({ title, actionComponent }) => {\n const hasSecondColumn = !!actionComponent;\n return (\n
    \n \n \n {title}\n \n
    \n {actionComponent && (\n
    \n {actionComponent}\n
    \n )}\n
    \n );\n};\n\nPageHeader.propTypes = {\n title: PropTypes.node.isRequired,\n actionComponent: PropTypes.node\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslator } from 'tradera-lang/translate';\nimport CheckIcon from '@tradera/blueprint/theme/icons2/check.svg?jsx';\nimport LoadingIcon from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\n\nexport const SubmitButton = ({\n isInMultipleFeedbacksContext,\n isSubmitting,\n onClick,\n submittableCount,\n className = ''\n}) => {\n const { t } = useTranslator();\n const submitButtonText = isInMultipleFeedbacksContext\n ? t(\n submittableCount > 0\n ? 'leaveFeedback_submitButton'\n : 'leaveFeedback_submitButton_noSelected',\n {\n count: submittableCount\n }\n )\n : t('leaveFeedback_confirmButton');\n return (\n \n {isSubmitting ? (\n \n ) : (\n \n )}\n\n {submitButtonText}\n \n );\n};\n\nSubmitButton.propTypes = {\n isInMultipleFeedbacksContext: PropTypes.bool.isRequired,\n isSubmitting: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n submittableCount: PropTypes.number.isRequired,\n className: PropTypes.string\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"stickyContainer\":\"stickyContainer--3PMEr\"};","import React from 'react';\nimport { makeSticky } from 'tradera-apps/my-tradera/app/components/hoc';\nimport styles from './sticky-container.module.scss';\n\nconst Container = ({ children, className = '' }) => {\n return (\n
    \n {children}\n
    \n );\n};\nexport const StickyContainer = makeSticky(Container);\n","// extracted by mini-css-extract-plugin\nexport default {\"leaveFeedbackLayout\":\"leaveFeedbackLayout--3RkUl\",\"loaderContainer\":\"loaderContainer--7G8pB\"};","import React, {\n useCallback,\n useEffect,\n useReducer,\n useState,\n Fragment\n} from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { LocalLoader } from 'tradera-components/loader';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport leaveFeedbackService from 'tradera-apps/my-tradera/app/data/leave-feedback-service';\nimport { LeaveFeedbackItem } from './leave-feedback-item';\nimport { ThinDivider, ThickDivider } from './divider';\nimport {\n AlreadySubmittedErrorDialog,\n SubmittedDialog,\n ConfirmSubmitDialog,\n SubmitErrorDialog\n} from './dialog';\nimport { keepUnique } from 'tradera-utils/array';\nimport {\n createFeedbackPayloadsMap,\n getRatingSettings\n} from './leave-feedback-helper';\nimport { feedbacksReducer, initialState } from './feedbacks-reducer';\nimport { setFeedbacks } from './feedbacks-actions';\nimport { ROLES } from './constants';\nimport {\n Breakpoint,\n BREAKPOINTS\n} from 'tradera-components/breakpoint/breakpoint';\nimport { PageHeader } from './page-header';\nimport { SubmitButton } from './submit-button';\nimport { StickyContainer } from './sticky-container';\nimport styles from './leave-feedback.module.scss';\n\nconst PAGE_SIZE = 10;\n\nconst Layout = ({ renderHeader, children, className = '' }) => (\n
    \n
    \n {renderHeader && renderHeader()}\n {children}\n
    \n
    \n);\n\nexport const LeaveFeedback = ({\n isInMultipleFeedbacksContext,\n onDismiss = () => {},\n onDone,\n role,\n transactionIds: givenTransactionIds\n}) => {\n const [transactionIds] = useState(givenTransactionIds);\n const [loadedCount, setLoadedCount] = useState(0);\n const [itemsLeft, setItemsLeft] = useState(0);\n const [groups, setGroups] = useState([]);\n const [isFetching, setIsFetching] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [negativeCount, setNegativeCount] = useState(0);\n const [showSubmitNegativeWarning, setShowSubmitNegativeWarning] = useState(\n false\n );\n const [showSubmittedDialog, setShowSubmittedDialog] = useState(false);\n const [showSubmitErrorDialog, setShowSubmitErrorDialog] = useState(false);\n const [\n showAlreadySubmittedErrorDialog,\n setShowAlreadySubmittedErrorDialog\n ] = useState(false);\n const [{ feedbacks, submittables }, dispatch] = useReducer(\n feedbacksReducer,\n initialState\n );\n const [ratingSettings] = useState(getRatingSettings(role === ROLES.BUYER));\n const nextCount = itemsLeft > PAGE_SIZE ? PAGE_SIZE : itemsLeft;\n const { t } = useTranslator();\n\n useEffect(() => {\n let loadedCount = groups.reduce((acc, group) => {\n return acc + group.items.length;\n }, 0);\n setLoadedCount(loadedCount);\n const feedbacks = createFeedbackPayloadsMap(\n groups,\n role === ROLES.BUYER\n );\n dispatch(setFeedbacks(feedbacks));\n }, [groups, role]);\n\n useEffect(() => {\n const negatives = Object.values(submittables).filter(\n submittable => submittable.isPositive === false\n );\n setNegativeCount(negatives.length);\n }, [submittables]);\n\n const submitOrConfirm = useCallback(() => {\n if (negativeCount > 0) {\n setShowSubmitNegativeWarning(true);\n } else {\n submit(submittables);\n }\n }, [negativeCount, submit, submittables]);\n\n const submit = useCallback(submittables => {\n setIsSubmitting(true);\n const onSuccess = () => {\n setIsSubmitting(false);\n setShowSubmittedDialog(true);\n };\n const onError = () => {\n setIsSubmitting(false);\n setShowSubmitErrorDialog(true);\n };\n leaveFeedbackService.submitData(submittables, onSuccess, onError);\n }, []);\n\n const onFetchAllSuccess = useCallback(data => {\n setGroups(oldGroups => {\n const newGroups = [...oldGroups];\n data.groups.forEach(incomingGroup => {\n const existingGroup = newGroups.find(\n g => g.label === incomingGroup.label\n );\n if (existingGroup) {\n const mayHaveDuplicates = existingGroup.items.concat(\n incomingGroup.items\n );\n existingGroup.items = keepUnique(\n mayHaveDuplicates,\n item => `${item.itemId}${item.transactionId}`,\n false\n );\n } else {\n newGroups.push(incomingGroup);\n }\n });\n return newGroups;\n });\n setItemsLeft(() => data.itemsLeft);\n setIsFetching(false);\n }, []);\n\n const onFetchError = useCallback(data => {\n setIsFetching(false);\n if (\n data.responseJSON.errorCode === 'BuyerFeedbackAlreadyLeft' ||\n data.responseJSON.errorCode === 'SellerFeedbackAlreadyLeft'\n ) {\n setShowAlreadySubmittedErrorDialog(true);\n }\n }, []);\n\n const fetchNext = useCallback(() => {\n leaveFeedbackService.getAllFeedbackItems(\n loadedCount,\n PAGE_SIZE,\n onFetchAllSuccess,\n onFetchError\n );\n }, [loadedCount, onFetchError, onFetchAllSuccess]);\n\n const fetchAll = useCallback(() => {\n setIsFetching(true);\n leaveFeedbackService.getAllFeedbackItems(\n 0,\n PAGE_SIZE,\n onFetchAllSuccess,\n onFetchError\n );\n }, [onFetchAllSuccess, onFetchError]);\n\n const fetchByTransactionIds = useCallback(\n transactionIds => {\n setIsFetching(true);\n leaveFeedbackService.getFeedbackItems(\n transactionIds,\n data => {\n const group = {\n items: data.items\n };\n setGroups(() => {\n return [group];\n });\n setIsFetching(false);\n },\n onFetchError\n );\n },\n [onFetchError]\n );\n\n useEffect(() => {\n setIsFetching(true);\n leaveFeedbackService.setRootUrl(`/my/leave-feedback/${role}/`);\n if (transactionIds.length > 0) {\n fetchByTransactionIds(transactionIds);\n } else {\n fetchAll();\n }\n }, [fetchAll, fetchByTransactionIds, role, transactionIds]);\n\n if (isFetching) {\n return (\n \n \n \n );\n }\n\n const isInDialog = !isInMultipleFeedbacksContext;\n const isSubDialogOpen =\n showAlreadySubmittedErrorDialog ||\n showSubmitNegativeWarning ||\n showSubmittedDialog ||\n showSubmitErrorDialog;\n const showItems = !(isInDialog && isSubDialogOpen);\n const itemsExist = loadedCount > 0;\n return (\n <>\n {showSubmitNegativeWarning && (\n {\n setShowSubmitNegativeWarning(false);\n submit(submittables);\n }}\n onDismiss={() => setShowSubmitNegativeWarning(false)}\n />\n )}\n {showSubmittedDialog && (\n onDone(submittables)}\n />\n )}\n {showSubmitErrorDialog && (\n {\n setShowSubmitErrorDialog(false);\n onDismiss();\n }}\n />\n )}\n {showAlreadySubmittedErrorDialog && (\n {\n setShowAlreadySubmittedErrorDialog(false);\n onDismiss();\n }}\n />\n )}\n {showItems && (\n \n isInMultipleFeedbacksContext && (\n \n \n }\n />\n \n )\n }>\n {isInMultipleFeedbacksContext && (\n \n \n \n \n \n )}\n {!itemsExist &&
    {t('leaveFeedback_no_items')}
    }\n {itemsExist && (\n \n {groups.map((group, index) => (\n
    \n {index > 0 && (\n \n )}\n {group.label && (\n

    \n {group.label}\n

    \n )}\n {group.items.map((item, index) => {\n const payload =\n feedbacks[item.transactionId];\n if (!payload) {\n return null;\n }\n return (\n \n {index > 0 && (\n \n )}\n \n \n );\n })}\n
    \n ))}\n {nextCount > 0 && (\n
    \n \n {t('leaveFeedback_showMore', {\n count: nextCount\n })}\n \n
    \n )}\n {isInMultipleFeedbacksContext ? (\n \n
    \n \n
    \n
    \n ) : (\n
    \n \n onDismiss && onDismiss()\n }>\n \n {t('leaveFeedback_abort')}\n \n \n
    \n )}\n \n )}\n \n )}\n \n );\n};\n","/**\n * Returns an array with unique values based on keys provided by the given function.\n */\nexport const keepUnique = (arr, getKey, keepFirst) => {\n if (keepFirst) {\n let seen = new Set();\n return arr.filter(item => {\n let key = getKey(item);\n return seen.has(key) ? false : seen.add(key);\n });\n }\n return [...new Map(arr.map(x => [getKey(x), x])).values()];\n};\n","import React from 'react';\n\n// https://github.com/facebook/react/issues/3386#issuecomment-291152357\nconst HighlightWord = ({ text, query = '', icon }) => {\n if (!text) {\n return;\n }\n if (!query) {\n return (\n \n {icon && icon}\n {text}\n \n );\n }\n return (\n \n {icon && icon}\n {text.split(query).reduce((prev, current, i) => {\n if (!i) {\n return [current];\n }\n return prev.concat(\n \n {query}\n ,\n current\n );\n }, [])}\n \n );\n};\n\nexport default HighlightWord;\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport ALink from 'tradera-components/alink';\nimport FilterIcon from '@tradera/blueprint/theme/icons2/filter.svg?jsx';\nimport TimeIcon from '@tradera/blueprint/theme/icons2/time.svg?jsx';\nimport UserIcon from '@tradera/blueprint/theme/icons2/user-fill.svg?jsx';\nimport HighlightWord from './highlight-word';\nimport CloseNarrowIcon from '@tradera/blueprint/theme/icons/close-narrow.svg?jsx';\nimport {\n addRecentSearchText,\n removeRecentSearchText\n} from 'tradera-state/personalisation/actions';\nimport { toSearchString } from 'tradera-utils/url';\n\n// Dont blur input when there's a mouseclick on the search suggestions\nconst preventDefault = evt => {\n evt.preventDefault();\n};\n\n// Without this, the search field dropdown is collapsed. Fixes TWT-993.\nconst fixFlexHeightInIpadMini2Style = { flexBasis: 'auto' };\n\nexport const PreviousSearchesListItem = ({\n changeSearchTerm,\n inSPA,\n isSelected,\n onPreviousSearchRemoved,\n searchTerm,\n selectedCategoryId,\n text\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const dispatch = useDispatch();\n return (\n \n {\n dispatch(addRecentSearchText(text));\n changeSearchTerm(text, event);\n }}\n onMouseDown={preventDefault}\n data-suggestion\n data-previous-suggestion={text}\n data-ga-category=\"User search\"\n data-ga-action=\"Suggestion - Previous Query\"\n data-ga-label={searchTerm}>\n }\n />\n \n {\n dispatch(removeRecentSearchText(text));\n onPreviousSearchRemoved();\n }}\n onMouseDown={preventDefault}\n type=\"reset\">\n \n \n \n );\n};\n\nexport const SearchesSuggestionsListItem = ({\n changeSearchTerm,\n inSPA,\n isSelected,\n item,\n searchTerm,\n selectedCategoryId\n}) => {\n const categoryId = item.category\n ? item.category.id\n : selectedCategoryId\n ? selectedCategoryId\n : 0;\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n changeSearchTerm(item.text, event)}\n onMouseDown={preventDefault}\n data-suggestion\n data-search-suggestion={item.text}\n data-ga-category=\"User search\"\n data-ga-action={`Suggestion - ${\n item.category ? 'Category' : 'Auto Query'\n }`}\n data-ga-label={item.text}>\n \n {item.category ? `inom ${item.category.name}` : ''}\n \n );\n};\n\nexport const ShopsSuggestionsListItem = ({\n changeSearchTerm,\n inSPA,\n isSelected,\n item,\n searchTerm\n}) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const suggestionUrl =\n item.name === 'Musikhjälpen'\n ? toLocalizedUrl('/charity/musikhjalpen')\n : toLocalizedUrl(`/profile/items/${item.memberId}/${item.urlName}`);\n return (\n changeSearchTerm(item.text, event)}\n onMouseDown={preventDefault}\n data-suggestion\n data-shop-suggestion={item.name}\n data-ga-category=\"User search\"\n data-ga-action=\"Suggestion - Shop\"\n data-ga-label={item.name}>\n {t('siteHeader_shop')}\n \n \n );\n};\n\nexport const CharitiesSuggestionsListItem = ({\n changeSearchTerm,\n // inSPA,\n isSelected,\n item,\n searchTerm\n}) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n changeSearchTerm(item.text)}\n onMouseDown={preventDefault}\n data-suggestion\n data-shop-suggestion={item.name}\n data-ga-category=\"User search\"\n data-ga-action=\"Suggestion - Charity\"\n data-ga-label={item.name}>\n \n {t('siteHeader_cause')}\n \n \n \n );\n};\n\nexport const CampaignSuggestionsListItem = ({\n changeSearchTerm,\n // inSPA,\n isSelected,\n item,\n searchTerm\n}) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const suggestionUrl = toLocalizedUrl('/charity/' + item.campaignId);\n return (\n changeSearchTerm(item.text, event)}\n onMouseDown={preventDefault}\n data-suggestion\n data-campaign-suggestion={item.headline}\n data-ga-category=\"User search\"\n data-ga-action=\"Suggestion - Campaign\"\n data-ga-label={item.headline}>\n \n {t('siteHeader_campaign')}\n \n \n \n );\n};\n\nexport const AdvancedSearchListItem = ({ isSelected }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n \n \n {t('siteHeader_searchAdvanced')}\n \n );\n};\n\nexport const SellerSearchListItem = ({ isSelected, searchTerm }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const searchUrl = '/search/detailed/member';\n const href = searchTerm\n ? toLocalizedUrl(`${searchUrl}?q=${searchTerm}`)\n : toLocalizedUrl(searchUrl);\n\n return (\n \n \n {t('siteHeader_searchSeller')}\n \n );\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n CampaignSuggestionsListItem,\n PreviousSearchesListItem,\n SearchesSuggestionsListItem,\n ShopsSuggestionsListItem,\n AdvancedSearchListItem,\n SellerSearchListItem,\n CharitiesSuggestionsListItem\n} from './suggestion-list-items';\n\nconst SearchSuggestion = ({\n suggestions,\n inSPA,\n visible,\n onChangeSearchTerm,\n onPreviousSearchRemoved,\n searchTerm,\n selectedCategoryId,\n selectedIndex,\n searchSuggestionsElementRef\n}) => (\n \n
    \n {suggestions.map((entry, index) => {\n const componentProps = {\n changeSearchTerm: onChangeSearchTerm,\n inSPA: inSPA,\n isSelected: index === selectedIndex,\n item: entry.item,\n key: entry.key,\n searchTerm: searchTerm,\n selectedCategoryId: selectedCategoryId,\n text: entry.text\n };\n switch (entry.type) {\n case 'previous':\n return (\n \n );\n case 'suggested-campaign':\n return (\n \n );\n case 'suggested-item':\n return (\n \n );\n case 'suggested-shop':\n return (\n \n );\n case 'suggested-charity':\n return (\n \n );\n case 'link-advanced-search':\n return (\n \n );\n case 'link-seller-search':\n return (\n \n );\n default:\n throw new Error(\n 'unhandled entry type: ',\n JSON.stringify(entry)\n );\n }\n })}\n
    \n \n);\n\nSearchSuggestion.propTypes = {\n allSuggestions: PropTypes.array,\n isSearchInputFocused: PropTypes.bool,\n onChangeSearchTerm: PropTypes.func,\n onPreviousSearchRemoved: PropTypes.func,\n previousSearches: PropTypes.array,\n searchTerm: PropTypes.string,\n selectedCategoryId: PropTypes.number,\n selectedIndex: PropTypes.number,\n setSearchSuggestionsElement: PropTypes.func\n};\n\nexport default SearchSuggestion;\n","import { Component } from 'react';\nimport ReactDOM from 'react-dom';\n\nexport default class ModalPortal extends Component {\n constructor() {\n super();\n this.el = document.createElement('div');\n this.notificationPortalRoot = document.getElementById('modal-portal');\n }\n\n componentDidMount() {\n if (this.notificationPortalRoot) {\n this.notificationPortalRoot.appendChild(this.el);\n }\n }\n\n componentWillUnmount() {\n if (this.notificationPortalRoot) {\n this.notificationPortalRoot.removeChild(this.el);\n }\n }\n\n render() {\n const { children } = this.props;\n return ReactDOM.createPortal(children, this.el);\n }\n}\n","import $ from 'jquery';\nexport default $.ajax;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { useCountdown } from 'tradera-hooks/use-countdown';\nimport { formatStaticEndTime } from 'tradera-utils/format';\nimport { formatItemCardTimeLeft } from 'tradera-utils/format-time-left';\n\nconst EndTimeLabel = ({ className, endDate, isActive }) => {\n if (!endDate) return null;\n\n return isActive ? (\n \n ) : (\n \n );\n};\n\nconst EndTimeLabelEnded = ({ className }) => {\n const { t } = useTranslator();\n return {t('vip_ended')};\n};\n\nconst EndTimeLabelWithCountDown = ({ className, endDate }) => {\n const { t } = useTranslator();\n const {\n timeLeftText,\n isCountdownDone,\n isCountdownEnabled,\n isTimeLeftBelowWarningLimit\n } = useCountdown(endDate, formatItemCardTimeLeft);\n\n return (\n \n {isCountdownEnabled && isCountdownDone ? (\n {t('itemCard_ended')}\n ) : (\n \n {timeLeftText || formatStaticEndTime(endDate, t)}\n \n )}\n \n );\n};\nEndTimeLabel.propTypes = {\n className: PropTypes.string,\n endDate: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n isActive: PropTypes.bool\n};\nEndTimeLabel.defaultProps = {\n className: ''\n};\n\nexport default EndTimeLabel;\n","import qs from 'qs';\n\nexport const URL_HASHES = {\n openBiddingModal: 'bidding',\n saveInWishlist: 'wishlist=1',\n openBinModal: 'bin=1',\n openChangeCombinedShippingModal: 'open_change_combined_shipping=',\n markAsPaid: 'mark_as_paid='\n};\n\n/**\n * Remove hash and forceRedirect param from url\n */\nexport const removeHashFromUrl = () => {\n const { forceRedirect, ...otherQueryParams } = qs.parse(location.search, {\n ignoreQueryPrefix: true\n });\n history.replaceState(\n {},\n window.title,\n location.pathname +\n qs.stringify(otherQueryParams, { addQueryPrefix: true })\n );\n};\n\nexport const shouldOpenBiddingModal = () => {\n if (document.location.hash.includes(URL_HASHES.openBiddingModal)) {\n const { bidding } = qs.parse(document.location.hash.substr(1));\n return bidding ? parseInt(bidding, 10) : 0;\n } else {\n return 0;\n }\n};\n\nexport const shouldSaveInWishlist = () =>\n document.location.hash.includes(URL_HASHES.saveInWishlist);\n\nexport const shouldOpenBinModal = () =>\n document.location.hash.includes(URL_HASHES.openBinModal);\n\nexport const shouldOpenChangeCombinedShippingModal = () =>\n document.location.hash.includes(URL_HASHES.openChangeCombinedShippingModal);\n\nexport const shouldMarkAsPaid = () =>\n document.location.hash.includes(URL_HASHES.markAsPaid);\n\nconst getBaseRedirectUrl = () => {\n // Add random query parameter to force reload when redirecting to this url\n // and only the hash differs\n const queryParams = {\n ...qs.parse(location.search, { ignoreQueryPrefix: true }),\n forceRedirect: Math.round(Math.random() * 100000)\n };\n return (\n location.protocol +\n '//' +\n location.host +\n location.pathname +\n qs.stringify(queryParams, { addQueryPrefix: true })\n );\n};\n\nexport const getBiddingRedirectUrl = amount => {\n const url = getBaseRedirectUrl() + '#' + URL_HASHES.openBiddingModal;\n if (!amount) return url;\n return `${url}=${amount}`;\n};\n\nexport const getWishlistRedirectUrl = () =>\n getBaseRedirectUrl() + '#' + URL_HASHES.saveInWishlist;\n\nexport const getBinRedirectUrl = () =>\n getBaseRedirectUrl() + '#' + URL_HASHES.openBinModal;\n","import React from 'react';\n\nconst lazyLoadSettings = {\n offset: 400,\n once: true,\n height: 150,\n placeholder: React.createElement('div', {\n className: 'item-card-image animation-loading-shimmer w-100 h-100'\n })\n};\n\nexport { lazyLoadSettings };\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 {\n selectGeolocation,\n selectIsOutsideSweden\n} from 'tradera-state/member/selectors';\nimport { selectPreferredLanguage } from 'tradera-state/language/selectors';\nimport { selectIsLoggedIn } from 'tradera-state/member';\nimport { getLanguageFromCountryCode } from 'tradera-utils/languagecode';\nimport { isSwedenCountryCodeOrUndefined } from 'tradera-utils/countrycode';\n\nexport const selectShowRegionSelection = state =>\n !selectIsLoggedIn(state) && selectIsOutsideSweden(state);\nexport const selectAvailableShippingCountries = state =>\n state.shippingRegion.availableShippingCountries;\nexport const selectShippingCountry = state =>\n state.shippingRegion.shippingCountry;\nexport const selectIsLoadingAvailableShippingCountries = state =>\n state.shippingRegion.isLoadingAvailableShippingCountries;\nexport const selectHasLoadedAvailableShippingCountries = state =>\n state.shippingRegion.hasLoadedAvailableShippingCountries;\nexport const selectShippingRegionCountryCodeIso2 = state =>\n state.shippingRegion.shippingCountry?.countryCodeIso2;\nexport const selectIsSwedishVisitor = state =>\n isSwedenCountryCodeOrUndefined(selectShippingRegionCountryCodeIso2(state));\n\nconst gpsMatchesLanguage = state => {\n const geoLocation = selectGeolocation(state);\n if (!geoLocation) {\n return true;\n }\n const country = geoLocation?.isoCode?.toLowerCase();\n const expectedLang = getLanguageFromCountryCode(country);\n const language =\n selectPreferredLanguage(state)?.languageCodeIso2?.toLowerCase() || 'sv';\n return expectedLang === language;\n};\n\nexport const selectShowLocalizationRegionPicker = state =>\n !selectIsLoggedIn(state) &&\n state.shippingRegion.localizationRegionPickerEnabled &&\n !state.shippingRegion.regionPickerDismissed &&\n !gpsMatchesLanguage(state);\n","import { PAGE_LIST_TYPES, PAGE_BULK_ACTIONS } from '../constants/list-types';\n\n/**\n * @param {string} listType\n * @param {object} item\n * @returns {object} 'Bulk Actions' available for the specific list\n */\n\nexport const listActions = (\n listType,\n memberId,\n selectedFilterBar,\n count = 0,\n t\n) => {\n const actions = {\n [PAGE_LIST_TYPES.SELLER_ACTIVE]: () => {\n switch (selectedFilterBar) {\n default:\n return {\n isCheckboxActive: item =>\n item && item.bidInformation.bidCount === 0,\n bulkCssClass: 'danger',\n label: t('myt_action_cancelListingsLabel'),\n bulkAction: PAGE_BULK_ACTIONS.ACTIVE_CANCEL,\n modal: {\n icon: 'warning',\n heading: t(\n 'myt_action_cancelListingsModalHeading',\n { count: count, itemCount: count }\n ),\n message: t(\n 'myt_action_cancelListingsModalMessage',\n { count: count }\n ),\n confirmButtonText: t(\n 'myt_action_cancelListingsModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_cancelListingsModalCancelButtonText'\n ),\n dismissable: true\n },\n idType: 'itemId'\n };\n }\n },\n\n [PAGE_LIST_TYPES.SELLER_NOT_SOLD]: () => {\n switch (selectedFilterBar) {\n default:\n return {\n isCheckboxActive: item => {\n if (!item) {\n return false;\n }\n if (item.listing.restart.hasRestartedChild) {\n return false;\n }\n return !item.isArchived;\n },\n /*\n * @todo: confirm this\n */\n bulkCssClass: 'primary',\n label: t('myt_action_restartListingsLabel'),\n bulkAction: PAGE_BULK_ACTIONS.UNSOLD_RESTART,\n modal: {\n heading: t(\n 'myt_action_restartListingsModalHeading',\n { count: count, itemCount: count }\n ),\n dismissable: true,\n wide: true,\n confirmButtonText: t(\n 'myt_action_restartListingsModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_restartListingsModalCancelButtonText'\n ),\n headingCSS: 'messaging-modal-title-with-line',\n messageAlignment: 'left',\n cssClass: false\n },\n idType: 'itemId'\n };\n }\n },\n\n [PAGE_LIST_TYPES.BUYER_ACTIVE_ITEMS]: () => {\n switch (selectedFilterBar) {\n case 'BuyerHidden':\n return {\n isCheckboxActive: item => {\n return (\n (item &&\n item.caller.leadingBidRemoved === true) ||\n (item.bidInformation.leadingBidder &&\n item.bidInformation.leadingBidder.id !==\n memberId)\n );\n },\n bulkCssClass: 'primary',\n label: t(\n 'myt_action_showBuyerHiddenActiveListingsLabel'\n ),\n bulkAction: PAGE_BULK_ACTIONS.BUYER_SHOW_ACTIVE,\n modal: {\n heading: t(\n 'myt_action_showBuyerHiddenActiveListingsModalHeading',\n { count: count, itemCount: count }\n ),\n message: t(\n 'myt_action_showBuyerHiddenActiveListingsModalMessage',\n { count: count }\n ),\n dismissable: true,\n wide: false,\n confirmButtonText: t(\n 'myt_action_showBuyerHiddenActiveListingsModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_showBuyerHiddenActiveListingsModalCancelButtonText'\n ),\n icon: 'warning',\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n case 'BuyerNotHidden':\n return {\n isCheckboxActive: item => {\n return (\n (item &&\n item.caller?.leadingBidRemoved === true) ||\n (item.bidInformation.leadingBidder &&\n (item.bidInformation.leadingBidder.id !==\n memberId ||\n item.reservePriceReached === false))\n );\n },\n bulkCssClass: 'primary',\n label: t('myt_action_hideListingsLabel'),\n bulkAction: PAGE_BULK_ACTIONS.BUYER_HIDE_ACTIVE,\n modal: {\n heading: t('myt_action_hideListingsModalHeading', {\n count: count,\n itemCount: count\n }),\n dismissable: true,\n wide: false,\n icon: 'warning',\n confirmButtonText: t(\n 'myt_action_hideListingsModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_hideListingsModalCancelButtonText'\n ),\n message: t('myt_action_hideListingsModalMessage', {\n count: count\n }),\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n default:\n return undefined;\n }\n },\n\n [PAGE_LIST_TYPES.BUYER_PURCHASES]: () => {\n switch (selectedFilterBar) {\n case 'AllPurchases':\n case 'BuyerNotPaid':\n return {\n isCheckboxActive: item =>\n item &&\n item.transaction &&\n item.transaction.buyerState &&\n item.transaction.buyerState.paid !== true,\n bulkCssClass: 'primary',\n label: t('myt_action_markListingsAsPaidLabel'),\n bulkAction: PAGE_BULK_ACTIONS.BUYER_MARK_PAID,\n modal: {\n heading: t(\n 'myt_action_markListingsAsPaidModalHeading',\n { count: count, itemCount: count }\n ),\n message: '',\n dismissable: true,\n wide: false,\n confirmButtonText: t(\n 'myt_action_markListingsAsPaidModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_markListingsAsPaidModalCancelButtonText'\n ),\n icon: 'warning',\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n case 'BuyerHidden':\n return {\n isCheckboxActive: () => {\n return true;\n // return item && (item.caller.leadingBidRemoved === true) || (item.bidInformation.leadingBidder && item.bidInformation.leadingBidder.id !== memberId) ? true : false;\n },\n bulkCssClass: 'primary',\n label: t('myt_action_showBuyerHiddenPurchasesLabel'),\n bulkAction: PAGE_BULK_ACTIONS.PURCHASES_SHOW,\n modal: {\n heading: t(\n 'myt_action_showBuyerHiddenPurchasesModalHeading',\n { count: count, itemCount: count }\n ),\n message: t(\n 'myt_action_showBuyerHiddenPurchasesModalMessage',\n { count: count }\n ),\n dismissable: true,\n wide: false,\n confirmButtonText: t(\n 'myt_action_showBuyerHiddenPurchasesModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_showBuyerHiddenPurchasesModalCancelButtonText'\n ),\n icon: 'warning',\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n default:\n return undefined;\n }\n },\n\n [PAGE_LIST_TYPES.BUYER_ITEMS_LOST]: () => {\n switch (selectedFilterBar) {\n case 'ItemsLostNotHidden':\n return {\n isCheckboxActive: () => true,\n bulkCssClass: 'primary',\n label: t('myt_action_hideListingsLabel'),\n bulkAction: PAGE_BULK_ACTIONS.BUYER_HIDE_ACTIVE,\n modal: {\n heading: t('myt_action_hideListingsModalHeading', {\n count: count,\n itemCount: count\n }),\n dismissable: true,\n wide: false,\n icon: 'warning',\n confirmButtonText: 'Ja',\n cancelButtonText: 'Nej',\n message: t('myt_action_hideListingsModalMessage', {\n count: count\n }),\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n case 'ItemsLostHidden':\n return {\n isCheckboxActive: () => true,\n bulkCssClass: 'primary',\n label: t(\n 'myt_action_showBuyerHiddenActiveListingsLabel'\n ),\n bulkAction: PAGE_BULK_ACTIONS.BUYER_SHOW_ACTIVE,\n modal: {\n heading: t(\n 'myt_action_showBuyerHiddenActiveListingsModalHeading',\n { count: count, itemCount: count }\n ),\n message: t(\n 'myt_action_showBuyerHiddenActiveListingsModalMessage',\n { count: count }\n ),\n dismissable: true,\n wide: false,\n confirmButtonText: t(\n 'myt_action_showBuyerHiddenActiveListingsModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_showBuyerHiddenActiveListingsModalCancelButtonText'\n ),\n icon: 'warning',\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n default:\n return undefined;\n }\n },\n\n default: () => ({})\n };\n\n return actions[listType] ? actions[listType]() : actions['default']();\n};\n","import { PAGE_NAMES as MYT_PAGE_NAMES } from 'tradera-apps/my-tradera/app/constants/page';\n\nexport const SURVEYS = {\n general: {\n survey: 'tradera/hur-tycker-du-att-det-fungerar-att-anvanda-tradera',\n supportURL: 'https://info.tradera.com/'\n },\n language: {\n survey: 'tradera/english-translation---rate-your-experience'\n },\n paynova: {\n survey: 'tradera/hur-tycker-du-att-paynova-fungerar'\n },\n cardVerification: {\n survey: 'tradera/vad-fick-dig-att-avbryta-kortverifieringen'\n },\n bankId: {\n survey: 'tradera/bankid'\n },\n [MYT_PAGE_NAMES.BuyerActiveItems]: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-aktiva-annonser'\n },\n [MYT_PAGE_NAMES.BuyerPurchases]: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-mina-kop'\n },\n [MYT_PAGE_NAMES.BuyerItemsLost]: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-mina-ej-vunna'\n },\n [MYT_PAGE_NAMES.SellerActive]: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-aktiva-annonser-2'\n },\n [MYT_PAGE_NAMES.SellerSold]: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-salda-annonser'\n },\n [MYT_PAGE_NAMES.SellerUnsold]: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-osalda-annonser'\n },\n valuationPage: {\n survey: 'tradera/vad-ar-den-vard-hur-tycker-varderingen-funkar-'\n },\n syiDraftPage: {\n survey: 'tradera/hur-fungerar-det-att-skapa-en-annons'\n }\n};\n","import React, { Fragment } from 'react';\n\nimport CheckIcon from '@tradera/blueprint/theme/icons2/check.svg?jsx';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport { useTranslator } from 'tradera-lang/translate';\nimport SimpleModal from 'components/modals/simple-modal';\nimport TraderaLogo from 'components/tradera/logo';\nimport './gdpr-modal.scss';\n\nconst GdprModal = props => {\n const { t } = useTranslator();\n const { openGdprSettings, acceptAndHide } = props;\n return (\n {}}>\n \n \n

    \n \n

    \n

    \n \n

    \n

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

    \n
    \n

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

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

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

    \n
    \n
    \n

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

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

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

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

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

    \n \n \n
    \n

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

    \n
    \n )\n )}\n
    \n
    \n \n {t('gdprConsent_save')}\n \n
    \n \n );\n }\n}\n\nGdprSettingsModal.propTypes = {\n saveHandler: PropTypes.func.isRequired\n};\n\nexport default withTranslator(GdprSettingsModal);\n","import React, { Fragment } from 'react';\nimport { connect } from 'react-redux';\nimport dayjs from 'dayjs';\n\nimport { Analytics, logger } from 'packages';\nimport uiActions from 'tradera-state/ui/actions';\nimport CookieUtil from 'tradera-utils/cookie';\nimport {\n GDPR_CONSENT_COOKIE,\n GDPR_CONSENT_ALERT_DISMISSED\n} from 'tradera-constants/cookies';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\nimport GdprModal from 'tradera-components/alerts/gdpr/gdpr-modal';\nimport GdprSettingsModal from 'tradera-components/alerts/gdpr/gdpr-settings-modal';\nimport initData from 'init-data';\n\nconst GdprContainer = props => {\n const {\n visibleModal,\n visibleSettings,\n closeModal,\n openSettings,\n closeSettings\n } = props;\n\n const quantcastConsent = initData.featureSwitches['quantcast-consent'];\n const openGdprSettings = event => {\n if (event) event.preventDefault();\n openSettings();\n };\n\n const acceptAndHide = (\n performance = true,\n functional = true,\n marketing = true,\n eventLabel\n ) => {\n GdprSettings.set(performance, functional, marketing);\n CookieUtil.createCookie(\n GDPR_CONSENT_ALERT_DISMISSED,\n 1,\n dayjs()\n .add(1, 'years')\n .toDate()\n );\n closeSettings();\n closeModal();\n // Only track event and reload if cookie settings allow tracking\n if (performance) {\n trackEvent(eventLabel)\n .then(() => location.reload(true))\n .catch(error => logger(error));\n }\n };\n\n const trackEvent = (label = 'Save') => {\n return new Promise(resolve => {\n Analytics.trackEvent({\n category: 'Settings',\n action: 'Cookies',\n label,\n hitCallback: resolve\n });\n });\n };\n\n const hasGdprCookie = CookieUtil.hasCookie(GDPR_CONSENT_COOKIE);\n // Default to all toggled on if settings have never been set\n const gdprSettings = hasGdprCookie\n ? {\n performance: GdprSettings.isPerformanceEnabled(),\n functional: GdprSettings.isFunctionalEnabled(),\n marketing: GdprSettings.isMarketingEnabled()\n }\n : {\n performance: true,\n functional: true,\n marketing: true\n };\n\n return !quantcastConsent ? (\n \n {visibleModal && (\n \n )}\n {visibleSettings && (\n \n )}\n \n ) : null;\n};\n\nconst mapStateToProps = state => ({\n visibleModal: state.ui.gdpr.modalOpen,\n visibleSettings: state.ui.gdpr.settingsOpen\n});\n\nconst mapDispatchToProps = dispatch => ({\n closeModal: () => dispatch(uiActions.closeGdprModal()),\n openSettings: () => dispatch(uiActions.openGdprSettings()),\n closeSettings: () => dispatch(uiActions.closeGdprSettings())\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(GdprContainer);\n","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 dispatch(actions.setOptedInValue(true));\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 return channel;\n } catch (error) {\n dispatch(actions.setOptedInValue(false));\n return null;\n }\n};\n\nexport const optOut = () => async dispatch => {\n try {\n dispatch(actions.setOptedInValue(false));\n const sdk = await getUrbanSdk();\n if (sdk !== null && sdk.channel !== null) {\n await sdk.channel.optOut();\n }\n } catch (error) {\n dispatch(actions.setOptedInValue(true));\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","import React from 'react';\n\nimport { useTranslator } from 'tradera-lang/translate';\nimport ErrorContainer from './error-container';\nimport WarningIcon from '@tradera/blueprint/theme/icons/warning.svg?jsx';\n\nconst NoItemsError = () => {\n const { t } = useTranslator();\n return (\n \n

    \n \n

    \n

    {t('error_oops')}

    \n

    {t('error_cantLoadItems')}

    \n

    {t('error_tryAgainLater')}

    \n

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

    \n
    \n );\n};\n\nexport default NoItemsError;\n","import { logger } from 'packages';\n\n/**\n *\n * @param {object} initData\n * @param {object} [initData.featureSwitches]\n * @param {object} [initData.startPageResponse]\n * @param {object} [initData.trendingBrands]\n * @param {object} [initData.trendingSearches]\n * @returns {{isFetching: boolean, hasResults: boolean, config: object, trendingBrands: object, trendingSearches: object}}\n */\nexport default (initData = {}) => {\n const {\n startPageResponse,\n trendingBrands = { items: [], status: 'NOT_FETCHED' },\n trendingSearches = { items: [], status: 'NOT_FETCHED' },\n wishList = { itemIds: [], status: 'NOT_FETCHED' },\n favouriteSellers = {\n sellers: [],\n sellerSuggestions: [],\n items: [],\n totalItems: 0,\n status: 'NOT_FETCHED'\n }\n } = initData;\n let config;\n if (startPageResponse?.config) {\n try {\n config = JSON.parse(startPageResponse.config);\n } catch (error) {\n logger(error);\n }\n }\n return {\n status: config ? 'HAS_DATA' : 'NOT_FETCHED',\n config,\n trendingBrands,\n trendingSearches,\n wishList,\n favouriteSellers\n };\n};\n","export default {\n SET_TCF_LOADED: 'ADS/SET_TCF_LOADED',\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 loadingQuickView = () => {\n return {\n ...state,\n quickView: {\n ...state.quickView,\n loading: action.payload\n }\n };\n };\n\n const openVideoModal = () => {\n const { videoUrl, title, pageType } = action.payload;\n return {\n ...state,\n videoModal: {\n ...state.videoModal,\n open: CONSTANTS.MODAL.OPEN,\n videoUrl: videoUrl,\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 const openYoutubeVideoModal = () => {\n const { videoId, title, pageType } = action.payload;\n return {\n ...state,\n youtubeVideoModal: {\n ...state.youtubeVideoModal,\n open: CONSTANTS.MODAL.OPEN,\n videoId: videoId,\n title: title,\n pageType: pageType\n }\n };\n };\n\n const closeYoutubeVideoModal = () => {\n return {\n ...state,\n youtubeVideoModal: {\n ...state.youtubeVideoModal,\n open: CONSTANTS.MODAL.CLOSED\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 openModal = () => {\n const { modalId, data } = action.payload;\n return {\n ...state,\n modals: {\n currentModal: modalId,\n currentModalData: data\n }\n };\n };\n\n const closeModal = () => {\n return {\n ...state,\n modals: {\n currentModal: null,\n currentModalData: null\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 item: {}\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.LOADING_QUICK_VIEW]: loadingQuickView,\n [actionTypes.OPEN_VIDEO_MODAL]: openVideoModal,\n [actionTypes.CLOSE_VIDEO_MODAL]: closeVideoModal,\n [actionTypes.OPEN_YOUTUBE_VIDEO_MODAL]: openYoutubeVideoModal,\n [actionTypes.CLOSE_YOUTUBE_VIDEO_MODAL]: closeYoutubeVideoModal,\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 [actionTypes.OPEN_MODAL]: openModal,\n [actionTypes.CLOSE_MODAL]: closeModal\n };\n\n return !action || !action.type || !reducers[action.type]\n ? def()\n : reducers[action.type]();\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useMediaQuery } from 'react-responsive';\n\nimport { BREAKPOINT_SIZES, BREAKPOINTS } from 'tradera-constants/breakpoints';\nimport { getCurrentBreakpoint } from 'tradera-utils/breakpoints';\n\n/**\n * Conditionally render children depending on matching breakpoint\n *\n * \"is\" prop has precedence over \"upTo\" and \"downTo\", which can be used together to define a range\n *\n * @param {boolean} props.desktop - LG and above\n * @param {boolean} props.tablet - MD\n * @param {boolean} props.mobile - SM and below\n * @param {string} props.is - Exact breakpoint match\n * @param {string} props.upTo - Up to (inclusive) breakpoint match\n * @param {string} props.downTo - Down to (inclusive) breakpoint match\n * @param props.children\n * @returns {children|null}\n */\nconst Breakpoint = props => {\n const { desktop, tablet, mobile, children } = props;\n let { is, upTo, downTo } = props;\n let mediaQuery = {};\n if (desktop || tablet || mobile) {\n if (desktop) downTo = BREAKPOINTS.LG;\n else if (tablet) is = BREAKPOINTS.MD;\n else if (mobile) upTo = BREAKPOINTS.SM;\n }\n if (is) {\n mediaQuery.minWidth = BREAKPOINT_SIZES[is].min;\n mediaQuery.maxWidth = BREAKPOINT_SIZES[is].max;\n } else {\n if (upTo) {\n mediaQuery.maxWidth = BREAKPOINT_SIZES[upTo].max;\n } else if (downTo) {\n mediaQuery.minWidth = BREAKPOINT_SIZES[downTo].min;\n }\n }\n const isActive = useMediaQuery(mediaQuery);\n return isActive ? children : null;\n};\nBreakpoint.propTypes = {\n desktop: PropTypes.bool,\n tablet: PropTypes.bool,\n mobile: PropTypes.bool,\n is: PropTypes.oneOf(Object.keys(BREAKPOINTS)),\n upTo: PropTypes.oneOf(Object.keys(BREAKPOINTS)),\n downTo: PropTypes.oneOf(Object.keys(BREAKPOINTS))\n};\n\n/**\n * Returns breakpoint id when it changes\n *\n * @returns {string|null}\n */\nfunction useBreakpoint() {\n const [breakpoint, setBreakpoint] = useState(\n getCurrentBreakpoint(window.innerWidth)\n );\n useEffect(() => {\n const handleResize = event =>\n setBreakpoint(getCurrentBreakpoint(event.target.innerWidth));\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n return breakpoint;\n}\n\nconst withBreakpoint = WrappedComponent => {\n function WithBreakpoint(props) {\n const currentBreakpoint = useBreakpoint();\n return (\n \n );\n }\n\n WithBreakpoint.displayName = `withBreakpoint(${WithBreakpoint.displayName ||\n WithBreakpoint.name}`;\n\n return WithBreakpoint;\n};\n\nconst isMobile = currentBreakpoint =>\n [BREAKPOINTS.XS, BREAKPOINTS.SM].includes(currentBreakpoint);\n\nconst isTablet = currentBreakpoint =>\n [BREAKPOINTS.MD].includes(currentBreakpoint);\n\nconst isDesktop = currentBreakpoint =>\n [BREAKPOINTS.LG, BREAKPOINTS.XL].includes(currentBreakpoint);\n\nexport {\n Breakpoint as default,\n Breakpoint,\n BREAKPOINTS,\n useBreakpoint,\n isMobile,\n isTablet,\n isDesktop,\n withBreakpoint\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 RECEIVE_TOP_LEVEL_CATEGORIES: 'CATEGORIES/RECEIVE_TOP_LEVEL_CATEGORIES',\n HANDLE_TOP_LEVEL_CATEGORIES_ERROR:\n 'CATEGORIES/HANDLE_TOP_LEVEL_CATEGORIES_ERROR'\n};\n","export const HOVER_MENUS = {\n WISHLIST: 'Wishlist',\n SELL: 'Selling',\n BUY: 'Buying',\n LOCALIZATION: 'Localization'\n};\n","/**\n * Legacy class replaced by translations. Please don't add anything here, translate all copy instead\n */\nexport default {\n INVOICE_UNPAID: 'Obetald faktura',\n INVOICE_UNPAID_DESCRIPTION: 'Du har väntande faktura(or)',\n INVOICE_OVERDUE: 'Förfallen faktura',\n INVOICE_OVERDUE_DESCRIPTION:\n 'Du har en eller flera förfallna fakturor (registrering av nya inbetalningar är fördröjd).',\n BANK_ACCOUNT_MISSING: 'Kontouppgifter',\n BANK_ACCOUNT_MISSING_DESCRIPTION:\n 'Fyll i dina kontouppgifter för att få betalt när du säljer.',\n PAYOUT_FAILED: 'Misslyckad utbetalning',\n PAYOUT_FAILED_DESCRIPTION:\n 'Vi kunde tyvärr inte betala ut dina pengar. Klicka här för att uppdatera utbetalningsuppgifter.',\n PAYMENT_READY_BANK_ACCOUNT_MISSING: 'Misslyckad utbetalning',\n PAYMENT_READY_BANK_ACCOUNT_MISSING_DESCRIPTION:\n 'Du har en väntande utbetalning. Fyll i dina kontouppgifter för att få pengarna.',\n SWISH_MISSING: 'Swish saknas',\n SWISH_MISSING_DESCRIPTION:\n 'De flesta köpare väljer att betala med Swish. Fyll i ditt Swish-nummer för att inte missa betalningar.',\n ADD_SWISH: 'Lägg till Swish',\n NO_THANKS_SWISH: 'Nej tack till Swish',\n I_UNDERSTAND: 'Jag förstår',\n IFRAME_NOT_SUPPORTED: 'Din browser saknar stöd för iframes',\n COOKIES: {\n HEADER: 'Information om cookies',\n DESC:\n 'Tradera använder cookies (kakor) för att ge dig en bättre upplevelse.',\n READ_MORE: 'Läs mer om vårt användande av cookies.'\n },\n WELCOME_TO_TRADERA: 'Välkommen till Sveriges största marknadsplats!',\n GET_STARTED_BUYING: 'Kom igång med att handla på Tradera',\n GET_STARTED_SELLING: 'Kom igång med att sälja på Tradera',\n VIEW_MORE_VIDEOS: 'Se fler videos',\n DISCOVER: {\n FILTERS: {\n ALL_CATEGORIES: 'Alla kategorier',\n BRANDS: 'Varumärken',\n CONDITION: 'Skick',\n ITEM_TYPE: 'Annonsformat',\n PRICE: 'Pris',\n SELLER_TYPE: 'Typ av säljare',\n COUNTY: 'Område',\n ITEM_STATUS: 'Status',\n SORTING: 'Sortering',\n CLEAR: 'Återställ'\n }\n },\n META: {\n DEFAULT_SITE_NAME: 'Tradera',\n DEFAULT_DESCRIPTION:\n 'Köp och sälj bland auktioner och till fast pris på Tradera.com. Fynda bland massor av auktioner.'\n }\n};\n","export default {\n ERRORS: {\n GENERIC:\n 'Något har gått fel på Tradera. Vi jobbar på att fixa det. Försök igen om en stund.'\n },\n SHIPPING_LABELS: {\n NO_SELECTED_SHIPPING: 'Inget fraktsätt valt',\n FREE_SHIPPING: 'Fri frakt',\n TAKEAWAY: 'Avhämtning'\n }\n};\n","const shippingProviders = t => [\n {\n text: t('shippingProviders_schenkerPrivpak'),\n type: SHIPPING_OPTIONS.SCHENKER,\n logoImgUrl: '/static/images/shipping/schenker.svg'\n },\n {\n text: t('shippingProviders_posten'),\n type: SHIPPING_OPTIONS.POSTNORD,\n logoImgUrl: '/static/images/shipping/postnord.svg'\n },\n {\n text: t('shippingProviders_postNordParcel'),\n type: SHIPPING_OPTIONS.POSTNORD_PARCEL,\n logoImgUrl: '/static/images/shipping/postnord.svg'\n },\n {\n text: t('shippingProviders_postNordStamp'),\n type: SHIPPING_OPTIONS.POSTNORD_STAMP,\n logoImgUrl: '/static/images/shipping/postnord.svg'\n },\n {\n text: t('shippingProviders_dhl'),\n type: SHIPPING_OPTIONS.DHL,\n logoImgUrl: '/static/images/shipping/dhl.svg'\n },\n {\n text: t('shippingProviders_bussgods'),\n type: SHIPPING_OPTIONS.BUSSGODS,\n logoImgUrl: '/static/images/shipping/bussgods.svg'\n },\n {\n text: t('shippingProviders_alternative'),\n type: SHIPPING_OPTIONS.ALTERNATIVE,\n logoImgUrl: null\n },\n {\n text: t('shippingProviders_takeaway'),\n type: SHIPPING_OPTIONS.TAKE_AWAY,\n logoImgUrl: null\n },\n {\n text: t('shippingProviders_takeaway'),\n type: SHIPPING_OPTIONS.TAKE_AWAY_ONLY,\n logoImgUrl: null\n },\n {\n text: t('shippingProviders_notSpecified_full'),\n type: SHIPPING_OPTIONS.NOT_SPECIFIED,\n logoImgUrl: null\n }\n];\n\nlet mapInstance = null;\nconst shippingProvidersMap = t => {\n if (mapInstance === null) {\n mapInstance = shippingProviders(t).reduce(\n (obj, provider) => ({\n ...obj,\n [provider.type]: provider\n }),\n {}\n );\n }\n return mapInstance;\n};\n\nexport const SHIPPING_OPTIONS = {\n ALTERNATIVE: 'Alternative',\n BUSSGODS: 'Bussgods',\n DHL: 'DHL',\n FEDEX: 'FedEx',\n NOT_SPECIFIED: 'NotSpecified',\n POSTNORD: 'Posten',\n POSTNORD_PARCEL: 'PostNordParcel',\n POSTNORD_STAMP: 'PostNordStamp',\n SCHENKER: 'SchenkerPrivpak',\n TAKE_AWAY: 'Takeaway',\n TAKE_AWAY_ONLY: 'TakeawayOnly',\n UPS: 'Ups'\n};\n\nexport default {\n get: t => shippingProviders(t),\n map: t => shippingProvidersMap(t)\n};\n","import { createSlice } from '@reduxjs/toolkit';\nimport {\n axiosWithTokenRefresh,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\nimport { toLocalizedUrl } from 'tradera-utils/url';\nimport { getCurrentLanguage } from 'tradera-lang/boot-languages';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport { openModal } from 'tradera-state/ui/action-creators';\nimport { INTERNATIONAL_SHIPPING_MODAL_ID } from 'tradera-components/international-shipping-modal/constants';\nimport {\n selectIsLoggedIn,\n selectMemberId\n} from 'tradera-state/member/selectors';\n\nconst internationalShippingSlice = createSlice({\n name: 'internationalShipping',\n initialState: {\n allowedBuyerRegion: null,\n fromCountryCodeIso2: null,\n imageUrl: null,\n messagingLink: null,\n ownItem: null,\n providers: [],\n rows: [],\n title: null,\n weights: []\n },\n reducers: {\n setInternationalShipping: (state, action) => {\n state.messagingLink = action.payload.messagingLink;\n state.ownItem = action.payload.ownItem;\n const {\n imageUrl,\n title,\n shippingOptions,\n allowedBuyerRegion\n } = action.payload.data;\n state.allowedBuyerRegion = allowedBuyerRegion;\n state.imageUrl = imageUrl;\n state.title = title;\n state.fromCountryCodeIso2 =\n shippingOptions[0]?.fromCountryCodeIso2 || null;\n const { providers, rows, weights } = shippingOptions\n .sort((a, b) =>\n a.toCountryCodeIso2 > b.toCountryCodeIso2 ? 1 : -1\n )\n .reduce(\n ({ providers, rows, weights }, shippingOption) => {\n if (\n !providers.includes(shippingOption.shippingProvider)\n ) {\n providers = [\n ...providers,\n shippingOption.shippingProvider\n ];\n weights = [\n ...weights,\n shippingOption.shippingWeight\n ];\n }\n if (\n rows.length === 0 ||\n rows[rows.length - 1].toCountryCodeIso2 !==\n shippingOption.toCountryCodeIso2\n ) {\n rows = [\n ...rows,\n {\n toCountryCodeIso2:\n shippingOption.toCountryCodeIso2\n }\n ];\n }\n rows[rows.length - 1] = {\n ...rows[rows.length - 1],\n [shippingOption.shippingProvider]:\n shippingOption.shippingCost\n };\n return { providers, rows, weights };\n },\n { providers: [], rows: [], weights: [] }\n );\n\n state.providers = providers;\n state.rows = rows;\n state.weights = weights;\n }\n }\n});\n\nexport const fetchInternationalShipping = ({ itemId, sellerId }) => async (\n dispatch,\n getState\n) => {\n const url = toLocalizedUrl(\n `${ENDPOINTS.WEB_API}/browse/item/${itemId}/shipping`,\n getCurrentLanguage()\n );\n const response = await axiosWithTokenRefresh()\n .get(url)\n .then(finalizeResponse())\n .catch(handleError());\n const data = response.data;\n\n data.shippingOptions = data.shippingOptions.filter(\n ({ shippingProvider }) =>\n shippingProvider !== 'Takeaway' &&\n shippingProvider !== 'TakeawayOnly'\n );\n\n const isLoggedIn = selectIsLoggedIn(getState());\n const buyerId = selectMemberId(getState());\n const ownItem = buyerId === sellerId;\n const messagingLink = {\n isLoggedIn,\n buyerId: buyerId?.toString(),\n memberId: buyerId?.toString(),\n sellerId: sellerId?.toString(),\n itemId: itemId?.toString(),\n source: 'contact_seller'\n };\n\n dispatch(\n setInternationalShipping({\n data,\n messagingLink,\n ownItem\n })\n );\n dispatch(openModal({ modalId: INTERNATIONAL_SHIPPING_MODAL_ID }));\n};\n\nexport const { setInternationalShipping } = internationalShippingSlice.actions;\nexport default internationalShippingSlice.reducer;\n","const CHECKOUT_ERRORS = {\n BANK_ID_CANCEL: 'BANK_ID_CANCEL',\n DECLINED: 'DECLINED',\n DECLINED_PAYNOVA: 'DECLINED_PAYNOVA',\n GENERIC: 'GENERIC',\n PERSONAL_ID_INVALID: 'PERSONAL_ID_INVALID',\n EMAIL_ADDRESS_INVALID: 'EMAIL_ADDRESS_INVALID',\n NotSpecifiedShippingOption: 'NotSpecifiedShippingOption',\n NO_PAYMENT_METHOD: 'No payment method is available.'\n};\n\nconst CHECKOUT_ERROR_STRINGS = {\n [CHECKOUT_ERRORS.DECLINED_PAYNOVA]:\n 'checkout_summary_error_declined_paynova',\n [CHECKOUT_ERRORS.DECLINED]: 'checkout_summary_error_declined',\n [CHECKOUT_ERRORS.GENERIC]: 'checkout_summary_error',\n [CHECKOUT_ERRORS.PERSONAL_ID_INVALID]:\n 'checkout_summary_error_personal_id_invalid',\n [CHECKOUT_ERRORS.EMAIL_ADDRESS_INVALID]: 'checkout_paynova_email_invalid',\n [CHECKOUT_ERRORS.NotSpecifiedShippingOption]:\n 'checkout_summary_error_shipping_non_spec',\n [CHECKOUT_ERRORS.NO_PAYMENT_METHOD]:\n 'checkout_summary_error_no_payment_method'\n};\n\nconst getCheckoutErrorMessage = type => {\n return (\n CHECKOUT_ERROR_STRINGS[type] ||\n CHECKOUT_ERROR_STRINGS[CHECKOUT_ERRORS.GENERIC]\n );\n};\n\nexport { CHECKOUT_ERRORS, getCheckoutErrorMessage };\n","import React from 'react';\nimport useIsMobile from 'tradera-hooks/use-is-mobile';\n\nimport './site-subheader.scss';\n\nconst SiteSubheader = ({ className, children, ...otherProps }) => {\n const responsiveClassNames = useIsMobile() ? '' : 'bg-gray-100 border-top';\n return (\n \n
    \n {children}\n
    \n \n );\n};\n\nexport default SiteSubheader;\n","export const selectSyiAttributes = state => state.views.syi.attributes;\n\nexport const selectCategoryAttributes = state =>\n selectSyiAttributes(state).categoryAttributes;\n\nexport const selectSuggestedAttributes = state =>\n selectSyiAttributes(state).suggestedAttributes;\n","import { setEnum } from '../../helpers/enums';\n\n/**\n * setSellerFilterBarModifiers\n * @param {object} state\n * @param {string} selected\n * @returns {object} newState of 'filters' based on UI tab selection. Note: WebApi expects values as Capitalcase Enum;\n */\nconst setSellerFilterBarModifiers = (state, selected) => {\n const newState = { ...state };\n if (selected === 'Valj') {\n return newState;\n }\n\n if (newState.modifiers.sellerFilters) {\n Object.keys(newState.modifiers.sellerFilters).forEach(key => {\n newState.modifiers.sellerFilters[key] = setEnum('All');\n });\n }\n\n if (newState.modifiers.buyerFilters) {\n Object.keys(newState.modifiers.buyerFilters).forEach(key => {\n newState.modifiers.buyerFilters[key] = setEnum('All');\n });\n }\n\n switch (selected) {\n case 'SellerNoFeedback':\n newState.modifiers.sellerFilters.paid = setEnum(true);\n newState.modifiers.sellerFilters.shipped = setEnum(true);\n newState.modifiers.sellerFilters.feedbackLeft = setEnum(false);\n newState.modifiers.sellerFilters.hidden = setEnum(false);\n break;\n case 'BuyerNoFeedback':\n newState.modifiers.buyerFilters.feedbackLeft = setEnum(false);\n newState.modifiers.buyerFilters.paid = setEnum(true);\n newState.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'SellerNotPaid':\n newState.modifiers.sellerFilters.paid = setEnum(false);\n newState.modifiers.sellerFilters.shipped = setEnum(false);\n newState.modifiers.sellerFilters.hidden = setEnum(false);\n break;\n case 'BuyerNotPaid':\n newState.modifiers.buyerFilters.paid = setEnum(false);\n newState.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'NotSent':\n newState.modifiers.sellerFilters.paid = setEnum(true);\n newState.modifiers.sellerFilters.shipped = setEnum(false);\n newState.modifiers.sellerFilters.hidden = setEnum(false);\n break;\n case 'AllSold':\n case 'AllUnsold':\n newState.modifiers.sellerFilters.hidden = setEnum(false);\n break;\n case 'SellerHidden':\n newState.modifiers.sellerFilters.hidden = setEnum(true);\n break;\n case 'BuyerHidden':\n newState.modifiers.buyerFilters.hidden = setEnum(true);\n break;\n case 'BuyerNotHidden':\n newState.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'AllPurchases':\n newState.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'AllBids':\n newState.modifiers.hasBids = setEnum('All');\n break;\n case 'HasBids':\n newState.modifiers.hasBids = setEnum(true);\n break;\n case 'NoBids':\n newState.modifiers.hasBids = setEnum(false);\n break;\n case 'ItemsLostNotHidden':\n newState.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'ItemsLostHidden':\n newState.modifiers.buyerFilters.hidden = setEnum(true);\n break;\n default:\n break;\n }\n return newState;\n};\n\nexport default {\n setSellerFilterBarModifiers\n};\n","/* eslint-disable complexity */\nimport filters from '../actions/filters';\nimport filterSelectors from '../selectors/filters';\n\nconst defaultState = {\n modifiers: {\n query: {},\n paging: {}\n },\n filterBar: null,\n shownFilters: null\n};\n\nexport default function(state = defaultState, action) {\n const resetPageIndex = () => ({\n page: 1,\n size: state.modifiers.paging.size\n });\n\n const setPageSize = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n paging: {\n page: 1,\n size: action.payload\n }\n }\n });\n\n const changeSortValue = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n sort: {\n sorting: action.payload.sort,\n order: action.payload.sortOrder\n },\n paging: resetPageIndex()\n }\n });\n\n const changeSortOrder = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n sort: {\n sorting: state.modifiers.sort.sorting,\n order:\n state.modifiers.sort.order === 'Descending'\n ? 'Ascending'\n : 'Descending'\n },\n paging: resetPageIndex()\n }\n });\n\n const changeTypeValue = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n itemType: action.payload,\n paging: resetPageIndex()\n }\n });\n\n const setDateFrom = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n dateRange: {\n from: action.payload,\n to: state.modifiers.dateRange.to,\n field: state.modifiers.dateRange.field\n },\n paging: resetPageIndex()\n }\n });\n\n const setSingleFilter = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n sellerFilters: {\n ...state.modifiers.sellerFilters,\n [action.payload.filter]: action.payload.value\n }\n }\n });\n const setDateTo = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n dateRange: {\n to: action.payload,\n from: state.modifiers.dateRange.from,\n field: state.modifiers.dateRange.field\n },\n paging: resetPageIndex()\n }\n });\n\n const setFiltersByState = () => {\n let showSelectFiltersDropDown = false;\n if (action.payload === 'Valj') {\n showSelectFiltersDropDown = !state.filterBar\n .showSelectFiltersDropDown;\n }\n const updatedState = filterSelectors.setSellerFilterBarModifiers(\n state,\n action.payload\n );\n return {\n ...updatedState,\n defaults: {\n ...state.defaults\n },\n modifiers: {\n ...updatedState.modifiers,\n selectedFilterBar: action.payload,\n paging: resetPageIndex()\n },\n filterBar: {\n ...state.filterBar,\n values: state.filterBar.values,\n showSelectFiltersDropDown: showSelectFiltersDropDown\n }\n };\n };\n\n const changePage = () => {\n const updatedPaging = {\n page: action.page,\n size: state.modifiers.paging.size\n };\n return {\n ...state,\n modifiers: {\n ...state.modifiers,\n paging: updatedPaging\n }\n };\n };\n\n const resetDateRangeTo = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n dateRange: {\n ...state.modifiers.dateRange,\n to: state.defaults.modifiers.dateRange.to\n }\n }\n });\n\n const resetDateRangeFrom = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n dateRange: {\n ...state.modifiers.dateRange,\n from: state.defaults.modifiers.dateRange.from\n }\n }\n });\n\n const resetFilters = () => ({\n ...state,\n modifiers: { ...state.defaults.modifiers },\n filterBar: { ...state.filterBar, ...state.defaults.filterBar }\n });\n\n const changeSearchQuery = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n query: {\n searchQuery: action.payload,\n properties: state.modifiers.query.properties,\n scope: state.modifiers.query.scope\n },\n sort: {\n sorting: 'BestMatch',\n order: 'Ascending'\n },\n paging: resetPageIndex()\n }\n });\n\n const changeReservationPrice = () => ({\n ...state,\n modifiers: {\n ...state.modifiers,\n reservePriceReached: action.payload,\n paging: resetPageIndex()\n }\n });\n\n const setFiltersForPage = () => {\n if (!action.payload.newFilters.modifiers) {\n return state;\n }\n return {\n ...state,\n ...action.payload.newFilters,\n defaults: {\n ...action.payload.defaultFilters\n }\n };\n };\n\n const locationChange = () => ({\n ...state,\n modifiers: action.payload.filters\n });\n\n const showHideFilterToolbar = () => ({\n ...state\n });\n\n const reducers = {\n [filters.actionTypes.SET_PAGE_SIZE]: setPageSize,\n [filters.actionTypes.CHANGE_SORT_VALUE]: changeSortValue,\n [filters.actionTypes.CHANGE_SORT_ORDER]: changeSortOrder,\n [filters.actionTypes.CHANGE_TYPE_VALUE]: changeTypeValue,\n [filters.actionTypes.CHANGE_SORTING_TO_BEST_MATCH]: changeSortOrder,\n [filters.actionTypes.SET_DATE_FROM]: setDateFrom,\n [filters.actionTypes.SET_SINGLE_FILTER]: setSingleFilter,\n [filters.actionTypes.SET_DATE_TO]: setDateTo,\n [filters.actionTypes.SET_FILTERS_BY_STATE]: setFiltersByState,\n [filters.actionTypes.CHANGE_PAGE]: changePage,\n [filters.actionTypes.RESET_DATE_RANGE_TO]: resetDateRangeTo,\n [filters.actionTypes.RESET_DATE_RANGE_FROM]: resetDateRangeFrom,\n [filters.actionTypes.RESET_FILTERS]: resetFilters,\n [filters.actionTypes.CHANGE_SEARCH_QUERY]: changeSearchQuery,\n [filters.actionTypes.CHANGE_RESERVATION_PRICE]: changeReservationPrice,\n [filters.actionTypes.SET_FILTERS_FOR_PAGE]: setFiltersForPage,\n [filters.actionTypes.LOCATION_CHANGE]: locationChange,\n [filters.actionTypes.SHOW_HIDE_FILTERS]: showHideFilterToolbar\n };\n\n if (!reducers[action.type]) {\n return state;\n } else {\n return reducers[action.type]();\n }\n}\n\nexport const selectFiltersState = state => state.views.myTradera.filters;\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 React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction TimeLeft(props) {\n const {\n className = '',\n isTimeLeftBelowWarningLimit,\n timeLeftText,\n icon,\n ...otherProps\n } = props;\n\n if (!timeLeftText) {\n return null;\n }\n\n return (\n \n {icon}\n {timeLeftText}\n \n );\n}\n\nTimeLeft.propTypes = {\n timeLeftText: PropTypes.string.isRequired,\n isTimeLeftBelowWarningLimit: PropTypes.bool.isRequired\n};\n\nexport default TimeLeft;\n","export { default, GlobalLoader, LocalLoader, PortalLoader } from './loader';\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 trackNewSearch = (categoryPath, itemIds, 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({\n 'page.content-group-2': reverseCategoryPath.slice(0, 3).join(' > '),\n categoryId: categoryPath.length > 0 ? categoryPath[0].id : null\n });\n\n if (itemIds && itemIds.length >= 3) {\n GtmService.trackGtmEvent('viewItems', {\n itemIds: itemIds.slice(0, 3),\n keywords: categoryPath[0].name\n });\n }\n\n GtmService.push({\n ga_page_title: metaTitle\n });\n};\n","export const getTranslatedImageLabel = (t, labelKey) => {\n switch (labelKey) {\n case buyerActiveItemsLabelKeys.RESERVE_PRICE_NOT_REACHED:\n case activeLabelKeys.RESERVE_PRICE_NOT_REACHED:\n case unsoldLabelKeys.RESERVE_PRICE_NOT_REACHED:\n return t('myt_itemCard_imgLabel_reservePriceNotReached');\n case soldLabelKeys.NOT_PAID:\n case purchasesLabelKeys.NOT_PAID:\n return t('myt_itemCard_imgLabel_notPaid');\n case unsoldLabelKeys.NOT_PAID:\n return t('myt_itemCard_imgLabel_unsoldNotPaid');\n case soldLabelKeys.PAID:\n case purchasesLabelKeys.PAID:\n return t('myt_itemCard_imgLabel_paid');\n case soldLabelKeys.DONE:\n case purchasesLabelKeys.DONE:\n return t('myt_itemCard_imgLabel_done');\n case buyerActiveItemsLabelKeys.LEADING:\n return t('myt_itemCard_imgLabel_leading');\n case buyerActiveItemsLabelKeys.OVERBIDDEN:\n return t('myt_itemCard_imgLabel_overbidden');\n case buyerActiveItemsLabelKeys.BID_REMOVED:\n return t('myt_itemCard_imgLabel_bidRemoved');\n case activeLabelKeys.NOT_STARTED:\n return t('myt_itemCard_imgLabel_notStarted');\n case activeLabelKeys.HAS_BIDS:\n return t('myt_itemCard_imgLabel_hasBids');\n case activeLabelKeys.ACTIVE:\n return t('myt_itemCard_imgLabel_active');\n case activeLabelKeys.SOLD:\n return t('myt_itemCard_imgLabel_sold');\n case activeLabelKeys.NOT_SOLD:\n return t('myt_itemCard_imgLabel_notSold');\n case soldLabelKeys.SHIPPING_BOOKED:\n return t('myt_itemCard_imgLabel_shippingBooked');\n case soldLabelKeys.SHIPPED:\n return t('myt_itemCard_imgLabel_shipped');\n case unsoldLabelKeys.FORICBLY_CLOSED:\n return t('myt_itemCard_imgLabel_forciblyClosed');\n case unsoldLabelKeys.RESTARTED:\n return t('myt_itemCard_imgLabel_restarted');\n case itemLostLabelKeys.REMOVED:\n return t('myt_itemCard_imgLabel_removed');\n case itemLostLabelKeys.LOST:\n return t('myt_itemCard_imgLabel_lost');\n default:\n return '';\n }\n};\n\nconst buyerActiveItemsLabelKeys = {\n RESERVE_PRICE_NOT_REACHED: 'BUYER_RESERVE_PRICE_NOT_REACHED',\n LEADING: 'LEADING',\n OVERBIDDEN: 'OVERBIDDEN',\n BID_REMOVED: 'BID_REMOVED'\n};\n\nconst activeLabelKeys = {\n NOT_STARTED: 'NOT_STARTED',\n RESERVE_PRICE_NOT_REACHED: 'ACTIVE_RESERVE_PRICE_NOT_REACHED',\n HAS_BIDS: 'HAS_BIDS',\n ACTIVE: 'ACTIVE',\n SOLD: 'SOLD',\n NOT_SOLD: 'NOT_SOLD'\n};\n\nconst soldLabelKeys = {\n NOT_PAID: 'SOLD_NOT_PAID',\n PAID: 'SOLD_PAID',\n SHIPPING_BOOKED: 'SHIPPING_BOOKED',\n SHIPPED: 'SHIPPED',\n DONE: 'SOLD_DONE'\n};\n\nconst unsoldLabelKeys = {\n NOT_PAID: 'UNSOLD_NOT_PAID',\n RESERVE_PRICE_NOT_REACHED: 'UNSOLD_RESERVE_PRICE_NOT_REACHED',\n FORICBLY_CLOSED: 'FORCIBLY_CLOSED',\n RESTARTED: 'RESTARTED'\n};\n\nconst purchasesLabelKeys = {\n NOT_PAID: 'PURHCASED_NOT_PAID',\n PAID: 'PURCHASED_PAID',\n DONE: 'PURCHASED_DONE'\n};\n\nconst itemLostLabelKeys = {\n LOST: 'LOST',\n REMOVED: 'ITEMLOST_REMOVED '\n};\n\nconst buyerActiveItemsLabels = {\n reservePriceNotReached: {\n key: buyerActiveItemsLabelKeys.RESERVE_PRICE_NOT_REACHED,\n color: 'red'\n },\n leading: {\n key: buyerActiveItemsLabelKeys.LEADING,\n color: 'green'\n },\n overbidden: {\n key: buyerActiveItemsLabelKeys.OVERBIDDEN,\n color: 'red'\n },\n bidRemoved: {\n key: buyerActiveItemsLabelKeys.BID_REMOVED,\n color: 'grey-hard'\n }\n};\n\nconst activeLabels = {\n notStarted: {\n key: activeLabelKeys.NOT_STARTED,\n color: 'grey-soft'\n },\n reservePriceNotReached: {\n key: activeLabelKeys.RESERVE_PRICE_NOT_REACHED,\n color: 'red'\n },\n hasBids: { key: activeLabelKeys.HAS_BIDS, color: 'green' },\n active: { key: activeLabelKeys.ACTIVE, color: 'blue' },\n sold: { key: activeLabelKeys.SOLD, color: 'green' },\n notSold: {\n key: activeLabelKeys.NOT_SOLD,\n color: 'grey-soft'\n }\n};\n\nconst soldLabels = {\n notPaid: { key: soldLabelKeys.NOT_PAID, color: 'red' },\n paid: { key: soldLabelKeys.PAID, color: 'green' },\n shippingBooked: {\n key: soldLabelKeys.SHIPPING_BOOKED,\n color: 'green'\n },\n shipped: { key: soldLabelKeys.SHIPPED, color: 'blue' },\n done: { key: soldLabelKeys.DONE, color: 'grey-hard' }\n};\n\nconst unsoldLabels = {\n notPaid: {\n key: unsoldLabelKeys.NOT_PAID,\n color: 'grey-hard'\n },\n reservePriceNotReached: {\n key: unsoldLabelKeys.RESERVE_PRICE_NOT_REACHED,\n color: 'red'\n },\n forciblyClosed: {\n key: unsoldLabelKeys.FORICBLY_CLOSED,\n color: 'red'\n },\n restarted: {\n key: unsoldLabelKeys.RESTARTED,\n color: 'blue'\n }\n};\n\nconst purchasesLabels = {\n notPaid: {\n key: purchasesLabelKeys.NOT_PAID,\n color: 'red'\n },\n paid: { key: purchasesLabelKeys.PAID, color: 'green' },\n done: { key: purchasesLabelKeys.DONE, color: 'grey-hard' }\n};\n\nconst itemLostLabels = {\n lost: {\n key: itemLostLabelKeys.LOST,\n color: 'grey-hard'\n },\n removed: {\n key: itemLostLabelKeys.REMOVED,\n color: 'grey-hard'\n }\n};\n\nexport const itemHasBids = item => item.bidInformation.bidCount > 0;\nexport const itemHasBidsButReservePriceNotReached = item =>\n item.transaction\n ? false\n : itemHasBids(item) &&\n !item.reservePriceReached &&\n item.listing.pricing.reservePrice !== -1;\n\nconst getActiveActiveLabel = item => {\n if (itemHasBidsButReservePriceNotReached(item)) {\n return activeLabels.reservePriceNotReached;\n }\n return itemHasBids(item) ? activeLabels.hasBids : activeLabels.active;\n};\n\nexport const getActiveLabel = item => {\n switch (item.activityType) {\n case 'NotPublished':\n return activeLabels.notStarted;\n case 'Active':\n return getActiveActiveLabel(item);\n case 'Sold':\n return activeLabels.sold;\n case 'Unsold':\n return activeLabels.unSold;\n }\n};\n\nexport const getUnsoldLabel = item => {\n if (item && item.listing.restart.hasRestartedChild) {\n return unsoldLabels.restarted;\n }\n if (item && item.forciblyClosed && item.forciblyClosed.closed) {\n return unsoldLabels.forciblyClosed;\n }\n if (itemHasBidsButReservePriceNotReached(item)) {\n return unsoldLabels.reservePriceNotReached;\n }\n return unsoldLabels.notPaid;\n};\n\nconst getStates = sellerState => ({\n paid: sellerState.paid ? 'done' : '',\n shipped: sellerState.shipped\n ? 'done'\n : sellerState.shippingBooked\n ? 'partial'\n : '',\n feedbackLeft: sellerState.feedbackLeft ? 'done' : ''\n});\n\nexport const getBuyerActiveItemsLabel = (item, memberId) => {\n if (item.caller.leadingBidRemoved === true) {\n return buyerActiveItemsLabels.bidRemoved;\n }\n\n if (\n item.bidInformation.leadingBidder &&\n item.bidInformation.leadingBidder.id === memberId\n ) {\n if (!item.reservePriceReached) {\n return buyerActiveItemsLabels.reservePriceNotReached;\n }\n return buyerActiveItemsLabels.leading;\n } else {\n return buyerActiveItemsLabels.overbidden;\n }\n};\n\nexport const getSoldLabel = item => {\n const sellerState = item.transaction.sellerState;\n const states = getStates(sellerState);\n if (sellerState.shipped && sellerState.paid && sellerState.feedbackLeft) {\n return {\n ...soldLabels.done,\n states: states\n };\n }\n\n if (sellerState.shipped || (sellerState.shipped && sellerState.paid)) {\n return {\n ...soldLabels.shipped,\n states: states\n };\n }\n\n if (sellerState.shippingBooked && sellerState.paid) {\n return {\n ...soldLabels.shippingBooked,\n states: states\n };\n }\n\n if (sellerState.paid) {\n return {\n ...soldLabels.paid,\n states: states\n };\n }\n\n return {\n ...soldLabels.notPaid,\n states: states\n };\n};\n\nexport const getPurchasesLabel = item => {\n const buyerState = item.transaction.buyerState;\n const states = getStates(buyerState);\n\n if (buyerState.paid && buyerState.feedbackLeft) {\n return {\n ...purchasesLabels.done,\n states: states\n };\n }\n\n if (buyerState.paid) {\n return {\n ...purchasesLabels.paid,\n states: states\n };\n }\n\n return {\n ...purchasesLabels.notPaid,\n states: states\n };\n};\n\nexport const getBuyerItemsLostLabel = item => {\n if (item && item.forciblyClosed && item.forciblyClosed.closed) {\n return {\n ...itemLostLabels.removed\n };\n }\n\n return {\n ...itemLostLabels.lost\n };\n};\n\nexport default {\n getActiveLabel,\n getBuyerItemsLostLabel,\n getSoldLabel,\n getUnsoldLabel\n};\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst FixedPriceLabel = ({ className }) => {\n const { t } = useTranslator();\n return {t('itemCard_fixedPrice')};\n};\n\nexport default FixedPriceLabel;\n","export default () => {\n return {\n isFetching: false,\n merchantPreOrders: [],\n errors: {}\n };\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useCurrentLanguage } from 'tradera-lang/translate';\nimport { formatPrice } from 'tradera-utils/format';\n\nconst PriceLabel = ({ tagName: TagName, className, price, hasDiscount }) => {\n const { language } = useCurrentLanguage();\n if (price) {\n return (\n \n {formatPrice(price, language, {\n // Swedish locale shows \"kr\", other \"SEK\"\n currencyDisplay: language.startsWith('sv')\n ? 'symbol'\n : 'code'\n })}\n \n );\n } else {\n return null;\n }\n};\nPriceLabel.propTypes = {\n tagName: PropTypes.string,\n className: PropTypes.string,\n price: PropTypes.number,\n hasDiscount: PropTypes.bool\n};\nPriceLabel.defaultProps = {\n tagName: 'span',\n className: ''\n};\n\nexport default PriceLabel;\n","import cookieUtil from 'tradera-utils/cookie';\nimport { SHIPPING_COUNTRY } from 'tradera-constants/cookies';\nimport {\n isSwedenCountryCodeOrUndefined,\n isSwedenCountryNameOrUndefined\n} from 'tradera-utils/countrycode';\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 !isSwedenCountryCodeOrUndefined(\n cookieUtil.readCookie(SHIPPING_COUNTRY)\n )) ||\n (isLoggedIn && !isSwedenCountryNameOrUndefined(memberCountry)),\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 isFetchingGeolocation: false,\n isShopOwnedByCurrentMember: false,\n itemsById: [],\n itemsOnDisplayById: [],\n mainText: null,\n pagination: null,\n queryParams: {},\n totalItems: 0,\n discoverTranslationResult: {},\n reduxContainer: {}\n };\n};\n","import React from 'react';\nimport StampIcon from '@tradera/blueprint/theme/icons2/stamp.svg?jsx';\nimport PackageIcon from '@tradera/blueprint/theme/icons2/package.svg?jsx';\nimport { useTranslator } from 'tradera-lang/translate';\nimport shippingProviders from 'tradera-apps/my-tradera/app/data/shipping-providers';\n\nexport const ShippingProviderIcon = ({ providerName, iconClass, imgClass }) => {\n const { t } = useTranslator();\n const { text, logoImgUrl } = shippingProviders.map(t)[providerName];\n return (\n \n {providerName === 'PostNordStamp' && (\n \n )}\n {providerName === 'PostNordParcel' && (\n \n )}\n \n \n );\n};\n","/* eslint-disable */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport './hover-menu.scss';\n\nclass HoverMenu extends Component {\n state = {\n show: false,\n hoverContainer: false\n };\n\n toggleShow = show => {\n window.clearTimeout(this.toggleShowTimeoutId);\n this.toggleShowTimeoutId = window.setTimeout(() => {\n if (this.state.show !== show) {\n this.setState({ show: show });\n }\n }, 100);\n };\n\n componentDidUpdate(prevProps) {\n if (this.props.showMenu !== prevProps.showMenu) {\n this.toggleShow(this.props.showMenu);\n }\n }\n\n render() {\n const { children, className = '' } = this.props;\n\n return (\n this.state.show && (\n
    \n \n
    \n )\n );\n }\n}\n\nHoverMenu.propTypes = {\n showMenu: PropTypes.bool,\n className: PropTypes.string\n};\n\nexport default HoverMenu;\n","/**\n * @returns {object} - list of available columns in MyTradera.\n */\nexport const columns = {\n CurrentPrice: 'CurrentPrice',\n TransactionDate: 'TransactionDate',\n EndDate: 'EndDate',\n ShippingCost: 'ShippingCost',\n Bids: 'Bids',\n ItemId: 'ItemId',\n OpeningBid: 'OpeningBid',\n ReservePrice: 'ReservePrice',\n BuyItNow: 'BuyItNow',\n OwnReference: 'OwnReference',\n Discount: 'Discount',\n MaxBid: 'MaxBid',\n TimeLeft: 'TimeLeft'\n};\n\nexport const buyerActiveItemsColumns = {\n Basic: [\n columns.CurrentPrice,\n columns.MaxBid,\n columns.Bids,\n columns.ShippingCost,\n columns.EndDate,\n columns.TimeLeft,\n columns.ItemId\n ]\n};\n\nexport const buyerItemsLostColumns = {\n Basic: [\n columns.CurrentPrice,\n columns.MaxBid,\n columns.Bids,\n columns.ShippingCost,\n columns.EndDate,\n columns.ItemId\n ]\n};\n\nexport const sellerActiveColumns = {\n Basic: [\n columns.CurrentPrice,\n columns.Bids,\n columns.EndDate,\n columns.ItemId,\n columns.ReservePrice,\n columns.OwnReference\n ],\n Compact: [\n columns.CurrentPrice,\n columns.Bids,\n columns.ShippingCost,\n columns.EndDate,\n columns.ItemId,\n columns.ReservePrice,\n columns.BuyItNow,\n columns.OwnReference\n ]\n};\nexport const sellerSoldColumns = {\n Basic: [\n columns.CurrentPrice,\n columns.Bids,\n columns.ShippingCost,\n columns.TransactionDate,\n columns.ItemId,\n columns.ReservePrice,\n columns.BuyItNow,\n columns.OwnReference\n ],\n Compact: [\n columns.CurrentPrice,\n columns.Bids,\n columns.ShippingCost,\n columns.TransactionDate,\n columns.ItemId,\n columns.OpeningBid,\n columns.BuyItNow,\n columns.ReservePrice,\n columns.OwnReference\n ],\n Normal: [\n columns.Bids,\n columns.TransactionDate,\n columns.ItemId,\n columns.OwnReference,\n columns.ReservePrice,\n columns.BuyItNow,\n columns.CurrentPrice\n ]\n};\n\nexport const sellerUnsoldColumns = {\n Basic: [\n columns.CurrentPrice,\n columns.Bids,\n columns.ShippingCost,\n columns.EndDate,\n columns.ItemId,\n columns.OwnReference\n ],\n Compact: [\n columns.CurrentPrice,\n columns.Bids,\n columns.ShippingCost,\n columns.EndDate,\n columns.ItemId,\n columns.ReservePrice,\n columns.BuyItNow,\n columns.OwnReference\n ]\n};\n\nexport const buyerPurchasesColumns = {\n Basic: [\n columns.CurrentPrice,\n columns.Bids,\n columns.ShippingCost,\n columns.TransactionDate,\n columns.ItemId\n ],\n Normal: [\n columns.Bids,\n columns.TransactionDate,\n columns.ItemId,\n columns.CurrentPrice\n ]\n};\n\nexport const payments2Columns = {\n Basic: []\n};\n","import ENDPOINTS from 'tradera-constants/endpoints';\nimport axios from 'axios';\nimport { defaultClient as httpClient } from 'tradera-utils/http';\nimport { axiosConfigs } from 'tradera-utils/api';\n\nconst getCampaignCode = async (\n campaignCode,\n categoryId,\n brandAttributeValues\n) => {\n var requestData = {\n code: campaignCode,\n selectedCategories: categoryId ? [categoryId] : [],\n selectedBrandAttributes: brandAttributeValues\n };\n try {\n const response = await httpClient.post(\n ENDPOINTS.SELLING_CAMPAING_CODE,\n requestData,\n {\n cancelTokenId: 'SELLING_CAMPAIGN_CODE',\n ...axiosConfigs.authenticated\n }\n );\n return response.data;\n } catch (error) {\n if (axios.isCancel(error)) {\n throw 'aborted';\n }\n throw 'Could not get the campaignCode';\n }\n};\n\nconst validate = async (campaignCode, categoryId, brandAttributeValues) => {\n try {\n const data = await getCampaignCode(\n campaignCode,\n categoryId,\n brandAttributeValues\n );\n\n let result = {};\n result.campaignCodeValid = data.validation.isValid;\n result.validationDisplayMessage = data.validation.message;\n result.hasEnded = data.validation.hasEnded;\n if (data.campaign) {\n result.campaignCode = data.campaign.code;\n result.campaignCodeId = data.campaign.id;\n result.campaignCodeMessage = data.campaign.description;\n result.isCustomLengthFeeFree = data.campaign.isCustomLengthFeeFree;\n result.isUnsoldFeeFree = data.campaign.isUnsoldFeeFree;\n result.provisionFactor = data.campaign.provisionFactor;\n result.discountFactor = data.campaign.discountFactor;\n result.maxFeeCap = data.campaign.maxFeeCap;\n result.bannerMobileImageUrl = data.campaign.bannerMobileImageUrl;\n result.bannerTabletImageUrl = data.campaign.bannerTabletImageUrl;\n result.bannerDesktopImageUrl = data.campaign.bannerDesktopImageUrl;\n }\n return result;\n } catch (reason) {\n if (reason === 'aborted') {\n return {\n campaignCodeValid: false,\n validationDisplayMessage: 'Valideringen avbröts.'\n };\n }\n\n return {\n campaignCodeValid: false,\n validationDisplayMessage: 'Kunde inte validera kampanjkoden.'\n };\n }\n};\n\nexport default { validate };\n","/* eslint-disable promise/always-return */\n/* eslint-disable promise/catch-or-return */\nimport campaignService from 'tradera-apps/syi/script/app_react/services/campaign-service';\nimport ThrottledAction from 'tradera-apps/syi/script/app_react/utils/throttled-action';\nimport userData from 'tradera-apps/syi/script/app_react/services/user-data';\nimport feesActions from './fees-actions';\nimport draftActions from './draft-actions';\nimport shippingActions from './shipping-actions';\nimport { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\n\nconst CHARITIES = userData?.charities || [];\nlet throttleTimeout = 2000;\nlet throttledCampaignCodeValidation = new ThrottledAction(throttleTimeout);\nlet delayedValidationTimeoutId = null;\n\nconst findBrandAttributeValues = getState => {\n if (\n !getSyiSlice(getState()).attributes ||\n !getSyiSlice(getState()).attributes.categoryAttributes\n ) {\n return [];\n }\n\n let brandAttributeValues = [];\n getSyiSlice(getState()).attributes.categoryAttributes.forEach(attribute => {\n const brandAttributeId = 3; //Brand Attribute has Id == 3\n if (attribute.id != brandAttributeId) {\n return;\n }\n if (attribute.options.length === 0) {\n return;\n }\n brandAttributeValues = attribute.options.reduce((acc, option) => {\n if (option.isActive) {\n acc.push(option.value);\n }\n return acc;\n }, []);\n });\n return brandAttributeValues;\n};\n\nconst resetCharityCampaign = (dispatch, getState) => {\n const { name, forceFreeShipping: wasForceFreeShipping } = getSyiSlice(\n getState()\n ).charityCampaign;\n if (!name) {\n return;\n }\n dispatch({\n type: 'RESET_CHARITY_CAMPAIGN'\n });\n dispatch({\n type: 'DISABLE_ZERO_DAY_AUCTIONS'\n });\n if (wasForceFreeShipping) {\n dispatch(shippingActions.resetSelected());\n }\n};\n\nconst resetCampaign = dispatch => {\n dispatch(resetCharityCampaign);\n dispatch({\n type: 'RESET_CUSTOM_END_TIME_FEE_FREE_FOR_CAMPAIGN'\n });\n dispatch({\n type: 'UNSET_UNSOLD_FEE_FREE_FOR_CAMPAIGN'\n });\n dispatch({\n type: 'ENABLE_RESTART'\n });\n dispatch({\n type: 'RESET_MAX_FEE_CAP'\n });\n dispatch({\n type: 'RESET_CAMPAIGN_BANNER'\n });\n dispatch(feesActions.resetDiscountFactor());\n dispatch(feesActions.resetCampaignCommission());\n\n dispatch(feesActions.updateCommission());\n dispatch(feesActions.updateMaxCommission());\n dispatch(feesActions.updatePrices());\n};\n\nconst applyCharityFromCampaignCodeId = (\n campaignCodeId,\n campaignCode\n) => dispatch => {\n const charityCampaign = CHARITIES.find(\n charityCampaign => charityCampaign.campaignCodeId === campaignCodeId\n );\n\n if (!charityCampaign) {\n dispatch(resetCharityCampaign);\n return;\n }\n\n dispatch({\n type: 'SET_CHARITY_CAMPAIGN',\n charityCampaign,\n campaignCode\n });\n const {\n allowZeroDayAuctions,\n forceFreeShipping,\n forcePaymentOption\n } = charityCampaign;\n\n if (allowZeroDayAuctions) {\n dispatch({\n type: 'ENABLE_ZERO_DAY_AUCTIONS'\n });\n }\n\n if (forceFreeShipping) {\n dispatch({\n type: 'FORCE_FREE_SHIPPING'\n });\n }\n\n if (forcePaymentOption) {\n dispatch({\n type: 'ENSURE_ANY_PAYMENT_OPTION_FOR_CHARITY'\n });\n }\n\n dispatch(draftActions.setDisplayPromoted(false));\n dispatch(draftActions.setDisplayHighlighted(false));\n};\n\nconst validateCampaignCode = () => (dispatch, getState) => {\n let campaignCode = getSyiSlice(getState()).campaignCode.campaignCode;\n if (!campaignCode || campaignCode.trim().length === 0) {\n return;\n }\n dispatch({\n type: 'VALIDATING_CAMPAIGN_CODE_BY_SEARCHING'\n });\n const isReadOnly = getSyiSlice(getState()).campaignCode.isReadOnly;\n throttledCampaignCodeValidation.execute(function() {\n let category = getSyiSlice(getState()).category;\n const brandAttributeValues = findBrandAttributeValues(getState);\n campaignService\n .validate(\n campaignCode,\n category.draftCategoryId,\n brandAttributeValues\n )\n .then(result => {\n // If the campaign is read-only, ignore if the code is invalid since it has already been used.\n if (isReadOnly) {\n result.campaignCodeValid = true;\n result.campaignCodeMessage = null;\n }\n\n const {\n bannerDesktopImageUrl,\n bannerMobileImageUrl,\n bannerTabletImageUrl,\n campaignCodeId,\n campaignCodeMessage,\n campaignCodeValid,\n discountFactor = null,\n hasEnded,\n isCustomLengthFeeFree,\n isUnsoldFeeFree,\n maxFeeCap,\n provisionFactor = null,\n validationDisplayMessage\n } = result;\n\n const campaignCodeDescription = campaignCodeValid\n ? campaignCodeMessage\n : validationDisplayMessage;\n\n dispatch({\n type: 'SET_CAMPAIGN_VALIDATION_RESULT',\n bannerDesktopImageUrl,\n bannerMobileImageUrl,\n bannerTabletImageUrl,\n campaignCode,\n campaignCodeDescription,\n campaignCodeId,\n campaignCodeValid,\n hasEnded,\n maxFeeCap\n });\n\n if (!campaignCodeValid) {\n dispatch(resetCampaign);\n return;\n }\n\n if (isCustomLengthFeeFree) {\n dispatch({\n type: 'SET_CUSTOM_END_TIME_FEE_FREE_FOR_CAMPAIGN'\n });\n }\n\n if (isUnsoldFeeFree) {\n dispatch({\n type: 'SET_UNSOLD_FEE_FREE_FOR_CAMPAIGN'\n });\n }\n\n dispatch({\n type: 'DISABLE_RESTART'\n });\n\n if (userData.isCompanyUser) {\n dispatch(feesActions.setDiscountFactor(discountFactor));\n dispatch(feesActions.setCampaignCommission(null));\n } else {\n const commissionProcent =\n provisionFactor !== null\n ? `${provisionFactor * 100}`\n : null;\n dispatch(\n feesActions.setCampaignCommission(commissionProcent)\n );\n dispatch(feesActions.setDiscountFactor(null));\n }\n\n dispatch(\n applyCharityFromCampaignCodeId(campaignCodeId, campaignCode)\n );\n\n dispatch(feesActions.updateCommission());\n dispatch(feesActions.updateMaxCommission());\n dispatch(feesActions.updatePrices());\n });\n });\n};\n\nconst saveTypedCampaignCode = inputCampaignCode => (dispatch, getState) => {\n const campaignCode = inputCampaignCode?.trim() || null;\n dispatch({\n type: 'SET_UNVERIFIED_CAMPAIGN_CODE',\n campaignCode\n });\n\n if (delayedValidationTimeoutId) {\n clearTimeout(delayedValidationTimeoutId);\n }\n\n if (campaignCode === null) {\n dispatch(resetCampaign);\n return;\n }\n\n delayedValidationTimeoutId = setTimeout(() => {\n clearTimeout(delayedValidationTimeoutId);\n dispatch(validateCampaignCode());\n delayedValidationTimeoutId = setTimeout(() => {\n if (getSyiSlice(getState()).campaignCode.searching) {\n dispatch({\n type: 'SEARCHING_FOR_CAMPAIGN_CODE_IS_DELAYED'\n });\n }\n }, 100);\n }, 700);\n};\n\nconst setInitialCampaignCode = (\n campaignCode,\n campaignCodeId,\n campaignCodeDescription,\n isChangeItem\n) => dispatch => {\n let isReadOnly = campaignCodeId && isChangeItem;\n\n dispatch({\n type: 'INITIALIZE_CAMPAIGN_CODE_STATE',\n campaignCode,\n campaignCodeId,\n campaignCodeDescription,\n isReadOnly\n });\n dispatch(resetCampaign);\n\n // Always validate because this fetches info about the campaign like free shipping etc.\n // If the campaign is read-only, ignore if the code is invalid since it has already been used.\n dispatch(validateCampaignCode());\n};\n\nconst toggleShowInput = isChecked => dispatch => {\n clearTimeout(delayedValidationTimeoutId);\n dispatch({\n type: 'TOGGLE_CAMPAIGN_CODE_CHECKBOX',\n isChecked: isChecked\n });\n dispatch(resetCampaign);\n};\n\nexport default {\n toggleShowInput,\n setInitialCampaignCode,\n saveTypedCampaignCode,\n validateCampaignCode\n};\n","import userData from './user-data';\nimport { defaultClient as httpClient } from 'tradera-utils/http';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport featureToggles from 'tradera-apps/my-tradera/app/utils/feature-toggles';\n\nvar initData = window.sellingGlobalData || {};\nvar defaultDrafts = initData.defaultDrafts;\n\nconst resetUnwantedProperties = draft => {\n draft.itemId = 0;\n};\n\nconst isNullOrUndefined = val => val === null || val === undefined;\n\nconst 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\nconst ensureApplicationId = draft => {\n if (!draft.metadata) {\n draft.metadata = {};\n }\n draft.metadata.applicationId = 'SYI-Riot';\n};\n\nconst ensureBraintree = draft => {\n if (\n userData.braintree.isBraintreeOnly &&\n draft.paymentOptions.length == 0\n ) {\n draft.paymentOptions.push('Braintree');\n }\n};\n\nconst isPureBin = draft => draft && getType(draft) === 'PureBin';\n\nconst isAuctionBin = draft => draft && getType(draft) === 'AuctionBin';\n\nconst getDefaultTemplateValue = propertyName =>\n defaultDrafts.newTemplate[propertyName];\n\nconst loadDraft = async draftId => {\n if (!draftId) {\n throw 'missing draftId';\n }\n\n const response = await httpClient.get(ENDPOINTS.SELLING_DRAFT(draftId));\n return response.data.draft;\n};\n\nconst loadDrafts = async () => {\n const response = await httpClient.get(ENDPOINTS.SELLING_DRAFTS);\n return response.data.items;\n};\n\nconst loadDefaultDraft = () => ({\n ...defaultDrafts.newItem,\n allowedBuyerRegion: undefined\n});\n\nconst loadDefaultTemplateDraft = () => ({\n ...defaultDrafts.newTemplate,\n allowedBuyerRegion: undefined\n});\n\nconst loadDraftFromTemplate = async templateId => {\n try {\n const response = await httpClient.post(\n ENDPOINTS.SELLING_DRAFT_LOAD_FROM_TEMPLATE,\n {\n templateId\n }\n );\n let draft = response.data.draft;\n resetUnwantedProperties(draft);\n draft.draftReason = 'Template';\n return draft;\n } catch {\n throw 'Could not load the draft from the template';\n }\n};\n\nconst saveDraft = async draft => {\n if (draft.draftReason === 'Template') {\n // Drafts for Templates cannot be saved\n throw 'Cannot save Template draft';\n }\n\n ensureApplicationId(draft);\n ensureBraintree(draft);\n\n const response = await httpClient.post(ENDPOINTS.SELLING_DRAFT_SAVE, draft);\n\n if (response.data.errorCode || !response.data.draftId) {\n throw response.data;\n }\n\n return response.data;\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 typeof itemDuration.customEndTimeHour !== 'string' ||\n typeof itemDuration.customEndTimeMinute !== 'string'\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.descriptionLanguageCodeIso2 =\n syiSlice.shortDescription.descriptionLanguageCodeIso2;\n draft.currency = syiSlice.draft.currency;\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.fromCountry = syiSlice.shipping.fromCountry;\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.charityCampaign.charityId;\n if (\n featureToggles.isPennybridgeCharitiesEnabled &&\n syiSlice.charity?.charityId\n ) {\n draft.charity = syiSlice.charity;\n }\n draft.allowZeroDayAuctions = syiSlice.charityCampaign.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 = draftId => {\n return deleteDrafts([draftId]);\n};\n\nconst deleteDrafts = async draftIds => {\n try {\n await httpClient.post(ENDPOINTS.SELLING_DRAFTS_DELETE, {\n draftIds: draftIds\n });\n } catch {\n throw 'Could not delete the draft';\n }\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","import { createSlice } from '@reduxjs/toolkit';\nimport { Analytics } from 'packages';\n\nconst profileSlice = createSlice({\n name: 'profile',\n initialState: { isTranslationOnDemandDisabled: false },\n reducers: {\n setTranslatedReviews: (state, { payload }) => {\n state.translatedReviews = [\n ...state.translatedReviews,\n ...payload.items\n ];\n state.isTranslationOnDemandDisabled = false;\n state.translatedReviewsLoading = false;\n state.translatedReviewsLoadingError = false;\n },\n setTranslationOnDemandIsDisabled: state => {\n state.translatedReviews = [];\n state.isTranslationOnDemandDisabled = true;\n state.translatedReviewsLoading = false;\n state.translatedReviewsLoadingError = false;\n },\n showTranslatedReviews: {\n reducer: (state, { payload }) => {\n state.showTranslatedReviews = payload.show;\n state.translatedReviews = state.showTranslatedReviews\n ? state.translatedReviews\n : [];\n },\n prepare: payload => {\n Analytics.trackEvent({\n category: 'Profile',\n action: 'Translation',\n label: payload.show ? `Show - ${payload.language}` : 'Hide'\n });\n return { payload };\n }\n },\n beginLoadingTranslatedReviews: state => {\n state.translatedReviewsLoading = true;\n state.translatedReviewsLoadingError = false;\n },\n failedLoadingTranslatedReviews: state => {\n state.translatedReviewsLoading = false;\n state.translatedReviewsLoadingError = true;\n },\n beginLoadingModel: state => {\n state.loadingModel = true;\n },\n setModel: (state, { payload }) => {\n state.model = payload.model;\n state.showTranslatedReviews =\n state.showTranslatedReviews &&\n state.translatedReviews.some(\n ({ gradeId }) =>\n payload.model.feedbackItems.filter(\n feedbackItem => gradeId === feedbackItem.gradeId\n ).length\n );\n state.loadingModel = false;\n }\n }\n});\n\nexport const {\n setTranslatedReviews,\n showTranslatedReviews,\n beginLoadingModel,\n beginLoadingTranslatedReviews,\n failedLoadingTranslatedReviews,\n setModel,\n setTranslationOnDemandIsDisabled\n} = profileSlice.actions;\n\nexport default profileSlice.reducer;\n","import actionTypes from './action-types';\n\nconst setTcfLoaded = () => {\n return {\n type: actionTypes.SET_TCF_LOADED\n };\n};\n\nconst setAds = ads => {\n return {\n type: actionTypes.SET_ADS,\n payload: ads\n };\n};\n\nexport default {\n setAds,\n setTcfLoaded\n};\n","import React, { useEffect, useRef, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useUrlLocalizer } from 'tradera-lang/translate';\nimport ALink from 'tradera-components/alink/alink';\nimport Home from '@tradera/blueprint/theme/icons2/home.svg?jsx';\n\nconst Breadcrumbs = ({\n categoryPath,\n categoryTree,\n className = '',\n handleClick,\n inSPA = false\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const breadcrumbRef = useRef(null);\n // Use path if provided otherwise parse path from tree\n let parsedCategoryPath = useMemo(() => {\n if (categoryPath) {\n return categoryPath;\n } else if (categoryTree) {\n const path = resolveActiveCategoryPath(categoryTree);\n // If empty path, fall back to first root category\n if (path.length > 0) {\n return path;\n } else {\n return [categoryTree];\n }\n } else {\n return [];\n }\n }, [categoryPath, categoryTree]);\n\n useEffect(() => {\n breadcrumbRef.current.scrollLeft =\n breadcrumbRef.current.scrollWidth -\n breadcrumbRef.current.clientWidth;\n }, [parsedCategoryPath]);\n\n return (\n \n \n
  • \n \n \n \n
  • \n {parsedCategoryPath.map((category, index) => (\n handleClick(category) : null\n }\n />\n ))}\n \n \n );\n};\n\nBreadcrumbs.propTypes = {\n categoryPath: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number,\n url: PropTypes.string,\n name: PropTypes.string\n })\n ),\n categoryTree: PropTypes.shape({\n status: PropTypes.string,\n children: PropTypes.arrayOf(PropTypes.object),\n id: PropTypes.number,\n url: PropTypes.string,\n name: PropTypes.string\n }),\n className: PropTypes.string,\n handleClick: PropTypes.func,\n inSPA: PropTypes.bool\n};\n\n/**\n * Recursively search tree for active category, return list of it and its parents\n *\n * @param {object} category - Category tree\n * @param {object[]} parents - Parent categories to current tree\n */\nconst resolveActiveCategoryPath = (category, parents = []) => {\n if (category.status === 'active') {\n return [...parents, category];\n } else {\n if (category.children) {\n for (const child of category.children) {\n const path = resolveActiveCategoryPath(child, [\n ...parents,\n category\n ]);\n if (path.length > 0) return path;\n }\n }\n return [];\n }\n};\n\n/**\n * Creates a breadcrumb item with Microdata attributes.\n * Microdata can be tested with Google's Structured Data Testing Tool here:\n * https://search.google.com/structured-data/testing-tool?utm_campaign=devsite&utm_medium=microdata&utm_source=breadcrumb\n * Please note that it will give errors if href is contains localhost:5454.\n */\nconst BreadcrumbItem = ({\n handleClick,\n inSPA,\n microDataPositionProperty,\n title,\n url\n}) => {\n const isFirstElement = microDataPositionProperty === 1;\n const gaLabel = isFirstElement\n ? 'All'\n : `L${microDataPositionProperty - 1}`;\n\n return (\n \n \n {'->'}\n \n {handleClick ? (\n \n {title}\n \n ) : (\n \n {title}\n \n )}\n \n \n );\n};\n\nconst TextElement = ({ children }) => (\n \n {children}\n \n);\n\nexport default Breadcrumbs;\n","import React from 'react';\nimport LiveIconAnimatedImg from '@tradera/blueprint/theme/icons-animated/live.svg';\nimport LiveIcon from '@tradera/blueprint/theme/icons2/live.svg?jsx';\n\nconst LiveShoppingIcon = ({ animated, className }) => {\n if (animated) {\n return (\n \n );\n } else {\n return ;\n }\n};\n\nLiveShoppingIcon.propTypes = {};\n\nexport { LiveShoppingIcon };\n","import React from 'react';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport ALink from 'tradera-components/alink/alink';\nimport { LiveShoppingIcon } from 'tradera-apps/tradera/components/live-shopping/live-shopping-icon';\n\nconst LiveShoppingLink = ({ featureSwitches, useLink, transparentHeader }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n\n return (\n \n \n \n {t('siteHeader_liveShopping')}\n \n \n );\n};\n\nexport default LiveShoppingLink;\n","import React from 'react';\nimport HeartFilledIcon from '@tradera/blueprint/theme/icons2/heart-fill.svg?jsx';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst WishListButton = ({\n className,\n disabled,\n iconClassName,\n onClick,\n showText,\n toggled\n}) => {\n const { t } = useTranslator();\n const text = toggled\n ? t('itemCard_savedToWishlist')\n : t('itemCard_saveToWishlist');\n\n const iconClasses = `icon icon-stroke-white \n ${toggled ? 'icon-danger' : ''} \n ${showText ? 'icon-before' : ''} \n ${iconClassName || ''}`;\n\n const combinedClassName = `btn \n ${showText ? 'btn-icon-fixed' : 'btn-round'}\n ${className || ''}`;\n\n return (\n \n {toggled ? (\n \n ) : (\n <>\n \n \n \n )}\n {showText && {text}}\n \n );\n};\n\nexport default WishListButton;\n","import React from 'react';\nimport PropType from 'prop-types';\nimport Close from '@tradera/blueprint/theme/icons2/close.svg?jsx';\n\nconst ModalHeader = ({ children, onClose, className = '' }) => (\n {\n onClose();\n e.stopPropagation();\n }}>\n
    \n {children}\n
    \n \n \n \n \n);\n\nModalHeader.propTypes = {\n children: PropType.node.isRequired,\n onClose: PropType.func,\n className: PropType.string\n};\n\nexport default ModalHeader;\n","import React from 'react';\n\nimport { generateItemCardPlaceholders } from 'tradera-components/item-card/generate-item-card-placeholders';\nimport ItemCard from 'tradera-components/item-card/item-card';\nimport { lazyLoadSettings } from 'tradera-components/item-card/config';\nimport LoadingIcon from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\nimport useIsMobile from 'tradera-hooks/use-is-mobile';\n\nconst LoadingSymbolSpinner = () => (\n
    \n \n
    \n);\n\nconst LoadingSymbolCards = ({ itemsPerPage }) => {\n const items = generateItemCardPlaceholders(itemsPerPage);\n const localLazyLoadSettings = {\n ...lazyLoadSettings,\n offset: 100\n };\n\n const isMobile = useIsMobile();\n\n return (\n \n {items.map(item => (\n \n \n \n ))}\n \n );\n};\n\nexport { LoadingSymbolSpinner, LoadingSymbolCards };\n","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 state.shippingCountry = {\n countryCodeIso2: toUpperCase(countryCodeIso2)\n };\n },\n setDefaultShippingCountry: state => {\n // Remove name\n state.shippingCountry = { countryCodeIso2: 'SE' };\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 cookieUtil.createCookie(REGION_PICKER_DISMISSED, true);\n return {};\n }\n }\n }\n});\n\nconst toUpperCase = (countryCodeIso2 = '') => countryCodeIso2.toUpperCase();\n\nexport const {\n setShippingCountry,\n setAvailableShippingCountries,\n beginLoadingAvailableShippingOptions,\n dismissLocalizationRegionPicker,\n setDefaultShippingCountry\n} = shippingRegionSlice.actions;\nexport default shippingRegionSlice.reducer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useSelector } from 'react-redux';\n\nconst WaitForConsentApiLoaded = ({ placeHolder, onLoadRender }) => {\n const isTcfLoaded = useSelector(state => state.ads.isTcfLoaded);\n if (!isTcfLoaded) return placeHolder || null; // Return ads placeholder until Tcf is loaded\n return <>{onLoadRender()};\n};\n\nWaitForConsentApiLoaded.propTypes = {\n placeHolder: PropTypes.node,\n onLoadRender: PropTypes.func.isRequired\n};\n\nexport default WaitForConsentApiLoaded;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ArrowUpIcon from '@tradera/blueprint/theme/icons2/arrow-up.svg?jsx';\nimport ArrowDownIcon from '@tradera/blueprint/theme/icons2/arrow-down.svg?jsx';\n\nclass ExpandableMenuItem extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n expanded: this.props.defaultExpanded\n };\n }\n\n toggleOpen = () => {\n this.setState(\n prevState => ({\n expanded: !prevState.expanded\n }),\n () => {\n const { onOpen = () => {}, onClose = () => {} } = this.props;\n if (this.state.expanded) {\n onOpen();\n } else {\n onClose();\n }\n }\n );\n };\n\n componentDidUpdate(prevProps) {\n if (prevProps.defaultExpanded !== this.props.defaultExpanded) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ expanded: prevProps.defaultExpanded });\n }\n }\n\n render() {\n const {\n imageUrl,\n icon,\n label,\n className,\n imageContainerClassName,\n border,\n children,\n href\n } = this.props;\n const { expanded } = this.state;\n\n return (\n \n {\n if (children) {\n e.preventDefault();\n this.toggleOpen();\n }\n }}\n aria-expanded={expanded.toString()}\n className={`site-dropdown__transparent-a p-0 m-0 d-flex flex-row align-items-center site-dropdown__item ${\n className ? className : ''\n }`}>\n {icon && (\n \n {icon}\n \n )}\n {label}\n \n {expanded ? (\n \n ) : (\n \n )}\n \n \n {expanded &&
      {children}
    }\n \n );\n }\n}\n\nExpandableMenuItem.defaultProps = {\n defaultExpanded: false,\n border: true\n};\n\nExpandableMenuItem.propTypes = {\n imageUrl: PropTypes.string,\n icon: PropTypes.node,\n label: PropTypes.node,\n className: PropTypes.string,\n imageContainerClassName: PropTypes.string,\n border: PropTypes.bool,\n onOpen: PropTypes.func,\n onClose: PropTypes.func\n};\n\nexport default ExpandableMenuItem;\n","import { matchPath } from 'react-router';\nimport { logger } from 'packages';\n\nexport const getCurrentPageFromRoute = (routeMap, location) => {\n if (!routeMap) {\n logger(`Variable 'routeMap' missing in getCurrentPageFromRoute()`);\n return;\n } else if (!location) {\n logger(`Variable 'location' missing in getCurrentPageFromRoute()`);\n return;\n }\n\n const matchedPage = Object.keys(routeMap)?.find(pageName => {\n const page = routeMap[pageName];\n return matchPath(location.pathname, {\n path: page.path,\n exact: page.exact || false,\n strict: page.strict || false\n });\n });\n\n return routeMap[matchedPage];\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 SET_MEMBER_HERO_IMAGE: 'MEMBER/SET_MEMBER_HERO_IMAGE'\n};\n","import { compose, createStore, applyMiddleware } from 'redux';\nimport { Provider } from 'react-redux';\nimport React from 'react';\nimport ReduxThunk from 'redux-thunk';\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 adsActions from './ads/actions';\nimport * as viewItemActions from './views/view-item/reducer';\nimport { handleReportItemModel } from './views/report-item/actions';\nimport uiActions from './ui/actions';\nimport * as pushNotificationActions from './push-notifications/push-notifications-slice';\nimport { routerMiddleware } from 'connected-react-router';\nimport history from 'tradera-utils/history';\nimport { sentryReduxEnhancer } from 'tradera-utils/sentry/redux';\n\n// Ensure only 1 redux store;\nlet reduxStore;\n\nexport { history };\n\n// Apply middlewares via redux compose;\nconst getComposer = history => {\n const middlewares = [ReduxThunk];\n if (history) {\n middlewares.push(routerMiddleware(history));\n }\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(\n applyMiddleware(...middlewares),\n sentryReduxEnhancer\n );\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(browserHistory),\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\n enableWebPackHotModuleReplacementForReducers(module, reduxStore);\n return reduxStore;\n};\n\nexport const globalStore = () =>\n reduxStore ? reduxStore : configureStore(history);\nconst store = globalStore();\n\n/**\n * handle tcf + gdpr loading\n */\n\nif (initData.featureSwitches && initData.featureSwitches['quantcast-consent']) {\n window.addEventListener('tcfLoaded', function() {\n store.dispatch(adsActions.setTcfLoaded());\n });\n} else {\n store.dispatch(adsActions.setTcfLoaded());\n}\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) {\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} else if (initData?.item) {\n store.dispatch(\n viewItemActions.handleItemModel(initData.item, initData.memberId)\n );\n} else if (initData?.reportItem) {\n store.dispatch(handleReportItemModel(initData.reportItem));\n} else if (initData?.traderaShopProduct) {\n store.dispatch(\n adsActions.setAds(initData.traderaShopProduct.item.reduxContainer.ads)\n );\n}\n\nstore.dispatch(uiActions.fetchSystemMessages());\nstore.dispatch(pushNotificationActions.init());\n\nwindow.getState = store.getState; // TODO: REmove me or put behind ENV-check (dev only)\n\nexport default store;\n\nexport const ProviderWithGlobalStore = props => (\n \n);\n","const THROW_ERROR = false;\n\nexport const assertNoUndefinedProperties = obj => {\n for (const [key, value] of Object.entries(obj)) {\n if (value === undefined) {\n const message = `${key} is undefined`;\n if (THROW_ERROR) {\n throw new Error(message);\n }\n console.error(message);\n }\n }\n};\n","import { warnIfDevBuild } from 'utils/environment';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport App, { BasicApp } from './app';\nimport { logger } from 'packages';\n\nexport default initData => {\n warnIfDevBuild('discover');\n const { isHybridAppContext, isBasicApp } = initData;\n const el = document.getElementsByClassName('site-container')[0];\n if (el) {\n try {\n // Render basic app for web views, regular app otherwise\n const AppToMount =\n isHybridAppContext || isBasicApp ? BasicApp : App;\n ReactDOM.render(\n React.createElement(AppToMount, {\n initData\n }),\n el,\n () => {\n el.setAttribute('data-spa-mounted', true);\n }\n );\n } catch (e) {\n logger(e);\n }\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 = items => ({\n type: actionTypes.ADD,\n payload: items\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 setItemWishList = (itemId, exists) => (dispatch, getState) => {\n const existsInState = getState().items.wishListItemIds.has(itemId);\n if (existsInState !== exists) {\n dispatch({\n type: actionTypes.WISHLIST,\n payload: { itemId, exists }\n });\n }\n};\nconst addItemsToWishList = itemIds => dispatch => {\n dispatch({\n type: actionTypes.WISHLIST_ADD_RANGE,\n payload: { itemIds }\n });\n};\n\n/**\n * Toggle item in wishlist\n *\n * @param {int} itemId\n * @param {boolean} [value] - Force add or remove from wishlist\n * @param {boolean} [shouldNotTrackEventBecauseNeedsToBeSameAsLegacyVip]\n * @returns {function(*, *): Promise<* | Error>}\n */\nconst wishlist = (\n itemId,\n value,\n shouldNotTrackEventBecauseNeedsToBeSameAsLegacyVip = false\n) => async (dispatch, getStore) => {\n const {\n member: { isLoggedIn, memberId },\n items: { wishListItemIds },\n page\n } = getStore();\n let existsInWishList;\n if (value === undefined) {\n existsInWishList = wishListItemIds.has(itemId);\n } else {\n existsInWishList = !value;\n }\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(setItemWishList(itemId, !existsInWishList));\n\n if (!existsInWishList) {\n gtmCore.trackGtmEvent('add-to-wishlist', {\n memberId: memberId,\n itemId: itemId\n });\n }\n if (!shouldNotTrackEventBecauseNeedsToBeSameAsLegacyVip) {\n Analytics.trackEvent({\n category: 'Wish list',\n action: existsInWishList ? 'remove' : 'add',\n label: page.type\n });\n }\n\n return postWishlistItem(itemId, !existsInWishList)\n .then(() => {\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 return !existsInWishList;\n })\n .catch(error => {\n // Restore previous wishlist status on error\n dispatch(setItemWishList(itemId, existsInWishList));\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 updateItem = ({ itemId, item }) => ({\n type: actionTypes.UPDATE_ITEM,\n payload: { itemId, item }\n});\n\nexport default {\n add,\n addItemsToWishList,\n addRecentlyViewed,\n setItemWishList,\n updateItem,\n wishlist\n};\n","export default function ThrottledAction(minDelayInMs, alwaysDelay) {\n var lastActionTime = 0;\n var timeoutId = null;\n this.execute = function(wrappedAction) {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n var timeNow = Date.now();\n var elapsed = timeNow - lastActionTime;\n if (!alwaysDelay && elapsed > minDelayInMs) {\n wrappedAction();\n lastActionTime = timeNow;\n } else {\n timeoutId = setTimeout(() => {\n wrappedAction();\n }, minDelayInMs);\n }\n };\n}\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst BuyNowLabel = ({ className, tagName: TagName }) => {\n const { t } = useTranslator();\n return (\n \n {t('itemCard_buyNow')}\n \n );\n};\nBuyNowLabel.defaultProps = {\n tagName: 'span'\n};\n\nexport default BuyNowLabel;\n","import React from 'react';\nimport { formatSellerDsrAverage } from 'tradera-utils/format';\n\nconst SellerRating = ({ className, includeTotal, sellerDsrAverage }) => {\n const isGood = sellerDsrAverage >= 4.8;\n const isBad = sellerDsrAverage < 4.5;\n const formattedRating = formatSellerDsrAverage(sellerDsrAverage).replace(\n ',',\n '.'\n );\n let textClassName = '';\n if (isGood) {\n textClassName = 'text-success';\n } else if (isBad) {\n textClassName = 'text-danger';\n }\n return (\n \n {Number(formattedRating).toFixed(1) +\n (includeTotal ? '\\u00A0/\\u00A05.0' : '')}\n \n );\n};\nexport default SellerRating;\n","import React from 'react';\nimport SellerRating from './seller-rating';\n\nconst SellerLink = ({\n className,\n sellerMemberId,\n sellerAlias,\n sellerDsrAverage\n}) => {\n const hasRating = Math.abs(sellerDsrAverage || 0) >= 0.1;\n\n return (\n \n \n {sellerAlias}\n \n {hasRating && (\n <>\n  \n \n \n )}\n \n );\n};\nexport default SellerLink;\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst SHIPPING_TYPES = {\n NotSpecified: 'NotSpecified',\n Takeaway: 'Takeaway',\n TakeawayOnly: 'TakeawayOnly'\n};\n\nconst ShippingLabel = ({\n className,\n hasFreeShipping,\n shippingOptions,\n tagName: TagName\n}) => {\n const { t } = useTranslator();\n\n if (hasFreeShipping) {\n return (\n \n {t('itemCard_freeShipping')}\n \n );\n }\n\n const hasNonSpecifiedShipping =\n !shippingOptions ||\n !shippingOptions.length ||\n (shippingOptions.length === 1 &&\n shippingOptions[0].type === SHIPPING_TYPES.NotSpecified);\n\n if (hasNonSpecifiedShipping) {\n return (\n \n {t('itemCard_nonSpecifiedShipping')}\n \n );\n }\n\n const isPickupOnly =\n shippingOptions.length === 1 &&\n [SHIPPING_TYPES.Takeaway, SHIPPING_TYPES.TakeawayOnly].includes(\n shippingOptions[0].type\n );\n\n if (isPickupOnly) {\n return (\n \n {t('itemCard_pickup')}\n \n );\n }\n\n const shippingCost = shippingOptions[0].cost;\n\n if (shippingCost) {\n return (\n \n {t('itemCard_shippingCost', { shippingCost })}\n \n );\n }\n\n return null;\n};\n\nShippingLabel.defaultProps = {\n tagName: 'span'\n};\n\nexport default ShippingLabel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ALink from 'tradera-components/alink/alink';\nimport MultiCurrency, {\n preferredCurrencyPropTypes\n} from '../multi-currency/multi-currency';\n\nimport EndTimeLabel from './item-card-parts/end-time-label';\nimport AttributeButtonsList from './item-card-parts/attribute-buttons-list';\nimport BidsLabel from './item-card-parts/bids-label';\nimport BuyNowLabel from './item-card-parts/buy-now-label';\nimport DiscountBadge from './item-card-parts/discount-badge';\nimport DiscountedPriceLabel from './item-card-parts/disacount-price-label';\nimport FixedPriceLabel from './item-card-parts/fixed-price-label';\nimport ItemCardImage from './item-card-parts/item-card-image';\nimport NewTodayLabel from './item-card-parts/new-today-label';\nimport OnDisplayBadge from './item-card-parts/on-display-badge';\nimport PriceLabel from './item-card-parts/price-label';\nimport QuickViewButton from './item-card-parts/quick-view-button';\nimport SellerLink from './item-card-parts/seller-link';\nimport SettingsButton from './item-card-parts/settings-button';\nimport ShippingLabel from './item-card-parts/shipping-label';\nimport WishListButton from './item-card-parts/wish-list-button';\nimport './item-card.scss';\nimport { useSelector } from 'react-redux';\nimport { selectIsSwedishVisitor } from 'tradera-state/shipping-region/selectors';\nimport ITEM_TYPES from 'tradera-constants/item-types';\nimport dayjs from 'dayjs';\n\nfunction ItemListCard({\n className,\n item = {},\n lazy,\n onClick,\n onAddToWishlist,\n onQuickView,\n onRemoveFromWishlist,\n onAttributeButtonClick,\n onSettings,\n preferredCurrency,\n ready,\n isShopOwnedByCurrentMember = false\n}) {\n const inSPA = true;\n const existsInWishList = useSelector(state =>\n state.items.wishListItemIds.has(item.itemId)\n );\n const isSwedishVisitor = useSelector(selectIsSwedishVisitor);\n ///////\n const showBids = [ITEM_TYPES.AUCTION, ITEM_TYPES.AUCTION_BIN].includes(\n item.itemType\n );\n const showBuyNow =\n item.itemType === ITEM_TYPES.AUCTION_BIN &&\n (item.totalBids === 0 || !item.reservePriceReached);\n const isShopItem = item.itemType === ITEM_TYPES.SHOP_ITEM;\n const hasDiscount = item.discountRate > 0;\n\n const isNewToday =\n !!item.startDate &&\n dayjs(item.startDate).isAfter(dayjs().subtract(1, 'day'));\n const itemUrl = item.itemUrl || '/';\n const imageUrl = item.imageUrl?.replace('/medium/', '/medium-fit/');\n ///////\n\n const handleWishlist = event => {\n event.preventDefault();\n event.stopPropagation();\n if (existsInWishList) {\n onRemoveFromWishlist(item.itemId);\n } else {\n onAddToWishlist(item.itemId);\n }\n };\n\n return (\n \n \n\n
    \n
    \n {hasDiscount && (\n \n )}\n

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

    \n
    \n
    \n

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

    \n
    \n {!!item.attributes?.length && onAttributeButtonClick && (\n \n )}\n
    \n \n {isShopItem ? (\n \n ) : (\n <>\n {isNewToday && }\n \n \n )}\n
    \n\n
    \n \n \n {onQuickView && (\n onQuickView(item.itemId)}\n />\n )}\n {isShopOwnedByCurrentMember && (\n onSettings(item.itemId)}\n />\n )}\n
    \n
    \n\n \n \n \n \n {hasDiscount && (\n \n )}\n {showBids && (\n \n )}\n {showBuyNow && (\n <>\n \n \n \n )}\n {isSwedishVisitor && (\n \n )}\n {item.onDisplay && }\n

    \n {isShopItem ? (\n \n ) : (\n <>\n {isNewToday && }\n \n \n )}\n

    \n \n \n );\n}\n\nItemListCard.defaultProps = {\n className: '',\n onAddToWishlist: () => {},\n onRemoveFromWishlist: () => {},\n onQuickView: () => {}\n};\n\nItemListCard.propTypes = {\n className: PropTypes.string,\n item: PropTypes.shape({\n attributes: PropTypes.array,\n buyNowPrice: PropTypes.number,\n discountRate: PropTypes.number,\n displayHighlighted: PropTypes.bool,\n endDate: PropTypes.string,\n hasFreeShipping: PropTypes.bool,\n imageHeight: PropTypes.number,\n imageUrl: PropTypes.string,\n imageWidth: PropTypes.number,\n isActive: PropTypes.bool,\n itemId: PropTypes.number,\n itemType: PropTypes.string,\n itemUrl: PropTypes.string,\n onDisplay: PropTypes.bool,\n price: PropTypes.number,\n priceBeforeDiscount: PropTypes.number,\n reservePriceReached: PropTypes.bool,\n sellerAlias: PropTypes.string,\n sellerDsrAverage: PropTypes.number,\n sellerMemberId: PropTypes.number,\n shippingOptions: PropTypes.array,\n shortDescription: PropTypes.string,\n startDate: PropTypes.string,\n totalBids: PropTypes.number,\n\n /* Currently only used in Wish list */\n isOverbidden: PropTypes.bool,\n isLeading: PropTypes.bool,\n isWinner: PropTypes.bool\n }),\n lazy: PropTypes.shape({\n offset: PropTypes.number,\n once: PropTypes.bool,\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n placeholder: PropTypes.node,\n imagePlaceholder: PropTypes.node\n }),\n onAddToWishlist: PropTypes.func,\n onRemoveFromWishlist: PropTypes.func,\n onQuickView: PropTypes.func,\n onSettings: PropTypes.func,\n preferredCurrency: preferredCurrencyPropTypes,\n ready: PropTypes.bool,\n isShopOwnedByCurrentMember: PropTypes.bool\n};\n\nexport default ItemListCard;\n","import myTraderaItemActions from './my-tradera-items';\nimport qs from 'qs';\nimport { checkStateOfQueryParams } from '../../helpers/route-helper';\nimport { setCookie } from './cookies';\nimport { selectCookiesState } from 'tradera-apps/my-tradera/app/state/reducers/cookies';\nimport { selectMyTraderaState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\n\n//jshint module : true\nconst actionTypes = {\n SELECT_RADIO_BAR: 'SET_SELECTED_RADIO_BAR',\n GET_SEARCH: 'GET_SEARCH_RESULTS',\n SET_PAGE_SIZE: 'SET_PAGE_SIZE',\n CHANGE_SORT_VALUE: 'CHANGE_SORT_VALUE',\n CHANGE_TYPE_VALUE: 'CHANGE_TYPE_VALUE',\n CHANGE_SORT_ORDER: 'CHANGE_SORT_ORDER',\n CHANGE_SORTING_TO_BEST_MATCH: 'CHANGE_SORTING_TO_BEST_MATCH',\n SET_DATE_FROM: 'SET_DATE_FROM',\n SET_DATE_TO: 'SET_DATE_TO',\n CHANGE_PAGE: 'CHANGE_PAGE',\n CHANGE_SEARCH_QUERY: 'CHANGE_SEARCH_QUERY',\n CHANGE_RESERVATION_PRICE: 'CHANGE_RESERVATION_PRICE',\n RESET_FILTERS: 'RESET_FILTERS_TO_DEFAULT',\n SET_FILTERS_FROM_ROUTER: 'SET_FILTERS_BASED_ON_ROUTER',\n LOCATION_CHANGE: 'ROUTER_DISPATCHED_ROUTE_CHANGE',\n SET_FILTERS_FOR_PAGE: 'SET_FILTERS_BASED_ON_PAGE',\n SET_FILTERS_BY_STATE: 'SET_FILTERS_BASED_ON_STATE',\n SET_SINGLE_FILTER: 'SET_SINGLE_FILTER_VALUE',\n RESET_DATE_RANGE_TO: 'RESET_DATE_RANGE_TO',\n RESET_DATE_RANGE_FROM: 'RESET_DATE_RANGE_FROM',\n SHOW_HIDE_FILTERS: 'SHOW_HIDE_FILTER_TOOLBAR'\n};\n\nconst updatePageSize = value => ({\n type: actionTypes.SET_PAGE_SIZE,\n payload: value\n});\n\nconst setPageSize = value => dispatch => {\n dispatch(setCookie('ITEMS_PER_PAGE', value));\n dispatch(updatePageSize(value));\n return {\n type: actionTypes.setPageSize,\n payload: value\n };\n};\n\nconst selectTypeChange = value => ({\n type: actionTypes.CHANGE_TYPE_VALUE,\n payload: value\n});\n\nconst selectSortChange = (sort, sortOrder) => ({\n type: actionTypes.CHANGE_SORT_VALUE,\n payload: {\n sort: sort,\n sortOrder: sortOrder\n }\n});\n\nconst changeSortingToBestMatch = (sort, sortOrder) => ({\n type: actionTypes.CHANGE_SORTING_TO_BEST_MATCH,\n payload: {\n sort: sort,\n sortOrder: sortOrder\n }\n});\n\nconst setDateFrom = value => ({\n type: actionTypes.SET_DATE_FROM,\n payload: value\n});\n\nconst setDateTo = value => ({\n type: actionTypes.SET_DATE_TO,\n payload: value\n});\n\nconst changeSortOrder = () => ({\n type: actionTypes.CHANGE_SORT_ORDER\n});\n\nconst changePage = value => ({\n type: actionTypes.CHANGE_PAGE,\n page: value\n});\n\nconst changeSearchQuery = value => ({\n type: actionTypes.CHANGE_SEARCH_QUERY,\n payload: value\n});\n\nconst selectReservationPriceChange = value => ({\n type: actionTypes.CHANGE_RESERVATION_PRICE,\n payload: value\n});\n\nconst setFiltersFromRouter = params => ({\n type: actionTypes.LOCATION_CHANGE,\n payload: params\n});\n\nconst updateFiltersForSelectedPage = filters => ({\n type: actionTypes.SET_FILTERS_FOR_PAGE,\n payload: filters\n});\n\nconst setFiltersForSelectedPage = filters => (dispatch, getState) => {\n const pageSize = selectCookiesState(getState()).ITEMS_PER_PAGE;\n if (pageSize) {\n filters.newFilters.modifiers.paging.size = pageSize;\n }\n\n dispatch(updateFiltersForSelectedPage(filters));\n};\n\nconst filterByState = value => ({\n type: actionTypes.SET_FILTERS_BY_STATE,\n payload: value\n});\n\nconst setSingleFilterValue = (filter, value) => ({\n type: actionTypes.SET_SINGLE_FILTER,\n payload: {\n filter,\n value\n }\n});\n\nconst historyLocationDidUpdate = history => (dispatch, getState) => {\n const isPrevAndCurrentPathnameEqual = () => {\n const routingState = getState().router;\n return (\n routingState.location &&\n routingState.location.pathname &&\n routingState.location.pathname === history.location.pathname\n );\n };\n\n const { location } = history;\n\n if (history.action === 'POP' && isPrevAndCurrentPathnameEqual()) {\n if (\n checkStateOfQueryParams(getState, location.search) &&\n selectMyTraderaState(getState()).isSearching === false\n ) {\n dispatch(\n setFiltersFromRouter(qs.parse(location.search.replace('?', '')))\n );\n dispatch(myTraderaItemActions.updateURL());\n }\n } else if (history.action === 'PUSH' && !isPrevAndCurrentPathnameEqual()) {\n if (\n checkStateOfQueryParams(getState, location.search) &&\n selectMyTraderaState(getState()).isSearching === false\n ) {\n dispatch(\n setFiltersFromRouter(qs.parse(location.search.replace('?', '')))\n );\n dispatch(myTraderaItemActions.updateURL());\n }\n }\n};\n\nconst resetFilters = () => ({\n type: actionTypes.RESET_FILTERS\n});\n\nconst resetDateRangeTo = () => ({\n type: actionTypes.RESET_DATE_RANGE_TO\n});\n\nconst resetDateRangeFrom = () => ({\n type: actionTypes.RESET_DATE_RANGE_FROM\n});\n\nconst showHideFilterToolbar = showCookies => dispatch => {\n dispatch(\n setCookie(\n 'SHOW_FILTERS',\n showCookies === 'visible' ? 'hidden' : 'visible'\n )\n );\n};\n\nexport default {\n actionTypes,\n resetDateRangeTo,\n resetDateRangeFrom,\n resetFilters,\n setPageSize,\n selectTypeChange,\n selectSortChange,\n changeSortingToBestMatch,\n setDateTo,\n setDateFrom,\n setSingleFilterValue,\n changeSortOrder,\n changePage,\n changeSearchQuery,\n updateFiltersForSelectedPage,\n selectReservationPriceChange,\n setFiltersFromRouter,\n setFiltersForSelectedPage,\n filterByState,\n updatePageSize,\n historyLocationDidUpdate,\n showHideFilterToolbar\n};\n","import React from 'react';\nimport Ad from 'tradera-components/ads/ad';\n\nconst DESKTOP = 'desktop';\nconst TABLET = 'tablet';\nconst MOBILE = 'mobile';\n\nconst DESKTOP_AUTOSCALE_OFFSET = 980;\nconst TABLET_AUTOSCALE_OFFSET = 434;\n\nconst getAdPosision = (index, device) => {\n switch (index) {\n case 1:\n return `mid1-${device}`;\n case 2:\n return `mid2-${device}`;\n case 3:\n return `mid3-${device}`;\n default:\n return `top-${device}`;\n }\n};\n\n/**\n * Helper method for creating ad\n *\n * @param {string} deviceName\n * @param {string} adFormats\n * @param {number} index\n * @param {object} props\n */\nconst buildProps = (\n deviceName,\n adFormats,\n index,\n autoscaleOffsetWidth,\n props\n) => {\n return {\n adContainerClass: '',\n autoscaleOffsetWidth,\n className: 'd-empty-none px-0 col-12 mx-auto mb-4',\n adFormats,\n deviceName,\n position: getAdPosision(index, deviceName),\n ...props\n };\n};\n\nconst DesktopAd = ({ index, ...props }) => (\n \n
    \n \n);\n\nconst TabletAd = ({ index, ...props }) => (\n \n
    \n \n);\n\nconst MobileAd = ({ index, ...props }) => (\n \n
    \n \n);\n\nexport { DesktopAd, TabletAd, MobileAd };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport HoverMenu from './hover-menu/hover-menu';\nimport HoverMenuItem from './hover-menu/hover-menu-item';\nimport { getMenuGaAttributes } from './site-header.analytics.js';\nimport { useTranslator } from 'tradera-lang/translate';\n\nimport HeartIcon from '@tradera/blueprint/theme/icons2/heart.svg?jsx';\nimport BookmarkIcon from '@tradera/blueprint/theme/icons2/bookmark.svg?jsx';\nimport StarIcon from '@tradera/blueprint/theme/icons2/star.svg?jsx';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\n\nconst getGaAttributes = label =>\n getMenuGaAttributes('Top navigation', 'Watchlist menu', label);\n\nconst WatchListMenu = ({ showMenu }) => {\n const { t } = useTranslator();\n const isSellerListEnabled = useIsFeatureEnabled('my-tradera-seller-list');\n return (\n \n }\n gaAttributes={getGaAttributes('Wishlist')}\n />\n }\n gaAttributes={getGaAttributes('Saved searches')}\n />\n {isSellerListEnabled ? (\n }\n gaAttributes={getGaAttributes('Seller list')}\n />\n ) : (\n }\n gaAttributes={getGaAttributes('Favorite seller')}\n />\n )}\n \n );\n};\n\nWatchListMenu.propTypes = {\n showMenu: PropTypes.bool\n};\n\nexport default WatchListMenu;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport HeartIcon from '@tradera/blueprint/theme/icons2/heart.svg?jsx';\nimport WatchlistMenu from './watch-list-menu';\nimport { HOVER_MENUS } from './hover-menu/constants';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\n\nconst WishlistLink = ({\n onClick,\n mouseOver,\n mouseOut,\n onBlur,\n transparentHeader,\n showMenu\n}) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const wishlistText = t('siteHeader_wishlist');\n return (\n mouseOver(HOVER_MENUS.WISHLIST)}\n onMouseLeave={mouseOut}>\n {\n onClick(e, HOVER_MENUS.WISHLIST);\n }}\n onBlur={onBlur}>\n \n \n \n {wishlistText}\n \n \n \n
    \n );\n};\n\nWishlistLink.propTypes = {\n onClick: PropTypes.func,\n mouseOver: PropTypes.func,\n mouseOut: PropTypes.func,\n showMenu: PropTypes.bool\n};\n\nexport default React.memo(WishlistLink);\n","export const selectFeatureSwitches = state => state.environment.featureSwitches;\n","import { selectFeatureSwitches } from 'tradera-state/environment/selectors';\nimport { selectShippingRegionCountryCodeIso2 } from 'tradera-state/shipping-region/selectors';\n\nexport const selectIsLoggedIn = state => state.member?.isLoggedIn;\n\nexport const selectGeolocation = state => state.member?.geolocation;\n\nexport const selectMemberId = state => state.member?.memberId;\nexport const selectMemberCountryCodeIso2 = state =>\n state.member?.memberCountryCodeIso2;\n\nexport const selectIsOutsideSweden = state =>\n state.member?.geolocation?.isoCode &&\n state.member?.geolocation?.isoCode.toLowerCase() !== 'se';\n\nexport const selectIsFetchingGeolocation = state =>\n state.member?.isFetchingGeolocation;\n\nexport const showDanishFromCountry = state => {\n const fromCountry =\n selectShippingRegionCountryCodeIso2(state) ||\n selectMemberCountryCodeIso2(state);\n return (\n selectFeatureSwitches(state)['shipping-from-country'] &&\n fromCountry === 'DK'\n );\n};\n","import { createBrowserHistory } from 'history';\n\nconst history = createBrowserHistory();\nexport default history;\n","import React from 'react';\nimport AttributeButton from './attribute-button';\n\nconst ATTRIBUTE_NAMES = { BRAND: 'brand', CLOTHES_SIZE: 'clothes_size' };\nconst ATTRIBUTE_PREFIX = 'af-';\n\nconst AttributeButtonsList = ({ attributes, onClick, className }) => {\n const visibleAttributes = attributes\n .map(({ name, values }) => {\n switch (name) {\n case ATTRIBUTE_NAMES.BRAND:\n return { name, values };\n case ATTRIBUTE_NAMES.CLOTHES_SIZE:\n return { name: ATTRIBUTE_PREFIX + name, values };\n default:\n return null;\n }\n })\n .filter(x => !!x);\n return (\n

    \n {visibleAttributes.map(attribute => (\n onClick(attribute)}\n />\n ))}\n

    \n );\n};\nexport default AttributeButtonsList;\n","export default {\n AUCTION: 'Auction',\n AUCTION_BIN: 'AuctionBin',\n PURE_BIN: 'PureBin',\n SHOP_ITEM: 'ShopItem'\n};\n","import axios from 'axios';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n utilizeCancelToken,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\nimport cookieUtil from 'tradera-utils/cookie';\n\nimport { FORCE_GEO_DEV } from 'tradera-constants/cookies';\n\nexport const fetchGeolocation = () => {\n const { cancel, cancelToken } = utilizeCancelToken('fetchGeolocation');\n\n if (cancel) cancel();\n\n const search = (window && window.location && window.location.search) || '';\n return axios\n .get(getGeoPublicApiUrl(search), {\n cancelToken\n })\n .then(finalizeResponse())\n .catch(handleError());\n};\n\nexport const getGeoPublicApiUrl = search => {\n const match = search.match(/force-geo-(.*?)-dev/);\n\n if (match) {\n cookieUtil.createCookie(FORCE_GEO_DEV, match[1]);\n return `${ENDPOINTS.GEO_PUBLIC_API_URL}/${match[1]}`;\n }\n\n const forceGeoDevCookie = cookieUtil.readCookie(FORCE_GEO_DEV);\n if (forceGeoDevCookie) {\n return `${ENDPOINTS.GEO_PUBLIC_API_URL}/${forceGeoDevCookie}`;\n }\n\n return ENDPOINTS.GEO_PUBLIC_API_URL;\n};\n","import actionTypes from './action-types';\nimport { fetchGeolocation } from './api';\nimport { setCurrencyIfNotChosen } from 'tradera-state/multi-currency';\nimport { removeShippingCountryCookieIfSwedish } from 'tradera-state/shipping-region/actions';\nimport { API_ERRORS } from 'tradera-utils/api';\nimport { logger } from 'packages/index';\n\nexport const defaultAction = data => ({\n type: actionTypes.DEFAULT_ACTION,\n payload: data\n});\n\nconst setIsFetchingGeolocation = isFetchingGeolocation => ({\n type: actionTypes.SET_IS_FETCHING_GEOLOCATION,\n payload: {\n isFetchingGeolocation\n }\n});\n\nconst setGeolocation = payload => ({\n type: actionTypes.SET_GEOLOCATION,\n payload\n});\n\nconst failedLoadingGeolocation = () => ({\n type: actionTypes.FAILED_LOADING_GEOLOCATION\n});\n\nexport const setMemberHeroImage = payload => ({\n type: actionTypes.SET_MEMBER_HERO_IMAGE,\n payload\n});\n\nexport const getGeolocation = () => dispatch => {\n dispatch(setIsFetchingGeolocation(true));\n return fetchGeolocation()\n .then(response => {\n const { data } = response;\n dispatch(setGeolocation(data));\n dispatch(setCurrencyIfNotChosen(data.currency));\n dispatch(setIsFetchingGeolocation(false));\n dispatch(removeShippingCountryCookieIfSwedish(data));\n return data;\n })\n .catch(error => {\n switch (error.message) {\n case API_ERRORS.ABORTED:\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n break;\n default:\n logger(error);\n break;\n }\n dispatch(failedLoadingGeolocation());\n });\n};\n","/**\n * Run callback when document DOM content is ready\n *\n * @param {function} callback\n */\nfunction onDOMContentLoaded(callback) {\n if (document.readyState !== 'loading') {\n callback();\n } else {\n document.addEventListener('DOMContentLoaded', callback);\n }\n}\n\n/**\n * Run callback when all window content has loaded\n *\n * @param {function} callback\n */\nfunction onWindowLoad(callback) {\n if (document.readyState === 'complete') {\n callback();\n } else {\n window.addEventListener('load', callback);\n }\n}\n\nexport {\n // Export onDOMContentLoaded as default to cover old uses of onReady\n onDOMContentLoaded as default,\n onDOMContentLoaded,\n onWindowLoad\n};\n","/* eslint-disable promise/always-return */\n/* eslint-disable promise/catch-or-return */\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n axiosConfigs,\n axiosWithTokenRefresh,\n finalizeResponse\n} from 'tradera-utils/api';\nimport categoryService from 'tradera-services/category-service';\nimport ThrottledAction from 'tradera-apps/syi/script/app_react/utils/throttled-action';\nimport syiActions from './syi-actions';\nimport feesActions from './fees-actions';\nimport {\n fetchForCategory,\n fetchCategoryAttributeSuggestions\n} from './attributes-actions';\n\nimport campaignCodeActions from './campaign-code-actions';\nimport { globalStore } from 'tradera-state/configure-store';\nimport { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\nimport { Analytics } from 'packages';\n\nconst store = globalStore();\n\nvar throttleTimeout = 1000;\nvar throttledCategoriesRequest = new ThrottledAction(throttleTimeout, true);\nvar numberOfLevels = 4;\n\nfunction loadCategories(\n shortDescription,\n categoryId,\n index,\n executeImmediately\n) {\n var request = function() {\n store.dispatch({\n type: 'CATEGORIES_LOADING',\n index: index\n });\n categoryService\n .loadChildCategories(shortDescription, categoryId, index)\n .then(result => {\n store.dispatch({\n type: 'CATEGORIES_LOADED',\n category: result,\n index: index\n });\n categoryService.prefetchChildren(\n shortDescription,\n result,\n index + 1\n );\n });\n };\n if (executeImmediately) {\n request();\n } else {\n throttledCategoriesRequest.execute(request);\n }\n}\n\nfunction closeLevel(index) {\n store.dispatch({\n type: 'CLOSE_LEVEL',\n index: index\n });\n}\nfunction resetLevel(index) {\n store.dispatch({\n type: 'RESET_LEVEL',\n index: index\n });\n}\nfunction disableLevel(index) {\n store.dispatch({\n type: 'DISABLE_LEVEL',\n index: index\n });\n}\nfunction toggleLevelLabel(index, value) {\n store.dispatch({\n type: 'TOGGLE_LEVEL_LABEL',\n index: index,\n value: value\n });\n}\nfunction selectLevelCategory(category, index) {\n store.dispatch({\n type: 'SELECT_LEVEL_CATEGORY',\n index: index,\n category: category\n });\n}\n\nconst closeAllLevels = () => {\n for (let i = 0; i < numberOfLevels; i++) {\n closeLevel(i);\n }\n};\n\nexport const updateCategoryRestrictions = categoryId => async () => {\n if (!categoryId) {\n resetCategoryRestriction();\n return;\n }\n\n try {\n const url = ENDPOINTS.SELLING_CATEGORY_RESTRICTIONS + '/' + categoryId;\n const response = await axiosWithTokenRefresh()\n .get(url, {\n ...axiosConfigs.authenticated\n })\n .then(finalizeResponse());\n syiActions.setCategoryRestriction(response.data);\n } catch (error) {\n resetCategoryRestriction();\n throw error;\n }\n};\n\nconst resetCategoryRestriction = () =>\n syiActions.setCategoryRestriction({\n displayPaymentOptions: '',\n paymentOptionGroups: []\n });\n\nconst setDraftCategory = (categoryId, categoryPath) => (dispatch, getState) => {\n var slice = getSyiSlice(getState());\n if (!categoryPath) {\n categoryPath = slice.category.levels\n .filter(level => level.selectedCategory)\n .map(level => level.selectedCategory);\n }\n dispatch({\n type: 'SET_DRAFT_CATEGORY',\n categoryId: categoryId,\n categoryPath: categoryPath\n });\n dispatch(campaignCodeActions.validateCampaignCode());\n dispatch(updateCategoryRestrictions(categoryId));\n dispatch(fetchForCategory(categoryId));\n dispatch(\n fetchCategoryAttributeSuggestions(\n categoryId,\n slice.shortDescription.shortDescription\n )\n );\n dispatch(feesActions.updateCommission());\n dispatch(feesActions.updateMaxCommission());\n};\n\nconst resetDraftCategory = () => dispatch => {\n dispatch(setDraftCategory(0, []));\n};\n\nconst loadTopCategories = shortDescription => dispatch => {\n dispatch({\n type: 'CATEGORIES_LOADING',\n index: 0\n });\n\n categoryService.loadTopCategories(shortDescription).then(result => {\n dispatch({\n type: 'CATEGORIES_LOADED',\n category: result,\n index: 0,\n shortDescriptionForRecommendations: shortDescription\n });\n categoryService.prefetchChildren(shortDescription, result, 1);\n });\n};\n\nconst setPath = (shortDescription, categoryPath) => () => {\n if (!categoryPath || !categoryPath.length) {\n closeAllLevels();\n return;\n }\n for (let i = 0; i < categoryPath.length; i++) {\n closeLevel(i);\n selectLevelCategory(categoryPath[i], i);\n if (i < categoryPath.length - 1) {\n loadCategories(\n shortDescription,\n categoryPath[i].categoryId,\n i + 1,\n true\n );\n }\n }\n for (var i = categoryPath.length; i < numberOfLevels; i++) {\n toggleLevelLabel(i, false);\n }\n};\n\nconst setPathFromDraft = () => (dispatch, getState) => {\n let shortDescription = getSyiSlice(getState()).shortDescription;\n let category = getSyiSlice(getState()).category;\n dispatch(\n setPath(shortDescription.shortDescription, category.draftCategoryPath)\n );\n};\n\nconst reset = () => dispatch => {\n dispatch({\n type: 'RESET_CATEGORY'\n });\n dispatch(feesActions.updateCommission());\n};\n\nconst openLevel = (shortDescription, index) => dispatch => {\n closeAllLevels();\n if (index === 0) {\n dispatch(loadTopCategories(shortDescription));\n }\n dispatch({\n type: 'OPEN_LEVEL',\n index: index\n });\n};\n\nconst toggleCategories = categoryLevel => dispatch => {\n dispatch({\n type: 'TOGGLE_CATEGORIES',\n index: categoryLevel.index,\n value: !categoryLevel.categoriesVisible\n });\n};\n\nconst selectCategory = (\n shortDescription,\n categoryLevel,\n category\n) => dispatch => {\n if (category.isLeaf) {\n closeLevel(categoryLevel.index);\n selectLevelCategory(category, categoryLevel.index);\n for (let i = categoryLevel.index + 1; i < numberOfLevels; i++) {\n toggleLevelLabel(i, false);\n }\n dispatch(setDraftCategory(category.categoryId));\n } else {\n dispatch(resetDraftCategory());\n for (let i = categoryLevel.index + 1; i < numberOfLevels; i++) {\n resetLevel(i);\n disableLevel(i);\n toggleLevelLabel(i, true);\n }\n closeLevel(categoryLevel.index);\n selectLevelCategory(category, categoryLevel.index);\n loadCategories(\n shortDescription,\n category.categoryId,\n categoryLevel.index + 1,\n true\n );\n dispatch(openLevel(shortDescription, categoryLevel.index + 1));\n }\n Analytics.trackEvent({\n category: 'SYI',\n action: `Select Category - Level ${categoryLevel.index + 1}`,\n label: `Suggested Categories - ${categoryLevel.suggestions\n .map(x => x.categoryId)\n .join()}`,\n value: category.categoryId\n });\n};\n\nexport default {\n setDraftCategory,\n loadTopCategories,\n closeAllLevels,\n openLevel,\n toggleCategories,\n selectCategory,\n setPath,\n setPathFromDraft,\n reset\n};\n","import React, { Component } from 'react';\nimport PropType from 'prop-types';\nimport './overlay.scss';\n\nclass Overlay extends Component {\n closeOnEscape = e => {\n const { closeModalCallback } = this.props;\n if (e.keyCode === 27) {\n if (closeModalCallback) {\n closeModalCallback(e);\n }\n e.preventDefault();\n }\n };\n\n componentDidMount() {\n window.addEventListener('keydown', this.closeOnEscape);\n }\n\n componentWillUnmount() {\n window.removeEventListener('keydown', this.closeOnEscape);\n }\n\n render() {\n const { children, closeModalCallback, style } = this.props;\n\n return (\n
    \n {children}\n
    \n );\n }\n}\n\nOverlay.propTypes = {\n children: PropType.node,\n closeModalCallback: PropType.func,\n style: PropType.object\n};\n\nexport default Overlay;\n","import { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\n\nexport default {\n toggleAllVisible: () => dispatch => {\n dispatch({\n type: 'TOGGLE_ALL_VISIBLE'\n });\n },\n togglePaymentOption: paymentOption => (dispatch, getState) => {\n paymentOption.selected = !paymentOption.selected;\n var selectedPaymentOptions = [];\n if (\n Array.isArray(\n getSyiSlice(getState()).payment.selectedPaymentOptions\n )\n ) {\n selectedPaymentOptions = getSyiSlice(\n getState()\n ).payment.selectedPaymentOptions.slice();\n }\n\n if (paymentOption.selected) {\n selectedPaymentOptions.push(paymentOption.paymentType);\n } else {\n selectedPaymentOptions = selectedPaymentOptions.filter(\n po => po != paymentOption.paymentType\n );\n }\n selectedPaymentOptions = selectedPaymentOptions.filter(\n po => po != null\n );\n\n dispatch({\n type: 'SET_PAYMENT_OPTIONS',\n selectedPaymentOptions: selectedPaymentOptions\n });\n },\n setSelectedPaymentOptions: selectedPaymentOptions => dispatch => {\n dispatch({\n type: 'SET_PAYMENT_OPTIONS',\n selectedPaymentOptions: selectedPaymentOptions\n });\n },\n reset: () => dispatch => {\n dispatch({\n type: 'SET_PAYMENT_OPTIONS',\n selectedPaymentOptions: []\n });\n }\n};\n","// We map this way to ensure that each key in lokalise is present in code.\n// This allows us to clean up unnecessary codes in the future.\nexport const mapCountryCodeToCountryKey = countryCode => {\n const lokaliseKey = {\n ad: 'country_ad',\n ae: 'country_ae',\n af: 'country_af',\n ag: 'country_ag',\n ai: 'country_ai',\n al: 'country_al',\n am: 'country_am',\n an: 'country_an',\n ao: 'country_ao',\n aq: 'country_aq',\n ar: 'country_ar',\n as: 'country_as',\n at: 'country_at',\n au: 'country_au',\n aw: 'country_aw',\n az: 'country_az',\n ba: 'country_ba',\n bb: 'country_bb',\n bd: 'country_bd',\n be: 'country_be',\n bf: 'country_bf',\n bg: 'country_bg',\n bh: 'country_bh',\n bi: 'country_bi',\n bj: 'country_bj',\n bm: 'country_bm',\n bn: 'country_bn',\n bo: 'country_bo',\n br: 'country_br',\n bs: 'country_bs',\n bt: 'country_bt',\n bv: 'country_bv',\n bw: 'country_bw',\n by: 'country_by',\n bz: 'country_bz',\n ca: 'country_ca',\n cc: 'country_cc',\n cd: 'country_cd',\n cf: 'country_cf',\n cg: 'country_cg',\n ch: 'country_ch',\n ci: 'country_ci',\n ck: 'country_ck',\n cl: 'country_cl',\n cm: 'country_cm',\n cn: 'country_cn',\n co: 'country_co',\n cr: 'country_cr',\n cu: 'country_cu',\n cv: 'country_cv',\n cx: 'country_cx',\n cy: 'country_cy',\n cz: 'country_cz',\n de: 'country_de',\n dj: 'country_dj',\n dk: 'country_dk',\n dm: 'country_dm',\n do: 'country_do',\n dz: 'country_dz',\n ec: 'country_ec',\n ee: 'country_ee',\n eg: 'country_eg',\n eh: 'country_eh',\n er: 'country_er',\n es: 'country_es',\n et: 'country_et',\n fi: 'country_fi',\n fj: 'country_fj',\n fk: 'country_fk',\n fm: 'country_fm',\n fo: 'country_fo',\n fr: 'country_fr',\n fx: 'country_fx',\n ga: 'country_ga',\n gb: 'country_gb',\n gd: 'country_gd',\n ge: 'country_ge',\n gf: 'country_gf',\n gh: 'country_gh',\n gi: 'country_gi',\n gl: 'country_gl',\n gm: 'country_gm',\n gn: 'country_gn',\n gp: 'country_gp',\n gq: 'country_gq',\n gr: 'country_gr',\n gs: 'country_gs',\n gt: 'country_gt',\n gu: 'country_gu',\n gw: 'country_gw',\n gy: 'country_gy',\n hk: 'country_hk',\n hm: 'country_hm',\n hn: 'country_hn',\n hr: 'country_hr',\n ht: 'country_ht',\n hu: 'country_hu',\n id: 'country_id',\n ie: 'country_ie',\n il: 'country_il',\n in: 'country_in',\n io: 'country_io',\n iq: 'country_iq',\n ir: 'country_ir',\n is: 'country_is',\n it: 'country_it',\n jm: 'country_jm',\n jo: 'country_jo',\n jp: 'country_jp',\n ke: 'country_ke',\n kg: 'country_kg',\n kh: 'country_kh',\n ki: 'country_ki',\n km: 'country_km',\n kn: 'country_kn',\n kp: 'country_kp',\n kr: 'country_kr',\n kw: 'country_kw',\n ky: 'country_ky',\n kz: 'country_kz',\n la: 'country_la',\n lb: 'country_lb',\n lc: 'country_lc',\n li: 'country_li',\n lk: 'country_lk',\n lr: 'country_lr',\n ls: 'country_ls',\n lt: 'country_lt',\n lu: 'country_lu',\n lv: 'country_lv',\n ly: 'country_ly',\n ma: 'country_ma',\n mc: 'country_mc',\n md: 'country_md',\n mg: 'country_mg',\n mh: 'country_mh',\n mk: 'country_mk',\n ml: 'country_ml',\n mm: 'country_mm',\n mn: 'country_mn',\n mo: 'country_mo',\n mp: 'country_mp',\n mq: 'country_mq',\n mr: 'country_mr',\n ms: 'country_ms',\n mt: 'country_mt',\n mu: 'country_mu',\n mv: 'country_mv',\n mw: 'country_mw',\n mx: 'country_mx',\n my: 'country_my',\n mz: 'country_mz',\n na: 'country_na',\n nc: 'country_nc',\n ne: 'country_ne',\n nf: 'country_nf',\n ng: 'country_ng',\n ni: 'country_ni',\n nl: 'country_nl',\n no: 'country_no',\n np: 'country_np',\n nr: 'country_nr',\n nu: 'country_nu',\n nz: 'country_nz',\n om: 'country_om',\n pa: 'country_pa',\n pe: 'country_pe',\n pf: 'country_pf',\n pg: 'country_pg',\n ph: 'country_ph',\n pk: 'country_pk',\n pl: 'country_pl',\n pm: 'country_pm',\n pn: 'country_pn',\n pr: 'country_pr',\n ps: 'country_ps',\n pt: 'country_pt',\n pw: 'country_pw',\n py: 'country_py',\n qa: 'country_qa',\n re: 'country_re',\n ro: 'country_ro',\n ru: 'country_ru',\n rs: 'country_rs',\n rw: 'country_rw',\n sa: 'country_sa',\n sb: 'country_sb',\n sc: 'country_sc',\n sd: 'country_sd',\n se: 'country_se',\n sg: 'country_sg',\n sh: 'country_sh',\n si: 'country_si',\n sj: 'country_sj',\n sk: 'country_sk',\n sl: 'country_sl',\n sm: 'country_sm',\n sn: 'country_sn',\n so: 'country_so',\n sr: 'country_sr',\n st: 'country_st',\n sv: 'country_sv',\n sy: 'country_sy',\n sz: 'country_sz',\n tc: 'country_tc',\n td: 'country_td',\n tf: 'country_tf',\n tg: 'country_tg',\n th: 'country_th',\n tj: 'country_tj',\n tk: 'country_tk',\n tl: 'country_tl',\n tm: 'country_tm',\n tn: 'country_tn',\n to: 'country_to',\n tr: 'country_tr',\n tt: 'country_tt',\n tv: 'country_tv',\n tw: 'country_tw',\n tz: 'country_tz',\n ua: 'country_ua',\n ug: 'country_ug',\n um: 'country_um',\n us: 'country_us',\n uy: 'country_uy',\n uz: 'country_uz',\n va: 'country_va',\n vc: 'country_vc',\n ve: 'country_ve',\n vg: 'country_vg',\n vi: 'country_vi',\n vn: 'country_vn',\n vu: 'country_vu',\n wf: 'country_wf',\n ws: 'country_ws',\n ye: 'country_ye',\n yt: 'country_yt',\n yu: 'country_yu',\n za: 'country_za',\n zm: 'country_zm',\n zw: 'country_zw'\n }[countryCode.toLowerCase()];\n if (!lokaliseKey)\n throw `CountryCode ${countryCode} has no mapping to lokalise key`;\n return lokaliseKey;\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport HoverMenu from './hover-menu/hover-menu';\nimport HoverMenuItem from './hover-menu/hover-menu-item';\nimport HoverMenuItemSeparator from './hover-menu/hover-menu-separator';\nimport { getMenuGaAttributes } from './site-header.analytics.js';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\n\nimport AuctionIcon from '@tradera/blueprint/theme/icons2/auction.svg?jsx';\nimport AuctionLostIcon from '@tradera/blueprint/theme/icons2/bid-lost.svg?jsx';\nimport WinningIcon from '@tradera/blueprint/theme/icons2/winning.svg?jsx';\nimport RatingPositiveIcon from '@tradera/blueprint/theme/icons2/rating-positive.svg?jsx';\n\nconst getGaAttributes = label =>\n getMenuGaAttributes('Top navigation', 'Buying menu', label);\n\nconst BuyMenu = ({ showMenu }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n \n }\n gaAttributes={getGaAttributes('Ongoing auctions')}\n />\n }\n gaAttributes={getGaAttributes('Won / Bought')}\n />\n }\n gaAttributes={getGaAttributes('Lost')}\n />\n \n }\n gaAttributes={getGaAttributes('Rate seller')}\n />\n \n );\n};\n\nBuyMenu.propTypes = {\n showMenu: PropTypes.bool\n};\n\nexport default BuyMenu;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport BuyIcon from '@tradera/blueprint/theme/icons2/buy.svg?jsx';\nimport BuyMenu from './buy-menu';\nimport { HOVER_MENUS } from './hover-menu/constants';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\n\nconst BuyingLink = ({\n onClick,\n mouseOver,\n mouseOut,\n onBlur,\n transparentHeader,\n showMenu\n}) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const buyingText = t('siteHeader_buying');\n return (\n mouseOver(HOVER_MENUS.BUY)}\n onMouseLeave={mouseOut}>\n {\n onClick(e, HOVER_MENUS.BUY);\n }}\n onBlur={onBlur}>\n \n \n {buyingText}\n \n \n \n
    \n );\n};\n\nBuyingLink.propTypes = {\n onClick: PropTypes.func,\n mouseOver: PropTypes.func,\n mouseOut: PropTypes.func,\n showMenu: PropTypes.bool\n};\n\nexport default React.memo(BuyingLink);\n","import qs from 'qs';\n\n/**\n * Generate url for recommendation request\n * @param {string} slotId - identifier of slot\n * @param {number} pageSize - limit items fetched\n * @param {array} [seedItemIds] - item list that will act as seed for recommendation\n */\nconst recommendationsRequestBuilder = (\n slotId,\n pageSize,\n shippingCountryCode,\n seedItemIds = []\n) => {\n const endpoint = '/api/webapi/discover/recommendations-v4';\n\n return (pageIndex = 0) => {\n let queryParameters = {\n slot: slotId,\n maxResults: pageSize,\n pageNumber: pageIndex,\n shippingCountryCode\n };\n\n if (!!seedItemIds && seedItemIds.length > 0) {\n queryParameters.seedItemIds = seedItemIds;\n }\n\n return `${endpoint}?${qs.stringify(queryParameters, {\n arrayFormat: 'repeat'\n })}`;\n };\n};\n\n/**\n * Generate url for similar items request\n * @param {number} id - id of item to find similar to\n * @param {number} pageSize - limit items fetched\n */\nconst similarItemsRequestBuilder = (id, pageSize) => {\n const endpoint = '/ma/recommendations-similar-items';\n return () => {\n let queryParameters = {\n id,\n pageSize\n };\n return `${endpoint}?${qs.stringify(queryParameters)}`;\n };\n};\n\n/**\n * Generate url for similar items request\n * @param {number} id - id of item to find similar to\n * @param {number} pageSize - limit items fetched\n */\nconst similarItemsFromShopRequestBuilder = (id, pageSize) => {\n const endpoint = '/ma/recommendations-similar-items-from-shop';\n return () => {\n let queryParameters = {\n id,\n pageSize\n };\n return `${endpoint}?${qs.stringify(queryParameters)}`;\n };\n};\n\nconst similarItemsFromCampaignRequestBuilder = (\n itemId,\n size,\n query,\n campaignCodeId\n) => {\n const endpoint = '/ma/recommendations-more-items-from-campaign';\n return () => {\n let queryParameters = {\n itemId,\n size,\n query,\n campaignCodeId\n };\n return `${endpoint}?${qs.stringify(queryParameters)}`;\n };\n};\n\nexport {\n recommendationsRequestBuilder,\n similarItemsRequestBuilder,\n similarItemsFromShopRequestBuilder,\n similarItemsFromCampaignRequestBuilder\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { RadioButton } from './radio-button';\n\n/**\n * @description Radio group component\n * props: options: array of objects of shape { name: string, value: string }\n */\n\nconst RadioGroup = ({\n id,\n options,\n checked,\n handleOnChange,\n className,\n radioButtonClassName\n}) => {\n return (\n
    \n {options.map(option => (\n \n {option.name}\n \n ))}\n
    \n );\n};\n\nRadioGroup.propTypes = {\n options: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.string,\n name: PropTypes.string\n })\n ),\n checked: PropTypes.string,\n handleOnChange: PropTypes.func,\n id: PropTypes.string.isRequired,\n className: PropTypes.string,\n radioButtonClassName: PropTypes.string\n};\n\nRadioGroup.defaultProps = {\n className: '',\n radioButtonClassName: ''\n};\n\nexport default RadioGroup;\n","import React from 'react';\nimport './zign-sec-logo.scss';\n\nexport const ZignSecLogo = ({ className }) => {\n className = className || '';\n return (\n \n \n \n \n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\nimport ModalContainer from 'static/script/components/modals/modal-container';\nimport ModalHeader from 'static/script/components/modals/modal-header';\nimport ModalBody from 'static/script/components/modals/modal-body';\nimport { connect } from 'react-redux';\nimport { closeModal } from 'tradera-state/ui/action-creators';\nimport { memberIdentificationClient } from 'tradera-utils/http';\nimport './zign-sec-modal.scss';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { LocalLoader } from 'tradera-components/loader/loader';\nimport { ZignSecLogo } from './zign-sec-logo.jsx';\n\nconst STATE = {\n START: 'START',\n VERIFYING: 'VERIFYING',\n ERROR_UNAVAILABLE: 'ERROR_UNAVAILABLE',\n CONTACT_CUSTOMER_SUPPORT: 'CONTACT_CUSTOMER_SUPPORT'\n};\n\nconst addScriptToDom = zignSecWebSDKUrl => {\n const dataAttributeName = 'data-zign-sec-web-sdk-url-script';\n if (document.querySelector(`[${dataAttributeName}]`)) {\n return;\n }\n const js = document.createElement('script');\n js.setAttribute(dataAttributeName, '1');\n js.setAttribute('type', 'text/javascript');\n js.setAttribute('src', zignSecWebSDKUrl);\n document.body.appendChild(js);\n};\n\nconst PlainZignSecModal = ({\n closeModal,\n onVerifyComplete,\n zignSecWebSDKUrl\n}) => {\n const [verifyingState, setVerifyingState] = useState(STATE.START);\n const [isLoading, setIsLoading] = useState(false);\n const { t } = useTranslator();\n\n useEffect(() => {\n addScriptToDom(zignSecWebSDKUrl);\n }, [zignSecWebSDKUrl]);\n\n useEffect(() => {\n if (verifyingState !== STATE.VERIFYING) {\n return;\n }\n\n let currentTimeoutId = null;\n const poll = (zs, sessionId) =>\n new Promise(resolve => {\n const call = () => {\n currentTimeoutId = setTimeout(async () => {\n try {\n // Result will appear when verification is completed.\n const { result } = await zs.getSessionStatus(\n sessionId\n );\n\n if (result) {\n return resolve();\n }\n } catch (error) {\n console.error(error);\n } finally {\n call();\n }\n }, 2000);\n };\n call();\n });\n setIsLoading(true);\n memberIdentificationClient\n .query('ScanningsCreateWebToken?purpose=SYI')\n .then(async ({ token, relayState }) => {\n setIsLoading(false);\n const zs = new window.ZignSec(token, window.ZsProduct.Scanning);\n\n const r = await zs.openInIframe('zs-root', {\n relay_state: relayState,\n analysis_types: ['document', 'selfie', 'fraud']\n });\n await poll(zs, r.id);\n\n setIsLoading(true);\n return await memberIdentificationClient.command(\n 'ScanningResult',\n {\n sessionId: r.id,\n relayState: relayState\n }\n );\n })\n .then(({ isSuccessful }) => {\n setIsLoading(false);\n\n if (isSuccessful) {\n onVerifyComplete();\n } else {\n setVerifyingState(STATE.CONTACT_CUSTOMER_SUPPORT);\n }\n return;\n })\n .catch(() => {\n setIsLoading(false);\n setVerifyingState(STATE.ERROR_UNAVAILABLE);\n });\n return () => currentTimeoutId && clearTimeout(currentTimeoutId);\n }, [verifyingState, setVerifyingState, setIsLoading, onVerifyComplete]);\n\n return (\n \n \n \n
    {t('zignSecModal_heading')}
    \n \n \n
    \n {verifyingState === STATE.START && (\n
    \n

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

    \n
    \n

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

    \n

    {t('zignSecModal_introText_b')}

    \n
    \n \n

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

    \n \n setVerifyingState(STATE.VERIFYING)\n }>\n {t('zignSecModal_buttonText')}\n \n
    \n )}\n {isLoading && }\n {verifyingState === STATE.VERIFYING && !isLoading && (\n
    \n )}\n {verifyingState === STATE.ERROR_UNAVAILABLE && (\n \n {t('zignSecModal_errorUnavailable')}\n \n )}\n {verifyingState === STATE.CONTACT_CUSTOMER_SUPPORT && (\n
    \n

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

    \n \n \n setVerifyingState(STATE.VERIFYING)\n }>\n {t('zignSecModal_buttonTryAgain')}\n \n
    \n )}\n
    \n \n \n \n );\n};\n\nconst mapStateToProps = state => ({\n zignSecWebSDKUrl: state.initData.pageSpecificData.zignSecWebSDKUrl\n});\n\nconst mapDispatchToProps = {\n closeModal\n};\n\nexport const ZignSecModal = connect(\n mapStateToProps,\n mapDispatchToProps\n)(PlainZignSecModal);\n","import React from 'react';\nimport { ZignSecModal } from 'tradera-components/zign-sec-modal/zign-sec-modal';\nimport draftActions from 'tradera-state/views/syi/actions/draft-actions';\nimport { useDispatch } from 'react-redux';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { closeModal } from 'tradera-state/ui/action-creators';\n\nexport const SyiZignSecModal = () => {\n const dispatch = useDispatch();\n const { t } = useTranslator();\n return (\n {\n dispatch(draftActions.publish(t));\n dispatch(closeModal());\n }}\n />\n );\n};\n\nexport const syiZignSecModalId = 'syiZignSecModalId';\n","import { createSlice } from '@reduxjs/toolkit';\nimport initialState from './initial-state';\n\nconst startPageSlice = createSlice({\n name: 'startPage',\n initialState: initialState(),\n reducers: {\n setStartPageConfigAction: (state, { payload }) => {\n state.config = payload.config;\n state.status = payload.status;\n },\n setStartPageConfigStatusAction: (state, { payload }) => {\n state.status = payload.status;\n },\n setTrendingBrandsAction: (state, { payload }) => {\n state.trendingBrands.items = payload.items;\n state.trendingBrands.status = payload.status;\n },\n setTrendingBrandsStatusAction: (state, { payload }) => {\n state.trendingBrands.status = payload.status;\n },\n setTrendingSearchesAction: (state, { payload }) => {\n state.trendingSearches.items = payload.items;\n state.trendingSearches.status = payload.status;\n },\n setTrendingSearchesStatusAction: (state, { payload }) => {\n state.trendingSearches.status = payload.status;\n },\n setWishListAction: (state, { payload }) => {\n state.wishList.itemIds = payload.itemIds;\n state.wishList.status = payload.status;\n },\n setWishListStatusAction: (state, { payload }) => {\n state.wishList.status = payload.status;\n },\n setFavouriteSellersAction: (state, { payload }) => {\n state.favouriteSellers = {\n ...state.favouriteSellers,\n ...payload\n };\n },\n setFavouriteSellersStatusAction: (state, { payload }) => {\n state.favouriteSellers.status = payload.status;\n }\n }\n});\n\nexport const {\n setStartPageConfigAction,\n setStartPageConfigStatusAction,\n setTrendingBrandsAction,\n setTrendingBrandsStatusAction,\n setTrendingSearchesAction,\n setTrendingSearchesStatusAction,\n setWishListAction,\n setWishListStatusAction,\n setFavouriteSellersAction,\n setFavouriteSellersStatusAction\n} = startPageSlice.actions;\n\nexport default startPageSlice.reducer;\n","export const LIST_VIEW_TYPES = {\n BASIC: 'Basic',\n NORMAL: 'Normal',\n PICK_LIST: 'PickList'\n};\n\nexport const PAGE_LIST_TYPES = {\n BUYER_ACTIVE_ITEMS: 'BUYER_ACTIVE_ITEMS',\n BUYER_PURCHASES: 'BUYER_PURCHASES',\n BUYER_ITEMS_LOST: 'BUYER_ITEMS_LOST',\n SELLER_ACTIVE: 'SELLER_ACTIVE',\n SELLER_SOLD: 'SELLER_SOLD',\n SELLER_NOT_SOLD: 'SELLER_NOT_SOLD'\n};\n\nexport const PAGE_BULK_ACTIONS = {\n ACTIVE_CANCEL: 'ActiveItems_Cancel',\n UNSOLD_RESTART: 'UnsoldItems_Restart',\n BUYER_MARK_PAID: 'Buyer_MarkPaid',\n BUYER_SHOW_ACTIVE: 'ShowActive',\n BUYER_HIDE_ACTIVE: 'HideActive',\n PURCHASES_SHOW: 'PurchasesShow'\n};\n","import { v4 as uuidv4 } from 'uuid';\n\nexport const getUuid = () => uuidv4();\n\n// Export object for Sinon stubbing\nexport default {\n getUuid\n};\n","/**\n * Clone of 'init-data'\n * @returns initData as JSON;\n */\nconst initData = () => {\n if (!window.initData) {\n const initDataEL = document.getElementById('init-data');\n if (initDataEL) {\n const data = initDataEL.getAttribute('data-init-data');\n const parsed = JSON.parse(data);\n return parsed;\n } else {\n return null;\n }\n } else {\n return window.initData;\n }\n};\n\nexport default initData;\n","import getInitData from './init-data';\nimport { logger } from 'packages';\nimport { reload } from 'tradera-utils/location';\n/**\n * The fetch() function is a Promise-based mechanism for programmatically making web requests in the browser;\n * The fetch implementation we're using is developer by GitHub and polyfills the API for browsers that don't contain it.\n * https://github.com/github/fetch\n */\n\nconst refreshPageIfNotAuthenticated = statusCode => {\n if (statusCode === 401 || statusCode === 402) {\n document.location = document.location.pathname;\n }\n return false;\n};\n\n/**\n * Checks status of Fetch response;\n * @param {object} response\n */\nconst checkStatus = response => {\n const ID = getInitData();\n const tradVersion =\n response && response.headers\n ? response.headers.get('X-Tradera-Version')\n : '';\n if (tradVersion && tradVersion !== ID.version) {\n reload(true);\n }\n if (\n response.status >= 200 &&\n response.status < 300 &&\n typeof response !== 'string'\n ) {\n return Promise.resolve(response);\n } else {\n if (refreshPageIfNotAuthenticated(response.status)) {\n const error = new Error('Du har blivit utloggad - sidan laddas om');\n error.response = response;\n logger(error);\n } else {\n return Promise.reject(response);\n }\n }\n};\n\n/**\n * parseJSON - don't remove res\n * @param {object} res - the response from the fetch API;\n */\nconst parseJSON = res => res.json();\n\n/**\n * get request from server;\n * @param {string} endPoint - declare where the network request is to be made\n * @param {string} params.body - body of the request\n * @param {string} params.method - request method\n */\nconst get = (endPoint, params) =>\n fetch(endPoint, {\n ...params,\n method: params.method || 'POST',\n dataType: params.dataType || 'json',\n headers:\n params.headers === false\n ? ''\n : params.headers || {\n 'Content-Type': 'application/json; charset=UTF-8'\n },\n credentials: 'include'\n })\n .then(checkStatus)\n .then(parseJSON);\n\nexport default get;\n","import React from 'react';\n\nimport { formatNumberWithSeparators } from 'tradera-utils/format';\n\nconst DiscountedPriceLabel = ({ className, price, tagName: TagName }) => {\n return (\n \n {formatNumberWithSeparators(price)}\n \n );\n};\nDiscountedPriceLabel.defaultProps = {\n tagName: 'span'\n};\n\nexport default DiscountedPriceLabel;\n","import { createSlice } from '@reduxjs/toolkit';\nimport getPayoutState from './initial-state';\n\nconst payoutSlice = createSlice({\n name: 'payout',\n initialState: getPayoutState(),\n reducers: {\n receivePayouts: (state, { payload }) => {\n const { member, traderaPay } = payload;\n state.member = member;\n state.traderaPay = traderaPay;\n state.isFetching = false;\n },\n removePayout: state => {\n state.traderaPay.payoutDestination = null;\n },\n setFetching: (state, { payload }) => {\n state.isFetching = payload;\n }\n }\n});\n\nexport const {\n receivePayouts,\n removePayout,\n setFetching\n} = payoutSlice.actions;\n\nexport default payoutSlice.reducer;\n\nexport const selectPayoutState = state => state.views.myTradera.payout;\n","export default () => {\n return {\n member: null,\n traderaPay: {},\n isFetching: false\n };\n};\n","/**\n * Description:\n * module with helper functions to create GPT objects, preferably used in combination with html data attributes as below\n *\n *\n * Sample of how to define a new ad slot:\n *\n // match this towards the \"pos\" in DFP\n *\n */\n\n/**\n * NOTE:\n * It is very important that these adslot sizes [width, height] matches the expected sizes in admanager; if not, the amount of adslots that\n * are filled decreases, with less income from ads as a result.\n * Do not change these sizes unless you are sure what the change will have for effect on ads.\n */\n\n/**\n * @returns array of arrays of 2 elements with [width, height]:\n * @param {string} adFormat - accepts format value of: panorama, wide_skyscraper, half_page, medium_rectangle, mobile_rectangle\n */\nconst mapSingleAdFormatToSizes = adFormat => {\n const viewPortMapping = {\n panorama: [[980, 240], [980, 160], [980, 120], [970, 250], 'fluid'],\n wide_skyscraper: [[160, 600]],\n half_page: [\n [300, 600],\n [250, 600]\n ],\n medium_rectangle: [[300, 250]],\n mobile_rectangle: [[320, 320]],\n mobile_wideboard: [[320, 160]]\n };\n return viewPortMapping[adFormat];\n};\n\n/**\n * @returns array of arrays of 2 elements with slot [width, height]:\n * @param {string} adFormats - accepts one or more ',' separated format values\n */\nconst mapManyAdFormatsToSizes = adFormats => {\n return adFormats\n .split(',')\n .map(adFormat => mapSingleAdFormatToSizes(adFormat))\n .reduce((pre, cur) => pre.concat(cur));\n};\n\n/**\n * @param {string} device - accepts one of: mobile, tablet, desktop, desktop-lg\n * @returns array with first elements: [min width, max width]\n */\nconst mapDeviceNameToViewport = device => {\n let deviceViewportMappings = {\n mobile: [0, 449],\n tablet: [450, 1249],\n desktop: [1250, 0],\n 'desktop-lg': [1600, 0]\n };\n return deviceViewportMappings[device];\n};\n\n/**\n * @param {string} adFormats - accepts one or more ',' separated format values\n * @param {string} device - accepts one of: mobile, tablet, desktop, desktop-lg\n */\nconst createGptSizeMapping = (adFormats, device) => {\n if (!adFormats || !device) {\n console.warn(\n 'Missing some of the required arguments: adFormats, device'\n );\n }\n\n let [minWidth, maxWidth] = mapDeviceNameToViewport(device);\n let sizes = mapManyAdFormatsToSizes(adFormats);\n\n let sizeMap = [\n {\n viewport: [minWidth, 0],\n slot: sizes\n }\n ];\n\n if (maxWidth > 0) {\n sizeMap.push({\n viewport: [maxWidth + 1, 0], // add 1 pixel to make max-width inclusive\n slot: []\n });\n }\n\n if (0 < minWidth) {\n sizeMap.push({\n viewport: [0, 0],\n slot: []\n });\n }\n\n return sizeMap;\n};\n\nexport {\n createGptSizeMapping,\n mapSingleAdFormatToSizes,\n mapManyAdFormatsToSizes,\n mapDeviceNameToViewport\n};\n","import React from 'react';\nimport AccessoriesIcon from '@tradera/blueprint/theme/icons2/category-accessories.svg?jsx';\nimport AntiquesDesignIcon from '@tradera/blueprint/theme/icons2/category-antiques-design.svg?jsx';\nimport ArtIcon from '@tradera/blueprint/theme/icons2/category-art.svg?jsx';\nimport BeautyCareIcon from '@tradera/blueprint/theme/icons2/category-beauty-care.svg?jsx';\nimport BooksMagazinesIcon from '@tradera/blueprint/theme/icons2/category-books-magazines.svg?jsx';\nimport CharityIcon from '@tradera/blueprint/theme/icons2/category-charity.svg?jsx';\nimport ChildrensClothingShoesIcon from '@tradera/blueprint/theme/icons2/category-childrens-clothing-shoes.svg?jsx';\nimport ClothesIcon from '@tradera/blueprint/theme/icons2/category-clothes.svg?jsx';\nimport CollectiblesIcon from '@tradera/blueprint/theme/icons2/category-collectibles.svg?jsx';\nimport ComputersAccessoriesIcon from '@tradera/blueprint/theme/icons2/category-computers-accessories.svg?jsx';\nimport ConstructionToolsIcon from '@tradera/blueprint/theme/icons2/category-construction-tools.svg?jsx';\nimport ConsumerElectronicsIcon from '@tradera/blueprint/theme/icons2/category-consumer-electronics.svg?jsx';\nimport CurrencyIcon from '@tradera/blueprint/theme/icons2/category-currency.svg?jsx';\nimport DvdVideosIcon from '@tradera/blueprint/theme/icons2/category-dvd-videos.svg?jsx';\nimport GardenPlantsIcon from '@tradera/blueprint/theme/icons2/category-garden-plants.svg?jsx';\nimport HobbyIcon from '@tradera/blueprint/theme/icons2/category-hobby.svg?jsx';\nimport HomeHouseholdIcon from '@tradera/blueprint/theme/icons2/category-home-household.svg?jsx';\nimport JewlryGemstonesIcon from '@tradera/blueprint/theme/icons2/category-jewlry-gemstones.svg?jsx';\nimport MobilePhoneTelecommunicationsIcon from '@tradera/blueprint/theme/icons2/category-mobile-phone-telecommunications.svg?jsx';\nimport MusicIcon from '@tradera/blueprint/theme/icons2/category-music.svg?jsx';\nimport OtherIcon from '@tradera/blueprint/theme/icons2/category-other.svg?jsx';\nimport PhotoCamerasOpticsIcon from '@tradera/blueprint/theme/icons2/category-photo-cameras-optics.svg?jsx';\nimport PostcardsPicturesIcon from '@tradera/blueprint/theme/icons2/category-postcards-pictures.svg?jsx';\nimport ShoesIcon from '@tradera/blueprint/theme/icons2/category-shoes.svg?jsx';\nimport SportsLeisureIcon from '@tradera/blueprint/theme/icons2/category-sports-leisure.svg?jsx';\nimport StampIcon from '@tradera/blueprint/theme/icons2/category-stamp.svg?jsx';\nimport TicketsTravelIcon from '@tradera/blueprint/theme/icons2/category-tickets-travel.svg?jsx';\nimport ToysChildrensItemsIcon from '@tradera/blueprint/theme/icons2/category-toys-childrens-items.svg?jsx';\nimport WatchesIcon from '@tradera/blueprint/theme/icons2/category-watches.svg?jsx';\nimport VehiclesBoatsPartsIcon from '@tradera/blueprint/theme/icons2/category-vehicles-boats-parts.svg?jsx';\nimport VideoComputerGamesIcon from '@tradera/blueprint/theme/icons2/category-video-computer-games.svg?jsx';\nimport HandmadeAppliedArtsIcon from '@tradera/blueprint/theme/icons2/category-handmade-applied-arts.svg?jsx';\nimport PriceIcon from '@tradera/blueprint/theme/icons/price.svg?jsx';\n\nconst categoryIcons = {\n 0: PriceIcon, // Rabattkoder\n 10: VehiclesBoatsPartsIcon,\n 11: BooksMagazinesIcon,\n 12: ComputersAccessoriesIcon,\n 13: DvdVideosIcon,\n 14: PhotoCamerasOpticsIcon,\n 15: StampIcon,\n 16: ClothesIcon,\n 17: ConsumerElectronicsIcon,\n 18: HobbyIcon,\n 19: WatchesIcon,\n 20: AntiquesDesignIcon,\n 21: MusicIcon,\n 22: CurrencyIcon,\n 23: ArtIcon,\n 24: JewlryGemstonesIcon,\n 25: SportsLeisureIcon,\n 26: MobilePhoneTelecommunicationsIcon,\n 27: PostcardsPicturesIcon,\n 28: OtherIcon,\n 29: CollectiblesIcon,\n 30: VideoComputerGamesIcon,\n 31: HomeHouseholdIcon,\n 32: ConstructionToolsIcon,\n 33: ChildrensClothingShoesIcon,\n 34: TicketsTravelIcon,\n 35: CharityIcon,\n 36: HandmadeAppliedArtsIcon,\n 1605: GardenPlantsIcon,\n 1612: AccessoriesIcon,\n 1623: ShoesIcon,\n 340736: BeautyCareIcon,\n 343319: ToysChildrensItemsIcon\n};\n\nexport const getCategoryIcon = (categoryId, label) => {\n const IconComponent = categoryIcons[categoryId];\n if (!IconComponent) {\n console.error(\n `IconComponent missing for id: ${categoryId} label: ${label}`\n );\n return null;\n }\n return ;\n};\n","const STORAGE_KEYS = {\n COOKIE_NOTIFICATION: 'cookieNotification',\n HIDE_WISH_LIST_INFO_CARD: 'hideWishListInfoCard',\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 WEB_PUSH_ACCEPTED: 'web_push_accepted',\n WEB_PUSH_SHOWN_MODALS: 'webPushModalsShown',\n COMBINED_SHIPPING_ALERT_SOLD: 'hideCombinedShippingAlert_sold',\n COMBINED_SHIPPING_ALERT_BOUGHT: 'hideCombinedShippingAlert_bought',\n COMBINED_SHIPPING_ALERT_SYI: 'hideCombinedShippingAlert_syi',\n SELLER_LIST_COMPACT_VIEW: 'sellerListCompactView',\n SYI_NEW_LAYOUT_INFO_DISMISSED: 'syiNewLayoutInfoDismissed',\n SYI_DESCRIPTION_LANGUAGE_DISMISSED: 'syiDescriptionLanguageDismissed',\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 React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst TopDescription = ({ titleKey, descriptions, isError, classes }) => {\n const { t } = useTranslator();\n\n return (\n <>\n
    \n \n {t(titleKey)}\n \n
    \n
    \n
    \n {descriptions.map(descKey => (\n \n {t(descKey)}\n
    \n ))}\n
    \n
    \n \n );\n};\n\nexport default TopDescription;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport LocationIcon from '@tradera/blueprint/theme/icons2/location.svg?jsx';\nimport { useUrlLocalizer } from 'tradera-lang/translate';\nimport { selectShowLocalizationRegionPicker } from 'tradera-state/shipping-region/selectors';\nimport { selectGeolocation } from 'tradera-state/member/selectors';\nimport { dismissLocalizationRegionPicker } from 'tradera-state/shipping-region/reducer';\nimport { onLocalizationShippingRegionSelected } from 'tradera-state/shipping-region/actions';\nimport ApplicationErrorBoundary from 'tradera-components/application-error-boundary/application-error-boundary';\nimport Flag from 'tradera-components/flag/flag';\n\nconst LocalizationRegionPicker = ({\n showLocalizationRegionPicker,\n dismissLocalizationRegionPicker,\n onLocalizationShippingRegionSelected,\n geolocation\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const onClick = () => {\n onLocalizationShippingRegionSelected({\n countryCodeIso2: geolocation.isoCode,\n currencyCode: geolocation.currency,\n toLocalizedUrl\n });\n dismissLocalizationRegionPicker();\n };\n\n return showLocalizationRegionPicker ? (\n \n
    \n
    \n \n
    \n

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

    \n

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

    \n
    \n \n \n \n
    \n
    \n
    \n ) : null;\n};\n\nconst mapStateToProps = state => ({\n showLocalizationRegionPicker: selectShowLocalizationRegionPicker(state),\n geolocation: selectGeolocation(state)\n});\n\nconst mapDispatchToProps = {\n dismissLocalizationRegionPicker,\n onLocalizationShippingRegionSelected\n};\n\nexport const ConnectedLocalizationRegionPicker = connect(\n mapStateToProps,\n mapDispatchToProps\n)(LocalizationRegionPicker);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { HOVER_MENUS } from './hover-menu/constants';\nimport {\n selectPreferredCurrency,\n selectShowCurrencySelection\n} from 'tradera-state/multi-currency';\nimport { selectPreferredLanguage } from 'tradera-state/language/selectors';\nimport {\n selectShowLocalizationRegionPicker,\n selectShowRegionSelection\n} from 'tradera-state/shipping-region/selectors';\nimport HoverMenu from './hover-menu/hover-menu';\nimport { LocalizationMenu } from 'components/localization/localization-menu';\nimport { ConnectedLocalizationRegionPicker } from './localization-region-picker';\nimport DropdownIcon from '@tradera/blueprint/theme/icons2/dropdown.svg?jsx';\n\nimport 'components/localization/localization.scss';\n\nconst LocalizationLink = ({\n onClick,\n onBlur,\n showMenu,\n preferredCurrency,\n showCurrencySelection,\n preferredLanguage,\n showRegionSelection,\n showLocalizationRegionPicker,\n transparentHeader,\n hoverMenuClassName\n}) => (\n \n {\n GtmService.trackAction(\n 'Top navigation',\n 'Localization menu',\n 'Open/Close'\n );\n onClick(e, HOVER_MENUS.LOCALIZATION);\n }}>\n \n \n {preferredLanguage.languageCodeIso3}\n {showCurrencySelection && (\n / \n )}\n \n {preferredCurrency && preferredCurrency.shortName}\n \n \n \n \n {\n onBlur(e, HOVER_MENUS.LOCALIZATION);\n }}\n showRegionSelection={showRegionSelection || false}\n />\n \n \n
    \n);\n\nLocalizationLink.propTypes = {\n onClick: PropTypes.func.isRequired,\n showMenu: PropTypes.bool.isRequired,\n preferredCurrency: PropTypes.object,\n showCurrencySelection: PropTypes.bool.isRequired,\n preferredLanguage: PropTypes.object\n};\n\nconst mapStateToProps = state => ({\n preferredCurrency: selectPreferredCurrency(state),\n showCurrencySelection: selectShowCurrencySelection(state),\n preferredLanguage: selectPreferredLanguage(state),\n showRegionSelection: selectShowRegionSelection(state),\n showLocalizationRegionPicker: selectShowLocalizationRegionPicker(state)\n});\n\nconst mapDispatchToProps = {};\n\nexport const ConnectedLocalizationLink = connect(\n mapStateToProps,\n mapDispatchToProps\n)(LocalizationLink);\n","export const infoItemComponents = {\n BIDS: 'BIDS',\n TIME_LEFT: 'TIME_LEFT',\n ITEM_PRICE: 'ITEM_PRICE'\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"hover-localization-menu-footer\":\"hover-localization-menu-footer--1-Xjm\",\"hoverLocalizationMenuFooter\":\"hover-localization-menu-footer--1-Xjm\"};","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { selectShowCurrencySelection } from 'tradera-state/multi-currency';\nimport { selectShowRegionSelection } from 'tradera-state/shipping-region/selectors';\nimport { useTranslator } from 'tradera-lang/translate';\nimport DropdownIcon from '@tradera/blueprint/theme/icons2/dropdown.svg?jsx';\nimport { LocalizationMenu } from 'static/script/components/localization/localization-menu';\nimport HoverMenu from 'tradera-components/site-header/hover-menu/hover-menu';\nimport styles from './footer-localization-link.module.scss';\nconst trackAnalytics = visible => {\n const label = visible ? 'Open' : 'Close';\n GtmService.trackAction('Footer', 'Localization menu', label);\n};\n\nconst FooterLocalizationLink = ({\n showCurrencySelection,\n showRegionSelection\n}) => {\n const { t } = useTranslator();\n const [\n isLocalizationSettingsVisible,\n setLocalizationSettingsVisible\n ] = useState(false);\n\n const onClick = e => {\n e.preventDefault();\n const shouldBeVisible = !isLocalizationSettingsVisible;\n trackAnalytics(shouldBeVisible);\n setLocalizationSettingsVisible(shouldBeVisible);\n };\n\n const title = showCurrencySelection\n ? t('footer_localization_languageAndCurrency')\n : t('footer_localization_language');\n\n return (\n <>\n \n setLocalizationSettingsVisible(false)}\n showCurrencySelection={showCurrencySelection}\n showRegionSelection={showRegionSelection || false}\n />\n \n \n {title}\n \n \n \n );\n};\n\nFooterLocalizationLink.propTypes = {\n showCurrencySelection: PropTypes.bool.isRequired\n};\n\nconst mapStateToProps = state => ({\n showCurrencySelection: selectShowCurrencySelection(state),\n showRegionSelection: selectShowRegionSelection(state)\n});\n\nexport default connect(mapStateToProps)(FooterLocalizationLink);\n","class ConsentService {\n openUi = () =>\n typeof window.__tcfapi === 'function' &&\n window.__tcfapi('displayConsentUi', 2, () => {});\n}\n\nconst oneInstance = oneInstance || new ConsentService();\nexport default oneInstance;\n","import React from 'react';\n\nimport {\n useTranslator,\n useCurrentLanguage,\n useUrlLocalizer\n} from 'tradera-lang/translate';\n\nimport { isSwedishOrUndefined } from 'tradera-utils/languagecode';\nimport ConsentService from 'tradera-utils/consent-service';\nimport initData from 'init-data';\nimport featureToggles from 'tradera-apps/my-tradera/app/utils/feature-toggles';\n\nconst FooterLinks = ({ links, callerId }) => {\n const { language } = useCurrentLanguage();\n\n const linksToRender =\n language !== 'sv' ? links.filter(link => !link.onlySwedish) : links;\n\n return (\n <>\n {linksToRender.map(\n ({ text, className, onlySwedish, ...rest }, index) => {\n return (\n \n {text}\n \n );\n }\n )}\n \n );\n};\n\nexport const BuyingLinks = () => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n\n const links = [\n {\n href: toLocalizedUrl('/how-to-buy'),\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Så handlar du på Tradera',\n text: t('footer_howToShop'),\n onlySwedish: false\n },\n {\n href: toLocalizedUrl('/kategorier'),\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Kategorier',\n text: t('footer_categories'),\n onlySwedish: false\n },\n {\n href: toLocalizedUrl('/brands'),\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Populära varumärken',\n text: t('footer_popularBrands'),\n onlySwedish: false\n },\n {\n href: toLocalizedUrl('/inspiration'),\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Inspiration',\n text: t('footer_inspiration'),\n onlySwedish: true\n },\n {\n href: '/info/gronfrakt/',\n 'data-ga-category': 'Footer',\n 'data-ga-action': 'Navigation',\n 'data-ga-label': 'Grön frakt på Tradera',\n text: t('footer_greenShipping'),\n onlySwedish: true\n }\n ];\n\n return (\n
    \n

    {t('footer_buyHeading')}

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

    {t('footer_sellHeading')}

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

    {t('footer_contactHelpHeading')}

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

    {t('footer_couponCodes')}

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

    {t('footer_partners')}

    \n
      \n {groupedPartners.map(group => {\n return (\n
    • \n {group.partners.map(partner => {\n return partner.logo ? (\n partner.logo\n ) : (\n \n );\n })}\n
    • \n );\n })}\n
    \n
    \n ) : null;\n};\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { useInView } from 'react-intersection-observer';\nimport { useTranslator } from 'tradera-lang/translate';\nimport {\n Breakpoint,\n BREAKPOINTS\n} from 'tradera-components/breakpoint/breakpoint';\nimport uiActions from 'tradera-state/ui/actions';\nimport FooterLocalizationLink from './footer-localization-link';\nimport initData from 'init-data';\nimport { isSwedishOrUndefined } from 'tradera-utils/languagecode';\nimport AppstoreLogo from '@tradera/blueprint/theme/logos/appstore.svg?jsx';\nimport FacebookIcon from '@tradera/blueprint/theme/icons2/network-fb.svg?jsx';\nimport GooglePlayLogo from '@tradera/blueprint/theme/logos/googleplay.svg?jsx';\nimport InstagramIcon from '@tradera/blueprint/theme/icons2/network-ig.svg?jsx';\nimport LinkedInIcon from '@tradera/blueprint/theme/icons2/network-linkedin.svg?jsx';\nimport PinterestIcon from '@tradera/blueprint/theme/icons2/network-pin.svg?jsx';\nimport TwitterIcon from '@tradera/blueprint/theme/icons2/network-twitter.svg?jsx';\nimport BankidIcon from '@tradera/blueprint/theme/icons2/bankid.svg?jsx';\nimport TraderaSymbol from '@tradera/blueprint/theme/logos/tradera_symbol.svg?jsx';\n\nimport {\n BuyingLinks,\n SellingLinks,\n ContactAndHelpLinks,\n CouponCodeLinks\n} from './footer-links';\nimport { FooterPartners } from './footer-partners';\n\nimport './site-footer.scss';\n\nconst SiteFooter = props => {\n const { pageName, isCouponationNavLinkEnabled, openGdprSettings } = props;\n const { t } = useTranslator();\n\n const [symbolRef, inView] = useInView({\n threshold: 0\n });\n\n return (\n
    \n
    \n
    \n
    \n {/* Köp */}\n \n\n {/* Sälj */}\n \n {/* Kontakt & hjälp */}\n \n {/* Rabattkoder */}\n \n \n
    \n
    \n
    \n
    \n {/* Social media */}\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n {/* App download */}\n
    \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n {t('footer_userAgreement')}\n \n \n {t('footer_integrityPolicy')}\n \n \n {t('footer_cookies')}\n \n \n {t('footer_aboutTradera')}\n \n \n {t('footer_availableJobs')}\n \n
    \n
    \n {/* Copyright */}\n
    \n

    \n © 1999–{new Date().getFullYear()} Tradera\n Sweden AB\n

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n );\n};\n\nconst mapStateToProps = state => ({\n pageName: state.page.name,\n isCouponationNavLinkEnabled:\n state.environment.featureSwitches['couponation-nav-link']\n});\n\nconst mapDispatchToProps = dispatch => ({\n openGdprSettings: () => dispatch(uiActions.openGdprSettings())\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SiteFooter);\n","import qs from 'qs';\nimport axios from 'axios';\n\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport { getCurrentLanguage } from 'tradera-lang/boot-languages';\nimport { toLocalizedUrl } from 'tradera-utils/url';\nimport {\n axiosWithTokenRefresh,\n finalizeResponse,\n handleError,\n API_ERRORS,\n axiosConfigs,\n checkResponseLoggedOut\n} from 'tradera-utils/api';\n\nexport const getBids = async itemId => {\n return axiosWithTokenRefresh()\n .get(toLocalizedUrl(`/ajax/item/${itemId}/bids`, getCurrentLanguage()))\n .then(({ data }) => data)\n .catch(\n handleError({\n // Ignore 400 & 401 errors that slip through token refresh\n 400: API_ERRORS.IGNORE_ME,\n 401: API_ERRORS.IGNORE_ME\n })\n );\n};\n\nexport const postFavoriteSeller = async (sellerId, isAlreadySaved) => {\n const payload = isAlreadySaved\n ? qs.stringify({ ids: sellerId })\n : qs.stringify({ sellerId: sellerId });\n return axios\n .post(\n isAlreadySaved\n ? ENDPOINTS.FAVORITE_SELLER_REMOVE\n : ENDPOINTS.FAVORITE_SELLER_ADD,\n payload,\n {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n ...axiosConfigs\n }\n )\n .then(checkResponseLoggedOut())\n .then(finalizeResponse())\n .catch(handleError());\n};\n","import React from 'react';\nimport PropType from 'prop-types';\n\nconst ModalBody = ({ children, className = '', inlineStyle = {} }) => (\n \n {children}\n \n);\n\nModalBody.propTypes = {\n children: PropType.node.isRequired,\n className: PropType.string\n};\n\nexport default ModalBody;\n","import { useEffect, useRef } from 'react';\n\n// From: https://overreacted.io/making-setinterval-declarative-with-react-hooks/\nexport function useInterval(callback, delay) {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n if (delay > 0) {\n const id = setInterval(() => savedCallback.current(), delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n}\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 contexts: {\n storage: {\n action: 'getItem',\n key,\n value\n }\n }\n });\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 contexts: {\n storage: {\n action: 'setItem',\n key,\n stringifiedLength: JSON.stringify(value).length,\n value\n }\n }\n });\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 {boolean}\n */\nfunction testStorage(storage) {\n if (!storage) {\n return false;\n }\n const TEST_KEY = 'STORAGE_TEST';\n const TEST_VALUE = '1';\n try {\n // This will throw an exception in some browsers when cookies/localStorage are explicitly disabled (i.e. Chrome)\n storage.setItem(TEST_KEY, TEST_VALUE);\n if (storage.getItem(TEST_KEY) === TEST_VALUE) {\n storage.removeItem(TEST_KEY);\n } else {\n throw new Error();\n }\n } catch (e) {\n return false;\n }\n return true;\n}\n\n// Standard local store with GDPR cookie filter and in-memory storage fallback\nconst defaultStorage = testStorage(window.localStorage)\n ? window.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 console.warn('Local storage blocked by GDPR settings', true);\n return false;\n }\n return true;\n});\n\nexport { Storage, MemoryStorage, localStore };\n","/**\n * Using an accessible dialog or \"modal\" window. From Reach UI\n * https://ui.reach.tech/dialog\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { DialogOverlay, DialogContent } from '@reach/dialog';\nimport MediaQuery from 'react-responsive';\n\nimport { BREAKPOINT_SIZES, BREAKPOINTS } from 'tradera-constants/breakpoints';\nimport './dialog-modal.scss';\n\nconst mobileOnlyProps = { maxWidth: BREAKPOINT_SIZES[BREAKPOINTS.SM].max };\nconst desktopOnlyProps = { minWidth: BREAKPOINT_SIZES[BREAKPOINTS.MD].min };\nconst allDeviceProps = { minWidth: BREAKPOINT_SIZES[BREAKPOINTS.XS].min };\n\nclass DialogModal extends Component {\n static propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n desktop: PropTypes.bool,\n dismissOnOverlayClick: PropTypes.bool,\n mediaQueryProps: PropTypes.object,\n mobile: PropTypes.bool,\n mobileFullscreen: PropTypes.bool,\n onDismiss: PropTypes.func,\n style: PropTypes.object\n };\n\n static defaultProps = {\n className: '',\n desktop: false,\n dismissOnOverlayClick: true,\n mobile: false,\n mobileFullscreen: true\n };\n\n getDefaultMediaProps() {\n const { mobile, desktop } = this.props;\n if (mobile && desktop) {\n return allDeviceProps;\n }\n if (mobile) {\n return mobileOnlyProps;\n }\n if (desktop) {\n return desktopOnlyProps;\n }\n return allDeviceProps;\n }\n\n render() {\n const {\n children,\n className,\n dismissOnOverlayClick,\n onDismiss,\n mediaQuery,\n mobileFullscreen,\n style\n } = this.props;\n\n let mediaQueryProps;\n if (!mediaQuery) {\n mediaQueryProps = this.getDefaultMediaProps();\n } else {\n mediaQueryProps = mediaQuery;\n }\n\n return (\n \n {}}\n className={\n mobileFullscreen\n ? ' mobile-fullscreen'\n : ' mobile-alert'\n }>\n \n {children}\n \n \n \n );\n }\n}\n\nexport default DialogModal;\n","import { defaultClient as httpClient } from 'tradera-utils/http';\nimport ENDPOINTS from 'tradera-constants/endpoints';\n\nconst sendSessionStart = () => {\n httpClient.post(ENDPOINTS.SELLING_SCRIBE_SESSION_START);\n};\n\nconst sendSessionDuration = (duration, madeByTemplate) => {\n httpClient.post(ENDPOINTS.SELLING_SCRIBE_SESSION_DURATION, {\n durationMilliSeconds: duration,\n madeByTemplate: madeByTemplate\n });\n};\n\nconst sendDuration = (measuredName, durationMilliSeconds) => {\n httpClient.post(ENDPOINTS.SELLING_SCRIBE_DURATION, {\n measuredName: measuredName,\n durationMilliSeconds: durationMilliSeconds\n });\n};\n\nconst sendIncrement = name => {\n httpClient.post(ENDPOINTS.SELLING_SCRIBE_INCREMENT, {\n name: name\n });\n};\n\nconst sendValidationErrors = errors => {\n httpClient.post(ENDPOINTS.SELLING_SCRIBE_VALIDATION_ERRORS, {\n errors: errors\n });\n};\n\nexport default {\n sendSessionStart,\n sendSessionDuration,\n sendDuration,\n sendIncrement,\n sendValidationErrors\n};\n","import { toLocalizedUrl } from 'tradera-utils/url';\nimport { getLanguage } from 'tradera-apps/syi/script/app_react/utils/language';\nimport { whenInitialized } from 'tradera-lang/boot-languages';\nimport i18n from 'i18next';\n\nfunction TriotException(message) {\n this.message = message;\n this.name = 'TriotException';\n}\n\n// Inherit riot's api\nvar triot = Object.create(riot);\n\n// Expose a global observable as triot.bus\n// Used by non-riot components, such as data-services\nObject.defineProperties(triot, {\n bus: {\n value: triot.observable(),\n enumerable: false,\n writable: false,\n configurable: false\n }\n});\n\n// Add the global bus to all riot components\n// so they can reach it as this.bus, ie this.bus.on('eventName' .. )\n// No more need to pass the bus around and no\n// more \"var bus = riot.observable()\" on different places\ntriot.mixin({\n init: function() {\n this.on('before-mount', function () {\n Object.defineProperties(this, {\n bus: {\n value: triot.bus,\n enumerable: false,\n writable: false,\n configurable: false\n }\n });\n });\n }\n});\n\ntriot.mixin({\n init: function() {\n this.toLocalizedUrl = url => {\n return toLocalizedUrl(url, getLanguage());\n };\n }\n});\n\ntriot.mixin({\n init: function() {\n let translate = () => '';\n this.t = (...args) => translate(...args);\n whenInitialized().then(({ t }) => {\n translate = t;\n this.update();\n });\n }\n});\n\n// Triot's mount functionality doesn't break if we try to mount\n// a component that doesn't exist. We add a safeMount function\n// that throws if number of mounted components < 1.\nfunction safeMount (selector, tagName, opts) {\n var mountedComponents = triot.mount(selector, tagName, opts);\n if (mountedComponents.length < 1) {\n throw new TriotException('No component mounted with selector: ' + selector);\n }\n return mountedComponents;\n}\n\n// Expose safeMount as triot.safeMount\nObject.defineProperties(triot, {\n safeMount: {\n value: safeMount,\n enumerable: false,\n writable: false,\n configurable: false\n }\n});\n\n// Function to unmount all components\nfunction unmountAll (keepRootTag) {\n var unmounted = 0;\n while (triot.vdom.length > 0) {\n triot.vdom[0].unmount(keepRootTag);\n unmounted++;\n }\n return unmounted;\n}\n\nfunction setupTeardown () {\n triot.bus.on('triot:teardown', function (payload) {\n payload = payload || {};\n var keepRootTag = !!payload.keepRootTag;\n unmountAll(keepRootTag);\n triot.bus.off('*');\n\n setupTeardown();\n });\n}\n\nsetupTeardown();\n\nexport default triot\n","export const isSwedenCountryCodeOrUndefined = countryCodeIso2 =>\n countryCodeIso2 === undefined ||\n countryCodeIso2 === null ||\n countryCodeIso2.toLowerCase() === 'se';\n\nexport const isSwedenCountryNameOrUndefined = countryName =>\n countryName === undefined ||\n countryName === null ||\n countryName.toLowerCase() === 'sweden';\n\nexport const isDenmarkCountryCode = countryCodeIso2 =>\n !isSwedenCountryCodeOrUndefined(countryCodeIso2) &&\n countryCodeIso2.toLowerCase() === 'dk';\n\nexport const areCountryCodesIso2Equal = (first, second) =>\n (first || 'SE').toUpperCase() === (second || 'SE').toUpperCase();\n","/**\n * description:\n * this is the coolest modal to use at Tradera.com. the width of the content of this modal\n * decides how big this modal should be.\n *\n * To use this modal\n * \n * Header Text\n * This is the body\n * This is my footer\n * \n\n */\n\nimport React from 'react';\nimport PropType from 'prop-types';\nimport './modal.scss';\n\nconst ModalContainer = ({ children, className = '', style = {} }) => {\n return (\n {\n e.stopPropagation();\n }}>\n {children}\n \n );\n};\n\nModalContainer.propTypes = {\n children: PropType.node.isRequired,\n className: PropType.string,\n style: PropType.object\n};\n\nexport default ModalContainer;\n","const BID_VALIDATION_RESULTS = {\n AUCTION_HAS_ENDED: 'AuctionHasEnded',\n AUCTION_HAS_NOT_STARTED: 'AuctionHasNotStarted',\n BELOW_MINIMUM: 'BelowMinimum',\n BELOW_OWN_LEADING_BID: 'BelowOwnLeadingBid',\n BELOW_RESERVE_PRICE: 'BelowReservePrice',\n BID_NOT_FOUND: 'BidNotFound',\n BIDDER_IS_BLOCKED: 'BidderIsBlocked',\n BIDDING_OR_BUYING_OWN_ITEM: 'BiddingOrBuyingOwnItem',\n BUYING_LIMIT_REACHED: 'BuyingLimitReached',\n EQUAL_OR_HIGHER_THAN_BUY_IT_NOW: 'EqualOrHigherThanBuyItNow',\n HIGHER_BIDDER_EXISTS: 'HigherBidderExists',\n ITEM_NO_LONGER_AVAILABLE: 'ItemNoLongerAvailable',\n ITEM_NOT_FOUND: 'ItemNotFound',\n LEADING_BIDDER: 'LeadingBidder',\n NO_LONGER_VALID: 'NoLongerValid',\n ONLY_EU_BUYERS_ACCEPTED: 'OnlyEUBuyersAccepted',\n ONLY_NORDIC_BUYERS_ACCEPTED: 'OnlyNordicBuyersAccepted',\n ONLY_SWEDISH_BUYERS_ACCEPTED: 'OnlySwedishBuyersAccepted',\n SUCCESSFULLY_CHANGED_AUTOBID: 'SuccessfullyChangedAutoBid',\n USER_IS_SUSPENDED: 'UserIsSuspended',\n MAX_PLACED_BIDS_LIMIT: 'MaxPlacedBidsLimit',\n BID_AMOUNT_LIMIT: 'BidAmountLimit',\n OFFLINE: 'Offline'\n};\n\nconst BID_VALIDATION_SUCCESSES = [\n BID_VALIDATION_RESULTS.LEADING_BIDDER,\n BID_VALIDATION_RESULTS.SUCCESSFULLY_CHANGED_AUTOBID\n];\n\nconst BID_VALIDATION_RETRY = [\n BID_VALIDATION_RESULTS.BELOW_MINIMUM,\n BID_VALIDATION_RESULTS.BELOW_RESERVE_PRICE,\n BID_VALIDATION_RESULTS.BELOW_OWN_LEADING_BID,\n BID_VALIDATION_RESULTS.HIGHER_BIDDER_EXISTS,\n BID_VALIDATION_RESULTS.OFFLINE\n];\n\nconst BIN_VALIDATION_RESULTS = {\n ITEM_NOT_FOUND: 'ItemNotFound',\n ONLY_EU_BUYERS_ACCEPTED: 'OnlyEUBuyersAccepted',\n ONLY_NORDIC_BUYERS_ACCEPTED: 'OnlyNordicBuyersAccepted',\n ONLY_SWEDISH_BUYERS_ACCEPTED: 'OnlySwedishBuyersAccepted',\n USER_IS_SUSPENDED: 'UserIsSuspended',\n BIDDER_IS_BLOCKED: 'BidderIsBlocked',\n ITEM_HAS_ENDED: 'ItemHasEnded',\n BUYING_OWN_ITEM: 'BuyingOwnItem',\n ITEM_ALREADY_PURCHASED_BY_OTHER_USER: 'ItemAlreadyPurchasedByOtherUser',\n PURCHASE_DID_NOT_SUCCEED: 'PurchaseDidNotSucceed'\n};\n\nexport {\n BID_VALIDATION_RESULTS,\n BID_VALIDATION_SUCCESSES,\n BID_VALIDATION_RETRY,\n BIN_VALIDATION_RESULTS\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 79 49\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"g\", {\n opacity: \".6\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46.5 5.81c0 2.07-3.27 3.75-7.32 3.75-4.04 0-7.32-1.68-7.32-3.75 0-2.06 3.28-3.74 7.32-3.74 4.05 0 7.33 1.68 7.33 3.74z\",\n fill: \"#FEF880\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M43.9 7.56c1.21-.62 1.6-1.3 1.6-1.75 0-.45-.39-1.12-1.6-1.74-1.15-.6-2.82-.99-4.72-.99s-3.56.4-4.72.99c-1.21.62-1.6 1.29-1.6 1.74 0 .46.39 1.13 1.6 1.75 1.16.59 2.82.98 4.72.98s3.57-.39 4.72-.98zm-4.72 2c4.05 0 7.33-1.68 7.33-3.75 0-2.06-3.28-3.74-7.33-3.74-4.04 0-7.32 1.68-7.32 3.74 0 2.07 3.28 3.75 7.32 3.75z\",\n fill: \"#000\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.47 2.2C16.15.48 18.83.45 21.53.81c2.7.36 5.57 1.67 6.06 4.06.22 1.08.29 1.66.27 1.94l4.52-.79 6.63-1.15 6.83 1.15 4.67.79c-.01-.28.05-.86.27-1.94.5-2.4 3.37-3.7 6.07-4.06 2.7-.36 5.37-.33 8.05 1.37 2.2 1.4 2.81 2.44 4.43 5.3l7.88 18.67a.5.5 0 01-.45.7L47.3 28.34a.51.51 0 01-.4-.17l-5.5-6.07h-4.43l-5.5 6.08c-.1.11-.24.17-.38.17H1.46a.5.5 0 01-.48-.65c1.7-5.61 4.85-14.54 8.06-20.2 1.62-2.87 2.24-3.92 4.43-5.3z\",\n fill: \"#003B29\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M56.77.19c2.74-.37 5.56-.35 8.38 1.45a9.66 9.66 0 012.56 2.22c.66.83 1.24 1.85 2.04 3.28l.02.02 7.88 18.76c.27.65-.19 1.38-.9 1.42l-29.43 1.48c-.3.01-.6-.11-.8-.34l-5.34-5.92H37.2l-5.35 5.93c-.2.22-.47.34-.76.34H1.5c-.67 0-1.17-.65-.97-1.31 1.7-5.64 4.86-14.64 8.1-20.38.8-1.43 1.39-2.45 2.05-3.28a9.66 9.66 0 012.55-2.22c2.83-1.8 5.64-1.82 8.39-1.45 1.4.18 2.86.62 4.05 1.34a4.88 4.88 0 012.44 3.14c.13.61.2 1.08.25 1.44L39 4.25l11.02 1.87c.04-.36.12-.84.24-1.45a4.88 4.88 0 012.44-3.14C53.91.8 55.37.37 56.77.19zM50.1 7.16L39.5 5.37v2.87a.5.5 0 11-1.01 0V5.38L28.27 7.16a.56.56 0 01-.57.28.66.66 0 01-.38-.21l-.13-.16c-2.38-2.6-5.78-3.09-9.17-2.56-3.34.52-6.58 2-8.57 3.24C6.29 13.4 3.19 22.22 1.5 27.81h29.6l5.65-6.27h4.88l5.64 6.26 29.44-1.48-7.8-18.58c-2-1.24-5.23-2.71-8.56-3.23-3.39-.53-6.79-.05-9.17 2.56l-.12.15a.66.66 0 01-.38.22.56.56 0 01-.57-.28zm17.82-1.14a25 25 0 00-7.42-2.52c-3.27-.5-6.75-.15-9.4 2.2l.16-.83c.2-1.01.93-1.84 1.97-2.47a9.71 9.71 0 013.66-1.2c2.65-.35 5.18-.32 7.7 1.3a8.65 8.65 0 012.3 2c.35.42.67.91 1.03 1.52zm-57.49 0a25 25 0 017.43-2.52c3.27-.5 6.74-.15 9.39 2.2l-.16-.83c-.2-1.01-.92-1.84-1.96-2.47a9.71 9.71 0 00-3.66-1.2C18.82.85 16.3.88 13.77 2.5a8.65 8.65 0 00-2.3 2c-.35.42-.67.91-1.03 1.52zm28.57 4.35l12.57 2.27a12.28 12.28 0 016.3-2.26.5.5 0 01.04 1.02c-1.34.03-3.68.58-5.91 2.19-.76.6-1.88 1.62-2.82 2.77a10.1 10.1 0 00-1.17 1.74c-.3.58-.46 1.1-.46 1.55a.5.5 0 11-1.01 0c0-.67.23-1.36.56-2.01.34-.66.8-1.32 1.3-1.93.68-.84 1.46-1.61 2.13-2.22l-11.53-2.08-11.14 2.07a14.09 14.09 0 013.92 5.63.51.51 0 01-.94.37 12.89 12.89 0 00-4.47-5.89 11.33 11.33 0 00-5.92-2.2.51.51 0 01.03-1.01c1.5.04 3.95.62 6.3 2.26l12.22-2.27z\",\n fill: \"#000\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.5 32.25a16.2 16.2 0 01-16.25 16.17A16.2 16.2 0 010 32.25 16.2 16.2 0 0116.25 16.1a16.2 16.2 0 0116.24 16.16z\",\n fill: \"#003B29\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.25 47.4c8.4 0 15.22-6.78 15.22-15.15 0-8.36-6.82-15.15-15.22-15.15-8.41 0-15.23 6.79-15.23 15.15 0 8.37 6.82 15.15 15.23 15.15zm0 1.02a16.2 16.2 0 0016.24-16.17A16.2 16.2 0 0016.25 16.1 16.2 16.2 0 000 32.25a16.2 16.2 0 0016.25 16.17z\",\n fill: \"#000\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M79 32.25a16.2 16.2 0 01-16.25 16.17 16.2 16.2 0 01-16.24-16.17A16.2 16.2 0 0162.75 16.1 16.2 16.2 0 0179 32.25z\",\n fill: \"#003B29\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M62.75 47.4c8.41 0 15.23-6.78 15.23-15.15 0-8.36-6.82-15.15-15.23-15.15-8.4 0-15.22 6.79-15.22 15.15 0 8.37 6.82 15.15 15.22 15.15zm0 1.02A16.2 16.2 0 0079 32.25 16.2 16.2 0 0062.75 16.1a16.2 16.2 0 00-16.24 16.16 16.2 16.2 0 0016.24 16.17zM38.9 12.43a1.5 1.5 0 01-1.9.41.27.27 0 00-.4.18 1.5 1.5 0 01-1.58 1.15.27.27 0 00-.3.32c.15.73-.27 1.46-.97 1.7a.27.27 0 00-.13.41c.42.62.33 1.45-.2 1.96-.14.12-.11.33.04.43.63.39.89 1.18.6 1.87-.06.16.04.35.22.37.73.1 1.29.72 1.3 1.46.01.18.18.3.35.25a1.5 1.5 0 011.8.8c.07.16.28.2.41.1a1.5 1.5 0 011.96 0c.13.1.34.06.42-.1a1.5 1.5 0 011.78-.8c.18.05.35-.07.35-.25a1.5 1.5 0 011.31-1.46c.18-.02.28-.2.22-.37a1.51 1.51 0 01.6-1.87c.15-.1.17-.3.04-.43a1.52 1.52 0 01-.2-1.96.27.27 0 00-.13-.4 1.51 1.51 0 01-.98-1.7.27.27 0 00-.29-.33 1.5 1.5 0 01-1.58-1.15.27.27 0 00-.4-.18 1.5 1.5 0 01-1.9-.4.27.27 0 00-.44 0zm.92-.37a.88.88 0 00-1.4 0 .88.88 0 01-1.13.24.89.89 0 00-1.29.57c-.1.43-.5.72-.93.68a.89.89 0 00-.95 1.06.9.9 0 01-.57 1 .9.9 0 00-.44 1.35.9.9 0 01-.12 1.15.9.9 0 00.15 1.4c.37.23.52.7.35 1.1a.9.9 0 00.7 1.23c.44.06.77.43.78.86.02.6.58 1 1.14.84a.89.89 0 011.05.47c.26.53.94.67 1.38.3a.88.88 0 011.16 0 .88.88 0 001.37-.3c.2-.4.64-.6 1.06-.47a.89.89 0 001.14-.84c0-.43.34-.8.77-.86a.9.9 0 00.7-1.22.9.9 0 01.36-1.1c.5-.31.57-1 .15-1.41a.9.9 0 01-.12-1.15.9.9 0 00-.44-1.35.9.9 0 01-.57-1 .89.89 0 00-.95-1.06.89.89 0 01-.93-.68.89.89 0 00-1.29-.57.88.88 0 01-1.13-.24z\",\n fill: \"#000\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M38.32 11.99a1 1 0 011.6 0c.23.3.64.39.98.2a1 1 0 011.45.66c.09.37.43.62.81.59a1 1 0 011.07 1.19c-.07.37.14.74.5.87a1 1 0 01.5 1.52.78.78 0 00.1 1 1 1 0 01-.17 1.6c-.32.2-.46.6-.31.95a1 1 0 01-.8 1.39.77.77 0 00-.67.75 1 1 0 01-1.28.94.77.77 0 00-.92.4 1 1 0 01-1.56.34.77.77 0 00-1 0 1 1 0 01-1.56-.33.77.77 0 00-.92-.41 1 1 0 01-1.28-.94c-.01-.38-.3-.7-.68-.75a1 1 0 01-.8-1.39.78.78 0 00-.3-.96 1 1 0 01-.17-1.59.78.78 0 00.1-1 1 1 0 01.5-1.52c.36-.13.57-.5.5-.87a1 1 0 011.07-1.2c.38.04.72-.21.8-.58a1 1 0 011.46-.65c.34.18.75.09.98-.21zm.68.51c-.49.64-1.36.82-2.06.44a.16.16 0 00-.23.1c-.18.78-.9 1.3-1.7 1.25-.1-.01-.19.08-.17.18.15.79-.3 1.57-1.05 1.83l-.04-.1c.7-.25 1.12-.98.98-1.7a.27.27 0 01.29-.33 1.5 1.5 0 001.58-1.15.27.27 0 01.4-.18 1.5 1.5 0 001.9-.4c.11-.15.33-.15.43 0 .45.58 1.27.76 1.92.4.15-.09.35 0 .39.18a1.5 1.5 0 001.58 1.15c.18-.01.32.15.29.32-.14.73.28 1.46.98 1.7.17.06.23.27.13.41-.42.62-.33 1.45.2 1.96.13.12.11.33-.04.43a1.51 1.51 0 00-.6 1.87.27.27 0 01-.22.37 1.5 1.5 0 00-1.3 1.46c-.01.18-.18.3-.36.25a1.5 1.5 0 00-1.78.8.27.27 0 01-.42.1 1.5 1.5 0 00-1.96 0 .27.27 0 01-.42-.1 1.5 1.5 0 00-1.79-.8.27.27 0 01-.34-.25 1.5 1.5 0 00-1.31-1.46.27.27 0 01-.22-.37c.29-.7.03-1.48-.6-1.87a.27.27 0 01-.05-.43c.54-.51.63-1.34.2-1.96a.27.27 0 01.14-.4l.04.1a.16.16 0 00-.08.24c.46.66.36 1.55-.22 2.1-.07.07-.06.2.03.25.68.42.96 1.27.65 2.01-.04.1.02.2.12.22.8.1 1.4.77 1.41 1.57 0 .1.1.17.2.14.77-.23 1.58.14 1.92.86.05.1.17.12.25.05.6-.52 1.5-.52 2.1 0 .08.07.2.05.24-.05a1.61 1.61 0 011.93-.86c.1.03.2-.04.2-.14.02-.8.62-1.47 1.4-1.57.1-.02.17-.12.13-.22-.3-.74-.03-1.6.65-2.01.09-.05.1-.18.03-.25a1.63 1.63 0 01-.22-2.1.16.16 0 00-.08-.24 1.63 1.63 0 01-1.05-1.83.16.16 0 00-.17-.18c-.8.06-1.52-.47-1.7-1.25a.16.16 0 00-.23-.1c-.7.38-1.57.2-2.06-.44a.16.16 0 00-.24 0zm-.58-.44a.88.88 0 011.4 0c.27.34.75.45 1.13.24a.89.89 0 011.29.57c.1.43.5.72.93.68a.89.89 0 01.95 1.06.9.9 0 00.57 1c.55.2.77.86.44 1.35a.9.9 0 00.12 1.15.9.9 0 01-.15 1.4.9.9 0 00-.36 1.1.9.9 0 01-.7 1.23.89.89 0 00-.77.86.89.89 0 01-1.14.84.89.89 0 00-1.06.47.88.88 0 01-1.37.3.88.88 0 00-1.16 0 .88.88 0 01-1.38-.3.89.89 0 00-1.05-.47.89.89 0 01-1.14-.84.89.89 0 00-.77-.86.9.9 0 01-.7-1.22.9.9 0 00-.36-1.1.9.9 0 01-.15-1.41.9.9 0 00.12-1.15.9.9 0 01.44-1.35.9.9 0 00.57-1 .89.89 0 01.95-1.06c.43.04.83-.25.93-.68a.89.89 0 011.29-.57c.38.2.86.1 1.13-.24z\",\n fill: \"#000\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.91 18.11a5.8 5.8 0 11-11.59 0 5.8 5.8 0 0111.6 0z\",\n fill: \"#FEF880\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M39.12 22.76a4.65 4.65 0 100-9.3 4.65 4.65 0 000 9.3zm0 1.15a5.8 5.8 0 100-11.6 5.8 5.8 0 000 11.6z\",\n fill: \"#000\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.03 32.73c0 6.64-5.35 12.03-11.94 12.03-6.6 0-11.95-5.39-11.95-12.03S9.5 20.71 16.1 20.71s11.94 5.38 11.94 12.02z\",\n fill: \"#003B29\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.09 43.73c6.03 0 10.93-4.92 10.93-11s-4.9-11-10.93-11a10.97 10.97 0 00-10.93 11c0 6.08 4.89 11 10.93 11zm0 1.03c6.6 0 11.94-5.39 11.94-12.03S22.68 20.71 16.1 20.71c-6.6 0-11.95 5.38-11.95 12.02S9.5 44.76 16.1 44.76z\",\n fill: \"#000\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M74.54 32.73c0 6.64-5.35 12.03-11.95 12.03s-11.94-5.39-11.94-12.03S56 20.71 62.59 20.71c6.6 0 11.95 5.38 11.95 12.02z\",\n fill: \"#003B29\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M62.6 43.73c6.03 0 10.92-4.92 10.92-11s-4.89-11-10.93-11a10.97 10.97 0 00-10.92 11c0 6.08 4.89 11 10.92 11zm0 1.03c6.6 0 11.94-5.39 11.94-12.03s-5.35-12.02-11.95-12.02-11.94 5.38-11.94 12.02S56 44.76 62.59 44.76z\",\n fill: \"#000\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.8 30.9a10.2 10.2 0 11-20.38 0 10.2 10.2 0 0120.38 0z\",\n fill: \"#000\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15.6 40.07a9.17 9.17 0 100-18.35 9.17 9.17 0 000 18.35zm0 1.02a10.2 10.2 0 100-20.38 10.2 10.2 0 000 20.38z\",\n fill: \"#000\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M72.31 30.9a10.2 10.2 0 11-20.39 0 10.2 10.2 0 0120.4 0z\",\n fill: \"#000\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M62.12 40.07a9.17 9.17 0 100-18.35 9.17 9.17 0 000 18.35zm0 1.02a10.2 10.2 0 100-20.38 10.2 10.2 0 000 20.38z\",\n fill: \"#000\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.05 27.15a.76.76 0 011.13 1.03l-8.4 9.17a.76.76 0 11-1.13-1.03l8.4-9.17zM68.14 28.98a.76.76 0 111.13 1.03l-8.4 9.17a.76.76 0 01-1.13-1.03l8.4-9.17zM21.12 31.02a.76.76 0 011.13 1.03l-4.8 5.24a.76.76 0 11-1.13-1.03l4.8-5.24zM68.21 32.85a.76.76 0 111.13 1.03l-4.8 5.25a.76.76 0 11-1.13-1.03l4.8-5.25z\",\n fill: \"#fff\",\n fillOpacity: \".1\"\n}))));","// extracted by mini-css-extract-plugin\nexport default {\"fallback__image\":\"fallback__image--3ht-l\",\"fallbackImage\":\"fallback__image--3ht-l\"};","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport FavouriteSellersEmpty from './favourite-sellers-empty.svg?jsx';\nimport startPageStyles from '../start-page.module.scss';\nimport styles from './favourite-sellers.module.scss';\n\nconst FavouriteSellersFallback = ({ fromFavouriteSellersPage = false }) => {\n const { t } = useTranslator();\n\n return (\n \n \n

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

    \n \n );\n};\n\nexport default FavouriteSellersFallback;\n","import React, { useRef, useState } from 'react';\nimport { connect } from 'react-redux';\n\nimport {\n createGptSizeMapping,\n mapDeviceNameToViewport\n} from 'static/script/app/ui/layout/ads/ad-slot-utilities';\nimport ApplicationErrorBoundary from 'tradera-components/application-error-boundary';\nimport LocalizedDfpAd from 'tradera-components/ads/localized-dfp-ad';\nimport MediaQuery from 'react-responsive';\n\nconst Ad = props => {\n const adContainerRef = useRef();\n const {\n adContainerClass,\n adFormats,\n autoscale,\n autoscaleOffsetWidth,\n className,\n children,\n deviceName,\n featureSwitches,\n gpt,\n position,\n refresh,\n stickyBottom,\n stickyEnabled,\n stickyTop,\n ...otherProps\n } = props;\n const canCreateDfpAd = gpt?.adUnitPath;\n const [sizeMapping] = useState(createGptSizeMapping(adFormats, deviceName));\n const [minViewportWidth, maxViewportWidth] = mapDeviceNameToViewport(\n deviceName\n );\n if (canCreateDfpAd) {\n return (\n \n \n \n \n {children /* Placeholder for ad */}\n \n \n \n \n );\n } else {\n return null;\n }\n};\n\nconst mapStateToProps = state => ({\n featureSwitches: state.environment.featureSwitches,\n gpt: state.ads.gpt\n});\n\nexport default connect(mapStateToProps, () => ({}))(Ad);\n","import initData from 'init-data';\nimport { createSlice } from '@reduxjs/toolkit';\nimport userData from 'tradera-apps/syi/script/app_react/services/user-data';\nimport { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\n\nconst defaultRegionValue = 'EU';\nlet availableAllowedBuyerRegions;\nlet defaultBuyerRegion;\nlet initialState;\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 defaultBuyerRegion = availableAllowedBuyerRegions.find(\n r => r.value === defaultRegionValue\n );\n\n initialState = {\n availableAllowedBuyerRegions: availableAllowedBuyerRegions,\n selectedBuyerRegion: defaultBuyerRegion.value,\n selectedBuyerRegionText: defaultBuyerRegion.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 };\n};\n\ninitModuleGlobals();\nconst buyerRegionSlice = createSlice({\n name: 'buyer-region',\n initialState: initialState,\n reducers: {\n setAllowedBuyerRegion: (state, action) => {\n const region = availableAllowedBuyerRegions.find(\n r => r.value === action.payload.allowedBuyerRegion\n );\n const { value, text } = region || defaultBuyerRegion;\n state.selectedBuyerRegion = value;\n state.selectedBuyerRegionText = text;\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 { setAllowedBuyerRegion } = buyerRegionSlice.actions;\n\nexport default buyerRegionSlice.reducer;\n","/* eslint-disable */\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 /**\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 window.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 window.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(window.document.cookie);\n }\n\n eraseCookie(key, path, domain) {\n if (!key || !this.readCookie(key)) {\n return false;\n }\n\n window.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();\n","import io from 'socket.io-client';\nimport { logger } from 'packages';\n\nexport const registerLiveUpdates = ({ url, onConnect, onClientEvent }) => {\n let socket;\n try {\n socket = io.connect(url);\n } catch (e) {\n logger(e);\n return;\n }\n\n socket.on('connect', () => {\n try {\n onConnect(socket);\n } catch (e) {\n logger(e);\n }\n });\n\n socket.on('clientEvent', data => {\n try {\n onClientEvent(data);\n } catch (e) {\n logger(e);\n }\n });\n\n return () => socket.disconnect();\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 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 case actionTypes.SET_MEMBER_HERO_IMAGE: {\n return {\n ...state,\n memberHeroImage: {\n max: action.payload,\n med: action.payload,\n min: action.payload\n }\n };\n }\n default:\n return state;\n }\n};\n","// We map this way to ensure that each key in lokalise is present in code.\n// This allows us to clean up unnecessary codes in the future.\nexport const mapLanguageCodeToLanguageKey = languageCode => {\n const lokaliseKey = {\n sv: 'language_sv',\n da: 'language_da',\n de: 'language_de',\n en: 'language_en'\n }[languageCode.toLowerCase()];\n if (!lokaliseKey)\n throw `Language ${languageCode} has no mapping to lokalise key`;\n return lokaliseKey;\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const RadioButton = ({\n id,\n value,\n checked,\n children,\n handleOnChange,\n radioButtonClassName,\n labelClassName\n}) => (\n
    \n {\n handleOnChange(e.target.value, e);\n }}\n />\n \n {children}\n \n
    \n);\n\nRadioButton.propTypes = {\n value: PropTypes.string,\n checked: PropTypes.string,\n children: PropTypes.node,\n handleOnChange: PropTypes.func,\n id: PropTypes.string.isRequired,\n radioButtonClassName: PropTypes.string\n};\n\nRadioButton.defaultProps = {\n radioButtonClassName: '',\n labelClassName: ''\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';\nimport { touchWebClient } from 'tradera-utils/http';\n\nconst getItem = itemId =>\n touchWebClient.get('ajax/item/' + itemId, {\n withCredentials: true\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 ENDPOINTS from 'tradera-constants/endpoints';\nimport { defaultClient as httpClient } from 'tradera-utils/http';\n\nconst toInt = n => {\n return Math.round(Number(n)) | 0;\n};\n\nconst calculateShipping = (length, width, height, weight) => {\n length = toInt(length);\n width = toInt(width);\n height = toInt(height);\n weight = toInt(weight);\n\n if (!length || !width || !height || !weight) {\n return Promise.reject();\n }\n\n const params = new URLSearchParams({\n height,\n length,\n weight,\n width\n }).toString();\n\n return httpClient\n .get(`${ENDPOINTS.SELLING_SHIPPING_CALCULATOR}?${params}`)\n .then(response => response.data);\n};\n\nexport default { calculateShipping };\n","import ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n API_ERRORS,\n axiosConfigs,\n axiosWithTokenRefresh,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\n\nexport const getShippingProviders = () => {\n return axiosWithTokenRefresh()\n .get(ENDPOINTS.SHIPPING_PROVIDERS, {\n ...axiosConfigs.authenticated\n })\n .then(finalizeResponse())\n .then(prepareResultForView)\n .catch(\n handleError({\n // Ignore 400 & 401 errors that slip through token refresh\n 400: API_ERRORS.IGNORE_ME,\n 401: API_ERRORS.IGNORE_ME\n })\n );\n};\n\nconst GetRestrictionText = texts => {\n return texts.length === 0\n ? null\n : `

    ${texts[0]}

    `;\n};\n\nconst prepareResultForView = result => {\n return result.data.shippingProviders.map(shippingProvider => {\n shippingProvider.useAdvancedWidget =\n shippingProvider.products &&\n shippingProvider.products[0].variants &&\n shippingProvider.products[0].variants.length > 1;\n\n const promotedProviders = ['DBSchenker', 'PostNord', 'DHL'];\n\n shippingProvider.promoted =\n promotedProviders.find(p => p === shippingProvider.id) !== undefined\n ? true\n : false;\n\n shippingProvider.isObsolete = shippingProvider.isObsolete || false;\n\n shippingProvider.products = shippingProvider.products.map(product => {\n product.validationError = null;\n product.cost = null;\n product.selected = false;\n product.visible = product.type !== 'PostNordStamp';\n product.isValid = true;\n product.isStamps = product.type === 'PostNordStamp';\n\n product.variants = product.variants.map(variant => {\n if (product.type == 'PostNordStamp') {\n variant.numberOfStamps =\n variant.price / product.variants[0].price;\n }\n\n variant.restrictionText = GetRestrictionText(\n variant.restrictionTexts\n );\n return variant;\n });\n\n return product;\n });\n\n return shippingProvider;\n });\n};\n","export const transformPostNordParcelProductId = shippingOption => {\n //This code should be safe to remove 2021-06 since all drafts + templates containing old ids should have been removed by then\n if (shippingOption.type !== 'PostNordParcel') {\n return;\n }\n\n if (shippingOption.productId === undefined) {\n return;\n }\n\n const validProductIds = [10, 20, 30, 40, 50, 60, 70, 80, 90];\n const productIdsToTransform = [2000, 3000, 3500, 4000, 5000, 5500, 6000];\n\n if (validProductIds.indexOf(shippingOption.productId) !== -1) {\n return;\n }\n\n if (productIdsToTransform.indexOf(shippingOption.productId) === -1) {\n shippingOption.productId = undefined;\n return;\n }\n\n const compositeKey = `${shippingOption.productId},${shippingOption.weight *\n 1000}`;\n\n const map = {\n '2000,250': 10,\n '2000,500': 20,\n '2000,1000': 30,\n '3000,2000': 40,\n '3500,3000': 50,\n '4000,5000': 60,\n '5000,10000': 70,\n '5500,15000': 80,\n '6000,20000': 90\n };\n\n shippingOption.productId = map[compositeKey];\n};\n","/* eslint-disable promise/catch-or-return */\nimport shippingCalculatorService from 'tradera-apps/syi/script/app_react/services/shipping-calculator-service';\nimport { getShippingProviders } from 'tradera-apps/syi/script/app_react/services/shipping-provider-service';\nimport {\n getPrimaryOrSecondaryProducts,\n getVariant\n} from '../reducers/shipping/shipping-selectors';\nimport { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\nimport { transformPostNordParcelProductId } from './helpers/postnord-parcel-productid-converter-helper';\n\nconst reset = () => ({\n type: 'RESET_SHIPPING_OPTIONS'\n});\n\nconst resetSelected = () => ({\n type: 'RESET_SELECTED_SHIPPING_OPTIONS'\n});\n\nconst toggleShippingOption = (type, primary) => dispatch => {\n dispatch({\n type: 'TOGGLE_SHIPPING_OPTION',\n payload: {\n type,\n primary\n }\n });\n};\n\nconst setShippingOptionCost = (cost, primary) => ({\n type: 'SET_SHIPPING_OPTION_COST',\n payload: {\n cost,\n primary\n }\n});\n\nconst setShippingOptionVariant = (primary, variant) => dispatch => {\n dispatch({\n type: 'SET_SHIPPING_OPTION_VARIANT',\n payload: {\n primary,\n variant\n }\n });\n};\n\nconst setOfferTakeaway = offerTakeaway => ({\n type: 'SET_TAKEAWAY_SELECTED',\n payload: {\n offerTakeaway\n }\n});\n\nconst setOfferShipping = offerShipping => ({\n type: 'SET_SHIPPING_SELECTED',\n payload: {\n offerShipping\n }\n});\n\nconst setSecondaryShippingOptionOpen = open => ({\n type: 'SET_SECONDARY_SHIPPING_OPTION_OPEN',\n payload: { secondaryShippingOptionOpen: open }\n});\n\nconst removeShippingOption = primary => ({\n type: 'REMOVE_SHIPPING_OPTION',\n payload: {\n primary: primary\n }\n});\n\nconst makeSecondaryShippingOptionPrimary = () => ({\n type: 'MAKE_SECONDARY_SHIPPING_OPTION_PRIMARY'\n});\n\nconst clearSuggestedShippingProducts = primary => dispatch => {\n dispatch({\n type: 'CLEAR_SUGGESTED_SHIPPING_PRODUCTS',\n payload: { primary }\n });\n};\n\nconst setSuggestedShippingProducts = (\n shippingProducts,\n primary\n) => dispatch => {\n dispatch({\n type: 'SET_SUGGESTED_SHIPPING_PRODUCTS',\n payload: { shippingProducts, primary }\n });\n};\n\nconst calculateShipping = (\n length,\n width,\n height,\n weight,\n primary\n) => dispatch => {\n shippingCalculatorService\n .calculateShipping(length, width, height, weight)\n .then(data => {\n var shippingProducts = [];\n for (var i = 0; i < data.shippingOptions.length; i++) {\n let providerName = data.shippingOptions[i].providerName;\n let additionalInfo = null;\n\n if (providerName === 'Bussgods' && weight > 35000) {\n additionalInfo =\n 'OBS! Varje kolli får väga max 35 kg. Du kan skicka flera kollin i samma sändning.';\n }\n\n shippingProducts.push({\n type: providerName,\n cost: data.shippingOptions[i].price,\n description: data.shippingOptions[i].description,\n additionalInfo: additionalInfo\n });\n }\n dispatch(setSuggestedShippingProducts(shippingProducts, primary));\n return data;\n });\n};\n\nconst toggleShippingCalculator = primary => (dispatch, getState) => {\n const currentValue = getSyiSlice(getState()).shipping[\n primary\n ? 'showPrimaryShippingCalculator'\n : 'showSecondaryShippingCalculator'\n ];\n dispatch({\n type: 'SET_SHOW_SHIPPING_CALCULATOR',\n payload: { value: !currentValue, primary }\n });\n};\n\nconst setCalculatorDimensions = (dimensions, primary) => dispatch => {\n dispatch({\n type: 'SET_SHIPPING_CALCULATOR_DIMENSIONS',\n payload: { dimensions, primary }\n });\n};\n\nconst setShippingOptionsFromDraft = (shippingOptions = []) => async (\n dispatch,\n getState\n) => {\n if (\n shippingOptions.some(\n shippingOption =>\n shippingOption.type === 'Takeaway' ||\n shippingOption.type === 'TakeawayOnly'\n )\n ) {\n dispatch(setOfferTakeaway(true));\n } else {\n dispatch(setOfferTakeaway(false));\n }\n\n shippingOptions = shippingOptions.filter(\n shippingOption =>\n shippingOption.type !== 'Takeaway' &&\n shippingOption.type !== 'TakeawayOnly'\n );\n\n await dispatch(getShippingProvidersWithProducts());\n\n const removeCostIfCostMatchesSelectedProduct = (shippingOption, i) => {\n if (i > 1 || !shippingOption.productId || !shippingOption.cost) {\n return;\n }\n const shippingState = getSyiSlice(getState()).shipping;\n const variant = getVariant(shippingState, shippingOption);\n if (variant.price === shippingOption.cost) {\n shippingOption.cost = null;\n }\n };\n\n // Clone shipping options before mutating read only properies.\n shippingOptions = shippingOptions.map(shippingOption => ({\n ...shippingOption\n }));\n shippingOptions.forEach(transformPostNordParcelProductId);\n shippingOptions.forEach(removeCostIfCostMatchesSelectedProduct);\n\n dispatch({\n type: 'SET_SHIPPING_OPTIONS',\n payload: shippingOptions\n });\n\n const setShippingOptionVariantAfterDraft = isPrimary => {\n getPrimaryOrSecondaryProducts(\n getSyiSlice(getState()).shipping,\n isPrimary\n )\n .filter(({ productId }) => !!productId)\n .map(({ price, variants, productId }) => ({\n price,\n productVariant: variants.find(v => v.id === productId)\n }))\n .map(({ productVariant }) =>\n setShippingOptionVariant(isPrimary, productVariant)\n )\n .forEach(dispatch);\n };\n\n setShippingOptionVariantAfterDraft(true);\n setShippingOptionVariantAfterDraft(false);\n};\n\nconst getShippingProvidersWithProducts = () => async (dispatch, getState) => {\n const { shipping } = getSyiSlice(getState());\n\n if (\n (shipping.primaryShippingProviders &&\n shipping.primaryShippingProviders.length > 0) ||\n shipping.isLoadingProvidersWithProducts === true\n ) {\n return;\n }\n\n dispatch({\n type: 'SET_SHIPPING_PROVIDERS_WITH_PRODUCTS_FETCHING'\n });\n\n const shippingProviders = await getShippingProviders();\n dispatch({\n type: 'SET_SHIPPING_PROVIDERS_WITH_PRODUCTS',\n payload: shippingProviders\n });\n};\n\nconst setShippingFromcountry = payload => ({\n type: 'SET_SHIPPING_FROMCOUNTRY',\n payload\n});\n\nexport default {\n calculateShipping,\n clearSuggestedShippingProducts,\n getShippingProvidersWithProducts,\n makeSecondaryShippingOptionPrimary,\n removeShippingOption,\n reset,\n resetSelected,\n setCalculatorDimensions,\n setOfferTakeaway,\n setOfferShipping,\n setSecondaryShippingOptionOpen,\n setShippingOptionCost,\n setShippingOptionsFromDraft,\n setShippingOptionVariant,\n setSuggestedShippingProducts,\n toggleShippingCalculator,\n toggleShippingOption,\n setShippingFromcountry\n};\n","import React from 'react';\nimport ArrowLeftIcon from '@tradera/blueprint/theme/icons2/arrow-left.svg?jsx';\nimport ArrowRightIcon from '@tradera/blueprint/theme/icons2/arrow-right.svg?jsx';\n\nexport const NextArrow = props => {\n const { className, arrowClassName = '', style, onClick } = props;\n return (\n {\n onClick();\n }}>\n \n \n );\n};\nexport const PreviousArrow = props => {\n const { className, arrowClassName = '', style, onClick } = props;\n return (\n {\n onClick();\n }}>\n \n \n );\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Slider from 'react-slick';\nimport { NextArrow, PreviousArrow } from '../arrows';\nimport './basic.scss';\n\n/**\n * BasicCarousel\n * Usage:\n * loopThroughSlides()} />\n */\nclass BasicCarousel extends React.Component {\n next() {\n if (this.slider) {\n this.slider.slickNext();\n }\n }\n\n previous() {\n if (this.slider) {\n this.slider.slickPrev();\n }\n }\n\n goTo(imageIndex) {\n if (this.slider) {\n const skipAnimation = true;\n this.slider.slickGoTo(imageIndex, skipAnimation);\n }\n }\n\n render() {\n const {\n render,\n pageType = '',\n settings,\n className,\n arrowClassName,\n children\n } = this.props;\n const defaults = {\n dots: true,\n dotsClass: 'slick-dots slick-thumb mb-2',\n nextArrow: (\n \n ),\n prevArrow: (\n \n ),\n infinite: true,\n speed: 500,\n slidesToShow: 1,\n slidesToScroll: 1,\n lazyLoad: true,\n ...settings\n };\n\n return (\n \n (this.slider = c)} {...defaults}>\n {render ? render() : children}\n \n \n );\n }\n}\n\nBasicCarousel.propTypes = {\n className: PropTypes.string,\n settings: PropTypes.object,\n render: PropTypes.func,\n pageType: PropTypes.string\n};\n\nexport default BasicCarousel;\n","import React, { useCallback, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport { useTranslator } from 'tradera-lang/translate';\nimport SimpleModal from 'components/modals/simple-modal';\nimport { BasicCarousel } from 'tradera-components/carousels/basic';\nimport { BREAKPOINT_SIZES, BREAKPOINTS } from 'tradera-constants/breakpoints';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport './image-gallery-modal.scss';\n\nconst ImageGalleryModal = props => {\n const { images, initialSlideIndex, closeModalCallback, ...rest } = props;\n\n const { t } = useTranslator();\n const carouselRef = useRef(null);\n const closeButtonRef = useRef(null);\n\n const environment = useSelector(state => state.environment);\n\n const { isMobileDevice } = environment;\n\n const handleCloseModalClick = event => {\n event.stopPropagation();\n closeModalCallback();\n };\n\n const stopClickEventPropagationFromCarousel = event =>\n event.stopPropagation();\n\n const stopClickEventsFromImage = event => event.stopPropagation();\n\n const navigate = useCallback(e => {\n if (e.keyCode === 37) {\n // left\n carouselRef.current.previous();\n e.preventDefault();\n } else if (e.keyCode === 39) {\n // right\n carouselRef.current.next();\n e.preventDefault();\n }\n }, []);\n\n useEffect(() => {\n closeButtonRef.current.focus();\n window.addEventListener('keydown', navigate);\n return () => {\n window.removeEventListener('keydown', navigate);\n };\n }, [navigate]);\n\n const settings = {\n initialSlide: initialSlideIndex,\n adaptiveHeight: true,\n lazyLoad: 'progressive',\n fade: !isMobileDevice,\n useCss: false,\n useTransform: false,\n responsive: [\n {\n breakpoint: BREAKPOINT_SIZES[BREAKPOINTS.MD].min,\n settings: {\n arrows: false\n }\n }\n ]\n };\n\n return (\n \n
    \n \n images.map((image, index) => (\n \n \n \n
    \n \n ))\n }\n />\n \n \n \n \n \n );\n};\n\nImageGalleryModal.propTypes = {\n images: PropTypes.array.isRequired,\n initialSlideIndex: PropTypes.number\n};\nImageGalleryModal.defaultProps = {\n initialSlideIndex: 0\n};\n\nexport { ImageGalleryModal };\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport MediaQuery from 'react-responsive';\nimport { BREAKPOINTS, BREAKPOINT_SIZES } from 'tradera-utils/breakpoints';\n\nclass ViewItemImage extends Component {\n constructor(props) {\n super(props);\n\n this.imageContainer = React.createRef();\n this.zoomImage = React.createRef();\n\n this.bounds = null;\n\n this.state = {\n hover: false,\n zoomImageLargeEnough: true\n };\n }\n\n static defaultProps = {\n enableZoom: false\n };\n\n handleMouseHover(hoverState) {\n this.setState(prevState => ({\n ...prevState,\n hover: hoverState\n }));\n }\n\n handleMouseMove(e) {\n // this check is here because the mobile version does not have a zoomImageElement in the DOM.\n if (this.zoomImage.current === null) {\n return;\n }\n const {\n containerWidth,\n containerHeight,\n zoomImageWidth,\n zoomImageHeight,\n widthDiff,\n heightDiff\n } = this.getBounds();\n\n const zoomImageLargeEnough = widthDiff > 0 || heightDiff > 0;\n this.setState({\n zoomImageLargeEnough\n });\n\n if (!zoomImageLargeEnough) {\n return;\n }\n\n const widthRatio = e.nativeEvent.offsetX / containerWidth;\n const heightRatio = e.nativeEvent.offsetY / containerHeight;\n\n const translateXValue =\n widthDiff > 0\n ? widthRatio * widthDiff\n : zoomImageWidth / 2 - containerWidth / 2;\n const translateYValue =\n heightDiff > 0\n ? heightRatio * heightDiff\n : zoomImageHeight / 2 - containerHeight / 2;\n\n const zoomImageElement = this.zoomImage.current;\n zoomImageElement.style.transform = `translate(${-translateXValue}px,\n ${-translateYValue}px)`;\n\n this.handleMouseHover(true);\n }\n\n getBounds() {\n if (this.bounds) {\n return this.bounds;\n }\n\n const zoomImageElement = this.zoomImage.current;\n const imageContainerElement = this.imageContainer.current;\n\n const {\n width: containerWidth,\n height: containerHeight\n } = imageContainerElement.getBoundingClientRect();\n const {\n width: zoomImageWidth,\n height: zoomImageHeight\n } = zoomImageElement.getBoundingClientRect();\n\n const widthDiff = zoomImageWidth - containerWidth;\n const heightDiff = zoomImageHeight - containerHeight;\n\n if (zoomImageWidth <= 0 || zoomImageHeight <= 0) {\n return {};\n }\n this.bounds = {\n containerWidth,\n containerHeight,\n zoomImageWidth,\n zoomImageHeight,\n widthDiff,\n heightDiff\n };\n\n return this.bounds;\n }\n\n render() {\n const { image, enableZoom, handleZoomClick } = this.props;\n const { hover, zoomImageLargeEnough } = this.state;\n const { alt, normal, smallFit, mediumFit, largeFit } = image;\n return (\n \n \n \n \n \n \n \n \n {\n this.handleMouseMove(e);\n }}\n onMouseLeave={() => this.handleMouseHover(false)}\n />\n \n );\n }\n}\n\nViewItemImage.propTypes = {\n image: PropTypes.shape({\n alt: PropTypes.string.isRequired,\n normal: PropTypes.string.isRequired,\n medium: PropTypes.string.isRequired\n }).isRequired,\n enableZoom: PropTypes.bool,\n handleZoomClick: PropTypes.func\n};\n\nexport default ViewItemImage;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { BREAKPOINTS, BREAKPOINT_SIZES } from 'tradera-utils/breakpoints';\nimport { BasicCarousel } from '../basic';\nimport { ImageGalleryModal } from 'components/modals/image-gallery-modal/image-gallery-modal';\nimport ViewItemImage from './view-item-image';\nimport './view-item-carousel.scss';\nimport './cursor.scss';\n\nclass ViewItemCarouselZoom extends React.Component {\n static propTypes = {\n carouselStyle: PropTypes.object,\n className: PropTypes.string,\n enableZoom: PropTypes.bool,\n fixedHeight: PropTypes.bool,\n id: PropTypes.string,\n images: PropTypes.array.isRequired,\n pageType: PropTypes.string\n };\n\n static defaultProps = {\n carouselStyle: {},\n className: '',\n id: '',\n enableZoom: false,\n fixedHeight: true\n };\n\n state = {\n showZoomModal: false,\n activeSlideIndex: 0\n };\n\n constructor(props) {\n super(props);\n this.basicCarousel = React.createRef();\n }\n\n render() {\n const {\n carouselStyle,\n className,\n enableZoom,\n fixedHeight,\n id,\n images,\n ...rest\n } = this.props;\n const { showZoomModal, activeSlideIndex } = this.state;\n\n const onMouseUp = () => {\n if (enableZoom) {\n this.setState({\n showZoomModal: true\n });\n }\n };\n\n const settings = {\n customPaging: imageIndex => {\n return (\n \n this.basicCarousel.current.goTo(imageIndex)\n }>\n \n
    \n
    \n );\n },\n afterChange: index => {\n this.setState({ activeSlideIndex: index });\n },\n initialSlide: activeSlideIndex,\n accessibility: false,\n responsive: [\n {\n breakpoint: BREAKPOINT_SIZES[BREAKPOINTS.MD].min,\n settings: {\n customPaging: function(i) {\n return ;\n }\n }\n }\n ]\n };\n\n return (\n
    \n \n {images.map((image, index) => (\n {\n if (enableZoom) {\n this.setState({\n showZoomModal: true\n });\n }\n }}\n />\n ))}\n \n {enableZoom && showZoomModal && (\n {\n this.setState({ showZoomModal: false });\n }}\n images={images}\n />\n )}\n
    \n );\n }\n}\n\nexport default ViewItemCarouselZoom;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useUrlLocalizer } from 'tradera-lang/translate';\n\nconst HoverMenuItem = ({\n icon,\n label,\n link,\n border,\n follow,\n onClick,\n gaAttributes\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n
  • \n \n \n {icon}\n \n {label}\n \n
  • \n );\n};\n\nHoverMenuItem.propTypes = {\n icon: PropTypes.node,\n label: PropTypes.node,\n link: PropTypes.string,\n border: PropTypes.bool,\n follow: PropTypes.bool,\n onClick: PropTypes.func,\n gaAttributes: PropTypes.object\n};\n\nexport default HoverMenuItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { ModalBody, ModalContainer, ModalHeader } from 'components/modals';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\nimport { checkUserMessagingParticipation } from 'tradera-apps/my-tradera/app/helpers/messaging-helpers';\nimport ArrowRightIcon from '@tradera/blueprint/theme/icons/arrow-right.svg?jsx';\nimport CloseIcon from '@tradera/blueprint/theme/icons/close-narrow.svg?jsx';\nimport LoadIcon from '@tradera/blueprint/theme/icons/load.svg?jsx';\nimport { logger } from 'packages';\nimport { withUrlLocalizer } from 'tradera-lang/translate';\nimport './messaging-iframe.scss';\nimport { getMessagingUrl } from 'tradera-components/messaging/get-messaging-url';\n\nconst MESSAGING_STATES = {\n LOADING: 'LOADING',\n READY: 'READY'\n};\nconst POST_MESSAGE_TYPE_PREFIX = 'tradera.messaging.';\n\nclass MessagingModal extends React.Component {\n MESSAGING_REMOTE_URL;\n\n constructor(props) {\n super(props);\n this.state = {\n messaging: MESSAGING_STATES.LOADING,\n participating: props.participating || null\n };\n this.MESSAGING_REMOTE_URL = getMessagingUrl(props.toLocalizedUrl);\n }\n\n handleMessage = event => {\n const {\n data: { type },\n origin\n } = event;\n if (this.MESSAGING_REMOTE_URL.indexOf(origin) < 0) {\n return;\n }\n switch (type) {\n // Messages loaded & ready\n case POST_MESSAGE_TYPE_PREFIX + 'ready':\n this.setState({ messaging: MESSAGING_STATES.READY });\n break;\n // Unread threads update\n case POST_MESSAGE_TYPE_PREFIX + 'close':\n this.handleClose();\n break;\n }\n };\n\n handleClose = () => {\n this.props.closeModal();\n };\n\n setIframeRef = element => {\n if (element) {\n this.iframeElement = element;\n }\n // Focus on iframe content window to allow focus to move into iframe\n setTimeout(() => {\n if (this.iframeElement && this.iframeElement.contentWindow) {\n this.iframeElement.contentWindow.focus();\n }\n }, 0);\n };\n\n componentDidMount() {\n if (this.state.participating === null) {\n checkUserMessagingParticipation(this.props.recipientId)\n .then(participating => this.setState({ participating }))\n .catch(logger);\n }\n window.addEventListener('message', this.handleMessage);\n this.setIframeRef();\n }\n\n componentWillUnmount() {\n window.removeEventListener('message', this.handleMessage);\n }\n\n render() {\n const { title, src, item, toLocalizedUrl } = this.props;\n const { participating } = this.state;\n return (\n this.handleClose()}>\n this.handleClose()}>\n {title && (\n this.handleClose()}>\n {title}\n \n )}\n \n {participating === true && (\n \n )}\n {participating === false && (\n this.handleClose()}\n toLocalizedUrl={toLocalizedUrl}\n />\n )}\n {participating === null && }\n \n \n \n );\n }\n}\n\nMessagingModal.propTypes = {\n title: PropTypes.string,\n src: PropTypes.string.isRequired\n};\n\nconst Loader = () => {\n return (\n
    \n \n
    \n );\n};\n\nconst NotParticipatingMessage = props => {\n const { item, onClose, toLocalizedUrl } = props;\n if (item) {\n return (\n
    \n
    \n

    {item.seller.alias}

    \n

    \n Butik\n

    \n
    \n

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

    \n

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

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

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

    \n
    \n \n \n \n Stäng\n \n
    \n \n );\n }\n};\n\nexport default withUrlLocalizer(MessagingModal);\n","import { globalStore } from 'tradera-state/configure-store';\nconst store = globalStore();\n\nexport default {\n setErrors: function(errors) {\n store.dispatch({\n type: 'SET_ERRORS',\n errors: errors\n });\n },\n setError: function(propertyName, error) {\n store.dispatch({\n type: 'SET_ERROR',\n propertyName: propertyName,\n error: error\n });\n }\n};\n","import axios from 'axios';\nimport { toLocalizedRiotUrl } from './../utils/language';\n\nexport const openAddPhoto = draftId => {\n const url = toLocalizedRiotUrl(`/selling/api/native-apps/add-photo`);\n return axios.post(url, {\n draftId\n });\n};\n","import draftActions from './draft-actions';\nimport syiActions from './syi-actions';\nimport logger from 'packages/logger';\nimport { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\nimport errorActions from 'tradera-state/views/syi/actions/error-actions';\nimport { openAddPhoto } from 'tradera-apps/syi/script/app_react/services/native-app-service';\nimport imageUploadService from 'tradera-apps/syi/script/app_react/services/image-upload-service';\nimport { throttledFetchImageAttributeSuggestions } from './attributes-actions';\n\nconst MAX_IMAGES_FOR_IMAGE_TO_COLORS = 2;\n\nconst setDraftImages = images => dispatch => {\n dispatch({\n type: 'SET_DRAFT_IMAGES',\n payload: images\n });\n\n dispatch(draftActions.updateDraftCanBeResumed());\n\n const removeNullAndUndefinedFilter = n => n;\n const draftImageIds = images\n .slice(0, MAX_IMAGES_FOR_IMAGE_TO_COLORS)\n .map(image => image.draftImage?.imageId)\n .filter(removeNullAndUndefinedFilter);\n if (draftImageIds.length > 0) {\n dispatch(throttledFetchImageAttributeSuggestions(draftImageIds));\n }\n};\n\nconst setUploadedImageInNextFreeSlot = (imageId, imageUrl) => (\n dispatch,\n getState\n) => {\n var slots = getSyiSlice(getState()).images.slots;\n var freeSlotIndex = -1;\n for (var i = 0; i < slots.length; i++) {\n if (!slots[i].imageId) {\n freeSlotIndex = i;\n break;\n }\n }\n if (freeSlotIndex > -1) {\n dispatch({\n type: 'SET_UPLOADED_IMAGE_IN_SLOT',\n slotIndex: freeSlotIndex,\n imageUrl: imageUrl,\n imageId: imageId\n });\n if (freeSlotIndex < MAX_IMAGES_FOR_IMAGE_TO_COLORS) {\n handleAttributeSuggestionsForSlot(dispatch, slots);\n }\n }\n dispatch(draftActions.updateDraftCanBeResumed());\n};\n\nconst setUploadedImageInImageSlot = (slotIndex, imageId, imageUrl) => (\n dispatch,\n getState\n) => {\n dispatch({\n type: 'SET_UPLOADED_IMAGE_IN_SLOT',\n slotIndex: slotIndex,\n imageUrl: imageUrl,\n imageId: imageId\n });\n if (slotIndex < MAX_IMAGES_FOR_IMAGE_TO_COLORS) {\n var slots = getSyiSlice(getState()).images.slots;\n handleAttributeSuggestionsForSlot(dispatch, slots);\n }\n dispatch(draftActions.updateDraftCanBeResumed());\n};\n\nconst removeImageInSlot = slotIndex => (dispatch, getState) => {\n let slots = [...getSyiSlice(getState()).images.slots];\n // move images to the left\n for (var i = slotIndex; i < slots.length - 1; i++) {\n slots[i].imageUrl = slots[i + 1].imageUrl;\n slots[i].imageId = slots[i + 1].imageId;\n slots[i].rotationDegrees = slots[i + 1].rotationDegrees;\n slots[i].isListingImage = slots[i + 1].isListingImage;\n if (slots[i + 1].isListingImage) {\n slots[i].filename = slots[i + 1].filename;\n slots[i].imageGroupId = slots[i + 1].imageGroupId;\n }\n }\n\n // reset last slot\n slots[4].isUploading = false;\n slots[4].imageUrl = null;\n slots[4].imageId = null;\n slots[4].isListingImage = false;\n slots[4].filename = null;\n slots[4].imageGroupId = null;\n\n dispatch({\n type: 'SET_IMAGE_SLOTS',\n slots: slots\n });\n\n if (slotIndex < MAX_IMAGES_FOR_IMAGE_TO_COLORS) {\n handleAttributeSuggestionsForSlot(dispatch, slots);\n }\n dispatch(draftActions.updateDraftCanBeResumed());\n};\n\nconst changeImagePosition = (from, to) => (dispatch, getState) => {\n var slots = getSyiSlice(getState()).images.slots;\n var slot = slots[from];\n slots.splice(from, 1);\n var len = slots.length;\n var newSlots = [];\n for (var i = 0; i < len; i++) {\n if (i == to) {\n newSlots.push(slot);\n }\n newSlots.push(slots[i]);\n }\n if (to == slots.length) {\n newSlots.push(slot);\n }\n dispatch({\n type: 'SET_IMAGE_SLOTS',\n slots: newSlots\n });\n const isImageToColorImageChanged =\n (from >= MAX_IMAGES_FOR_IMAGE_TO_COLORS &&\n to < MAX_IMAGES_FOR_IMAGE_TO_COLORS) ||\n (to >= MAX_IMAGES_FOR_IMAGE_TO_COLORS &&\n from < MAX_IMAGES_FOR_IMAGE_TO_COLORS);\n if (isImageToColorImageChanged) {\n handleAttributeSuggestionsForSlot(dispatch, newSlots);\n }\n};\n\nconst removeImageWithId = imageId => (dispatch, getState) => {\n let slots = getSyiSlice(getState()).images.slots;\n let slotIndex = -1;\n for (var i = slots.length; i-- > 0; ) {\n if (slots[i].imageId === imageId) {\n slotIndex = i;\n break;\n }\n }\n if (slotIndex > -1) {\n dispatch(removeImageInSlot(slotIndex));\n }\n\n dispatch(draftActions.updateDraftCanBeResumed());\n};\n\nconst rotateImage = slotIndex => (dispatch, getState) => {\n var slots = getSyiSlice(getState()).images.slots;\n var rotationDegrees = slots[slotIndex].rotationDegrees || 0;\n rotationDegrees += 90;\n if (rotationDegrees === 360) {\n rotationDegrees = 0;\n }\n dispatch({\n type: 'SET_IMAGE_ROTATION',\n slotIndex: slotIndex,\n rotationDegrees: rotationDegrees\n });\n};\n\nconst setUploadFailed = errorMessage => dispatch => {\n dispatch({\n type: 'SET_IMAGE_UPLOAD_FAILED',\n payload: errorMessage\n });\n};\n\nconst setUploading = numberOfSlots => dispatch => {\n dispatch({\n type: 'SET_IMAGES_UPLOADING',\n numberOfSlots: numberOfSlots\n });\n};\n\nconst prepareUpload = (selectedFilesCount, freeSlotCount) => dispatch => {\n errorActions.setError('images', null);\n const numberOfFilesToUpload = Math.min(freeSlotCount, selectedFilesCount);\n dispatch(setUploading(numberOfFilesToUpload));\n};\n\nconst setImageThunk = (freeSlotCount, fileInput, flow) => dispatch => {\n const selectedFilesCount = fileInput.files?.length || 1;\n dispatch(prepareUpload(selectedFilesCount, freeSlotCount));\n imageUploadService.uploadFromFileInput(fileInput, freeSlotCount, flow);\n};\n\nclass MissingDraftId extends Error {}\n\nconst nativeAppOpenAddPhotoThunk = saveNowIfQueued => async (\n dispatch,\n getState\n) => {\n dispatch(setIsUploadingWithApp(true));\n try {\n dispatch(syiActions.disableAutoSave());\n const currentDraftId = getSyiSlice(getState())?.draft?.draftId;\n const draft = await saveNowIfQueued(currentDraftId);\n const draftId = draft?.draftId || currentDraftId;\n if (!draftId) {\n throw new MissingDraftId();\n }\n await openAddPhoto(draftId);\n } catch (error) {\n if (error instanceof MissingDraftId) {\n logger('Missing draftId on app photo upload');\n } else if (!error.request || error.response) {\n // Do not log axios request errors, as they are client dependent (such as offline)\n logger(error);\n }\n dispatch(setUploadFailed('syi_images_photo_with_mobile_error'));\n dispatch(setIsUploadingWithApp(false));\n dispatch(syiActions.enableAutoSave());\n }\n};\n\nconst fetchImagesFromDraft = (draftId, draftSocket) => async dispatch => {\n if (!draftId) {\n logger('DraftChanged event missing draft ID');\n }\n const imagesHaveChanged = await dispatch(\n draftActions.loadImagesFromDraft(draftId)\n );\n if (imagesHaveChanged) {\n dispatch(cancelMobileUpload(draftSocket));\n }\n};\n\nconst setIsUploadingWithApp = isUploadingWithApp => dispatch => {\n dispatch({\n type: 'SET_MOBILE_UPLOAD',\n isUploadingWithApp\n });\n};\n\nconst cancelMobileUpload = draftSocket => dispatch => {\n draftSocket.disconnect();\n dispatch(setIsUploadingWithApp(false));\n dispatch(syiActions.enableAutoSave());\n};\n\nconst handleAttributeSuggestionsForSlot = (dispatch, slots) => {\n const imageIds = [];\n slots.slice(0, MAX_IMAGES_FOR_IMAGE_TO_COLORS).forEach(slot => {\n if (slot.imageId && !slot.isListingImage) {\n imageIds.push(slot.imageId);\n }\n });\n if (imageIds.length > 0) {\n dispatch(throttledFetchImageAttributeSuggestions(imageIds));\n } else {\n dispatch({\n type: 'RESET_IMAGE_ATTRIBUTES_SUGGESTIONS'\n });\n }\n};\n\nconst reset = () => dispatch => {\n dispatch(setDraftImages([]));\n dispatch(draftActions.updateDraftCanBeResumed());\n};\n\nexport default {\n setDraftImages,\n setUploadedImageInNextFreeSlot,\n setUploadedImageInImageSlot,\n removeImageInSlot,\n removeImageWithId,\n changeImagePosition,\n rotateImage,\n setUploadFailed,\n setUploading,\n prepareUpload,\n setImageThunk,\n nativeAppOpenAddPhotoThunk,\n fetchImagesFromDraft,\n cancelMobileUpload,\n setIsUploadingWithApp,\n reset\n};\n","import React from 'react';\n\nconst Flag = ({ countryCodeIso2, ...otherProps }) => {\n return countryCodeIso2 ? (\n \n ) : null;\n};\n\nexport default Flag;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useImageLoader } from '../hooks';\n\nconst BackgroundImageLoader = props => {\n const {\n tagName: TagName,\n className,\n style,\n src,\n placeholderSrc,\n placeholderClassName,\n fallbackSrc,\n fallbackClassName,\n loadedClassName,\n children,\n ...otherProps\n } = props;\n const [isLoaded, error] = useImageLoader(src);\n let currentSrc = placeholderSrc;\n let currentClassName = className + ' ' + placeholderClassName;\n\n if (isLoaded) {\n currentSrc = src;\n currentClassName = className + ' ' + loadedClassName;\n } else if (error) {\n currentSrc = fallbackSrc;\n currentClassName = className + ' ' + fallbackClassName;\n }\n\n return (\n \n {isLoaded && children}\n \n );\n};\n\nBackgroundImageLoader.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n src: PropTypes.string,\n placeholderSrc: PropTypes.string,\n placeholderClassName: PropTypes.string,\n fallbackSrc: PropTypes.string,\n fallbackClassName: PropTypes.string,\n loadedClassName: PropTypes.string\n};\nBackgroundImageLoader.defaultProps = {\n tagName: 'div'\n};\n\nexport default BackgroundImageLoader;\n","import React from 'react';\nimport LazyLoad from 'react-lazyload';\n\nimport { ITEM_CARD_IMAGE_MODES } from './item-card-image-modes';\nimport BackgroundImageLoader from './background-image-loader';\nimport ALink from 'tradera-components/alink/alink';\n\nconst ItemCardImage = ({\n className,\n lazy,\n itemUrl,\n imageHeight,\n imageMode,\n imageUrl,\n imageWidth,\n imageSecondaryUrl,\n shortDescription,\n onClick,\n children,\n inSPA\n}) => {\n const linkProps = {\n href: itemUrl,\n className: `item-card-image ${\n lazy ? '' : 'item-card-image-loaded'\n } ${className || ''}`,\n title: shortDescription,\n onClick,\n 'data-item-card-image': '',\n role: 'button',\n useLink: inSPA\n };\n const imageStyle = {};\n\n if (imageMode === ITEM_CARD_IMAGE_MODES.NATURAL) {\n let aspectRatio = imageHeight / imageWidth;\n aspectRatio = Math.min(aspectRatio, 3.0);\n aspectRatio = Math.max(aspectRatio, 0.33);\n imageStyle.paddingTop = aspectRatio * 100 + '%';\n }\n\n const secondaryImage = imageSecondaryUrl ? (\n \n ) : null;\n\n if (lazy) {\n return (\n \n \n {secondaryImage}\n {children}\n \n \n );\n } else {\n return (\n \n {secondaryImage}\n {children}\n \n );\n }\n};\n\nexport default ItemCardImage;\n","import React from 'react';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\n\nconst ToBuyLink = ({ isLoggedIn, transparentHeader }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const howTo = t('siteHeader_howTo');\n\n return (\n \n \n \n\n \n {howTo}\n \n \n );\n};\n\nexport default ToBuyLink;\n","import { useEffect, useRef } from 'react';\nimport {\n BREAKPOINTS,\n useBreakpoint\n} from 'tradera-components/breakpoint/breakpoint';\n\nexport const useMenuHeightFix = () => {\n const menuContentRef = useRef();\n const currentBreakpoint = useBreakpoint();\n\n useEffect(() => {\n if (!menuContentRef.current) return;\n const element = menuContentRef.current.parentElement;\n const marginBottom = currentBreakpoint === BREAKPOINTS.XL ? 7 : 0;\n const marginTop = element.getBoundingClientRect().top;\n const marginY = marginTop + marginBottom;\n element.style.maxHeight = `calc(100vh - ${marginY}px)`;\n }, [currentBreakpoint]);\n return menuContentRef;\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"dialog\":\"dialog--pUDDs\"};","import React from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\nimport { LeaveFeedback } from './leave-feedback';\nimport { ROLES } from './constants';\nimport { closeModal } from 'tradera-state/ui/action-creators';\nimport { useTranslator } from 'tradera-lang/translate';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\nimport styles from './single-feedback-dialog.module.scss';\n\nexport const SINGLE_FEEDBACK_DIALOG_ID = 'single-feedback-dialog';\n\nexport const SingleFeedbackDialog = ({\n onDismiss = () => {},\n onDone,\n isSeller\n}) => {\n const dispatch = useDispatch();\n const { t } = useTranslator();\n const { currentModal, currentModalData } = useSelector(\n state => state.ui.modals\n );\n\n if (currentModal !== SINGLE_FEEDBACK_DIALOG_ID) {\n return null;\n }\n return (\n dispatch(closeModal())}>\n <>\n \n dispatch(closeModal())}>\n \n \n \n

    \n {t(\n isSeller\n ? 'leaveFeedback_rateBuyer_title'\n : 'leaveFeedback_rateSeller_title'\n )}\n

    \n {\n dispatch(closeModal());\n onDismiss();\n }}\n onDone={submittables => {\n dispatch(closeModal());\n onDone({\n submittables,\n purchaseOrderId: currentModalData.purchaseOrderId,\n transactionId: currentModalData.transactionId\n });\n }}\n />\n \n \n );\n};\n","export const MODAL_TYPE = {\n BANK_ID: 'BANK_ID',\n SWISH_APP_2_APP: 'SWISH_APP_2_APP',\n SWISH_HANDEL: 'SWISH_HANDEL'\n};\n\nexport const MODAL_STATUS = {\n START: 'START',\n COMPLETE: 'COMPLETE',\n ERROR: 'ERROR'\n};\n\nexport const PAYMENT_OPTIONS = {\n CARD: 'Card',\n PAYNOVA: 'Paynova',\n PAYPAL: 'PayPal',\n APPLEPAY: 'ApplePay',\n GOOGLEPAY: 'GooglePay',\n SWISH_APP_2_APP: 'SwishApp2App',\n SWISH_HANDEL: 'SwishHandel',\n VISA_MASTERCARD: 'VisaMasterCard'\n};\n\nexport const PAYMENT_OPTION_STATUS = {\n AVAILABLE: 'Available',\n UNAVAILABLE_DUE_TO_AMOUNT: 'UnavailableDueToAmount'\n};\n\nexport default () => {\n return {\n buyerMember: null,\n checkoutSummary: {\n hasError: false,\n isFetching: false\n },\n hasError: false,\n items: null,\n isFetching: false,\n payment: {\n hasError: false,\n isFetching: false,\n paymentOptions: null,\n selectedPayment: null,\n paymentMethodData: null\n },\n sellerMember: null,\n modal: {\n open: '',\n status: MODAL_STATUS.START\n },\n showDisableOverlay: false,\n ongoingPaymentAttempt: null,\n shippingInfo: {\n shippingOptions: null,\n shippingPriceRange: null,\n shippingDiscount: null\n },\n combinedShippingInfo: null,\n purchaseOrder: null\n };\n};\n","/* eslint-disable complexity */\n\nimport { selectFiltersState } from 'tradera-apps/my-tradera/app/state/reducers/filters';\n\nconst getDefaultFilters = (filtersState, checkModifiersExist) => {\n return {\n 'filters[paging][page]':\n checkModifiersExist && filtersState.modifiers.paging\n ? filtersState.modifiers.paging.page\n : '',\n 'filters[paging][size]':\n checkModifiersExist && filtersState.modifiers.paging\n ? filtersState.modifiers.paging.size\n : '',\n 'filters[selectedFilterBar]': checkModifiersExist\n ? filtersState.modifiers.selectedFilterBar\n : '',\n 'filters[sellerFilters][feedbackLeft]':\n checkModifiersExist && filtersState.modifiers.sellerFilters\n ? filtersState.modifiers.sellerFilters.feedbackLeft\n : '',\n 'filters[sellerFilters][paid]':\n checkModifiersExist && filtersState.modifiers.sellerFilters\n ? filtersState.modifiers.sellerFilters.paid\n : '',\n 'filters[sellerFilters][shipped]':\n checkModifiersExist && filtersState.modifiers.sellerFilters\n ? filtersState.modifiers.sellerFilters.shipped\n : '',\n 'filters[sellerFilters][hidden]':\n checkModifiersExist && filtersState.modifiers.sellerFilters\n ? filtersState.modifiers.sellerFilters.hidden\n : '',\n 'filters[buyerFilters][feedbackLeft]':\n checkModifiersExist && filtersState.modifiers.buyerFilters\n ? filtersState.modifiers.buyerFilters.feedbackLeft\n : '',\n 'filters[buyerFilters][paid]':\n checkModifiersExist && filtersState.modifiers.buyerFilters\n ? filtersState.modifiers.buyerFilters.paid\n : '',\n 'filters[buyerFilters][hidden]':\n checkModifiersExist && filtersState.modifiers.buyerFilters\n ? filtersState.modifiers.buyerFilters.hidden\n : ''\n };\n};\n\n/** This matches query parameters to state filters.\n * @param {object} state\n * @returns {object}\n */\nexport const getAvailableQueryParams = state => {\n const filtersState = selectFiltersState(state);\n\n const checkModifiersExist =\n !!state && filtersState && filtersState.modifiers;\n\n const defaultFilters = getDefaultFilters(filtersState, checkModifiersExist);\n\n return {\n ...defaultFilters,\n 'filters[datatype]': checkModifiersExist\n ? filtersState.modifiers.datatype\n : '',\n 'filters[dateRange][field]':\n checkModifiersExist && filtersState.modifiers.dateRange\n ? filtersState.modifiers.dateRange.field\n : '',\n 'filters[dateRange][from]':\n checkModifiersExist && filtersState.modifiers.dateRange\n ? filtersState.modifiers.dateRange.from\n : '',\n 'filters[dateRange][to]':\n checkModifiersExist && filtersState.modifiers.dateRange\n ? filtersState.modifiers.dateRange.to\n : '',\n 'filters[hasBids]': checkModifiersExist\n ? filtersState.modifiers.hasBids\n : '',\n 'filters[itemCondition]': checkModifiersExist\n ? filtersState.modifiers.itemCondition\n : '',\n 'filters[itemType]': checkModifiersExist\n ? filtersState.modifiers.itemType\n : '',\n 'filters[processState]': checkModifiersExist\n ? filtersState.modifiers.processState\n : '',\n 'filters[purchaseType]': checkModifiersExist\n ? filtersState.modifiers.purchaseType\n : '',\n 'filters[query][properties]':\n checkModifiersExist && filtersState.modifiers.query\n ? filtersState.modifiers.query.properties\n : '',\n 'filters[query][scope]':\n checkModifiersExist && filtersState.modifiers.query\n ? filtersState.modifiers.query.scope\n : '',\n 'filters[query][searchQuery]':\n checkModifiersExist && filtersState.modifiers.query\n ? filtersState.modifiers.query.searchQuery\n : '',\n 'filters[reservePriceReached]': checkModifiersExist\n ? filtersState.modifiers.reservePriceReached\n : '',\n 'filters[searchType]': checkModifiersExist\n ? filtersState.modifiers.searchType\n : '',\n 'filters[sellerFilters][shippingBooked]':\n checkModifiersExist && filtersState.modifiers.sellerFilters\n ? filtersState.modifiers.sellerFilters.shippingBooked\n : '',\n 'filters[sort][order]':\n checkModifiersExist && filtersState.modifiers.sort\n ? filtersState.modifiers.sort.order\n : '',\n 'filters[sort][sorting]':\n checkModifiersExist && filtersState.modifiers.sort\n ? filtersState.modifiers.sort.sorting\n : '',\n 'filters[userIs]': checkModifiersExist\n ? filtersState.modifiers.userIs\n : '',\n 'filters[selectedFilterBar]': checkModifiersExist\n ? filtersState.modifiers.selectedFilterBar\n : ''\n };\n};\n\n/**\n * Checks if a query parameter is in the available parameters.\n * @param {function} getState\n * @param {object} locationQuery\n */\nexport const checkStateOfQueryParams = (getState, locationQuery) => {\n let check = getAvailableQueryParams(getState());\n let checkItem = item =>\n !!check[item] &&\n check[item].toString() !== locationQuery[item].toString();\n return Object.keys(check).some(item => {\n if (!check[item] || !locationQuery[item]) {\n return false;\n }\n return checkItem(item) ? true : false;\n });\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Plus from '@tradera/blueprint/theme/icons2/plus.svg?jsx';\nimport { Button } from 'tradera-components/atoms/button/button';\n\nconst AttributeButton = ({ className, text, selected, onClick, hoverIcon }) => {\n return (\n \n {hoverIcon && }\n {text}\n \n );\n};\n\nAttributeButton.propTypes = {\n className: PropTypes.string,\n text: PropTypes.node.isRequired,\n selected: PropTypes.bool,\n onClick: PropTypes.func,\n hoverIcon: PropTypes.bool\n};\n\nAttributeButton.defaultProps = {\n className: '',\n text: PropTypes.string,\n selected: false,\n onClick: undefined,\n hoverIcon: true\n};\n\nexport default AttributeButton;\n","import React from 'react';\nimport { Provider } from 'react-redux';\nimport { useTranslator } from 'tradera-lang/translate';\nimport DfpAd from '@tradera/blueprint/components/lib/ads';\nimport ApplicationErrorBoundary from 'tradera-components/application-error-boundary/application-error-boundary';\nimport '@tradera/blueprint/components/lib/ads.css';\nimport WaitForConsentApiLoaded from 'tradera-components/wait-for-consent-api-loaded/wait-for-consent-api-loaded';\nimport { globalStore } from 'tradera-state/configure-store';\n\nconst LocalizedDfpAd = props => {\n const { t } = useTranslator();\n const text = {\n label: t('dfpAd_label')\n };\n const store = globalStore();\n const featureSwitches = store.getState().environment.featureSwitches;\n return (\n \n \n (\n \n )}\n />\n \n \n );\n};\n\nexport default LocalizedDfpAd;\n","export const isDev = () =>\n process && process.env && process.env.NODE_ENV !== 'production';\n\nexport const warnIfDevBuild = moduleName => {\n if (isDev()) {\n /* eslint-disable no-console */\n console.log(\n `%c Warning: This is a Dev build of ${moduleName}`,\n 'background:red; color:white; font-size:18px;'\n );\n /* eslint-enable no-console */\n }\n};\n\n/**\n * helper function that is called after the header has been loaded. useful when you want to have the redux loaded before you start\n * to dispatch actions.\n * @param {func} callback\n */\nexport const onModuleLoaded = callback => {\n const isModuleLoaded = () =>\n window.document.body.getAttribute('data-module-loaded') === 'true';\n\n try {\n if (isModuleLoaded()) {\n callback();\n }\n let observer = new MutationObserver(mutationsList => {\n const element = mutationsList.filter(\n item => item.attributeName === 'data-module-loaded'\n );\n if (element !== null && isModuleLoaded()) {\n callback();\n }\n });\n observer.observe(window.document.body, { attributes: true });\n // eslint-disable-next-line no-empty\n } catch (error) {}\n};\n","import { push, replace } from 'connected-react-router';\nimport qs from 'qs';\n\nimport myTraderaActions from './my-tradera';\nimport purchaseOrderActions from './purchase-order';\nimport { endItems } from '../../helpers/item-actions-helper';\nimport { Analytics, logger } from 'packages';\nimport { getAvailableQueryParams } from '../../helpers/route-helper';\nimport URLS from '../../constants/urls';\nimport fetch from '../../utils/fetch';\nimport featureToggles from '../../utils/feature-toggles';\nimport triot from 'triot';\nimport { selectMyTraderaState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport { selectCookiesState } from 'tradera-apps/my-tradera/app/state/reducers/cookies';\nimport { selectFiltersState } from 'tradera-apps/my-tradera/app/state/reducers/filters';\nimport { selectMyTraderaItemsState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera-items';\nimport { selectRouterState } from 'tradera-apps/my-tradera/app/state/selectors/router';\n\n/**\n * @param {function} dispatch dispatch redux action\n * @param {err} error error relayed from asynch call\n */\nconst handleError = (dispatch, error) => {\n dispatch(myTraderaActions.searching(false));\n dispatch(myTraderaActions.error(true));\n logger(error);\n};\n\nconst actionTypes = {\n BUYER_ACTIVE_ITEMS_HIDE: 'BUYER_ACTIVE_ITEMS_HIDE',\n BUYER_ACTIVE_ITEMS_SHOW: 'BUYER_ACTIVE_ITEMS_SHOW',\n UPDATE_ITEMS: 'UPDATE_ITEMS',\n COMPLETED_SEARCH: 'COMPLETED_SEARCH',\n OPEN_MORE: 'OPENED_MORE_BUTTON_DROPDOWN',\n SELECT_ITEM: 'SELECT_ITEM_CHECKBOX',\n SELECT_ALL_ITEMS: 'SELECT_ALL_ITEMS',\n REMOVE_ITEMS: 'REMOVE_ITEMS',\n OPEN_DEL_LISTING_ITEM: 'OPEN_DELETE_LISTING_ITEM',\n REMOVE_ALL_SELECTED: 'REMOVE_ALL_SELECTED_CHECKBOXES',\n UPDATE_ITEMS_WITH_ERROR: 'UPDATED_ALL_ITEMS_DUE_TO_ERROR',\n PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER:\n 'PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER',\n PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER:\n 'PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER',\n PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER:\n 'PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER',\n PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER:\n 'PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER',\n PURCHASE_ORDERS_HIDDEN_BY_SELLER: 'PURCHASE_ORDERS_HIDDEN_BY_SELLER',\n PURCHASE_ORDERS_HIDDEN_BY_BUYER: 'PURCHASE_ORDERS_HIDDEN_BY_BUYER',\n PURCHASE_ORDERS_SHOWN_BY_SELLER: 'PURCHASE_ORDERS_SHOWN_BY_SELLER',\n PURCHASE_ORDERS_SHOWN_BY_BUYER: 'PURCHASE_ORDERS_SHOWN_BY_BUYER',\n ITEM_HIDDEN: 'ITEM_HIDDEN',\n ITEM_SHOWN: 'ITEM_SHOWN',\n PURCHASE_ORDERS_MARKED_AS_SHIPPED_BY_SELLER:\n 'PURCHASE_ORDERS_MARKED_AS_SHIPPED_BY_SELLER',\n PURCHASE_ORDERS_UNMARKED_AS_SHIPPED_BY_SELLER:\n 'PURCHASE_ORDERS_UNMARKED_AS_SHIPPED_BY_SELLER',\n PURCHASE_ORDERS_UNMARKED_AS_SHIPPING_BOOKED:\n 'PURCHASE_ORDERS_UNMARKED_AS_SHIPPING_BOOKED',\n SHIPMENT_DELETED: 'SHIPMENT_DELETED',\n FEEDBACK_LEFT_BY_SELLER: 'FEEDBACK_LEFT_BY_SELLER',\n FEEDBACK_LEFT_BY_BUYER: 'FEEDBACK_LEFT_BY_BUYER',\n RESET_ITEMS: 'RESET_ITEMS',\n SET_RESTARTED: 'SET_RESTARTED',\n SET_NEW_SHIPPING_PRICE: 'SET_NEW_SHIPPING_PRICE'\n};\n\nconst updateItems = (\n value,\n page,\n listViewType,\n memberMessagingParticipation\n) => ({\n type: actionTypes.UPDATE_ITEMS,\n payload: {\n value,\n page,\n listViewType,\n memberMessagingParticipation\n }\n});\n\nconst updateItemsWithError = () => ({\n type: actionTypes.UPDATE_ITEMS_WITH_ERROR\n});\n\nconst openMore = (itemId, pageName = false) => {\n if (pageName) {\n Analytics.trackEvent({\n category: pageName,\n action: 'Toggle',\n label: 'More'\n });\n }\n\n return {\n type: actionTypes.OPEN_MORE,\n payload: itemId\n };\n};\n\nconst selectItem = (itemId, listViewType, selectedFilterBar) => ({\n type: actionTypes.SELECT_ITEM,\n payload: {\n id: itemId,\n listViewType,\n selectedFilterBar\n }\n});\n\nconst resetSelectedCheckboxes = () => ({\n type: actionTypes.REMOVE_ALL_SELECTED\n});\n\nconst selectAllItems = (select, listViewType, selectedFilterBar, memberId) => ({\n type: actionTypes.SELECT_ALL_ITEMS,\n payload: {\n select,\n listViewType,\n selectedFilterBar,\n memberId\n }\n});\n\nconst removeItems = itemIds => ({\n type: actionTypes.REMOVE_ITEMS,\n payload: itemIds\n});\n\nconst updateURL = url => (dispatch, getState) => {\n const state = getState();\n const locationDescriptor = {\n pathname: url,\n search: qs.stringify(getAvailableQueryParams(state))\n };\n\n if (!window.location.search) {\n dispatch(replace(locationDescriptor));\n } else {\n dispatch(push(locationDescriptor));\n }\n};\n\nconst purchaseOrdersMarkAsPaidBySeller = (\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n) => ({\n type: actionTypes.PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER,\n payload: {\n ids: purchaseOrderIds,\n listViewType,\n messagingParticipation\n }\n});\n\nconst purchaseOrdersMarkAsPaidByBuyer = (purchaseOrderIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER,\n payload: {\n ids: purchaseOrderIds,\n listViewType: listViewType\n }\n});\n\nconst purchaseOrdersUnmarkAsPaidBySeller = (\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n) => ({\n type: actionTypes.PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER,\n payload: {\n ids: purchaseOrderIds,\n listViewType,\n messagingParticipation\n }\n});\n\nconst purchaseOrdersUnmarkAsPaidByBuyer = (purchaseOrderIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER,\n payload: {\n ids: purchaseOrderIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsMarkAsShippedBySeller = (transactionIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_MARKED_AS_SHIPPED_BY_SELLER,\n payload: {\n ids: transactionIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsUnmarkAsShippedBySeller = (transactionIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_UNMARKED_AS_SHIPPED_BY_SELLER,\n payload: {\n ids: transactionIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsUnmarkAsShippingBooked = (\n purchaseOrderIds,\n listViewType\n) => ({\n type: actionTypes.PURCHASE_ORDERS_UNMARKED_AS_SHIPPING_BOOKED,\n payload: {\n ids: purchaseOrderIds,\n listViewType: listViewType\n }\n});\n\nconst transactionDeleteShipment = (purchaseOrderId, listViewType) => ({\n type: actionTypes.SHIPMENT_DELETED,\n payload: {\n purchaseOrderId,\n listViewType\n }\n});\n\nconst buyerActiveItemsHide = (itemIds, listViewType) => ({\n type: actionTypes.BUYER_ACTIVE_ITEMS_HIDE,\n payload: {\n ids: itemIds,\n listViewType: listViewType\n }\n});\n\nconst buyerActiveItemsShow = (itemIds, listViewType) => ({\n type: actionTypes.BUYER_ACTIVE_ITEMS_SHOW,\n payload: {\n ids: itemIds,\n listViewType: listViewType\n }\n});\n\nconst purchaseOrdersHiddenBySeller = (purchaseOrderIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_HIDDEN_BY_SELLER,\n payload: {\n ids: purchaseOrderIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsHiddenByBuyer = (transactionIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_HIDDEN_BY_BUYER,\n payload: {\n ids: transactionIds,\n listViewType: listViewType\n }\n});\n\nconst purchaseOrdersShownBySeller = (purchaseOrderIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_SHOWN_BY_SELLER,\n payload: {\n ids: purchaseOrderIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsShownByBuyer = (transactionIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_SHOWN_BY_BUYER,\n payload: {\n ids: transactionIds,\n listViewType: listViewType\n }\n});\n\nconst unsoldItemsHidden = (itemIds, listViewType) => ({\n type: actionTypes.ITEM_HIDDEN,\n payload: {\n ids: itemIds,\n listViewType: listViewType\n }\n});\n\nconst unsoldItemsShown = (itemIds, listViewType) => ({\n type: actionTypes.ITEM_SHOWN,\n payload: {\n ids: itemIds,\n listViewType: listViewType\n }\n});\n\nconst feedbackLeftBySeller = (transactionId, listViewType) => ({\n type: actionTypes.FEEDBACK_LEFT_BY_SELLER,\n payload: {\n id: transactionId,\n listViewType: listViewType\n }\n});\n\nconst feedbackLeftByBuyer = (transactionId, listViewType) => ({\n type: actionTypes.FEEDBACK_LEFT_BY_BUYER,\n payload: {\n id: transactionId,\n listViewType: listViewType\n }\n});\n\nconst resetMyTraderaItems = () => ({\n type: actionTypes.RESET_ITEMS\n});\n\nconst cancelItem = item => dispatch => {\n dispatch(myTraderaActions.searching(true));\n endItems([item.itemId])\n .then(response => {\n if (response && response.itemId) {\n dispatch(removeItems(response.itemId));\n }\n dispatch(resetSelectedCheckboxes());\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst setRestarted = (itemIds, listViewType) => ({\n type: actionTypes.SET_RESTARTED,\n payload: {\n itemIds: itemIds,\n listViewType: listViewType\n }\n});\n\n/**\n * Tmp function until backend has changed its api\n * Manipulate paging params before sending to API;\n * @param {object} params - current state.filters.modifiers;\n */\nconst changeParamsForBackend = params => {\n const skip =\n params.paging && params.paging.page > 0\n ? (params.paging.page - 1) * params.paging.size\n : 0;\n const take =\n params.paging && params.paging.page > 0 ? params.paging.size * 1 : 25;\n\n const newPaging = {\n skip: skip < 0 ? 0 : skip,\n take: take\n };\n\n return {\n ...params,\n paging: newPaging\n };\n};\n\nconst runSearch = (\n page,\n scrollToInitialScroll = false,\n listViewType,\n waitForBackend = false,\n dontModifyHistory = true\n) => async (dispatch, getState) => {\n if (!featureToggles.isMyTraderaElasticEnabled) {\n return;\n }\n\n const endPoint = page && page.searchUrl;\n\n if (!endPoint) {\n return;\n }\n\n const search = async () => {\n const state = getState();\n\n dispatch(myTraderaActions.searching(true));\n dispatch(myTraderaActions.error(false));\n dispatch(purchaseOrderActions.resetPurchaseOrder());\n dispatch(resetMyTraderaItems());\n dispatch(resetSelectedCheckboxes());\n\n try {\n const modifiers = selectFiltersState(state).modifiers;\n\n const data = await fetch(endPoint, {\n body: JSON.stringify(changeParamsForBackend(modifiers))\n });\n dispatch(\n updateItems(\n data,\n page.pageName,\n listViewType,\n selectMyTraderaState(state).memberMessagingParticipation\n )\n );\n\n if (scrollToInitialScroll === true) {\n myTraderaActions.scrollToInitialScroll();\n }\n dispatch(myTraderaActions.searching(false));\n return dispatch(myTraderaActions.error(false));\n } catch (error) {\n dispatch(updateItemsWithError());\n if (dontModifyHistory === false) {\n updateURL(\n dispatch,\n page.url,\n selectFiltersState(state).modifiers\n );\n }\n handleError(dispatch, error);\n }\n };\n\n // This is a hack to enable delay of searches since sometimes when modifying an item\n // outside of the SPA world, it could take some time for the backend to catch up\n if (waitForBackend === true) {\n setTimeout(search, 3000);\n } else {\n search();\n }\n};\n\nconst rebuildList = () => (dispatch, getState) => {\n const existingState = { ...selectMyTraderaItemsState(getState()) };\n if (!existingState.itemsByID) {\n return dispatch(myTraderaActions.error(true));\n }\n const state = getState();\n\n const pageName =\n selectMyTraderaState(state).page &&\n selectMyTraderaState(state).page[\n selectRouterState(state).location.pathname\n ] &&\n selectMyTraderaState(state).page[\n selectRouterState(state).location.pathname\n ].pageName;\n const items = existingState.itemsOrderedByID.map(\n i => existingState.itemsByID[i]\n );\n const newState = {\n currentTime: existingState.currentTime,\n paging: existingState.paging,\n statistics: existingState.statistics,\n items: items\n };\n dispatch(\n updateItems(\n newState,\n pageName,\n selectCookiesState(getState()).LIST_VIEW_TYPE\n )\n );\n};\n\nconst contactHighestBidder = (item, sellerEmail) => () => {\n const payload = {\n modalTitle: 'Kontakta högsta budgivare',\n messageSubject: `Meddelande från säljare: ${item.listing.shortDescription}`,\n itemEnddate: item.listing.endDate.formatted,\n itemId: item.itemId,\n itemImageUrl: item.listing.images.main.medium,\n itemTitle: item.listing.shortDescription,\n receiverMemberAlias: item.bidInformation.leadingBidder.alias,\n receiverMemberId: item.bidInformation.leadingBidder.id,\n senderMemberEmail: sellerEmail,\n businessWarning: false,\n reloadAfterClose: true\n };\n\n triot.bus.trigger('ui:contact-modal:show-modal', payload);\n};\n\n// From the more-menu\nconst buyerActiveItemsHideItems = itemIds => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.BUYER_ACTIVE_ITEMS_HIDE, {\n body: JSON.stringify({ ids: itemIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(removeItems(itemIds));\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\n// From the more-menu\nconst buyerActiveItemsShowItems = itemIds => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.BUYER_ACTIVE_ITEMS_SHOW, {\n body: JSON.stringify({ ids: itemIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(removeItems(itemIds));\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst markPurchaseOrdersAsPaidBySeller = (\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.SELLER_MARK_PAID, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n purchaseOrdersMarkAsPaidBySeller(\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n )\n );\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst markPurchaseOrdersAsPaidByBuyer = (\n purchaseOrderIds,\n listViewType\n) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.BUYER_MARK_PAID, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n purchaseOrdersMarkAsPaidByBuyer(purchaseOrderIds, listViewType)\n );\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst unmarkPurchaseOrdersAsPaidBySeller = (\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.SELLER_UNMARK_PAID, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n purchaseOrdersUnmarkAsPaidBySeller(\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n )\n );\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst unmarkPurchaseOrdersAsPaidByBuyer = (\n purchaseOrderIds,\n listViewType\n) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.BUYER_UNMARK_PAID, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n purchaseOrdersUnmarkAsPaidByBuyer(\n purchaseOrderIds,\n listViewType\n )\n );\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellingUnmarkAsShippingBooked = (\n purchaseOrderIds,\n listViewType\n) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.UNMARK_BOOKED, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n transactionsUnmarkAsShippingBooked(\n purchaseOrderIds,\n listViewType\n )\n );\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellingDeleteShipment = (\n shipmentId,\n purchaseOrderId,\n listViewType\n) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.DELETE_SHIPMENT, {\n body: JSON.stringify({ shipmentId: shipmentId })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(transactionDeleteShipment(purchaseOrderId, listViewType));\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellingMarkAsShipped = (transactionIds, listViewType) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.MARK_SHIPPED, {\n body: JSON.stringify({ ids: transactionIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n transactionsMarkAsShippedBySeller(transactionIds, listViewType)\n );\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellingUnmarkAsShipped = (transactionIds, listViewType) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n\n fetch(URLS.UNMARK_SHIPPED, {\n body: JSON.stringify({ ids: transactionIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n transactionsUnmarkAsShippedBySeller(\n transactionIds,\n listViewType\n )\n );\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellingLeaveFeedback = (item, listViewType) => () => {\n const payload = {\n action: 'LeaveFeedbackAsSeller',\n ids: [item.transaction.transactionId],\n itemId: item.itemId,\n listViewType: listViewType\n };\n triot.bus.trigger('ui:list-item-action:on-leave-single-feedback', payload);\n return payload;\n};\n\nconst sellerUnhideTransaction = (\n purchaseOrderIds,\n listViewType\n) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.SELLER_SHOW, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n purchaseOrdersShownBySeller(purchaseOrderIds, listViewType)\n );\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst buyerUnhideTransaction = (transactionIds, listViewType) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.BUYER_SHOW, {\n body: JSON.stringify({ ids: transactionIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(transactionsShownByBuyer(transactionIds, listViewType));\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellerHideTransaction = (purchaseOrderIds, listViewType) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.SELLER_HIDE, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(\n purchaseOrdersHiddenBySeller(purchaseOrderIds, listViewType)\n );\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst buyerHideTransaction = (transactionIds, listViewType) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.BUYER_HIDE, {\n body: JSON.stringify({ ids: transactionIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(transactionsHiddenByBuyer(transactionIds, listViewType));\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellerUnhideUnsold = (itemIds, listViewType) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.UNSOLDSHOW, {\n body: JSON.stringify({ ids: itemIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(unsoldItemsShown(itemIds, listViewType));\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst sellerHideUnsold = (itemIds, listViewType) => dispatch => {\n dispatch(myTraderaActions.searching(true));\n fetch(URLS.UNSOLDHIDE, {\n body: JSON.stringify({ ids: itemIds })\n })\n .then(() => {\n dispatch(myTraderaActions.error(false));\n dispatch(unsoldItemsHidden(itemIds, listViewType));\n dispatch(myTraderaActions.searching(false));\n return;\n })\n .catch(error => handleError(dispatch, error));\n};\n\nconst buyingLeaveFeedback = (item, listViewType) => () => {\n const payload = {\n action: 'LeaveFeedbackAsBuyer',\n ids: [item.transaction.transactionId],\n itemId: item.itemId,\n listViewType: listViewType\n };\n triot.bus.trigger('ui:list-item-action:on-leave-single-feedback', payload);\n return payload;\n};\n\nconst setNewShippingPrice = (purchaseOrderId, shippingProvider, newPrice) => ({\n type: actionTypes.SET_NEW_SHIPPING_PRICE,\n purchaseOrderId,\n shippingProvider,\n newPrice\n});\n\nexport default {\n resetMyTraderaItems,\n transactionsUnmarkAsShippedBySeller,\n transactionsMarkAsShippedBySeller,\n handleError,\n actionTypes,\n cancelItem,\n buyerActiveItemsHide,\n buyerActiveItemsShow,\n buyerActiveItemsHideItems, // More menu\n buyerActiveItemsShowItems, // More menu\n updateItems,\n resetSelectedCheckboxes,\n openMore,\n updateURL,\n runSearch,\n selectItem,\n removeItems,\n selectAllItems,\n contactHighestBidder,\n markPurchaseOrdersAsPaidBySeller,\n unmarkPurchaseOrdersAsPaidBySeller,\n rebuildList,\n sellerUnhideTransaction,\n sellerHideTransaction,\n sellerUnhideUnsold,\n sellerHideUnsold,\n sellingMarkAsShipped,\n sellingUnmarkAsShipped,\n sellingUnmarkAsShippingBooked,\n sellingDeleteShipment,\n sellingLeaveFeedback,\n feedbackLeftBySeller,\n feedbackLeftByBuyer,\n markPurchaseOrdersAsPaidByBuyer,\n unmarkPurchaseOrdersAsPaidByBuyer,\n buyerUnhideTransaction,\n buyerHideTransaction,\n buyingLeaveFeedback,\n setRestarted,\n setNewShippingPrice,\n purchaseOrdersMarkAsPaidBySeller,\n purchaseOrdersUnmarkAsPaidBySeller,\n purchaseOrdersMarkAsPaidByBuyer,\n purchaseOrdersUnmarkAsPaidByBuyer,\n changeParamsForBackend\n};\n","export const getSyiSlice = state => state.views.syi;\n","export const getAllProviders = state =>\n state.primaryShippingProviders.concat(state.secondaryShippingProviders);\n\nexport const getAllProducts = state =>\n getAllProviders(state).flatMap(provider => provider.products);\n\nconst getAllVariants = state =>\n getAllProducts(state).flatMap(({ variants }) => variants);\n\nexport const getPrimaryOrSecondaryProducts = (state, onlyPrimary) =>\n (onlyPrimary\n ? state.primaryShippingProviders\n : state.secondaryShippingProviders\n ).flatMap(provider => provider.products);\n\nexport const getSelectedProduct = (state, onlyPrimary) =>\n getPrimaryOrSecondaryProducts(state, onlyPrimary).find(\n ({ selected }) => selected === true\n );\n\nexport const getVariant = (state, { type, productId }) =>\n getAllVariants(state).find(\n variant => variant.type === type && variant.id === productId\n );\n","import myTraderaItemActions from '../state/actions/my-tradera-items';\nimport _ from 'underscore';\nimport dayjs from 'dayjs';\nimport featureToggles from '../utils/feature-toggles';\nimport { getMessagingThreadLink } from './messaging-helpers';\nimport myTraderaActions from '../state/actions/my-tradera';\nimport purchaseOrderActions from '../state/actions/purchase-order';\nimport { openModal } from 'tradera-state/ui/action-creators';\nimport { types } from './item-actions-helper';\nimport { isNormalListViewType } from './item-helper';\nimport { SINGLE_FEEDBACK_DIALOG_ID } from '../components/leave-feedback/single-feedback-dialog';\n\nconst getId = item => item.key;\nconst getIds = item => [item.itemId];\n\nconst isTakeAway = item => {\n return (\n (item.transaction.selectedShipping &&\n item.transaction.selectedShipping.isTakeaway) ||\n (item.transaction.shippingDiscount &&\n item.transaction.shippingDiscount.isTakeaway)\n );\n};\n\n// isPrimaryAction = will be primary action unless one before has not already been set as primary action\n// Hence, the order of the actions matter.\nconst commonActions = item => ({\n sellSimilar: () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Sälj liknande',\n getTranslatedLabel: t => t('myt_itemCard_actions_sellSimilar'),\n url: `/selling/sell-similar/${item.itemId}`,\n gaLabel: 'SellSimilar',\n isVisible: () => true,\n isPrimaryAction: () => true\n })\n});\n\nconst hasTransactionDateNewerThen60Days = item => {\n const dateLimit = dayjs().subtract(60, 'day');\n return dayjs(item.transaction?.transactionDate?.date).isAfter(dateLimit);\n};\n\nexport const soldActions = (\n item,\n listViewType,\n memberId,\n memberMessagingParticipation\n) => {\n const common = commonActions(item);\n const actions = [\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Ändra fraktpris',\n getTranslatedLabel: t =>\n item.haveCombinedShipping && item.haveMultipleRows\n ? item.transaction.shippingDiscount\n ? t(\n 'myt_itemCard_actions_update_combinedshipping_change'\n )\n : t('myt_itemCard_actions_update_combinedshipping')\n : t('myt_itemCard_actions_update_shipping'),\n dispatch: dispatch => {\n dispatch(\n myTraderaActions.openChangeShipping(\n item.transaction.purchaseOrderId\n )\n );\n },\n gaLabel: 'ChangeShippingPriceSold',\n isVisible: () =>\n isNormalListViewType(listViewType) &&\n !item.haveMultipleRows &&\n !item.transaction.sellerState.paid,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Orderinformation',\n getTranslatedLabel: t => t('myt_itemCard_actions_orderInformation'),\n url: `/my/sold/buyer-info?purchaseOrderId=${item.transaction.purchaseOrderId}`,\n gaLabel: 'BuyerInfo',\n isVisible: () =>\n !!item.transaction.purchaseOrderId && !item.haveMultipleRows,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Kontakta köpare',\n getTranslatedLabel: t => t('myt_itemCard_actions_contactBuyer'),\n dispatch: dispatch => {\n const recipientId = item.seller.id;\n const src = getMessagingThreadLink(\n recipientId,\n item.transaction.buyer.id,\n item.itemId,\n {\n traderaUserId: recipientId,\n singleThread: true,\n openForm: true,\n source: 'contact_buyer'\n }\n );\n const title = 'Kontakta köpare';\n dispatch(\n myTraderaActions.openMessagingModal({\n title,\n src,\n recipientId,\n item\n })\n );\n },\n gaLabel: 'ContactBuyer',\n isVisible: () => {\n return (\n !item.haveMultipleRows &&\n featureToggles.isMessagingEnabled &&\n featureToggles.isMessagingBuyerButtonsEnabled &&\n memberMessagingParticipation &&\n item.transaction.purchaseOrderId &&\n item.transaction.buyer\n );\n },\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Markera som betald',\n getTranslatedLabel: t => t('myt_itemCard_actions_markAsPaid'),\n dispatch: dispatch =>\n dispatch(\n myTraderaItemActions.markPurchaseOrdersAsPaidBySeller(\n [item.transaction.purchaseOrderId],\n listViewType,\n memberMessagingParticipation\n )\n ),\n gaLabel: 'MarkAsPaid',\n isVisible: () => {\n if (item.transaction.isPaidWithIntegratedPaymentOption) {\n return false;\n }\n return !item.transaction.sellerState.paid;\n },\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Boka frakt',\n getTranslatedLabel: t => t('myt_itemCard_actions_bookShipping'),\n url: `/my/shipping?purchaseOrderId=${item.transaction.purchaseOrderId}&originUrl=%2fmy%2fsold`,\n /*\n * @todo\n */\n gaLabel: 'BookShipping',\n isVisible: () => {\n if (\n item.haveMultipleRows ||\n item.transaction.sellerState.shippingBooked ||\n item.transaction.sellerState.shipped ||\n item.transaction.hasUnpaidShipping ||\n item.isArchived\n ) {\n return false;\n }\n return true;\n },\n isPrimaryAction: () => {\n return (\n !item.transaction.hasUnpaidShipping &&\n !isTakeAway(item) &&\n !item.isArchived\n );\n }\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Betala frakt',\n getTranslatedLabel: t => t('myt_itemCard_actions_payShipping'),\n url: item.transaction.unpaidShippingUrl || `/my/shipping/checkout`,\n gaLabel: 'PayShipping',\n isVisible: () => item.transaction.hasUnpaidShipping,\n isPrimaryAction: () => item.transaction.hasUnpaidShipping\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avbryt fraktbokning',\n getTranslatedLabel: t => t('myt_itemCard_actions_deleteShipping'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.sellingDeleteShipment(\n item.transaction.unpaidShippingId,\n item.transaction.purchaseOrderId,\n listViewType\n )\n );\n },\n gaLabel: 'DeleteShipping',\n isVisible: () =>\n item.transaction.hasUnpaidShipping && !item.haveMultipleRows,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avmarkera som bokad',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_unmarkAsShippingBooked'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.sellingUnmarkAsShippingBooked(\n [item.transaction.purchaseOrderId],\n listViewType,\n memberMessagingParticipation\n )\n );\n },\n gaLabel: 'UnmarkAsShippingBooked',\n isVisible: () => {\n return (\n !item.transaction.trackingLink &&\n !item.haveMultipleRows &&\n item.transaction.sellerState.shippingBooked &&\n !item.transaction.sellerState.shipped\n );\n },\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Spåra paket',\n getTranslatedLabel: t => t('myt_itemCard_actions_trackShipment'),\n url: `/my/sold/buyer-info?purchaseOrderId=${item.transaction.purchaseOrderId}#shipping`,\n gaLabel: 'TrackShipment',\n isVisible: () =>\n !item.haveMultipleRows && !!item.transaction.trackingLink,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.EXTERNAL_LINK,\n label: 'Kvitto för frakt',\n getTranslatedLabel: t => t('myt_itemCard_actions_shippingReceipt'),\n url: `/my/shipping/receipt/${item.transaction.paidShipmentCheckoutId}`,\n gaLabel: 'ShippingReceipt',\n isVisible: () =>\n item.transaction.bookedShipment &&\n !item.haveMultipleRows &&\n item.transaction.bookedShipment.hasShipmentReceipt,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.EXTERNAL_LINK,\n label: 'Ladda ner fraktsedel',\n getTranslatedLabel: t => t('myt_itemCard_actions_shippingLabel'),\n url: `/my/shipping/label/${item.transaction.shipmentId}`,\n gaLabel: 'ShippingLabel',\n isVisible: () =>\n item.transaction.bookedShipment &&\n item.transaction.bookedShipment.hasShipmentLabel,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: isTakeAway(item)\n ? 'Avmarkera som hämtad'\n : 'Avmarkera som skickad',\n getTranslatedLabel: t =>\n isTakeAway(item)\n ? t('myt_itemCard_actions_unmarkAsCollected')\n : t('myt_itemCard_actions_unmarkAsSent'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.sellingUnmarkAsShipped(\n [item.transaction.transactionId],\n listViewType\n )\n );\n },\n gaLabel: 'UnmarkAsShipped',\n isVisible: () =>\n item.transaction.sellerState.shipped && !item.haveMultipleRows,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: isTakeAway(item)\n ? 'Markera som hämtad'\n : 'Markera som skickad',\n getTranslatedLabel: t =>\n isTakeAway(item)\n ? t('myt_itemCard_actions_markAsCollected')\n : t('myt_itemCard_actions_markAsSent'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.sellingMarkAsShipped(\n [item.transaction.transactionId],\n listViewType\n )\n );\n },\n gaLabel: 'MarkAsShipped',\n isVisible: () =>\n !item.transaction.sellerState.shipped && !item.haveMultipleRows,\n isPrimaryAction: () => !item.transaction.hasUnpaidShipping\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Lämna omdöme',\n getTranslatedLabel: t => t('myt_itemCard_actions_leaveFeedback'),\n dispatch: dispatch => {\n dispatch(\n featureToggles.isLeaveFeedbackReactEnabled\n ? openModal({\n modalId: SINGLE_FEEDBACK_DIALOG_ID,\n data: {\n transactionId: item.transaction.transactionId\n }\n })\n : myTraderaItemActions.sellingLeaveFeedback(\n item,\n listViewType\n )\n );\n },\n gaLabel: 'LeaveFeedbackOnBuyer',\n isVisible: () =>\n !item.transaction.sellerState.feedbackLeft &&\n !item.haveMultipleRows,\n isPrimaryAction: () => !item.haveMultipleRows\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Återbetala',\n getTranslatedLabel: t => t('myt_itemCard_actions_refund'),\n dispatch: dispatch =>\n dispatch(\n myTraderaActions.openSetDiscount(\n item.transaction.purchaseOrderId\n )\n ),\n gaLabel: 'Refund',\n isVisible: () =>\n !item.haveMultipleRows &&\n (item.transaction.isDiscountAfterPaymentSupported ||\n item.transaction.isRefundAllowed),\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Köparens omdömen',\n getTranslatedLabel: t => t('myt_itemCard_actions_buyerFeedback'),\n url: `/profile/feedback/${item.transaction.buyer.id}`,\n gaLabel: 'BuyerProfile',\n isVisible: () => !item.haveMultipleRows,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Se köphistorik',\n getTranslatedLabel: t => t('myt_itemCard_actions_purchaseHistory'),\n url: `/my/item/${item.itemId}/purchasehistory`,\n gaLabel: 'PurchaseHistory',\n isVisible: () =>\n !(\n item.listing.itemType === 'Auction' ||\n item.listing.itemType === 'AuctionBin' ||\n item.haveMultipleRows\n ),\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avmarkera som betald',\n getTranslatedLabel: t => t('myt_itemCard_actions_unmarkAsPaid'),\n dispatch: dispatch =>\n dispatch(\n myTraderaItemActions.unmarkPurchaseOrdersAsPaidBySeller(\n [item.transaction.purchaseOrderId],\n listViewType,\n memberMessagingParticipation\n )\n ),\n gaLabel: 'UnmarkAsPaid',\n isVisible: () => {\n if (item.transaction.isPaidWithIntegratedPaymentOption) {\n return false;\n }\n return (\n !!item.transaction.sellerState.paid &&\n !item.haveMultipleRows\n );\n },\n isPrimaryAction: () => true\n }),\n () => ({\n // \"UPI\" = \"Unpaid Item\"\n id: getId(item),\n type: types.LINK,\n label: 'Anmäl utebliven betalning',\n getTranslatedLabel: t => t('myt_itemCard_actions_reportUnpaidItem'),\n url: `/resolution/UPI/${item.transaction.transactionId}`,\n gaLabel: 'ReportUnpaidItem',\n isVisible: () =>\n (!item.haveMultipleRows ||\n !featureToggles.isUpiPurchaseOrderEnabled) &&\n item.transaction.sellerState.state === 'NotPaid' &&\n !item.transaction.sellerState.upiSubmitted &&\n hasTransactionDateNewerThen60Days(item),\n isPrimaryAction: () => true\n }),\n common.sellSimilar,\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Lämna rabatt',\n getTranslatedLabel: t => t('myt_itemCard_actions_giveDiscount'),\n dispatch: dispatch =>\n dispatch(\n myTraderaActions.openSetDiscount(\n item.transaction.purchaseOrderId\n )\n ),\n gaLabel: 'Discount',\n isVisible: () =>\n !item.haveMultipleRows &&\n (item.transaction.isDiscountBeforePaymentSupported ||\n item.transaction.isDiscountAllowed),\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Ångra dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_unhide'),\n dispatch: dispatch => {\n dispatch(\n isNormalListViewType(listViewType)\n ? purchaseOrderActions.updatePurchaseOrderHiddenForSeller(\n item.transaction.purchaseOrderId,\n false,\n listViewType\n )\n : myTraderaItemActions.sellerUnhideTransaction(\n [item.transaction.purchaseOrderId],\n listViewType\n )\n );\n },\n gaLabel: 'UnhideSold',\n isVisible: () =>\n isNormalListViewType(listViewType)\n ? !item.haveMultipleRows &&\n item.transaction?.sellerState.hidden\n : item.transaction && item.transaction.sellerState.hidden,\n isPrimaryAction: () => true\n })\n ];\n\n const hide = () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_hide'),\n dispatch: dispatch => {\n dispatch(\n isNormalListViewType(listViewType)\n ? purchaseOrderActions.updatePurchaseOrderHiddenForSeller(\n item.transaction.purchaseOrderId,\n true,\n listViewType\n )\n : myTraderaItemActions.sellerHideTransaction(\n [item.transaction.purchaseOrderId],\n listViewType\n )\n );\n },\n gaLabel: 'HideSold',\n isVisible: () =>\n isNormalListViewType(listViewType)\n ? !item.haveMultipleRows &&\n !item.transaction?.sellerState.hidden\n : item.transaction && !item.transaction.sellerState.hidden,\n isPrimaryAction: () => true\n });\n\n if (item.transaction && item.transaction.sellerState.state === 'Done') {\n // Make \"hide\" the primary action by setting it as the first element in the array\n actions.unshift(hide);\n } else {\n actions.push(hide);\n }\n\n return actions;\n};\n\nexport const activeSellerActions = (\n item,\n listViewType,\n memberId,\n memberMessagingParticipation\n) => {\n const isShopItem = item.listing.itemType === 'Shopitem';\n const common = commonActions(item);\n const actions = [\n () => ({\n id: getId(item),\n type: isShopItem ? types.DISABLED : types.LINK,\n tooltip: isShopItem\n ? 'Använd Sello för att ändra butiksannonser'\n : null,\n label: 'Ändra',\n getTranslatedLabel: t => t('myt_itemCard_actions_update'),\n url: `/selling/edit/${item.itemId}`,\n gaLabel: isShopItem\n ? 'EditShopItem'\n : item.bidInformation.bidCount === 0\n ? 'EditItem'\n : 'AddText',\n isVisible: () => true,\n isPrimaryAction: () => true\n }),\n common.sellSimilar,\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Kontakta högstbjudande',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_contactHighestBidder'),\n dispatch: dispatch => {\n const recipientId = item.seller.id;\n const src = getMessagingThreadLink(\n recipientId,\n item.bidInformation.leadingBidder &&\n item.bidInformation.leadingBidder.id,\n item.itemId,\n {\n traderaUserId: recipientId,\n singleThread: true,\n openForm: true,\n source: 'contact_highest_bidder'\n }\n );\n const title = 'Kontakta högstbjudande';\n dispatch(\n myTraderaActions.openMessagingModal({\n title,\n src,\n recipientId,\n item\n })\n );\n },\n gaLabel: 'ContactHighestBidder',\n isVisible: () => {\n return (\n featureToggles.isMessagingEnabled &&\n featureToggles.isMessagingBuyerButtonsEnabled &&\n memberMessagingParticipation &&\n item.bidInformation.bidCount > 0\n );\n },\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Kontakta högstbjudande',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_contactHighestBidder'),\n dispatch: (dispatch, props) => {\n dispatch(\n myTraderaItemActions.contactHighestBidder(\n item,\n props.sellerEmail\n )\n );\n },\n gaLabel: 'ContactHighestBidder',\n isVisible: () => {\n return (\n (!featureToggles.isMessagingEnabled ||\n !featureToggles.isMessagingBuyerButtonsEnabled ||\n !memberMessagingParticipation) &&\n item.bidInformation.bidCount > 0\n );\n },\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avbryt annons',\n getTranslatedLabel: t => t('myt_itemCard_actions_cancelItem'),\n dispatch: dispatch => {\n dispatch(myTraderaItemActions.cancelItem(item));\n },\n gaLabel: 'EndItem',\n isVisible: () => item.bidInformation.bidCount === 0,\n isPrimaryAction: () => true\n })\n ];\n return actions;\n};\n\nexport const unsoldActions = (item, listViewType, memberId) => {\n const actions = [\n () => ({\n id: getId(item),\n type: types.LINK,\n label: item.listing.restart.hasRestartedChild\n ? 'Sälj liknande'\n : 'Lägg upp igen',\n getTranslatedLabel: t =>\n item.listing.restart.hasRestartedChild\n ? t('myt_itemCard_actions_sellSimilar')\n : t('myt_itemCard_actions_restart'),\n url: item.listing.restart.hasRestartedChild\n ? `/selling/sell-similar/${item.itemId}`\n : `/selling/restart/${item.itemId}`,\n gaLabel: 'Restart',\n isVisible: () => true,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_hide'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.sellerHideUnsold(\n getIds(item),\n listViewType\n )\n );\n },\n gaLabel: 'HideUnsold',\n isVisible: () =>\n !item.transaction && !_.contains(item.hiddenByMember, memberId),\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Visa',\n getTranslatedLabel: t => t('myt_itemCard_actions_show'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.sellerUnhideUnsold(\n getIds(item),\n listViewType\n )\n );\n },\n gaLabel: 'UnhideUnsold',\n isVisible: () =>\n !item.transaction && _.contains(item.hiddenByMember, memberId),\n isPrimaryAction: () => true\n })\n ];\n return actions;\n};\n","import myTraderaItemActions from '../state/actions/my-tradera-items';\nimport myTraderaActions from '../state/actions/my-tradera';\nimport purchaseOrderActions from '../state/actions/purchase-order';\nimport featureToggles from '../utils/feature-toggles';\nimport { getMessagingThreadLink } from './messaging-helpers';\nimport { openModal } from 'tradera-state/ui/action-creators';\nimport { SINGLE_FEEDBACK_DIALOG_ID } from '../components/leave-feedback/single-feedback-dialog';\nimport { isNormalListViewType } from './item-helper';\n\nexport const types = {\n LINK: 'LINK',\n EXTERNAL_LINK: 'EXTERNAL_LINK',\n DISPATCH: 'DISPATCH'\n};\n\nconst getId = item => item.key;\nconst getIds = item => [item.itemId];\n\nconst fixItemUrlIfNeeded = (item = {}) => {\n // Fix this at backend?\n return item.itemUrl && item.itemUrl[0] !== '/'\n ? `/${item.itemUrl}`\n : item.itemUrl;\n};\n\nconst showModal = translationKey => {\n return myTraderaActions.openModal({\n bulkAction: 'MytListInfo',\n modal: {\n cssClass: 'fixed',\n icon: 'check',\n isSingleButton: true,\n getTranslatedMessage: t => t(translationKey)\n }\n });\n};\n\n// isPrimaryAction = will be primary action unless one before has not already been set as primary action\n// Hence, the order of the actions matter.\nconst commonActions = item => {\n const actions = {\n itemsFromSeller: () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Säljarens annonser',\n getTranslatedLabel: t => t('myt_itemCard_actions_itemsFromSeller'),\n url: `/profile/items/${item.seller.id}/${item.seller.cleanedAlias}`,\n gaLabel: 'SellerOtherItems',\n isVisible: () => !item.haveMultipleRows,\n isPrimaryAction: () => true\n })\n };\n return actions;\n};\n\nexport const activeBuyerActions = (item, listViewType, memberId) => {\n const common = commonActions(item);\n const actions = [\n () => {\n const isLeading =\n item.bidInformation &&\n item.bidInformation.leadingBidder &&\n item.bidInformation.leadingBidder.id === memberId;\n const fixedItemUrl = fixItemUrlIfNeeded(item);\n return {\n id: getId(item),\n type: types.LINK,\n label: isLeading ? 'Öka maxbud' : 'Lägg bud',\n getTranslatedLabel: t =>\n isLeading\n ? t('myt_itemCard_actions_raiseMaxBid')\n : t('myt_itemCard_actions_placeBid'),\n url: fixedItemUrl,\n gaLabel: isLeading ? 'RaiseMaxBid' : 'PlaceBid',\n buttonTheme: 'success',\n isVisible: () => true,\n isPrimaryAction: () => true\n };\n },\n common.itemsFromSeller,\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_hide'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.buyerActiveItemsHideItems(\n getIds(item),\n listViewType\n )\n );\n },\n gaLabel: 'HideBuyerActiveItem',\n isVisible: () =>\n (item.caller.leadingBidRemoved ||\n (item.bidInformation.leadingBidder &&\n item.bidInformation.leadingBidder.id !== memberId)) &&\n item.caller.hidden === false,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Visa',\n getTranslatedLabel: t => t('myt_itemCard_actions_show'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.buyerActiveItemsShowItems(\n getIds(item),\n listViewType\n )\n );\n },\n gaLabel: 'ShowBuyerActiveItem',\n isVisible: () => item.caller.hidden === true, // User should always be able to Show a hidden item, no matter if leading or not\n isPrimaryAction: () => true\n })\n ];\n return actions;\n};\n\nexport const boughtActions = (item, listViewType, memberId) => {\n const common = commonActions(item);\n const actions = [\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Betala',\n getTranslatedLabel: t => t('myt_itemCard_actions_pay'),\n dispatch: dispatch => {\n if (item.transaction.isPaymentExpired) {\n return dispatch(showModal('myt_orderinfo_paymentExpired'));\n }\n return (window.location.href = `/Shopping/Checkout/SelectPayment?purchaseOrderId=${item.transaction.purchaseOrderId}`);\n },\n gaLabel: 'Pay',\n buttonTheme: 'success',\n isVisible: () =>\n !item.transaction.buyerState.paid && !item.haveMultipleRows,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Markera som betald',\n getTranslatedLabel: t => t('myt_itemCard_actions_markAsPaid'),\n dispatch: dispatch => {\n if (item.transaction.isPaymentExpired) {\n return dispatch(showModal('myt_orderinfo_paymentExpired'));\n }\n dispatch(\n myTraderaItemActions.markPurchaseOrdersAsPaidByBuyer(\n [item.transaction.purchaseOrderId],\n listViewType\n )\n );\n },\n gaLabel: 'MarkAsPaid',\n isVisible: () =>\n !item.transaction.isPaidWithIntegratedPaymentOption &&\n !item.transaction.buyerState.paid &&\n !item.haveMultipleRows,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avmarkera som betald',\n getTranslatedLabel: t => t('myt_itemCard_actions_unmarkAsPaid'),\n dispatch: dispatch =>\n dispatch(\n myTraderaItemActions.unmarkPurchaseOrdersAsPaidByBuyer(\n [item.transaction.purchaseOrderId],\n listViewType\n )\n ),\n gaLabel: 'UnmarkAsPaid',\n isVisible: () =>\n !item.transaction.isPaidWithIntegratedPaymentOption &&\n item.transaction.buyerState.paid &&\n !item.transaction.isPaymentExpired &&\n !item.haveMultipleRows,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Lämna omdöme',\n getTranslatedLabel: t => t('myt_itemCard_actions_leaveFeedback'),\n dispatch: dispatch => {\n dispatch(\n featureToggles.isLeaveFeedbackReactEnabled\n ? openModal({\n modalId: SINGLE_FEEDBACK_DIALOG_ID,\n data: {\n transactionId: item.transaction.transactionId\n }\n })\n : myTraderaItemActions.buyingLeaveFeedback(\n item,\n listViewType\n )\n );\n },\n gaLabel: 'LeaveFeedbackOnSeller',\n isVisible: () =>\n !item.transaction.buyerState.feedbackLeft &&\n !item.haveMultipleRows,\n isPrimaryAction: () => !item.haveMultipleRows\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Orderbekräftelse',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_orderConfirmation'),\n url: `/Shopping/OrderConfirmation?purchaseOrderId=${item.transaction.purchaseOrderId}`,\n gaLabel: 'OrderConfirmation',\n isVisible: () =>\n !featureToggles.isBuyerOrderInformationEnabled &&\n !item.haveMultipleRows,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Orderinformation',\n getTranslatedLabel: t => t('myt_itemCard_actions_orderInformation'),\n url: `/my/order/${item.transaction.purchaseOrderId}`,\n gaLabel: 'OrderInformation',\n isVisible: () =>\n featureToggles.isBuyerOrderInformationEnabled &&\n !item.haveMultipleRows,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Kontakta säljare',\n getTranslatedLabel: t => t('myt_itemCard_actions_contactSeller'),\n dispatch: dispatch => {\n const src = getMessagingThreadLink(\n item.seller.id,\n memberId,\n item.itemId,\n {\n traderaUserId: item.seller.id,\n singleThread: true,\n openForm: true,\n source: 'contact_seller'\n }\n );\n const title = 'Kontakta säljare';\n const recipientId = item.seller.id;\n dispatch(\n myTraderaActions.openMessagingModal({\n title,\n src,\n recipientId,\n item\n })\n );\n },\n gaLabel: 'ContactSeller',\n isVisible: () =>\n featureToggles.isMessagingEnabled &&\n featureToggles.isMessagingSellerButtonsEnabled &&\n !item.haveMultipleRows,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.EXTERNAL_LINK,\n label: 'Spåra paket',\n getTranslatedLabel: t => t('myt_itemCard_actions_trackShipment'),\n url: `${item.transaction.trackingLink}`,\n gaLabel: 'BuyerTrackShipment',\n isVisible: () =>\n !item.haveMultipleRows &&\n !featureToggles.isBuyerOrderInformationEnabled &&\n !!item.transaction.trackingLink,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Spåra paket',\n getTranslatedLabel: t => t('myt_itemCard_actions_trackShipment'),\n url: `/my/order/${item.transaction.purchaseOrderId}#shipping`,\n gaLabel: 'BuyerTrackShipment',\n isVisible: () =>\n !item.haveMultipleRows &&\n featureToggles.isBuyerOrderInformationEnabled &&\n !!item.transaction.trackingLink,\n isPrimaryAction: () => true\n }),\n common.itemsFromSeller,\n () => ({\n // \"INR\" = \"Item Not Received\"\n id: getId(item),\n type: types.LINK,\n label: 'Anmäl utebliven vara',\n getTranslatedLabel: t =>\n t('myt_itemCard_actions_reportItemNotReceived'),\n url: `/resolution/INR/${item.transaction.transactionId}`,\n gaLabel: 'ReportItemNotReceived',\n isVisible: () =>\n !(\n featureToggles.isDisputesEntranceEnabled &&\n item.transaction.hasBuyerProtection\n ) && !item.transaction.buyerState.inr,\n isPrimaryAction: () => !item.haveMultipleRows\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Anmäl utebliven vara',\n getTranslatedLabel: t => t('myt_itemCard_actions_createDispute'),\n url: `/resolution/disputes/${item.transaction.transactionId}`,\n gaLabel: 'CreateDispute',\n isVisible: () =>\n featureToggles.isDisputesEntranceEnabled &&\n item.transaction.hasBuyerProtection &&\n !item.transaction.dispute,\n isPrimaryAction: () => !item.haveMultipleRows\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Ångra dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_unhide'),\n dispatch: dispatch => {\n dispatch(\n isNormalListViewType(listViewType)\n ? purchaseOrderActions.updatePurchaseOrderHiddenForBuyer(\n item.transaction.purchaseOrderId,\n [item.transaction.transactionId],\n false,\n listViewType\n )\n : myTraderaItemActions.buyerUnhideTransaction(\n [item.transaction.transactionId],\n listViewType\n )\n );\n },\n gaLabel: 'UnhideSold',\n isVisible: () =>\n isNormalListViewType(listViewType)\n ? !item.haveMultipleRows &&\n item.transaction?.buyerState.hidden\n : item.transaction.buyerState.hidden,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_hide'),\n dispatch: dispatch => {\n dispatch(\n isNormalListViewType(listViewType)\n ? purchaseOrderActions.updatePurchaseOrderHiddenForBuyer(\n item.transaction.purchaseOrderId,\n [item.transaction.transactionId],\n true,\n listViewType\n )\n : myTraderaItemActions.buyerHideTransaction(\n [item.transaction.transactionId],\n listViewType\n )\n );\n },\n gaLabel: 'HideSold',\n isVisible: () =>\n isNormalListViewType(listViewType)\n ? !item.haveMultipleRows &&\n !item.transaction?.buyerState.hidden\n : !item.transaction.buyerState.hidden,\n isPrimaryAction: () => true\n })\n ];\n return actions;\n};\n\nexport const lostActions = (item, listViewType) => {\n const common = commonActions(item);\n const actions = [\n common.itemsFromSeller,\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: t => t('myt_itemCard_actions_hide'),\n dispatch: dispatch => {\n dispatch(\n myTraderaItemActions.buyerActiveItemsHideItems(\n getIds(item),\n listViewType\n )\n );\n },\n gaLabel: 'HideBuyerLostItem',\n isVisible: () => true,\n isPrimaryAction: () => true\n })\n ];\n return actions;\n};\n","import {\n activeSellerActions,\n soldActions,\n unsoldActions\n} from '../../helpers/item-actions-helper-seller';\nimport {\n activeBuyerActions,\n boughtActions,\n lostActions\n} from '../../helpers/item-actions-helper-buyer';\nimport { PAGE_NAMES } from '../../constants/page';\nimport logger from 'packages/logger';\n\nexport const getActionsForItem = (\n item,\n listViewType,\n memberId,\n memberMessagingParticipation,\n pageName\n) => {\n const secondaryActions = [];\n let primaryAction = null;\n\n const checkAndAdd = action => {\n try {\n if (!action.isVisible) {\n throw 'Action is not compatible: ' + action.label;\n }\n if (!action.isVisible()) {\n return;\n }\n if (primaryAction === null && action.isPrimaryAction()) {\n primaryAction = action;\n } else {\n secondaryActions.push(action);\n }\n } catch (error) {\n logger(error);\n }\n };\n\n const resolveActions = potentialActions => {\n potentialActions.forEach(actionCreator => {\n const action = actionCreator();\n checkAndAdd(action);\n });\n return {\n primaryAction,\n secondaryActions\n };\n };\n\n let actionsForItem = [];\n switch (pageName) {\n case PAGE_NAMES.BuyerActiveItems:\n actionsForItem = resolveActions(\n activeBuyerActions(item, listViewType, memberId)\n );\n break;\n case PAGE_NAMES.BuyerPurchases:\n actionsForItem = resolveActions(\n boughtActions(item, listViewType, memberId)\n );\n break;\n case PAGE_NAMES.BuyerItemsLost:\n actionsForItem = resolveActions(lostActions(item, listViewType));\n break;\n case PAGE_NAMES.SellerSold:\n actionsForItem = resolveActions(\n soldActions(\n item,\n listViewType,\n memberId,\n memberMessagingParticipation\n )\n );\n break;\n case PAGE_NAMES.SellerUnsold:\n actionsForItem = resolveActions(\n unsoldActions(item, listViewType, memberId)\n );\n break;\n case PAGE_NAMES.SellerActive:\n actionsForItem = resolveActions(\n activeSellerActions(\n item,\n listViewType,\n memberId,\n memberMessagingParticipation\n )\n );\n break;\n default:\n throw 'Actions for item and pageName ' +\n pageName +\n ' is not defined';\n }\n return actionsForItem;\n};\n","import {\n getBuyerActiveItemsLabel,\n getBuyerItemsLostLabel,\n getActiveLabel,\n getSoldLabel,\n getUnsoldLabel,\n getPurchasesLabel\n} from './item-labels';\nimport { getActionsForItem } from './item-actions';\n\nimport { getColumns } from './item-columns';\nimport {\n buyerActiveItemsColumns,\n buyerPurchasesColumns,\n buyerItemsLostColumns,\n sellerActiveColumns,\n sellerSoldColumns,\n sellerUnsoldColumns\n} from './../../constants/column-definitions';\nimport { logger } from 'packages';\nimport { PAGE_NAMES } from '../../constants/page';\nimport { formatPrice } from '../../helpers/formats';\n\n/**\n * @param {boolean} declares if response is incorrect;\n */\nconst hasIncorrectResponse = response =>\n !response ||\n response === null ||\n response === undefined ||\n typeof response === 'string';\n\n/**\n * @param {object} response - copy of the response with empty values;\n */\nconst createReturnObject = response => ({\n paging: response.paging,\n itemsOrderedByID: [],\n itemsByID: {},\n statistics: response.statistics,\n currentTime: response.currentTime,\n currentMemberId: response.currentMemberId,\n sellerEmail: response.sellerEmail || ''\n});\n\n/**\n * TODO\n * Describe the relationship of transactionID / PurchaseID for future developers;\n *\n * @param {object} item - the item from webApi\n * @returns {object} The single item transformed with all properties set as expected for the front end.\n * @desc - the purchase\n */\nconst getItem = (\n item,\n labelFunc,\n columnFunc,\n listType,\n listViewType,\n memberId,\n memberMessagingParticipation,\n pageName\n) => ({\n ...item,\n key: item.transaction ? item.transaction.transactionId : item.itemId,\n bidInformation: {\n ...item.bidInformation,\n hasBids: item.bidInformation.bidCount > 0\n },\n label: labelFunc(item, memberId),\n actions: getActionsForItem(\n item,\n listViewType,\n memberId,\n memberMessagingParticipation,\n pageName\n ),\n columns: columnFunc(item, listType),\n shippingPrice: formatPrice(getCheapestShippingPrice(item)),\n leadingBidder:\n item.bidInformation.leadingBidder && item.isActive\n ? item.bidInformation.leadingBidder\n : null,\n buyer:\n item.transaction && item.transaction.buyer\n ? item.transaction.buyer\n : null,\n itemUrl:\n item.itemUrl.substring(0, 1) === '/' ? item.itemUrl : `/${item.itemUrl}`\n});\n\nconst getCheapestShippingPrice = item => {\n const shippingOptions = (item.listing.shippingOptions || [])\n .filter(\n option =>\n option.shippingType !== 'Takeaway' &&\n option.shippingType !== 'TakeawayOnly'\n )\n .map(({ shippingCost }) => shippingCost);\n\n return shippingOptions.length\n ? shippingOptions.reduce((prev, current) =>\n prev < current ? prev : current\n )\n : 0;\n};\n\n/**\n * @returns {Object} : Defines which labels and actions are used for each page\n */\nconst actionLabelMap = {\n [PAGE_NAMES.BuyerActiveItems]: {\n label: getBuyerActiveItemsLabel,\n columns: buyerActiveItemsColumns,\n pageName: PAGE_NAMES.BuyerActiveItems\n },\n [PAGE_NAMES.BuyerPurchases]: {\n label: getPurchasesLabel,\n columns: buyerPurchasesColumns,\n pageName: PAGE_NAMES.BuyerPurchases\n },\n [PAGE_NAMES.BuyerItemsLost]: {\n label: getBuyerItemsLostLabel,\n columns: buyerItemsLostColumns,\n pageName: PAGE_NAMES.BuyerItemsLost\n },\n [PAGE_NAMES.SellerActive]: {\n label: getActiveLabel,\n columns: sellerActiveColumns,\n pageName: PAGE_NAMES.SellerActive\n },\n [PAGE_NAMES.SellerSold]: {\n label: getSoldLabel,\n columns: sellerSoldColumns,\n pageName: PAGE_NAMES.SellerSold\n },\n [PAGE_NAMES.SellerUnsold]: {\n label: getUnsoldLabel,\n columns: sellerUnsoldColumns,\n pageName: PAGE_NAMES.SellerUnsold\n }\n};\n\nconst getSoldItem = (item, listViewType, messagingParticipation = false) =>\n getItem(\n item,\n getSoldLabel,\n getColumns(sellerSoldColumns[listViewType], listViewType),\n actionLabelMap[PAGE_NAMES.SellerSold].columns[listViewType],\n listViewType,\n '',\n messagingParticipation,\n PAGE_NAMES.SellerSold\n );\nconst getUnsoldItem = (item, listViewType) =>\n getItem(\n item,\n getUnsoldLabel,\n getColumns(sellerUnsoldColumns[listViewType], listViewType),\n actionLabelMap[PAGE_NAMES.SellerUnsold].columns[listViewType],\n listViewType,\n '',\n false,\n PAGE_NAMES.SellerUnsold\n );\nconst getPurchasedItem = (item, listViewType) =>\n getItem(\n item,\n getPurchasesLabel,\n getColumns(buyerPurchasesColumns[listViewType], listViewType),\n actionLabelMap[PAGE_NAMES.BuyerPurchases].columns[listViewType],\n listViewType,\n '',\n true,\n PAGE_NAMES.BuyerPurchases\n );\n\n/**\n * @param {object} response - from webApi\n * @param {string} listViewType\n * @param {string} memberId\n * @param {boolean} memberMessagingParticipation\n * @param {string} pageName\n * @description creates an ordered list of items, with ui state set for frontend;\n */\nconst getItemsInOrder = (\n response,\n listViewType,\n memberId,\n memberMessagingParticipation,\n pageName\n) => {\n if (!actionLabelMap[pageName]) {\n try {\n throw actionLabelMap[pageName];\n } catch (e) {\n logger(e);\n }\n }\n const newItems = createReturnObject(response);\n if (hasIncorrectResponse(response)) {\n return newItems;\n }\n\n Object.keys(response.items).forEach(key => {\n const item = response.items[key];\n let id = 1;\n switch (pageName) {\n case PAGE_NAMES.BuyerActiveItems:\n case PAGE_NAMES.BuyerItemsLost:\n case PAGE_NAMES.SellerUnsold:\n case PAGE_NAMES.SellerActive:\n id = item.itemId.toString();\n break;\n case PAGE_NAMES.BuyerPurchases:\n case PAGE_NAMES.SellerSold:\n id = item.transaction.transactionId.toString();\n break;\n default:\n try {\n throw `trying to update state on undefined (${pageName}) pageName`;\n } catch (e) {\n logger(e);\n }\n }\n newItems.itemsOrderedByID.push(id);\n newItems.itemsByID[id] = getItem(\n item, //item,\n actionLabelMap[pageName].label, //labelFunc,\n getColumns(\n actionLabelMap[pageName].columns[listViewType],\n listViewType\n ), //columnFunc,\n actionLabelMap[pageName].columns[listViewType], //listType,\n listViewType, //listViewType,\n memberId, //memberId,\n memberMessagingParticipation, // memberMessagingParticipation\n actionLabelMap[pageName].pageName //pageName\n );\n });\n\n return newItems;\n};\n\nexport default {\n getSoldItem,\n getUnsoldItem,\n getItemsInOrder,\n getPurchasedItem\n};\n","export const findKeysByPurchaseOrderId = items => purchaseOrderId => {\n return Object.keys(items).filter(\n key => items[key].transaction.purchaseOrderId === purchaseOrderId\n );\n};\n\nexport const findKeysByTransactionId = items => transactionId => {\n return Object.keys(items).filter(\n key => items[key].transaction.transactionId === transactionId\n );\n};\n\nexport const findKeysByItemId = items => itemId => {\n return Object.keys(items).filter(key => items[key].itemId === itemId);\n};\n","import myTraderaItemsSelector from './items';\nimport _ from 'underscore';\nimport { logger } from 'packages';\nimport {\n findKeysByPurchaseOrderId,\n findKeysByTransactionId,\n findKeysByItemId\n} from '../../helpers/commands-helper.js';\n\nconst getSoldItemStateFor = sellerState => {\n if (sellerState.shipped && sellerState.feedbackLeft) {\n return 'Done';\n }\n if (sellerState.shipped) {\n return 'Shipped';\n }\n return sellerState.paid ? 'Paid' : 'NotPaid';\n};\n\nconst updateStateAndLabels = (item, listViewType, messagingParticipation) => {\n if (listViewType === undefined) {\n try {\n throw 'updateStateAndLabels: listViewType === undefined, ' + item;\n } catch (e) {\n logger(e);\n }\n }\n item.transaction.sellerState.state = getSoldItemStateFor(\n item.transaction.sellerState\n );\n return myTraderaItemsSelector.getSoldItem(\n item,\n listViewType,\n messagingParticipation\n );\n};\n\nconst updateUnsoldLabelsAndActions = (item, listViewType) => {\n if (listViewType === undefined) {\n try {\n throw 'updateUnsoldLabelsAndActions: listViewType === undefined, ' +\n item;\n } catch (e) {\n logger(e);\n }\n }\n return myTraderaItemsSelector.getUnsoldItem(item, listViewType);\n};\n\nconst setPaidState = (\n flag,\n listViewType,\n messagingParticipation\n) => items => keys => {\n return keys.map(key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setPaidState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (e) {\n logger(e);\n }\n }\n\n item.transaction.sellerState.paid = flag;\n return updateStateAndLabels(item, listViewType, messagingParticipation);\n });\n};\n\nconst setShippedState = (flag, listViewType) => items => key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setShippedState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (e) {\n logger(e);\n }\n }\n\n item.transaction.sellerState.shipped = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setTransactionHiddenState = (flag, listViewType) => items => key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setTransactionHiddenState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.sellerState.hidden = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setUnsoldItemHiddenState = (flag, listViewType) => (\n items,\n memberId\n) => key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setUnsoldItemHiddenState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n if (!_.contains(item.hiddenByMember, memberId)) {\n item.removeFromList = true;\n }\n return updateUnsoldLabelsAndActions(item, listViewType, memberId);\n};\n\nconst setFeedback = (flag, listViewType) => items => key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setFeedback failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.sellerState.feedbackLeft = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setShippingBookedState = (flag, listViewType) => items => key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setShippingBookedState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.sellerState.shippingBooked = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setShippingDeletedState = listViewType => items => key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setShippingDeletedState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.hasUnpaidShipping = false;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setItemsHasRestartedChild = (flag, listViewType) => items => key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setItemHasRestartedChild failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.listing.restart.hasRestartedChild = flag;\n return updateUnsoldLabelsAndActions(item, listViewType);\n};\n\nexport const markAsPaidBySellerReducer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setPaidState(\n true,\n action.payload.listViewType,\n action.payload.messagingParticipation\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n stateItems\n );\n const updatedOrders = action.payload.ids\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedOrders.forEach(updatedItems => {\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n });\n\n return stateItems;\n};\n\nexport const unmarkAsPaidBySellerReducer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setPaidState(\n false,\n action.payload.listViewType,\n action.payload.messagingParticipation\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n stateItems\n );\n const updatedOrders = action.payload.ids\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedOrders.forEach(updatedItems => {\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n });\n\n return stateItems;\n};\n\nexport const markAsShippedReducer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setShippedState(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = action.payload.ids\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const unmarkAsShippedReducer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setShippedState(\n false,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = action.payload.ids\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const markTransactionAsHiddenBySellerReducer = (state, action) => {\n let updatedItems = { ...state.itemsByID };\n\n const updateChangedItems = setTransactionHiddenState(\n true,\n action.payload.listViewType\n )(updatedItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n updatedItems\n );\n action.payload.ids\n .flatMap(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n return updatedItems;\n};\n\nexport const markTransactionAsShownBySellerReducer = (state, action) => {\n let updatedItems = { ...state.itemsByID };\n\n const updateChangedItems = setTransactionHiddenState(\n false,\n action.payload.listViewType\n )(updatedItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n updatedItems\n );\n action.payload.ids\n .flatMap(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n return updatedItems;\n};\n\nexport const markItemAsHiddenReducer = (state, action) => {\n let updatedItems = { ...state.itemsByID };\n const updateChangedItems = setUnsoldItemHiddenState(\n true,\n action.payload.listViewType\n )(updatedItems, state.currentMemberId);\n const findUpdatedKeysByItemId = findKeysByItemId(updatedItems);\n action.payload.ids.map(findUpdatedKeysByItemId).map(updateChangedItems);\n return updatedItems;\n};\n\nexport const markItemAsShownReducer = (state, action) => {\n let updatedItems = { ...state.itemsByID };\n const updateChangedItems = setUnsoldItemHiddenState(\n false,\n action.payload.listViewType\n )(updatedItems);\n const findUpdatedKeysByItemId = findKeysByItemId(updatedItems);\n action.payload.ids.map(findUpdatedKeysByItemId).map(updateChangedItems);\n return updatedItems;\n};\n\nexport const feedbackLeftBySeller = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setFeedback(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = [action.payload.id]\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const unmarkAsShippingBooked = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setShippingBookedState(\n false,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n stateItems\n );\n const updatedItems = action.payload.ids\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const deleteShipment = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setShippingDeletedState(\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n stateItems\n );\n\n const updatedItems = [action.payload.purchaseOrderId]\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const setRestartedReducer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setItemsHasRestartedChild(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByItemId = findKeysByItemId(stateItems);\n const updatedItems = action.payload.itemIds\n .map(findUpdatedKeysByItemId)\n .map(updateChangedItems);\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n return stateItems;\n};\n\nexport const feedbacksLeftBySeller = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setFeedback(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = action.payload.submittables\n .map(submittable => submittable.transactionId)\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n","import myTraderaItemsSelector from './items';\nimport { logger } from 'packages';\nimport {\n findKeysByPurchaseOrderId,\n findKeysByTransactionId\n} from '../../helpers/commands-helper.js';\n\nconst updateStateAndLabels = (item, listViewType) => {\n if (listViewType === undefined) {\n try {\n throw 'updateStateAndLabels: listViewType === undefined, ' + item;\n } catch (e) {\n logger(e);\n }\n }\n return myTraderaItemsSelector.getPurchasedItem(item, listViewType);\n};\n\nconst setPaidState = (\n flag,\n listViewType,\n messagingParticipation\n) => items => keys => {\n return keys.map(key => {\n const item = items[key];\n if (!item) {\n try {\n throw `setPaidState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (e) {\n logger(e);\n }\n }\n\n item.transaction.buyerState.paid = flag;\n return updateStateAndLabels(item, listViewType, messagingParticipation);\n });\n};\n\nconst setTransactionHiddenState = (flag, listViewType) => items => key => {\n let item = items[key];\n if (!item) {\n try {\n throw `setTransactionHiddenState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.buyerState.hidden = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setFeedback = (flag, listViewType) => items => key => {\n let item = items[key];\n if (!item) {\n try {\n throw `setFeedback failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.buyerState.feedbackLeft = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nexport const markAsPaidByBuyerReducer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setPaidState(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n stateItems\n );\n const updatedOrders = action.payload.ids\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedOrders.forEach(updatedItems => {\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n });\n\n return stateItems;\n};\n\nexport const feedbackLeftByBuyer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setFeedback(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = [action.payload.id]\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const unmarkAsPaidByBuyerReducer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setPaidState(\n false,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId = findKeysByPurchaseOrderId(\n stateItems\n );\n const updatedOrders = action.payload.ids\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedOrders.forEach(updatedItems => {\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n });\n\n return stateItems;\n};\n\nexport const markTransactionAsHiddenByBuyerReducer = (state, action) => {\n let updatedItems = { ...state.itemsByID };\n\n const updateChangedItems = setTransactionHiddenState(\n true,\n action.payload.listViewType\n )(updatedItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(\n updatedItems\n );\n action.payload.ids\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n return updatedItems;\n};\n\nexport const markTransactionAsShownByBuyerReducer = (state, action) => {\n let updatedItems = { ...state.itemsByID };\n\n const updateChangedItems = setTransactionHiddenState(\n false,\n action.payload.listViewType\n )(updatedItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(\n updatedItems\n );\n action.payload.ids\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n return updatedItems;\n};\n\nexport const feedbacksLeftByBuyer = (state, action) => {\n let stateItems = { ...state.itemsByID };\n const updateChangedItems = setFeedback(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = action.payload.submittables\n .map(submittable => submittable.transactionId)\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach(updatedItem => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n","/* eslint-disable complexity, max-depth */\nimport myTraderaItems from '../actions/my-tradera-items';\nimport myTraderaItemsSelector from '../selectors/items';\nimport { listActions } from '../../helpers/list-helper';\nimport { actionTypes as purchaseOrderActionTypes } from '../action-types/purchase-order';\n\nimport {\n markAsPaidBySellerReducer,\n unmarkAsPaidBySellerReducer,\n markAsShippedReducer,\n unmarkAsShippedReducer,\n markItemAsHiddenReducer,\n markItemAsShownReducer,\n markTransactionAsHiddenBySellerReducer,\n markTransactionAsShownBySellerReducer,\n feedbackLeftBySeller,\n unmarkAsShippingBooked,\n deleteShipment,\n setRestartedReducer,\n feedbacksLeftBySeller\n} from '../selectors/seller-commands';\n\nimport {\n markAsPaidByBuyerReducer,\n feedbackLeftByBuyer,\n feedbacksLeftByBuyer,\n unmarkAsPaidByBuyerReducer,\n markTransactionAsHiddenByBuyerReducer,\n markTransactionAsShownByBuyerReducer\n} from '../selectors/buyer-commands';\n\nimport { findKeysByPurchaseOrderId } from '../../helpers/commands-helper.js';\n\nexport default (state, action) => {\n state = state || {};\n\n const updateItems = () => {\n return {\n ...state,\n ...myTraderaItemsSelector.getItemsInOrder(\n action.payload.value,\n action.payload.listViewType,\n action.payload.value.currentMemberId,\n action.payload.memberMessagingParticipation,\n action.payload.page\n )\n };\n };\n\n /**\n * Called when server has an error\n * @returns {object} with basic structure needed for application.\n */\n const updateItemsWithError = () => ({\n ...state,\n itemsByID: {},\n itemsOrderedByID: [],\n statistics: {\n values: []\n },\n paging: {\n ...state.paging,\n totalItems: 0\n }\n });\n\n /**\n * Tells State which More Menu to open / close;\n * @returns {object} - new state\n */\n const openMore = () => ({\n ...state,\n isSubMenuOpen:\n action.payload === state.isSubMenuOpen ? false : action.payload\n });\n\n /**\n * Selects a specific item for bulk action;\n * @returns {object} new state\n */\n const selectItem = () => {\n let bulkChecked = false;\n if (\n !state.selectedCheckboxes ||\n state.selectedCheckboxes.length === 0\n ) {\n return {\n ...state,\n selectedCheckboxes: [action.payload.id],\n bulkChecked: bulkChecked\n };\n } else {\n let chosenBoxes = [...state.selectedCheckboxes];\n if (state.selectedCheckboxes.indexOf(action.payload.id) > -1) {\n bulkChecked = false;\n chosenBoxes = chosenBoxes.filter(\n id => id !== action.payload.id\n );\n } else {\n chosenBoxes.push(action.payload.id);\n }\n\n return {\n ...state,\n selectedCheckboxes: chosenBoxes,\n bulkChecked: bulkChecked\n };\n }\n };\n\n /**\n * Selects all items for bulk action\n * @returns {object} new state\n */\n const selectAllItems = () => {\n const checkIfActive = item => {\n const actions = listActions(\n action.payload.listViewType,\n action.payload.memberId,\n action.payload.selectedFilterBar,\n 0,\n () => {}\n );\n return actions.isCheckboxActive(item);\n };\n if (action.payload.select === true || !state.bulkChecked) {\n const allItemsWithBulk = Object.keys(state.itemsByID)\n .filter(itemId => checkIfActive(state.itemsByID[itemId]))\n .map(id => {\n return parseInt(id, 10);\n });\n return {\n ...state,\n selectedCheckboxes: allItemsWithBulk,\n bulkChecked: true\n };\n }\n\n return {\n ...state,\n selectedCheckboxes: [],\n bulkChecked: false\n };\n };\n\n const openDelListingItem = () => ({\n ...state,\n isOpenDeleteItem:\n action.payload === false ? false : !state.isOpenDeleteItem\n });\n\n const removeAllSelected = () => ({\n ...state,\n selectedCheckboxes: [],\n bulkChecked: false\n });\n\n const removeItems = () => {\n const newItemsOrderedByID = state.itemsOrderedByID.filter(id =>\n action.payload.some(element => element.toString() === id.toString())\n ? false\n : true\n );\n const newItems = {};\n newItemsOrderedByID.map(\n item => (newItems[item] = state.itemsByID[item])\n );\n return {\n ...state,\n itemsByID: newItems,\n itemsOrderedByID: newItemsOrderedByID\n };\n };\n\n const setNewShippingPrice = () => {\n const items = { ...state.itemsByID };\n const itemKeysForPurchaseOrderId = findKeysByPurchaseOrderId(items)(\n action.purchaseOrderId\n );\n const shippingDiscount = {\n shippingProvider: action.shippingProvider,\n price: action.newPrice\n };\n itemKeysForPurchaseOrderId.map(key => {\n items[key].transaction.shippingDiscount = shippingDiscount;\n });\n return {\n ...state,\n itemsByID: items\n };\n };\n\n /**\n * Reset state to empty.\n */\n const resetItems = () => ({\n ...state,\n itemsByID: [],\n itemsOrderedByID: [],\n paging: {\n ...state.paging,\n totalItems: 0\n }\n });\n\n const poMarkedAsPaidBySeller = () => ({\n ...state,\n itemsByID: markAsPaidBySellerReducer(state, action)\n });\n const poUnmarkedAsPaidBySeller = () => ({\n ...state,\n itemsByID: unmarkAsPaidBySellerReducer(state, action)\n });\n const markedAsShippedBySeller = () => ({\n ...state,\n itemsByID: markAsShippedReducer(state, action)\n });\n const unmarkedAsShippedBySeller = () => ({\n ...state,\n itemsByID: unmarkAsShippedReducer(state, action)\n });\n const poHiddenBySeller = () => ({\n ...state,\n itemsByID: markTransactionAsHiddenBySellerReducer(state, action)\n });\n const poShownBySeller = () => ({\n ...state,\n itemsByID: markTransactionAsShownBySellerReducer(state, action)\n });\n const itemHidden = () => ({\n ...state,\n itemsByID: markItemAsHiddenReducer(state, action)\n });\n const itemShown = () => ({\n ...state,\n itemsByID: markItemAsShownReducer(state, action)\n });\n const feedbackLeftBySellerReducer = () => ({\n ...state,\n itemsByID: feedbackLeftBySeller(state, action)\n });\n const feedbackLeftByBuyerReducer = () => ({\n ...state,\n itemsByID: feedbackLeftByBuyer(state, action)\n });\n const poUnmarkedAsShippingBooked = () => ({\n ...state,\n itemsByID: unmarkAsShippingBooked(state, action)\n });\n const poShipmentDeleted = () => ({\n ...state,\n itemsByID: deleteShipment(state, action)\n });\n const poMarkedAsPaidByBuyer = () => ({\n ...state,\n itemsByID: markAsPaidByBuyerReducer(state, action)\n });\n const poUnmarkedAsPaidByBuyer = () => ({\n ...state,\n itemsByID: unmarkAsPaidByBuyerReducer(state, action)\n });\n const poHiddenByBuyer = () => ({\n ...state,\n itemsByID: markTransactionAsHiddenByBuyerReducer(state, action)\n });\n const poShownByBuyer = () => ({\n ...state,\n itemsByID: markTransactionAsShownByBuyerReducer(state, action)\n });\n const setRestarted = () => ({\n ...state,\n itemsByID: setRestartedReducer(state, action)\n });\n const feedbacksLeftBySellerReducer = () => ({\n ...state,\n itemsByID: feedbacksLeftBySeller(state, action)\n });\n const feedbacksLeftByBuyerReducer = () => ({\n ...state,\n itemsByID: feedbacksLeftByBuyer(state, action)\n });\n\n const def = () => state;\n\n const reducers = {\n [myTraderaItems.actionTypes.BUYER_ACTIVE_ITEMS_HIDE]: poHiddenByBuyer,\n [myTraderaItems.actionTypes.BUYER_ACTIVE_ITEMS_SHOW]: poShownByBuyer,\n [myTraderaItems.actionTypes.UPDATE_ITEMS]: updateItems,\n [myTraderaItems.actionTypes\n .UPDATE_ITEMS_WITH_ERROR]: updateItemsWithError,\n [myTraderaItems.actionTypes.OPEN_MORE]: openMore,\n [myTraderaItems.actionTypes.SELECT_ITEM]: selectItem,\n [myTraderaItems.actionTypes.SELECT_ALL_ITEMS]: selectAllItems,\n [myTraderaItems.actionTypes.OPEN_DEL_LISTING_ITEM]: openDelListingItem,\n [myTraderaItems.actionTypes.REMOVE_ALL_SELECTED]: removeAllSelected,\n [myTraderaItems.actionTypes.REMOVE_ITEMS]: removeItems,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER]: poMarkedAsPaidBySeller,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER]: poMarkedAsPaidByBuyer,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER]: poUnmarkedAsPaidBySeller,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER]: poUnmarkedAsPaidByBuyer,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_MARKED_AS_SHIPPED_BY_SELLER]: markedAsShippedBySeller,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_SHIPPED_BY_SELLER]: unmarkedAsShippedBySeller,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_HIDDEN_BY_SELLER]: poHiddenBySeller,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_HIDDEN_BY_BUYER]: poHiddenByBuyer,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_SHOWN_BY_SELLER]: poShownBySeller,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_SHOWN_BY_BUYER]: poShownByBuyer,\n [myTraderaItems.actionTypes.ITEM_HIDDEN]: itemHidden,\n [myTraderaItems.actionTypes.ITEM_SHOWN]: itemShown,\n [myTraderaItems.actionTypes\n .FEEDBACK_LEFT_BY_SELLER]: feedbackLeftBySellerReducer,\n [myTraderaItems.actionTypes\n .FEEDBACK_LEFT_BY_BUYER]: feedbackLeftByBuyerReducer,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_SHIPPING_BOOKED]: poUnmarkedAsShippingBooked,\n [myTraderaItems.actionTypes.SHIPMENT_DELETED]: poShipmentDeleted,\n [myTraderaItems.actionTypes.RESET_ITEMS]: resetItems,\n [myTraderaItems.actionTypes.SET_RESTARTED]: setRestarted,\n [purchaseOrderActionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER]: feedbacksLeftBySellerReducer,\n [purchaseOrderActionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER]: feedbacksLeftByBuyerReducer,\n [myTraderaItems.actionTypes.SET_NEW_SHIPPING_PRICE]: setNewShippingPrice\n };\n\n return !reducers[action.type] ? def() : reducers[action.type]();\n};\n\nexport const selectMyTraderaItemsState = state =>\n state.views.myTradera.myTraderaItems;\n","import React, { useCallback, useEffect, useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { useInView } from 'react-intersection-observer';\nimport axios from 'axios';\n\nimport { logger } from 'packages';\nimport { useUrlLocalizer } from 'tradera-lang/translate';\nimport {\n defaultJsonRequestHeaders,\n handleError,\n API_ERRORS,\n reloadOnUnauthorized\n} from 'tradera-utils/api';\nimport adsActions from 'tradera-state/ads/actions';\nimport itemActions from 'tradera-state/items/actions';\nimport uiActions from 'tradera-state/ui/actions';\nimport ItemCard from 'tradera-components/item-card/item-card';\nimport { lazyLoadSettings } from 'tradera-components/item-card/config';\nimport 'tradera-components/item-card/layout.scss';\nimport { ComponentsWithStitchAds } from 'tradera-apps/tradera/components/discover/components/search-results/items-with-stiched-ads';\nimport { touchWebClient } from 'tradera-utils/http';\n\nconst LOADING_STATES = {\n // can transition to is represented by '->'\n initializing: 'initializing', // -> loading\n loading: 'loading', // -> ready, end, error\n ready: 'ready', // -> loading\n end: 'end', // final state\n error: 'error' // final state\n};\n\nconst GPT_PAGE_NAMES = {\n CRP: 'crp'\n};\n\nfunction Recommendations(props) {\n const {\n addItems,\n children,\n className,\n collapseIfEmpty,\n createRequestUrl,\n enableQuickView,\n errorFallback,\n gtmLabel,\n infiniteScrollEnabled,\n isLoggedIn,\n itemCardProps,\n items,\n loader,\n noMoreItemsMarker,\n onError,\n onReachedEnd,\n openQuickView,\n preferredCurrency,\n setAds,\n showAds,\n title,\n toggleWishlist\n } = props;\n\n const [loadingState, setLoadingState] = useState(\n LOADING_STATES.initializing\n );\n const [currentPage, setCurrentPage] = useState(0);\n const [itemIds, setItemIds] = useState([]);\n\n const { toLocalizedUrl } = useUrlLocalizer();\n\n const [loadingTriggerRef, loadingTriggerInView] = useInView({\n rootMargin: '0px 0px 800px 0px', // Increase to load earlier\n threshold: 1.0\n });\n\n const addItemIds = useCallback(\n itemIdsToAdd => {\n setItemIds([...itemIds, ...itemIdsToAdd]);\n },\n [itemIds, setItemIds]\n );\n\n // For cancelling request when unmounting component:\n const cancelToken = useRef();\n useEffect(() => {\n cancelToken.current = axios.CancelToken.source();\n return cancelToken.current.cancel;\n }, []);\n\n const loadAds = useCallback(\n items => {\n if (!showAds) return;\n\n return touchWebClient\n .get(\n `/ads/get-gpt-data?gptPageName=${\n GPT_PAGE_NAMES.CRP\n }&categoryId=${items?.[0]?.categoryId ||\n 0}&itemsLength=${items?.length || 0}`\n )\n .then(({ data }) => {\n setAds({ gpt: data });\n return data;\n });\n },\n [setAds, showAds]\n );\n\n const getItems = useCallback(\n page => {\n const endpoint = toLocalizedUrl(createRequestUrl(page));\n axios\n .get(endpoint, {\n cancelToken: cancelToken.current.token,\n headers: defaultJsonRequestHeaders\n })\n .then(({ data }) => {\n const itemsInResponse = data?.items || [];\n if (page === 1) {\n loadAds(itemsInResponse);\n }\n if (itemsInResponse.length === 0) {\n if (itemIds.length === 0) {\n setLoadingState(LOADING_STATES.error);\n if (onError) onError();\n } else {\n setLoadingState(LOADING_STATES.end);\n if (onReachedEnd) onReachedEnd(itemIds);\n }\n } else {\n addItems(itemsInResponse);\n addItemIds(itemsInResponse.map(x => x.itemId));\n setLoadingState(LOADING_STATES.ready);\n }\n return itemsInResponse;\n })\n .catch(handleError())\n .catch(reloadOnUnauthorized)\n .catch(error => {\n switch (error.message) {\n case API_ERRORS.CANCELLED:\n return;\n case API_ERRORS.ABORTED:\n case API_ERRORS.NETWORK:\n break;\n default:\n logger(error);\n }\n if (itemIds.length === 0) {\n setLoadingState(LOADING_STATES.error);\n if (onError) onError();\n } else {\n setLoadingState(LOADING_STATES.end);\n }\n });\n },\n [\n toLocalizedUrl,\n createRequestUrl,\n loadAds,\n itemIds,\n onError,\n onReachedEnd,\n addItems,\n addItemIds\n ]\n );\n\n useEffect(() => {\n if (\n loadingState === LOADING_STATES.initializing ||\n (loadingState === LOADING_STATES.ready && loadingTriggerInView)\n ) {\n setLoadingState(LOADING_STATES.loading);\n const nextPage = currentPage + 1;\n setCurrentPage(nextPage);\n return getItems(nextPage);\n } else {\n return;\n }\n }, [\n currentPage,\n getItems,\n infiniteScrollEnabled,\n loadingState,\n loadingTriggerInView\n ]);\n\n const handleQuickViewClick = useCallback(\n itemId => {\n openQuickView(itemId, itemIds, gtmLabel);\n },\n [gtmLabel, itemIds, openQuickView]\n );\n\n if (collapseIfEmpty && loadingState === LOADING_STATES.error) {\n return null;\n }\n\n const itemComponents = itemIds.map((itemId, index) => (\n
    \n \n
    \n ));\n\n return (\n
    \n {title}\n \n {showAds ? (\n \n ) : (\n itemComponents\n )}\n \n {loadingState === LOADING_STATES.loading && loader}\n {loadingState === LOADING_STATES.error && errorFallback}\n {loadingState === LOADING_STATES.end && noMoreItemsMarker}\n {infiniteScrollEnabled &&\n loadingState !== LOADING_STATES.end &&\n loadingState !== LOADING_STATES.error && (\n \n )}\n {loadingState === LOADING_STATES.ready && children}\n
    \n );\n}\n\nRecommendations.propTypes = {\n className: PropTypes.string,\n collapseIfEmpty: PropTypes.bool,\n createRequestUrl: PropTypes.func.isRequired,\n enableQuickView: PropTypes.bool,\n errorFallback: PropTypes.node,\n infiniteScrollEnabled: PropTypes.bool,\n loader: PropTypes.node.isRequired,\n noMoreItemsMarker: PropTypes.node,\n onError: PropTypes.func,\n onReachedEnd: PropTypes.func,\n openQuickView: PropTypes.func,\n title: PropTypes.element,\n showAds: PropTypes.bool\n};\n\nRecommendations.defaultProps = {\n className: '',\n collapseIfEmpty: true,\n enableQuickView: false,\n infiniteScrollEnabled: false,\n showAds: false\n};\n\nconst mapStateToProps = state => ({\n items: state.items.cache,\n isLoggedIn: state.member.isLoggedIn,\n preferredCurrency: state.multiCurrency.preferredCurrency,\n enableQuickView: state.environment.featureSwitches['quick-view']\n});\n\nconst mapDispatchToProps = dispatch => ({\n addItems: items => dispatch(itemActions.add(items)),\n openQuickView: (itemId, itemIds, openedFrom) =>\n dispatch(uiActions.openQuickView({ itemIds, itemId, openedFrom })),\n setAds: ads => dispatch(adsActions.setAds(ads)),\n toggleWishlist: itemId => dispatch(itemActions.wishlist(itemId))\n});\n\nexport { Recommendations, LOADING_STATES };\nexport default connect(mapStateToProps, mapDispatchToProps)(Recommendations);\n","import Recommendations from './recommendations';\n\nexport default Recommendations;\nexport {\n recommendationsRequestBuilder,\n similarItemsRequestBuilder,\n similarItemsFromShopRequestBuilder,\n similarItemsFromCampaignRequestBuilder\n} from './recommendations-requests';\n","//jshint module : true\nimport actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case actionTypes.SET_ADS:\n if (!action || !action.type || !action.payload) return state;\n return {\n ...state,\n gpt: action.payload.gpt,\n adSenseQuery: action.payload.adSenseQuery,\n adSenseShoppingPublisherId:\n action.payload.adSenseShoppingPublisherId\n };\n case actionTypes.SET_TCF_LOADED:\n return {\n ...state,\n isTcfLoaded: true\n };\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.autoStartToken,\n isAutoStartAllowed: action.payload.isAutoStartAllowed\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.RECEIVE_TOP_LEVEL_CATEGORIES:\n return {\n ...state,\n topLevelCategories: 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 case actionTypes.HANDLE_TOP_LEVEL_CATEGORIES_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 isShopOwnedByCurrentMember:\n responseData?.itemsOnDisplay?.isShopOwnedByCurrentMember || false,\n itemsById: [],\n itemsOnDisplayById: [],\n mainText: responseData.mainText || null,\n pagination: responseData.pagination || null,\n fallbackUrl: responseData.fallbackUrl || null,\n totalItems: responseData.totalItems || 0,\n discoverTranslationResult: responseData.discoverTranslationResult || {},\n reduxContainer: responseData.reduxContainer || {}\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 return {\n ...state,\n error: null\n };\n };\n\n const receiveSearchResults = () => {\n const {\n payload: { result = {}, endpoint = null, queryParams = null }\n } = action;\n return {\n ...state,\n endpoint,\n error: null,\n hasResult: true,\n queryParams,\n ...normalize(result)\n };\n };\n\n const handleSearchResultsError = () => {\n return {\n ...state,\n error: action.payload,\n hasResult: true,\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 reset = () => {\n return action.payload.initialState;\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 [actionTypes.RESET]: reset\n };\n\n return !action || !action.type || !reducers[action.type]\n ? def()\n : reducers[action.type]();\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';\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 = {}, 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\n const wishListItemIds = new Set(state.wishListItemIds || []);\n if (exists) {\n wishListItemIds.add(itemId);\n } else {\n wishListItemIds.delete(itemId);\n }\n return {\n ...state,\n wishListItemIds\n };\n };\n\n const wishlistAddRange = () => {\n const {\n payload: { itemIds }\n } = action;\n const wishListItemIds = new Set(state.wishListItemIds || []);\n itemIds?.forEach(itemId => wishListItemIds.add(itemId));\n return {\n ...state,\n wishListItemIds\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.WISHLIST_ADD_RANGE]: wishlistAddRange,\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';\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","import actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n if (!action || !action.type) return state;\n const { payload } = action;\n switch (action.type) {\n case actionTypes.SET_PAGE_TYPE:\n return {\n ...state,\n type: payload\n };\n case actionTypes.SET_PAGE_META: {\n const newState = {\n ...state,\n ...payload\n };\n if (payload.metaTitleKey && payload.metaTitleData) {\n newState.metaTitle = null;\n } else if (payload.metaTitle) {\n newState.metaTitleKey = null;\n newState.metaTitleData = null;\n }\n return newState;\n }\n default:\n return state;\n }\n};\n","export default {\n brands: {\n items: [],\n status: 'NOT_FETCHED'\n },\n searches: {\n items: [],\n status: 'NOT_FETCHED'\n },\n recentSearches: {\n lastUpdated: null\n }\n};\n","import initialState from './initial-state';\n\nexport default (state = initialState, action) => {\n if (!action || !action.type) return state;\n switch (action.type) {\n case 'PERSONALISATION/SET_BRANDS':\n return {\n ...state,\n brands: {\n ...state.brands,\n items: action.items,\n status: action.status\n }\n };\n case 'PERSONALISATION/FETCH_BRANDS_STATUS':\n return {\n ...state,\n brands: {\n ...state.brands,\n status: action.status\n }\n };\n case 'PERSONALISATION/SET_SEARCHES':\n return {\n ...state,\n searches: {\n ...state.searches,\n items: action.items,\n status: action.status\n }\n };\n case 'PERSONALISATION/FETCH_SEARCHES_STATUS':\n return {\n ...state,\n searches: {\n ...state.searches,\n status: action.status\n }\n };\n case 'RECENT_SEARCHES_LAST_UPDATED':\n return {\n ...state,\n recentSearches: {\n lastUpdated: action.lastUpdated\n }\n };\n default:\n return state;\n }\n};\n","import dayjs from 'dayjs';\n\nconst 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 = {\n ...initialState,\n ...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 isNewDraft: !action.draft.draftId\n };\n break;\n }\n case 'SET_DRAFT_ID':\n newDraft = { ...state, draftId: action.payload };\n break;\n case 'SET_RESTART':\n newDraft = { ...state, restart: action.payload };\n break;\n case 'DISABLE_RESTART':\n newDraft = { ...state, restart: false };\n break;\n case 'SET_REFERENCE':\n newDraft = { ...state, reference: action.payload };\n break;\n case 'ADD_ADDITIONAL_DESCRIPTION':\n var newAdditionalDescriptions = state.additionalDescriptions\n ? [...state.additionalDescriptions]\n : [];\n newAdditionalDescriptions.push({ message: action.payload });\n newDraft = {\n ...state,\n additionalDescriptions: newAdditionalDescriptions\n };\n break;\n case 'SET_DRAFT_REASON':\n newDraft = { ...state, draftReason: action.payload };\n break;\n case 'SET_DRAFT_VERSION':\n newDraft = { ...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 case 'SET_DESCRIPTION_LANGUAGECODE':\n newDraft = {\n ...state,\n descriptionLanguageCodeIso2:\n action.payload.descriptionLanguageCodeIso2\n };\n break;\n case 'SET_CURRENCY':\n newDraft = {\n ...state,\n currency: action.payload.currency\n };\n break;\n default:\n return state;\n }\n if (JSON.stringify(state) != JSON.stringify(newDraft)) {\n newDraft.lastModifiedDate = dayjs().toISOString();\n }\n return newDraft;\n};\n","function createInitialState() {\n const initialState = {\n suggestionsAvailable: false,\n levels: new Array(4).fill({}),\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 = initialState.levels.map((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 ? 'syi_validation_missing_category'\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 return validate(createInitialState());\n }\n case 'CATEGORIES_LOADING': {\n const newLevels = [...state.levels];\n const newState = { ...state, levels: newLevels };\n newState.levels[action.index].loading = true;\n return validate(newState);\n }\n case 'CATEGORIES_LOADED': {\n const newLevels = [...state.levels];\n const newState = { ...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 = [...state.levels];\n const newState = { ...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 = [...state.levels];\n const newState = { ...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 = [...state.levels];\n const newState = { ...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 = [...state.levels];\n const newState = { ...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 = [...state.levels];\n const newState = { ...state, levels: newLevels };\n newState.levels[action.index].visible = action.value;\n return validate(newState);\n }\n case 'DISABLE_LEVEL': {\n const newLevels = [...state.levels];\n const newState = { ...state, levels: newLevels };\n newState.levels[action.index].disabled = true;\n return validate(newState);\n }\n case 'RESET_LEVEL': {\n const newLevels = [...state.levels];\n const newState = { ...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 = [...state.levels];\n const newState = {\n ...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 userData from 'tradera-apps/syi/script/app_react/services/user-data';\n\nlet _paymentOptions;\nlet _paymentOptionsPresentationData;\nlet 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 { text: 'Braintree', value: 'Braintree' }\n ];\n\n initialState = {\n displayPaymentOptions: '',\n paymentOptionGroups: [],\n selectedPaymentOptions: userData.braintree.isBraintreeOnly\n ? ['Braintree']\n : [],\n validationError: null,\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 = 'syi_validation_payment_mismatch';\n }\n } else {\n var paymentOptions = newState.selectedPaymentOptions;\n var hasAnyValidPayment = !!paymentOptions.length;\n newState.validationError = hasAnyValidPayment\n ? null\n : 'syi_validation_payment_missing';\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 = _paymentOptions\n .map(paymentOption => {\n var presentationData = _paymentOptionsPresentationData.find(\n pd => pd.value == paymentOption.paymentType\n );\n paymentOption.selected = state.uiCheckedPaymentOptions?.find(\n selectedPaymentOption =>\n selectedPaymentOption == paymentOption.paymentType\n );\n return { ...presentationData, ...paymentOption };\n })\n .filter(paymentOption => paymentOption && !!paymentOption.value)\n .filter(\n paymentOption =>\n state.takeawaySelected || paymentOption.value !== 'Cash'\n );\n\n state.displayPaymentOptions = filteredPaymentOptions\n .filter(po => po.selected)\n .map(po => po.text)\n .join(', ');\n var paymentOptionsTop = filteredPaymentOptions.filter(\n po => po.top || po.selected\n );\n state.selectedPaymentOptions = filteredPaymentOptions\n .filter(paymentOption => {\n if (!paymentOption || !paymentOption.value) {\n return false;\n }\n return paymentOption.selected;\n })\n .map(paymentOption => paymentOption.value);\n state.paymentOptionGroups = [\n {\n visible: true,\n paymentOptions: paymentOptionsTop,\n showToggle: filteredPaymentOptions.some(\n po => !po.top && !po.selected\n )\n },\n {\n visible: paymentOptionsTop.length === 0,\n paymentOptions: filteredPaymentOptions.filter(\n po => !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_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.offerTakeaway\n };\n shapePaymentOptions(newState);\n return validate(newState);\n }\n case 'ENSURE_ANY_PAYMENT_OPTION_FOR_CHARITY': {\n const newState = { ...state };\n const hasAnyValidPayment = newState.selectedPaymentOptions.some(\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","var initialState = {\n isPropertyEditMode: false,\n creationType: 'new',\n allErrorsVisible: false,\n isEditOfPublishedItem: false,\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 { ...initialState };\n case 'SET_IS_PROPERTY_EDIT_MODE':\n return { ...state, isPropertyEditMode: action.payload };\n case 'SET_CREATION_TYPE':\n return { ...state, creationType: action.payload };\n case 'SHOW_ALL_ERRORS':\n return { ...state, allErrorsVisible: true };\n case 'HIDE_ALL_ERRORS':\n return { ...state, allErrorsVisible: false };\n case 'SET_IS_EDIT_OF_PUBLISHED_ITEM':\n return { ...state, isEditOfPublishedItem: action.payload };\n case 'SET_PUBLISHED_ITEM_PENDING_VIP':\n return {\n ...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 {\n ...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 {\n ...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 {\n ...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 {\n ...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 {\n ...state,\n publishedItem: null,\n publishedItemPendingVip: null,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishPending: false,\n publishDelayed: false\n };\n case 'SET_CATEGORY_RESTRICTION':\n return { ...state, categoryRestriction: action.payload };\n case 'TOGGLE_MODAL':\n var newValue =\n state.openModal === action.payload ? null : action.payload;\n return { ...state, openModal: newValue };\n case 'SHOW_MODAL':\n return {\n ...state,\n openModal: action.modalId,\n openModalData: action.modalData\n };\n case 'HIDE_MODAL':\n return { ...state, openModal: null };\n case 'ENABLE_AUTOSAVE':\n return { ...state, autoSaveEnabled: true };\n case 'DISABLE_AUTOSAVE':\n return { ...state, autoSaveEnabled: false };\n case 'SET_DRAFT_CAN_BE_RESUMED':\n return { ...state, draftCanBeResumed: action.payload };\n case 'SET_ITEM_UPDATING':\n return { ...state, itemUpdating: action.payload };\n case 'SET_ITEM_UPDATED':\n return { ...state, itemUpdated: action.payload };\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 = { ...action.errors };\n break;\n case 'SET_ERROR':\n state = { ...state };\n state[action.propertyName] = action.error;\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 = {\n ...state,\n step1: e1 || undefined,\n step2: e2 || undefined,\n step3: e3 || undefined,\n step4: e4 || undefined\n };\n\n return state;\n};\n","const optionHasError = option => !option.type;\n\nexport const ensureGoodShippingOptions = shippingOptions => {\n shippingOptions = shippingOptions || [];\n return shippingOptions.find(optionHasError) ? [] : shippingOptions;\n};\n","import { validateValidShippingPrice } from './validate-valid-shipping-price';\n\nconst errors = {\n noShipping: 'syi_validation_shipping_no_shipping',\n empty: 'syi_validation_shipping_enter_method_and_cost',\n invalid: 'syi_validation_shipping_method_invalid',\n duplicate: 'syi_validation_shipping_method_identical',\n weight: 'syi_validation_shipping_enter_weight'\n};\n\nexport function validate(newState) {\n if (!newState.offerTakeaway && !newState.offerShipping) {\n newState.globalValidationError = errors.noShipping;\n newState.validationErrors = {\n global: errors.noShipping\n };\n return newState;\n }\n\n newState.globalValidationError = null;\n\n const validateProviders = providers => {\n let hasAnyNonValidOption = false;\n let hasAnyValidOption = false;\n let weightIsInvalid = false;\n providers.forEach(provider => {\n provider.products.forEach(product => {\n if (!product.selected || !newState.offerShipping) {\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 return { hasAnyNonValidOption, hasAnyValidOption, weightIsInvalid };\n };\n\n const primaryValidations = validateProviders(\n newState.primaryShippingProviders\n );\n const secondaryValidations = validateProviders(\n newState.secondaryShippingProviders\n );\n\n const getFirstValidationError = ({\n hasAnyNonValidOption,\n weightIsInvalid,\n hasAnyValidOption\n }) => {\n if (hasAnyNonValidOption) {\n return errors.invalid;\n }\n if (weightIsInvalid) {\n return errors.weight;\n }\n if (!hasAnyValidOption) {\n return errors.empty;\n }\n return null;\n };\n\n const getDuplicateError = () => {\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 }\n return null;\n };\n\n newState.primaryValidationError = newState.offerShipping\n ? getFirstValidationError(primaryValidations)\n : null;\n newState.secondaryValidationError =\n newState.offerShipping && newState.secondaryShippingOptionOpen\n ? getFirstValidationError(secondaryValidations) ||\n getDuplicateError()\n : null;\n\n const validationErrors = {};\n if (newState.primaryValidationError)\n validationErrors.primary = newState.primaryValidationError;\n if (newState.secondaryValidationError)\n validationErrors.secondary = newState.secondaryValidationError;\n newState.validationErrors = validationErrors;\n\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 : 'syi_validation_shipping_price_missing';\n }\n if (!isInt(so.cost)) {\n return 'syi_validation_shipping_amount_whole_number';\n }\n if (so.cost > 10000) {\n return 'syi_validation_shipping_max_price';\n }\n if (so.cost < 0) {\n return 'syi_validation_shipping_min_price';\n }\n return null;\n}\n\nfunction isInt(number) {\n return number % 1 === 0;\n}\n","import { getAllProducts } from './shipping-selectors';\n\nexport const getSelectedShippingOptions = state => {\n const result = state.offerShipping\n ? 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.selectedVariant?.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\n if (state.offerTakeaway) {\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 { createReducer } from '@reduxjs/toolkit';\nimport {\n getAllProducts,\n getPrimaryOrSecondaryProducts,\n getSelectedProduct\n} from './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 validationErrors: {},\n globalValidationError: null,\n primaryValidationError: null,\n secondaryValidationError: null,\n secondaryShippingOptionOpen: false,\n selectedShippingOptions: [],\n showPrimaryShippingCalculator: false,\n hasPrimaryCalculatorSuggestions: false,\n showSecondaryShippingCalculator: false,\n hasSecondaryCalculatorSuggestions: false,\n offerTakeaway: false,\n offerShipping: false,\n isLoadingProvidersWithProducts: false,\n defaultCalculatorDimensions: {\n height: 0,\n width: 0,\n length: 0,\n weight: 0\n },\n primaryCalculatorDimensions: null,\n secondaryCalculatorDimensions: null,\n forceFreeShipping: false,\n fromCountry: null\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 const products = getPrimaryOrSecondaryProducts(\n state,\n action.payload.primary\n );\n products.forEach(product => {\n // Clear previous selections\n product.selected = false;\n product.selectedVariant = null;\n product.productId = null;\n product.cost = state.forceFreeShipping ? 0 : null;\n product.weight = null;\n\n const suggestedProduct = action.payload.shippingProducts.find(\n p => p.type === product.type\n );\n if (suggestedProduct) {\n product.calculatorSuggestion = {\n description: suggestedProduct.description,\n cost: suggestedProduct.cost,\n additionalInfo: suggestedProduct.additionalInfo\n };\n } else {\n product.calculatorSuggestion = null;\n }\n });\n\n if (action.payload.primary) {\n state.hasPrimaryCalculatorSuggestions = true;\n } else {\n state.hasSecondaryCalculatorSuggestions = true;\n }\n\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n CLEAR_SUGGESTED_SHIPPING_PRODUCTS: (state, action) => {\n const products = getPrimaryOrSecondaryProducts(\n state,\n action.payload.primary\n );\n products.forEach(product => {\n const suggestion = product.calculatorSuggestion;\n product.calculatorSuggestion = null;\n if (product.selected) {\n // Clear automatic calculator suggestion selections,\n // but save selection for selected product if changed.\n if (!suggestion) {\n // No values are set from suggestion. Save selection\n return;\n }\n if (\n product.selectedVariant &&\n product.selectedVariant.price !== suggestion.cost\n ) {\n // Values are changes from suggestion. Save selection\n return;\n }\n if (\n product.selectedVariant?.price === suggestion.cost &&\n (product.cost || product.cost === 0)\n ) {\n // Own price set. Save selection\n return;\n }\n if (\n !product.selectedVariant &&\n product.cost !== suggestion.cost\n ) {\n // Own price set. Save selection\n return;\n }\n // No values are manually changed. Go ahead and remove selection\n }\n product.selectedVariant = null;\n product.productId = null;\n product.cost = state.forceFreeShipping ? 0 : null;\n product.weight = null;\n });\n\n if (action.payload.primary) {\n state.hasPrimaryCalculatorSuggestions = false;\n } else {\n state.hasSecondaryCalculatorSuggestions = false;\n }\n\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n RESET_SHIPPING_OPTIONS: state => {\n // TODO: primaryShippingOption is never set. Probably remove.\n state.primaryShippingOption = null;\n state.secondaryShippingOption = null;\n state.selectedShippingOptions = [];\n state.offerShipping = false;\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 product.cost = null;\n product.weight = null;\n });\n state.forceFreeShipping = false;\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 let isProductForOption = null;\n if (!product.variants || product.variants.length === 0) {\n isProductForOption = product.type === type;\n } else {\n isProductForOption = !!product.variants.find(\n x => x.id === productId && x.type === type\n );\n }\n if (isProductForOption) {\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 (typeof shippingOptions[0] === 'object') {\n const option = shippingOptions[0];\n const providers = state.primaryShippingProviders;\n providers.forEach(provider =>\n updateProviderProducts(provider.products, option)\n );\n state.offerShipping = true;\n } else {\n state.offerShipping = false;\n }\n\n if (typeof shippingOptions[1] === 'object') {\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 const showShippingCalculator = action.payload.primary\n ? state.showPrimaryShippingCalculator\n : state.showSecondaryShippingCalculator;\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 const product = products.find(p => p.type === action.payload.type);\n const previousValue = product.selected;\n products.forEach(p => (p.selected = false));\n product.selected = !previousValue;\n product.visible = true;\n\n if (showShippingCalculator) {\n const suggestedProduct = product.calculatorSuggestion;\n if (suggestedProduct) {\n if (\n product.variants?.some(\n variant => variant.price === suggestedProduct.cost\n )\n ) {\n const matchingVariant = product.variants.find(\n variant => variant.price === suggestedProduct.cost\n );\n product.selectedVariant = matchingVariant;\n product.productId = matchingVariant.id;\n product.weight = matchingVariant.weight;\n } else {\n product.cost = state.forceFreeShipping\n ? 0\n : suggestedProduct.cost;\n }\n } else {\n // Clear previous selections\n product.selectedVariant = null;\n product.productId = null;\n product.cost = state.forceFreeShipping ? 0 : null;\n product.weight = null;\n }\n }\n\n if (product.variants.length === 1) {\n const variant = product.variants[0];\n product.selectedVariant = variant;\n product.productId = variant.id;\n product.weight = variant.weight;\n }\n\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SHIPPING_OPTION_COST: (state, action) => {\n const product = getSelectedProduct(state, action.payload.primary);\n product.cost = action.payload.cost;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SHIPPING_OPTION_VARIANT: (state, action) => {\n const product = getSelectedProduct(state, action.payload.primary);\n\n product.selectedVariant = action.payload.variant;\n product.productId = action.payload.variant?.id;\n product.weight = action.payload.variant?.weight;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SHIPPING_SELECTED: (state, action) => {\n state.offerShipping = action.payload.offerShipping;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_TAKEAWAY_SELECTED: (state, action) => {\n state.offerTakeaway = action.payload.offerTakeaway;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SECONDARY_SHIPPING_OPTION_OPEN: (state, action) => {\n return validate({\n ...state,\n secondaryShippingOptionOpen:\n action.payload.secondaryShippingOptionOpen\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.forceFreeShipping = true;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n FREE_SHIPPING_PAID_BY_PROVIDER: (state, action) => {\n const { providerName } = action.payload;\n const products = getAllProducts(state);\n products.forEach(product => {\n if (product.type !== providerName) {\n return;\n }\n product.cost = 0;\n });\n state.selectedShippingOptions = getSelectedShippingOptions(state);\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 SET_SHIPPING_CALCULATOR_DIMENSIONS: (state, action) => {\n state.defaultCalculatorDimensions = {\n ...initialState.defaultCalculatorDimensions,\n ...action.payload.dimensions\n };\n state[\n action.payload.primary\n ? 'primaryCalculatorDimensions'\n : 'secondaryCalculatorDimensions'\n ] = action.payload.dimensions;\n },\n SET_SHOW_SHIPPING_CALCULATOR: (state, action) => {\n state[\n action.payload.primary\n ? 'showPrimaryShippingCalculator'\n : 'showSecondaryShippingCalculator'\n ] = action.payload.value;\n },\n SET_SHIPPING_FROMCOUNTRY: (state, action) => {\n state.fromCountry = action.payload.fromCountry;\n }\n});\n","import { 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 = [\n ...new Set([...state.ignoreProperties, ...action.payload])\n ];\n },\n REMOVE_IGNORE_PROPERTIES: (state, action) => {\n state.ignoreProperties = state.ignoreProperties.filter(\n prop => !action.payload.includes(prop)\n );\n }\n});\n","var 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 ? 'syi_validation_missing_condition'\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({ ...state, itemCondition: action.payload });\n case 'RESET_ITEM_CONDITION':\n return validate({ ...initialState });\n case 'SET_ITEM_CONDITION_SELECTION_ERROR':\n return validate({ ...state, selectionError: action.payload });\n default:\n return state;\n }\n};\n","var defaultCampaignProperties = {\n campaignCode: '',\n campaignCodeId: null,\n campaignCodeDescription: null,\n maxFeeCap: null\n};\n\nvar initialState = {\n ...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 nullIfFalsy(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 nullIfFalsy(campaignCodeId);\n}\n\nfunction validate(state) {\n if (state.campaignCodeChecked) {\n state.validationError = state.campaignCodeValid\n ? null\n : 'syi_campaign_code_invalid';\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 = {\n ...state,\n ...defaultCampaignProperties,\n campaignCode: action.campaignCode,\n campaignCodeId: ensureValidCampaignCodeId(\n action.campaignCodeId\n ),\n campaignCodeDescription: nullIfFalsy(\n action.campaignCodeDescription\n ),\n campaignCodeValid:\n !!action.campaignCodeId || !action.campaignCode,\n campaignCodeChecked: !!action.campaignCode,\n isReadOnly: action.isReadOnly,\n hasEnded: action.hasEnded\n };\n break;\n }\n\n case 'SET_UNVERIFIED_CAMPAIGN_CODE': {\n state = {\n ...state,\n ...defaultCampaignProperties,\n campaignCode: action.campaignCode,\n campaignCodeId: null,\n campaignCodeDescription: null,\n campaignCodeValid: !action.campaignCode,\n bannerMobileImageUrl: null,\n bannerTabletImageUrl: null,\n bannerDesktopImageUrl: null\n };\n break;\n }\n\n case 'SET_CAMPAIGN_VALIDATION_RESULT': {\n if (state.campaignCode === action.campaignCode) {\n state = {\n ...state,\n ...defaultCampaignProperties,\n campaignCode: action.campaignCode,\n campaignCodeId: ensureValidCampaignCodeId(\n action.campaignCodeId\n ),\n campaignCodeDescription: nullIfFalsy(\n action.campaignCodeDescription\n ),\n campaignCodeValid: action.campaignCodeValid,\n maxFeeCap: nullIfFalsy(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 break;\n }\n\n case 'RESET_MAX_FEE_CAP': {\n state = { ...state, maxFeeCap: initialState.maxFeeCap };\n break;\n }\n\n case 'RESET_CAMPAIGN_BANNER': {\n state = {\n ...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 = {\n ...state,\n campaignCodeChecked: true,\n searching: false,\n searchingDelayed: false\n };\n } else {\n state = {\n ...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 = { ...state, searching: true };\n break;\n }\n\n case 'SEARCHING_FOR_CAMPAIGN_CODE_IS_DELAYED': {\n state = { ...state, searchingDelayed: true };\n break;\n }\n }\n validate(state);\n return state;\n};\n","import config from 'tradera-apps/syi/script/app_react/services/config';\n\nvar initialState = {\n commissionProcent: '10',\n discountFactor: null,\n campaignCommissionProcent: null,\n minCommissionCost: config.commissionMinimum,\n maxCommissionCost: config.commissionCap,\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 = { ...state, commissionProcent: action.commissionProcent };\n break;\n }\n\n case 'SET_DISCOUNT_FACTOR': {\n state = { ...state, discountFactor: action.discountFactor };\n break;\n }\n\n case 'RESET_DISCOUNT_FACTOR': {\n state = { ...state, discountFactor: initialState.discountFactor };\n break;\n }\n\n case 'SET_CAMPAIGN_COMMISSION_PROCENT': {\n state = {\n ...state,\n campaignCommissionProcent: action.campaignCommissionProcent\n };\n break;\n }\n\n case 'RESET_CAMPAIGN_COMMISSION_PROCENT': {\n state = {\n ...state,\n campaignCommissionProcent:\n initialState.campaignCommissionProcent\n };\n break;\n }\n\n case 'SET_MAX_COMMISSION_COST': {\n state = {\n ...state,\n maxCommissionCost: action.payload.maxCommissionCost,\n isCategoryWithNoCommissionCap:\n action.payload.isCategoryWithNoCommissionCap\n };\n break;\n }\n\n case 'SET_MIN_COMMISSION_COST': {\n state = { ...state, minCommissionCost: action.payload.text };\n break;\n }\n\n case 'SET_IS_VARIABLE_COMMISSION': {\n state = { ...state, isVariableCommission: action.payload };\n break;\n }\n\n case 'SET_UNSOLD_FEE_FREE_FOR_CAMPAIGN': {\n state = { ...state, isUnsoldFeeFree: true };\n break;\n }\n\n case 'UNSET_UNSOLD_FEE_FREE_FOR_CAMPAIGN': {\n state = { ...state, isUnsoldFeeFree: false };\n break;\n }\n\n case 'SET_CHOSEN_EXTRA_FEATURES': {\n var hasChosenExtraFeatures =\n action.payload && action.payload.length;\n state = {\n ...state,\n chosenExtraFeatures: action.payload,\n hasChosenExtraFeatures\n };\n\n break;\n }\n }\n\n return state;\n};\n","import dayjs from 'dayjs';\nimport userData from 'tradera-apps/syi/script/app_react/services/user-data';\nimport draftService from 'tradera-apps/syi/script/app_react/services/draft-service';\nimport { getCurrentLanguage } from 'tradera-lang/boot-languages';\n\ndayjs.locale(getCurrentLanguage());\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 isRestartAvailable: true,\n durationDays: defaultDraft.durationDays,\n customEndTimeHour: null,\n customEndTimeMinute: null,\n selectedDaysText: '',\n selectedDateText: '',\n summaryText: '',\n allowZeroDayAuctions: false,\n validationErrors: {}\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 dayjs()\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 const durationDays = isPureBin ? 30 : days;\n const localizations = [['syi_summary_duration_days', { durationDays }]];\n if (!isChangeItem) {\n localizations.push([\n 'syi_summary_duration_endDate',\n {\n endDate: dayjs()\n .add(durationDays, 'days')\n .format('ddd D MMM')\n }\n ]);\n }\n if (customEndTime) {\n localizations.push([\n isChangeItem\n ? 'syi_summary_duration_changed_customEndTime'\n : 'syi_summary_duration_default_customEndTime',\n { customEndTime }\n ]);\n }\n if (!isChangeItem) {\n localizations.push(['syi_summary_duration_closingParenthesis']);\n }\n return localizations;\n}\n\nconst getValidationErrors = (\n durationDays,\n customEndTime,\n allowZeroDayAuctions\n) => {\n let customEndTimeError = null;\n let customHour = dayjs().hour();\n let customMinute = dayjs().minute();\n\n if (customEndTime) {\n const splitTime = customEndTime.split(':', 2);\n customHour = splitTime[0];\n customMinute = splitTime[1];\n }\n\n if (allowZeroDayAuctions) {\n let endDate = dayjs()\n .startOf('date')\n .hour(customHour)\n .minute(customMinute)\n .add(durationDays, 'day');\n const earliestEndDate = dayjs().add(5, 'minute');\n if (endDate.isBefore(earliestEndDate)) {\n customEndTimeError = 'syi_validation_duration_too_short_zero_day'; //'Din valda sluttid är för tidig. Annonser får avslutas tidigast efter 5 minuter.';\n }\n } else if (customEndTime) {\n let endDate = dayjs()\n .startOf('date')\n .hour(customHour)\n .minute(customMinute)\n .add(durationDays, 'day');\n const earliestEndDate = dayjs().add(3, 'day');\n\n if (endDate.isBefore(earliestEndDate)) {\n customEndTimeError = 'syi_validation_duration_too_short'; //'Din valda sluttid är för tidig. Annonser får avslutas tidigast efter 72 timmar.';\n }\n }\n\n return customEndTimeError ? { customEndTime: customEndTimeError } : {};\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 validationErrors = getValidationErrors(\n durationDays,\n customEndTime,\n allowZeroDayAuctions\n );\n return {\n ...state,\n durationDays,\n customEndTime,\n selectedDaysText,\n selectedDateText,\n summaryText,\n isCustomEndTimeVisible: !!customEndTime,\n validationErrors\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 validationErrors = getValidationErrors(\n durationDays,\n getCustomEndTime(state),\n state.allowZeroDayAuctions\n );\n return {\n ...state,\n durationDays,\n selectedDaysText,\n selectedDateText,\n summaryText,\n validationErrors\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 validationErrors = getValidationErrors(\n state.durationDays,\n action.payload,\n state.allowZeroDayAuctions\n );\n let customEndTimeHour = null;\n let customEndTimeMinute = null;\n if (typeof action.payload === 'string') {\n let customEndTime = action.payload.split(':');\n customEndTimeHour = customEndTime[0];\n customEndTimeMinute = customEndTime[1];\n }\n return {\n ...state,\n customEndTimeHour: customEndTimeHour,\n customEndTimeMinute: customEndTimeMinute,\n isCustomEndTimeVisible: !!action.payload,\n summaryText,\n validationErrors\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 return newState;\n }\n case 'RESET_CUSTOM_END_TIME': {\n return {\n ...state,\n customEndTimeHour: initialState.customEndTimeHour,\n customEndTimeMinute: initialState.customEndTimeMinute\n };\n }\n case 'SET_CUSTOM_END_TIME_FEE_FREE_FOR_CAMPAIGN':\n return { ...state, customEndTimePrice: 0 };\n case 'RESET_CUSTOM_END_TIME_FEE_FREE_FOR_CAMPAIGN':\n return {\n ...state,\n customEndTimePrice: initialState.customEndTimePrice\n };\n case 'SET_AUCTION_BIN_PRICE': {\n const validationErrors = getValidationErrors(\n state.durationDays,\n getCustomEndTime(state),\n state.allowZeroDayAuctions\n );\n return { ...state, validationErrors };\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 { ...state, summaryText };\n }\n case 'DISABLE_ZERO_DAY_AUCTIONS': {\n const durationDays =\n state.durationDays >= 3 ? state.durationDays : 3;\n return {\n ...state,\n allowZeroDayAuctions: false,\n daysOptions: makeDaysOptions(3, 14),\n durationDays,\n selectedDateText: toDateText(durationDays),\n selectedDaysText: toDaysText(durationDays)\n };\n }\n case 'ENABLE_ZERO_DAY_AUCTIONS': {\n const daysOptions = makeDaysOptions(0, 14);\n return { ...state, daysOptions, allowZeroDayAuctions: true };\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","var initialState = {\n displayPromoted: false,\n displayHighlighted: false\n};\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_DISPLAY_PROMOTED':\n return { ...state, displayPromoted: action.payload };\n case 'SET_DISPLAY_HIGHLIGHTED':\n return { ...state, displayHighlighted: action.payload };\n default:\n return state;\n }\n};\n","const initialState = {\n slots: [{}, {}, {}, {}, {}],\n validationError: null,\n uploadError: null,\n isUploadingWithApp: false,\n imageCount: 0\n};\n\nfunction validate(newState) {\n if (newState.slots.some(slot => slot.isUploading)) {\n newState.validationError = 'syi_validation_images_uploading';\n } else if (newState.slots.every(slot => !slot.imageUrl)) {\n newState.validationError = 'syi_validation_images';\n } else {\n newState.validationError = null;\n }\n return newState;\n}\n\nfunction resolveFirstEmpty(slots) {\n let foundFirst = false;\n for (var i = 0; i < slots.length; i++) {\n if (slots[i].imageUrl || foundFirst) {\n slots[i].firstEmpty = false;\n } else {\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 const 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 const 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 const withUrl = newState.slots.filter(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 = { ...state, slots };\n setImageCount(newState);\n resetUploadError(newState);\n return validate(newState);\n }\n case 'SET_UPLOADED_IMAGE_IN_SLOT': {\n let newslots = [...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 = { ...state, slots: newslots };\n setImageCount(newState);\n resetUploadError(newState);\n return validate(newState);\n }\n case 'SET_IMAGE_SLOTS': {\n let newslots = [...action.slots];\n resolveFirstEmpty(newslots);\n let newState = { ...state, slots: newslots };\n setImageCount(newState);\n resetUploadError(newState);\n return validate(newState);\n }\n case 'SET_IMAGE_ROTATION': {\n let slots = [...state.slots];\n slots[action.slotIndex].rotationDegrees = action.rotationDegrees;\n let newState = { ...state, slots: slots };\n resetUploadError(newState);\n return validate(newState);\n }\n case 'SET_IMAGE_UPLOAD_FAILED': {\n let newState = { ...state, uploadError: action.payload };\n setImageCount(newState);\n removeLastLoading(newState);\n return validate(newState);\n }\n case 'SET_IMAGES_UPLOADING': {\n let slots = [...state.slots];\n let newState = { ...state, slots: slots, uploadError: null };\n setLoadingOnFreeSlots(newState, action.numberOfSlots);\n return validate(newState);\n }\n case 'SET_MOBILE_UPLOAD': {\n const newState = {\n ...state,\n isUploadingWithApp: action.isUploadingWithApp\n };\n if (action.isUploadingWithApp) {\n resetUploadError(newState);\n }\n return newState;\n }\n case 'HIDE_ALL_ERRORS': {\n let newState = { ...state, uploadError: null };\n return newState;\n }\n default:\n return state;\n }\n};\n","import config from 'tradera-apps/syi/script/app_react/services/config';\n\nfunction isValidPrice(number) {\n var str = new String(number);\n if (!Number.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 'syi_validation_amount_must_be_whole_number';\n }\n\n var maxPrice = 10000000;\n var minPrice = 1;\n\n if (!isValidPrice(openingBid)) {\n return 'syi_validation_opening_bid_missing';\n }\n\n if (openingBid > maxPrice) {\n return 'syi_validation_max_opening_bid';\n }\n\n if (openingBid < minPrice) {\n return 'syi_validation_minimum_opening_bid';\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 'syi_validation_amount_missing';\n }\n\n if (reservePrice && !isInt(reservePrice)) {\n return 'syi_validation_amount_must_be_whole_number';\n }\n\n var maxPrice = 10000000;\n\n if (reservePrice && !isValidPrice(reservePrice)) {\n return 'syi_validation_invalid_reservation_price';\n }\n\n let reservePriceIsLessThanOpeningBid =\n reservePrice && reservePrice <= openingBid;\n if (reservePriceIsLessThanOpeningBid) {\n return 'syi_validation_reservation_must_be_larger_than_starting';\n }\n\n let reservePriceIsGreaterThanAuctionBinPrice =\n reservePrice && auctionBinPrice && reservePrice >= auctionBinPrice;\n if (reservePriceIsGreaterThanAuctionBinPrice) {\n return 'syi_validation_reservation_must_be_less_than_buy_now';\n }\n\n if (reservePrice > maxPrice) {\n return 'syi_validation_max_reservation_price';\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 'syi_validation_amount_missing';\n }\n\n if (auctionBinPrice && !isInt(auctionBinPrice)) {\n return 'syi_validation_amount_must_be_whole_number';\n }\n let auctionBinPriceIsLessThanOpeningBid =\n auctionBinPrice && auctionBinPrice <= openingBid;\n if (auctionBinPriceIsLessThanOpeningBid) {\n return 'syi_validation_buy_now_must_be_larger_than_starting';\n }\n\n let reservePriceIsGreaterThanAuctionBinPrice =\n reservePrice && auctionBinPrice && reservePrice >= auctionBinPrice;\n if (reservePriceIsGreaterThanAuctionBinPrice) {\n return 'syi_validation_buy_now_must_be_larger_than_reservation';\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 'syi_validation_amount_must_be_whole_number';\n }\n\n var maxPrice = 10000000;\n var minPrice = 1;\n\n if (!isValidPrice(fixedPrice)) {\n return 'syi_validation_enter_fixed_price';\n }\n if (!isNaN(fixedPrice)) {\n if (parseInt(fixedPrice) > maxPrice) {\n return 'syi_validation_fixed_price_max_value';\n }\n\n if (parseInt(fixedPrice) < minPrice) {\n return 'syi_validation_fixed_price_min_value';\n }\n }\n return null;\n}\n\nfunction validate(newState) {\n const validationErrors = {};\n\n validationErrors.fixedPrice = validateFixedPrice(newState);\n validationErrors.openingBid = validateOpeningBid(newState);\n validationErrors.auctionBinPrice = validateAuctionBinPrice(newState);\n validationErrors.reservePrice = validateReservePrice(newState);\n\n for (const errorKey in validationErrors) {\n if (!validationErrors[errorKey]) delete validationErrors[errorKey];\n }\n\n newState.validationErrors = validationErrors;\n\n return newState;\n}\n\nconst queryParams = new URLSearchParams(location.search);\nvar initialState = {\n openingBid: null,\n auctionBinPrice: null,\n fixedPrice: null,\n reservePrice: null,\n showAuctionBinPrice: false,\n showReservePrice: false,\n showCharityDonation: Boolean(queryParams.get('charityId')),\n editCharity: false,\n isPureBinSelected: null,\n validationErrors: {},\n selectableVats: config.selectableVatValues,\n reservePriceCanChangeButNotBeRemoved: false,\n vat: null\n};\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_OPENING_BID':\n return validate({ ...state, openingBid: action.payload });\n case 'SET_AUCTION_BIN_PRICE':\n return validate({ ...state, auctionBinPrice: action.payload });\n case 'SET_FIXED_PRICE':\n return validate({ ...state, fixedPrice: action.payload });\n case 'SET_RESERVE_PRICE':\n return validate({ ...state, reservePrice: action.payload });\n case 'SET_AUCTION_BIN_PRICE_VISIBILITY':\n return validate({ ...state, showAuctionBinPrice: action.payload });\n case 'SET_RESERVE_PRICE_VISIBILITY':\n return validate({ ...state, showReservePrice: action.payload });\n case 'SET_CHARITY_DONATION_VISIBILITY':\n return validate({ ...state, showCharityDonation: action.payload });\n case 'SET_EDIT_CHARITY':\n return validate({ ...state, editCharity: action.payload });\n case 'SET_IS_PURE_BIN_SELECTED':\n return validate({\n ...state,\n isPureBinSelected: action.isPureBinSelected\n });\n case 'SET_VAT':\n return validate({ ...state, vat: action.payload });\n case 'RESET_PRICES_AND_VAT':\n return validate({\n ...state,\n openingBid: null,\n auctionBinPrice: null,\n fixedPrice: null,\n vat: null\n });\n case 'SET_RESERVE_PRICE_CAN_CHANGE_BUT_NOT_BE_REMOVED':\n return validate({\n ...state,\n reservePriceCanChangeButNotBeRemoved: action.payload\n });\n default:\n return state;\n }\n};\n","var 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 { ...state, draftBeforeChange: action.payload };\n default:\n return state;\n }\n};\n","const MAX_DESCRIPTION_LENGTH = 7000;\n\nfunction validate(textWithHtml) {\n if (textWithHtml && textWithHtml.length > MAX_DESCRIPTION_LENGTH) {\n return 'syi_validation_description_to_long';\n }\n\n var elm = document.createElement('div');\n elm.innerHTML = textWithHtml || '';\n\n if (elm.textContent) {\n return elm.textContent.trim() !== ''\n ? null\n : 'syi_validation_missing_description';\n } else if (elm.innerText) {\n return elm.innerText.trim() !== ''\n ? null\n : 'syi_validation_missing_description';\n }\n return 'syi_validation_missing_description';\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 {\n ...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 {\n ...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 {\n ...state,\n isCurrentDescriptionFromDraft: false,\n longDescription: defaultValue,\n validationError: validate(defaultValue)\n };\n }\n default:\n return state;\n }\n};\n","var 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 = { ...state.scrollY };\n scrollY[action.key] = action.value;\n return { ...initialState, scrollY };\n }\n default:\n return state;\n }\n};\n","const 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 == 'MHO20' ||\n code == 'MHF20' ||\n code == 'MH20' ||\n code == 'MHTEST' ||\n code == 'MHTESTF'\n );\n}\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'RESET_CHARITY_CAMPAIGN':\n return { ...initialState };\n case 'SET_CHARITY_CAMPAIGN':\n return {\n ...state,\n charityId: action.charityCampaign.charityId,\n forceFreeShipping: action.charityCampaign.forceFreeShipping,\n name: action.charityCampaign.name,\n description: action.charityCampaign.description,\n isSchenkerPaidBySchenker: isSchenkerPaying(action.campaignCode),\n allowZeroDayAuctions:\n action.charityCampaign.allowZeroDayAuctions\n };\n\n default:\n return state;\n }\n};\n","export const filterSelectableSuggestions = (\n incomingSuggestedAttributes,\n categoryAttributes\n) => {\n const selectableSuggestions = [];\n incomingSuggestedAttributes.forEach(sa => {\n const categoryAttribute = categoryAttributes.find(a => a.id === sa.id);\n if (categoryAttribute) {\n const suggestedAttribute = { id: sa.id, values: [] };\n sa.values.forEach(v => {\n const isSelectableSuggestion = categoryAttribute.options.some(\n o => o.value === v\n );\n const isMaxReached =\n suggestedAttribute.values.length >=\n categoryAttribute.maxNumberOfValues;\n if (isSelectableSuggestion && !isMaxReached) {\n suggestedAttribute.values.push(v);\n }\n });\n selectableSuggestions.push(suggestedAttribute);\n }\n });\n return selectableSuggestions;\n};\n","import { filterSelectableSuggestions } from './attributes-helpers';\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 selectableSuggestedAttributes: [],\n selectableImageToColorSuggestedAttributes: [],\n // Attribute suggestions from the image-to-color service.\n imageToColorSuggestedAttributes: [],\n validationErrors: {}\n};\n\nconst setCategoryAttributesSuggestions = (state, action) => {\n const { payload } = action;\n const newState = {\n ...state,\n suggestedAttributes: payload.suggestedAttributes,\n selectableSuggestedAttributes: filterSelectableSuggestions(\n payload.suggestedAttributes,\n state.categoryAttributes\n ),\n suggestionsExtractorType: payload.suggestionsExtractorType\n };\n return newState;\n};\n\nconst setImageToColorSuggestions = (state, action) => {\n const { payload } = action;\n const newState = {\n ...state,\n imageToColorSuggestedAttributes: payload.suggestedAttributes\n };\n updateSelectableImageToColorSuggestedAttributes(newState);\n return newState;\n};\n\nconst updateSelectableImageToColorSuggestedAttributes = newState => {\n newState.selectableImageToColorSuggestedAttributes = filterSelectableSuggestions(\n newState.imageToColorSuggestedAttributes,\n newState.categoryAttributes\n );\n};\n\nconst setCategoryAttributeOption = (state, action) => {\n const { payload } = action;\n const attribute = state.categoryAttributes.find(\n a => a.id === payload.attributeId\n );\n let options = attribute.options;\n if (\n !attribute.isMultiSelect ||\n (!payload.optionValue && !payload.activate)\n ) {\n options = options.map(o =>\n !o.isActive ? o : { ...o, isActive: false }\n );\n }\n if (payload.optionValue) {\n options = options.map(o =>\n o.value !== payload.optionValue\n ? o\n : { ...o, isActive: payload.activate }\n );\n }\n const numberOfValuesSelected = options.filter(o => o.isActive).length;\n return {\n ...state,\n categoryAttributes: state.categoryAttributes.map(a =>\n a.id !== payload.attributeId\n ? a\n : { ...attribute, options, numberOfValuesSelected }\n )\n };\n};\n\nconst updateCategoryAttributesOptionsStatuses = state => {\n const categoryAttributes = state.categoryAttributes.map(a => {\n const draftAttributeValues =\n state.draftAttributes.termAttributeValues?.find(\n tav => a.id === tav.id\n )?.values || [];\n const options = a.options.map(o => {\n const isActive = draftAttributeValues.includes(o.value);\n return o.isActive === isActive ? o : { ...o, isActive };\n });\n const numberOfValuesSelected = options.filter(o => o.isActive).length;\n return { ...a, options, numberOfValuesSelected };\n });\n return { ...state, categoryAttributes };\n};\n\nconst setDraftAttributes = (state, action) => {\n const newState = {\n ...state,\n draftAttributes: {\n ...action.payload\n }\n };\n return newState;\n};\n\nconst setCategoryAttributes = (state, action) => {\n const newState = {\n ...state,\n categoryAttributes: [...action.payload]\n };\n updateSelectableImageToColorSuggestedAttributes(newState);\n return newState;\n};\n\nconst resetAttributes = state => {\n return {\n ...initialState,\n // Resetting image-to-color suggested attributes is done separately\n imageToColorSuggestedAttributes: state.imageToColorSuggestedAttributes,\n selectableImageToColorSuggestedAttributes:\n state.selectableImageToColorSuggestedAttributes\n };\n};\n\nconst resetSelectedAttributes = state => {\n return updateCategoryAttributesOptionsStatuses({\n ...state,\n draftAttributes: {}\n });\n};\n\nconst resetImageAttributeSuggestions = state => {\n return {\n ...state,\n imageToColorSuggestedAttributes:\n initialState.imageToColorSuggestedAttributes,\n selectableImageToColorSuggestedAttributes:\n initialState.selectableImageToColorSuggestedAttributes\n };\n};\n\nconst validate = state => {\n const validationErrors = {};\n state.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 validationErrors[\n attribute.backingField\n ] = `attributes:syi_validation_missing_attribute_${attribute.backingField}`;\n }\n });\n\n return { ...state, validationErrors };\n};\n\nconst reducers = {\n RESET_ATTRIBUTES: resetAttributes,\n RESET_SELECTED_ATTRIBUTES: resetSelectedAttributes,\n RESET_IMAGE_ATTRIBUTES_SUGGESTIONS: resetImageAttributeSuggestions,\n SET_CATEGORY_ATTRIBUTES: setCategoryAttributes,\n SET_DRAFT_ATTRIBUTES: setDraftAttributes,\n SET_CATEGORY_ATTRIBUTE_OPTION: setCategoryAttributeOption,\n UPDATE_CATEGORY_ATTRIBUTES_OPTIONS_STATUSES: updateCategoryAttributesOptionsStatuses,\n SET_CATEGORY_ATTRIBUTES_SUGGESTIONS: setCategoryAttributesSuggestions,\n SET_IMAGE_ATTRIBUTES_SUGGESTIONS: setImageToColorSuggestions\n};\n\nexport default (state, action) => {\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 { createReducer } from '@reduxjs/toolkit';\nimport userData from 'tradera-apps/syi/script/app_react/services/user-data';\nimport config from 'tradera-apps/syi/script/app_react/services/config';\n\nconst createInitalState = () => {\n if (!userData || !userData.consent || !userData.braintree) {\n // seems syi is not loaded, return empty object\n return {};\n }\n const shouldGiveConsent =\n config.isSyiMemberConsentEnabled && userData.braintree.isBraintreeOnly;\n\n return {\n hasTraderaPayConsent: !!userData.consent.hasTraderaPayConsent,\n shouldGiveConsent,\n hasValidationError:\n shouldGiveConsent && !userData.consent.hasTraderaPayConsent\n };\n};\n\nconst initialState = createInitalState();\n\nexport default createReducer(initialState, {\n SET_TRADERAPAY_CONSENT: (state, action) => {\n state.hasTraderaPayConsent = action.payload;\n state.hasValidationError = !action.payload;\n }\n});\n","import { mapItemDetails } from 'tradera-state/views/view-item/reducer';\n\nvar initialState = {\n itemDetails: null,\n bidInfo: null,\n hasLoaded: false,\n\n viewItemState: null,\n isBidding: false,\n itemState: null,\n placeBidResponse: {\n info: null,\n isSuccessful: null,\n validationResult: null,\n error: null\n },\n myMaxBidAmount: null,\n initialBidFormValue: null,\n serverSecondsLeft: null\n};\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_PREVIEW_ITEM_DETAILS': {\n return {\n ...state,\n itemDetails: mapItemDetails(action.payload)\n };\n }\n case 'SET_PREVIEW_BID_INFO': {\n const { bidInfo, memberId } = action.payload;\n\n return {\n ...state,\n bidInfo: {\n bidId: bidInfo.bidId || 0,\n leadingBidAmount: bidInfo.leadingBidAmount || 0,\n leadingBidderMemberId:\n bidInfo.leadingBidderMemberId || null,\n leadingBidMemberAlias:\n bidInfo.leadingBidMemberAlias || null,\n nextValidBidAmount: bidInfo.nextValidBidAmount,\n transactionType: bidInfo.transactionType || null,\n bidCount: bidInfo.bidCount,\n reservePriceReached: bidInfo.reservePriceReached || false,\n hasLeadingBid:\n !!memberId &&\n memberId === bidInfo.leadingBidderMemberId,\n hasLostLeadingBid: false\n }\n };\n }\n case 'SET_PREVIEW_ITEM_STATE':\n return { ...state, itemState: action.payload };\n case 'SET_PREVIEW_SERVER_SECONDS_LEFT':\n return { ...state, serverSecondsLeft: action.payload };\n case 'SET_PREVIEW_IS_LOADING':\n return { ...state, hasLoaded: action.payload };\n default:\n return state;\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/shipping';\nimport templates from './reducers/templates';\nimport template from './reducers/template';\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 charityCampaign from './reducers/charity-campaign';\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';\nimport preview from './reducers/preview';\nimport charity from './reducers/charity';\n\nexport default combineReducers({\n attributes,\n bankId: traderaStateBankId,\n buyerRegion,\n campaignCode,\n category,\n charity,\n charityCampaign,\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 preview,\n price,\n scroll,\n shipping,\n shortDescription,\n syi,\n templates,\n template\n});\n","var 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 = [...action.payload];\n } else {\n state = null;\n }\n break;\n }\n return state;\n};\n","import { getLanguage } from 'tradera-apps/syi/script/app_react/utils/language';\n\nexport default state => {\n state = state || {\n preferredLanguage: getLanguage()\n };\n\n return state;\n};\n","var 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 = [...action.payload];\n } else {\n state = null;\n }\n break;\n case 'UPDATE_TEMPLATE_IN_LIST':\n if (state) {\n state = [...state];\n let index = state.findIndex(\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 { actionTypes as purchaseOrderActionTypes } from '../action-types/purchase-order';\nimport myTraderaItemActions from '../actions/my-tradera-items';\n\nconst initialState = {\n purchaseOrders: []\n};\n\nconst updatePurchaseOrderPaidBySeller = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n isPaid: action.payload.isPaid\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderPaidByBuyer = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n isMarkedAsPaidByBuyer:\n action.payload.isMarkedAsPaidByBuyer\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderShipped = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n isShipped: action.payload.isShipped\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderRequestCombinedShipping = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n combinedShippingInformation: {\n ...purchaseOrder.combinedShippingInformation,\n buyerRequestedCombinedShippingPriceDate: Date.now(),\n hasBuyerRequestedCombinedShippingPrice:\n action.payload\n .hasBuyerRequestedCombinedShippingPrice\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderShippingPrice = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.purchaseOrderId\n ? {\n ...purchaseOrder,\n ...(purchaseOrder.combinedShippingInformation\n ? {\n combinedShippingInformation: {\n ...purchaseOrder.combinedShippingInformation,\n sellerSetCombinedShippingPriceDate: Date.now()\n }\n }\n : null),\n shippingAmount: action.newPrice,\n totalAmount:\n parseInt(action.newPrice) +\n parseInt(purchaseOrder.totalItemAmount),\n shipping: {\n ...purchaseOrder.shipping,\n shippingDiscount: {\n shippingCost: action.newPrice,\n shippingType: action.shippingProvider\n }\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderShipment = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n hasUnpaidShipping: false\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderShippedBooked = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n isShippingBooked: false\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrders = (state, action) => {\n return {\n ...state,\n paging: {\n ...action.payload.paging\n },\n statistics: action.payload.statistics,\n purchaseOrders: action.payload.purchaseOrders.map(purchaseOrder => {\n const { rows, ...filteredPurchaseOrder } = purchaseOrder;\n return {\n ...filteredPurchaseOrder\n };\n })\n };\n};\n\nconst checkHaveGivenFeedBackTo = (action, purchaseOrder) => {\n const itemsToGiveFeedBackTo = purchaseOrder.itemsToGiveFeedBackTo\n .map(itemToGiveFeedBackTo => {\n const haveGivenFeedBackTo = action.payload.submittables.filter(\n submittable => {\n return submittable.transactionId === itemToGiveFeedBackTo;\n }\n ).length;\n if (haveGivenFeedBackTo) {\n return null;\n }\n return itemToGiveFeedBackTo;\n })\n .filter(Boolean);\n return itemsToGiveFeedBackTo;\n};\n\nconst updatePurchaseOrderFeedback = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map(purchaseOrder =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n itemsToGiveFeedBackTo: checkHaveGivenFeedBackTo(\n action,\n purchaseOrder\n )\n }\n : purchaseOrder\n )\n };\n};\n\n// Updating hidden always hides the order from the current list\nconst updatePurchaseOrderHidden = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.filter(\n purchaseOrder =>\n purchaseOrder.purchaseOrderId !== action.payload.purchaseOrderId\n )\n };\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case myTraderaItemActions.actionTypes\n .PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER:\n return updatePurchaseOrderPaidBySeller(state, {\n payload: {\n purchaseOrderId: action.payload.ids[0],\n isPaid: true\n }\n });\n case myTraderaItemActions.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER:\n return updatePurchaseOrderPaidBySeller(state, {\n payload: {\n purchaseOrderId: action.payload.ids[0],\n isPaid: false\n }\n });\n case myTraderaItemActions.actionTypes\n .PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER:\n return updatePurchaseOrderPaidByBuyer(state, {\n payload: {\n purchaseOrderId: action.payload.ids[0],\n isMarkedAsPaidByBuyer: true\n }\n });\n case myTraderaItemActions.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER:\n return updatePurchaseOrderPaidByBuyer(state, {\n payload: {\n purchaseOrderId: action.payload.ids[0],\n isMarkedAsPaidByBuyer: false\n }\n });\n case purchaseOrderActionTypes.PURCHASE_ORDER_RESET:\n return initialState;\n case purchaseOrderActionTypes.PURCHASE_ORDERS_SHIPPING_BOOKED:\n return updatePurchaseOrderShippedBooked(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING:\n return updatePurchaseOrderRequestCombinedShipping(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_SHIPPED:\n return updatePurchaseOrderShipped(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_PAID_BY_BUYER:\n return updatePurchaseOrderPaidByBuyer(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_PAID_BY_SELLER:\n return updatePurchaseOrderPaidBySeller(state, action);\n case myTraderaItemActions.actionTypes.SET_NEW_SHIPPING_PRICE:\n return updatePurchaseOrderShippingPrice(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_LIST:\n return updatePurchaseOrders(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_DELETE_SHIPMENT:\n return updatePurchaseOrderShipment(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER:\n case purchaseOrderActionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER:\n return updatePurchaseOrderFeedback(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_HIDDEN:\n return updatePurchaseOrderHidden(state, action);\n default:\n return state;\n }\n};\n","import { combineReducers } from 'redux';\nimport cookies from 'tradera-apps/my-tradera/app/state/reducers/cookies';\nimport filters from 'tradera-apps/my-tradera/app/state/reducers/filters';\nimport myTradera from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport myTraderaItems from 'tradera-apps/my-tradera/app/state/reducers/my-tradera-items';\nimport payments from 'tradera-apps/my-tradera/app/state/reducers/payments-reducer';\nimport payout from 'tradera-apps/my-tradera/app/state/payouts/reducer';\nimport purchaseOrder from 'tradera-apps/my-tradera/app/state/reducers/purchase-order';\n\nexport default combineReducers({\n cookies,\n filters,\n myTradera,\n myTraderaItems,\n payments,\n payout,\n purchaseOrder\n});\n","import { mapItemDetails } from '../view-item/reducer';\nimport actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case actionTypes.SET_IS_LOADING:\n return { ...state, loading: action.payload };\n case actionTypes.SET_ITEM_DETAILS:\n return { ...state, itemDetails: mapItemDetails(action.payload) };\n case actionTypes.SET_PRODUCT:\n return { ...state, product: action.payload };\n default:\n return state;\n }\n};\n","import { combineReducers } from 'redux';\nimport viewItem from './view-item/reducer';\nimport { reducer as reportItem } from './report-item/reducer';\nimport profile from './profile/reducer';\nimport startPage from './start-page/reducer';\nimport checkout from './checkout/reducer';\nimport syi from './syi/reducer';\nimport myTradera from './my-tradera/reducer';\nimport shippingCalculator from './shipping-calculator/reducer';\nimport cart from './cart/reducer';\nimport traderaShop from './tradera-shop/reducer';\nimport initData from 'init-data';\n\nconst reducers = {\n checkout,\n myTradera,\n profile,\n cart,\n reportItem,\n shippingCalculator,\n startPage,\n viewItem,\n traderaShop\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 { reducer as environment } from './environment/reducer';\nimport initData from './init-data/reducer';\nimport items from './items/reducer';\nimport internationalShipping from './international-shipping/reducer';\nimport language from './language/reducer';\nimport member from './member/reducer';\nimport multiCurrency from './multi-currency/reducer';\nimport page from './page/reducer';\nimport personalisation from './personalisation/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';\nimport { connectRouter } from 'connected-react-router';\n\nexport default history =>\n combineReducers({\n ads,\n bankId,\n categories,\n discover,\n environment,\n initData,\n internationalShipping,\n items,\n language,\n member,\n multiCurrency,\n page,\n personalisation,\n pushNotifications,\n shippingRegion,\n ui,\n views,\n router: connectRouter(history)\n });\n","import feesActions from './fees-actions';\nimport { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\nimport { resetCharityAndShippingInfo } from 'tradera-state/views/syi/actions/charity-actions';\n\nfunction toIntOrNull(number) {\n var i = parseInt(number);\n if (isFinite(i)) {\n return i;\n }\n return null;\n}\n\nfunction isNullOrUndefined(val) {\n return val === null || val === undefined;\n}\n\nconst setOpeningBid = openingBid => dispatch => {\n dispatch({\n type: 'SET_OPENING_BID',\n payload: toIntOrNull(openingBid)\n });\n};\n\nconst setFixedPrice = fixedPrice => dispatch => {\n dispatch({\n type: 'SET_FIXED_PRICE',\n payload: toIntOrNull(fixedPrice)\n });\n};\n\nconst setReservePrice = reservePrice => dispatch => {\n dispatch({\n type: 'SET_RESERVE_PRICE',\n payload: toIntOrNull(reservePrice)\n });\n dispatch(feesActions.updatePrices());\n};\n\nconst setAuctionBinPrice = auctionBinPrice => dispatch => {\n dispatch({\n type: 'SET_AUCTION_BIN_PRICE',\n payload: toIntOrNull(auctionBinPrice)\n });\n};\n\nconst setAuctionBinPriceVisibility = visible => dispatch => {\n dispatch({\n type: 'SET_AUCTION_BIN_PRICE_VISIBILITY',\n payload: visible\n });\n if (!visible) {\n dispatch(setAuctionBinPrice(null));\n }\n};\n\nconst setReservePriceVisibility = visible => dispatch => {\n dispatch({\n type: 'SET_RESERVE_PRICE_VISIBILITY',\n payload: visible\n });\n if (!visible) {\n dispatch(setReservePrice(null));\n }\n};\n\nconst setCharityDonationVisibility = visible => dispatch => {\n dispatch({\n type: 'SET_CHARITY_DONATION_VISIBILITY',\n payload: visible\n });\n if (!visible) {\n dispatch(resetCharityAndShippingInfo());\n }\n};\n\nconst setEditCharity = editCharity => dispatch => {\n dispatch({\n type: 'SET_EDIT_CHARITY',\n payload: editCharity\n });\n};\n\nconst setIsPureBinSelected = isPureBinSelected => (dispatch, getState) => {\n dispatch({\n type: 'SET_IS_PURE_BIN_SELECTED',\n isPureBinSelected,\n isChangeItem: getSyiSlice(getState()).syi.isEditOfPublishedItem\n });\n if (isPureBinSelected) {\n dispatch(setOpeningBid(null));\n dispatch(setAuctionBinPrice(null));\n dispatch(setReservePrice(null));\n } else {\n dispatch(setFixedPrice(null));\n }\n};\n\nconst setVat = vat => dispatch => {\n dispatch({\n type: 'SET_VAT',\n payload: vat\n });\n};\n\nconst setFromDraft = (\n openingBid,\n fixedPrice,\n reservePrice,\n charityId,\n vat,\n isChangeItem\n) => dispatch => {\n const queryParams = new URLSearchParams(location.search);\n const queryParamCharityId = queryParams.get('charityId');\n let hasOpeningBid = !isNullOrUndefined(openingBid);\n let hasFixedPrice = !isNullOrUndefined(fixedPrice);\n let hasReservePrice = !isNullOrUndefined(reservePrice);\n let hasCharityId =\n !isNullOrUndefined(charityId) ||\n !isNullOrUndefined(queryParamCharityId);\n let isAuction = hasOpeningBid && !hasFixedPrice;\n let isAuctionBin = hasOpeningBid && hasFixedPrice;\n let isPureBin = !hasOpeningBid && hasFixedPrice;\n\n dispatch(setVat(vat));\n\n // TODO: fewer changes to the state makes the page load faster...\n if (isAuction) {\n dispatch(setOpeningBid(openingBid));\n dispatch(setReservePrice(reservePrice));\n dispatch(setAuctionBinPrice(null));\n dispatch(setFixedPrice(null));\n dispatch(setReservePriceVisibility(hasReservePrice));\n dispatch(setAuctionBinPriceVisibility(false));\n dispatch(setCharityDonationVisibility(hasCharityId));\n dispatch(setIsPureBinSelected(false));\n } else if (isAuctionBin) {\n dispatch(setOpeningBid(openingBid));\n dispatch(setReservePrice(reservePrice));\n dispatch(setAuctionBinPrice(fixedPrice));\n dispatch(setFixedPrice(null));\n dispatch(setReservePriceVisibility(hasReservePrice));\n dispatch(setAuctionBinPriceVisibility(true));\n dispatch(setCharityDonationVisibility(hasCharityId));\n dispatch(setIsPureBinSelected(false));\n } else if (isPureBin) {\n dispatch(setOpeningBid(null));\n dispatch(setReservePrice(null));\n dispatch(setAuctionBinPrice(null));\n dispatch(setFixedPrice(fixedPrice));\n dispatch(setReservePriceVisibility(false));\n dispatch(setAuctionBinPriceVisibility(false));\n dispatch(setCharityDonationVisibility(false));\n dispatch(setIsPureBinSelected(true));\n } else {\n dispatch(setOpeningBid(null));\n dispatch(setReservePrice(null));\n dispatch(setAuctionBinPrice(null));\n dispatch(setFixedPrice(null));\n dispatch(setReservePriceVisibility(false));\n dispatch(setAuctionBinPriceVisibility(false));\n dispatch(setCharityDonationVisibility(hasCharityId));\n dispatch(setIsPureBinSelected(false));\n }\n\n dispatch({\n type: 'SET_RESERVE_PRICE_CAN_CHANGE_BUT_NOT_BE_REMOVED',\n payload: isChangeItem && hasReservePrice\n });\n};\n\nconst reset = () => dispatch => {\n dispatch({\n type: 'RESET_PRICES_AND_VAT'\n });\n};\n\nexport default {\n setOpeningBid,\n setFixedPrice,\n setReservePrice,\n setAuctionBinPrice,\n setAuctionBinPriceVisibility,\n setReservePriceVisibility,\n setCharityDonationVisibility,\n setEditCharity,\n setIsPureBinSelected,\n setFromDraft,\n setVat,\n reset\n};\n","import fetch from '../utils/fetch';\nimport URLS from '../constants/urls';\nexport const types = {\n LINK: 'LINK',\n EXTERNAL_LINK: 'EXTERNAL_LINK',\n DISPATCH: 'DISPATCH',\n DISABLED: 'DISABLED'\n};\n\n/**\n * Converts Array to string for FormData;\n * @param {array} ids array of ids to send to backend\n */\nconst getBodyStringFromIDs = ids => {\n let bodyString = '';\n if (ids) {\n ids.forEach((id, pos) => {\n bodyString += `${pos > 0 ? '&' : ''}ids=${id}`;\n });\n }\n return bodyString;\n};\n\n/**\n * Headers to be set on 'fetch' requests for FormData\n * We should remove FormData posts\n */\nconst formHeaders = {\n 'X-Requested-With': 'XmlHtpRequest',\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n 'Content-Disposition': 'form-data'\n};\n\n/**\n * Get Restart Items Summary\n * @param {array} ids\n * @returns {promise} fetch promise returned;\n */\nexport const restartItemsSummary = ids =>\n fetch(URLS.ACTIVE_ITEMS_RESTART_SUMMARY, {\n body: JSON.stringify({ ids: ids })\n });\n\n/**\n * End Items\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const endItems = ids =>\n fetch(URLS.ACTIVE_END_ITEMS, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n\n/**\n * Show Items in Purchases list\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const showPurchases = ids =>\n fetch(URLS.BUYER_SHOW, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n\n/**\n * Show Items\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const showActive = ids =>\n fetch(URLS.BUYER_ACTIVE_ITEMS_SHOW, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n\n/**\n * Hide Items\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const hideActive = ids =>\n fetch(URLS.BUYER_ACTIVE_ITEMS_HIDE, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n\n/**\n * Restart Items\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const restartItems = ids =>\n fetch(URLS.UNSOLD_RESTART_ITEMS, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n\n/**\n * Mark Paid\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const markPaid = ids =>\n fetch(URLS.BUYER_MARK_PAID, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useDidMountEffect } from '../hooks';\nimport PriceLabel from './price-label';\n\nconst AnimatedPriceLabel = props => {\n const { price } = props;\n const [showAnimation, setShowAnimation] = useState(false);\n useDidMountEffect(() => {\n setShowAnimation(true);\n const timer = setTimeout(() => {\n setShowAnimation(false);\n }, 500);\n return () => clearTimeout(timer);\n }, [price]);\n const priceLabelProps = {\n ...props,\n className: `${props.className}${\n showAnimation ? ' item-card-details-price-highlight' : ''\n }`\n };\n return ;\n};\nAnimatedPriceLabel.propTypes = {\n tagName: PropTypes.string,\n className: PropTypes.string,\n price: PropTypes.number,\n hasDiscount: PropTypes.bool\n};\nAnimatedPriceLabel.defaultProps = {\n tagName: 'span',\n className: ''\n};\n\nexport default AnimatedPriceLabel;\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst LeadingBadge = ({ className }) => {\n const { t } = useTranslator();\n return (\n \n {t('itemCard_leading')}\n \n );\n};\n\nexport default LeadingBadge;\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst OverbiddenBadge = ({ className }) => {\n const { t } = useTranslator();\n return (\n \n {t('itemCard_overbidden')}\n \n );\n};\nexport default OverbiddenBadge;\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst ShippingBadge = ({ className, hasFreeShipping }) => {\n const { t } = useTranslator();\n if (hasFreeShipping) {\n return (\n \n {t('itemCard_freeShipping')}\n \n );\n } else {\n return null;\n }\n};\n\nexport default ShippingBadge;\n","import React from 'react';\n\nconst SellerAliasBadge = ({ className = '', sellerAlias }) => {\n if (sellerAlias) {\n return (\n \n {sellerAlias}\n \n );\n } else {\n return null;\n }\n};\n\nexport default SellerAliasBadge;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ALink from 'tradera-components/alink/alink';\nimport MultiCurrency, {\n preferredCurrencyPropTypes\n} from '../multi-currency/multi-currency';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { ITEM_CARD_IMAGE_MODES } from './item-card-parts/item-card-image-modes';\nimport AnimatedPriceLabel from './item-card-parts/animated-price-label';\nimport EndTimeLabel from './item-card-parts/end-time-label';\nimport AttributeButtonsList from './item-card-parts/attribute-buttons-list';\nimport BidsLabel from './item-card-parts/bids-label';\nimport DiscountBadge from './item-card-parts/discount-badge';\nimport DiscountedPriceLabel from './item-card-parts/disacount-price-label';\nimport FixedPriceLabel from './item-card-parts/fixed-price-label';\nimport ItemCardImage from './item-card-parts/item-card-image';\nimport LeadingBadge from './item-card-parts/leading-badge';\nimport NewTodayLabel from './item-card-parts/new-today-label';\nimport OnDisplayBadge from './item-card-parts/on-display-badge';\nimport OverbiddenBadge from './item-card-parts/overbidden-badge';\nimport PriceLabel from './item-card-parts/price-label';\nimport QuickViewButton from './item-card-parts/quick-view-button';\nimport SettingsButton from './item-card-parts/settings-button';\nimport ShippingBadge from './item-card-parts/shipping-badge';\nimport WishListButton from './item-card-parts/wish-list-button';\nimport './item-card.scss';\nimport SellerAliasBadge from './item-card-parts/seller-alias-badge';\nimport { useSelector } from 'react-redux';\nimport { selectIsSwedishVisitor } from 'tradera-state/shipping-region/selectors';\nimport ITEM_TYPES from 'tradera-constants/item-types';\nimport dayjs from 'dayjs';\nimport { useUrlLocalizer } from 'tradera-lang/translate';\n\nconst ItemCard = ({\n animatePriceLabel,\n className,\n gaCategory,\n imageMode,\n item = {},\n lazy,\n onAddToWishlist,\n onQuickView,\n onRemoveFromWishlist,\n onAttributeButtonClick,\n onSettings,\n preferredCurrency,\n ready,\n showBidStatus,\n showShippingOrOnDisplay,\n showSellerAlias,\n isShopOwnedByCurrentMember = false\n}) => {\n let inSPA = true;\n const existsInWishList = useSelector(state =>\n state.items.wishListItemIds.has(item.itemId)\n );\n const isSwedishVisitor = useSelector(selectIsSwedishVisitor);\n const { toLocalizedUrl } = useUrlLocalizer();\n\n ///////\n const showBids = [ITEM_TYPES.AUCTION, ITEM_TYPES.AUCTION_BIN].includes(\n item.itemType\n );\n const isShopItem = item.itemType === ITEM_TYPES.SHOP_ITEM;\n const hasDiscount = item.discountRate > 0;\n\n const isNewToday =\n !!item.startDate &&\n dayjs(item.startDate).isAfter(dayjs().subtract(1, 'day'));\n const itemUrl = toLocalizedUrl(item.itemUrl || '/');\n ///////\n\n const getMediumFitImageUrl = imageUrl =>\n imageUrl?.replace('/medium/', '/medium-fit/');\n\n const handleSettings = event => {\n event.preventDefault();\n onSettings(item);\n };\n\n const handleQuickview = event => {\n event.preventDefault();\n onQuickView(item.itemId);\n };\n\n const handleWishlist =\n onRemoveFromWishlist && onAddToWishlist\n ? event => {\n event.preventDefault();\n if (existsInWishList) {\n onRemoveFromWishlist(item.itemId);\n } else {\n onAddToWishlist(item.itemId);\n }\n }\n : null;\n\n const onNavigate = () => {\n if (gaCategory) {\n GtmService.trackAction(gaCategory, 'Navigation', item.itemId);\n }\n };\n\n return (\n \n
    \n \n
    \n {showSellerAlias && (\n \n )}\n
    \n
    \n {showShippingOrOnDisplay && isSwedishVisitor && (\n \n )}\n {showShippingOrOnDisplay && item.onDisplay && (\n \n )}\n {showBidStatus && item.isLeading && (\n \n )}\n {showBidStatus && item.isOverbidden && (\n \n )}\n
    \n \n
    \n {ready && (\n <>\n {handleWishlist && (\n \n )}\n {onQuickView && (\n \n )}\n {isShopOwnedByCurrentMember && (\n \n )}\n \n )}\n
    \n

    \n \n {hasDiscount && (\n \n )}\n {item.shortDescription}\n \n

    \n {!!item.attributes?.length && onAttributeButtonClick && (\n \n )}\n
    \n {hasDiscount && (\n \n )}\n {animatePriceLabel ? (\n \n ) : (\n \n )}\n {isShopItem ? (\n \n ) : (\n \n )}\n \n {MultiCurrency.isVisible(item.price, preferredCurrency) &&\n showBids && (\n |\n )}\n {showBids && (\n \n )}\n {isNewToday && (\n \n )}\n
    \n
    \n \n );\n};\n\nItemCard.defaultProps = {\n animatePriceLabel: false,\n className: '',\n gaCategory: null,\n imageMode: ITEM_CARD_IMAGE_MODES.SQUARE,\n onQuickView: null,\n showBidStatus: false,\n showShippingOrOnDisplay: true,\n showSellerAlias: false\n};\n\nItemCard.propTypes = {\n animatePriceLabel: PropTypes.bool,\n className: PropTypes.string,\n gaCategory: PropTypes.string,\n imageMode: PropTypes.oneOf(Object.values(ITEM_CARD_IMAGE_MODES)),\n item: PropTypes.shape({\n attributes: PropTypes.array,\n buyNowPrice: PropTypes.number,\n discountRate: PropTypes.number,\n displayHighlighted: PropTypes.bool,\n endDate: PropTypes.string,\n hasFreeShipping: PropTypes.bool,\n imageHeight: PropTypes.number,\n imageUrl: PropTypes.string,\n imageSecondaryUrl: PropTypes.string,\n imageWidth: PropTypes.number,\n isActive: PropTypes.bool,\n itemId: PropTypes.number,\n itemType: PropTypes.string,\n itemUrl: PropTypes.string,\n onDisplay: PropTypes.bool,\n price: PropTypes.number,\n priceBeforeDiscount: PropTypes.number,\n reservePriceReached: PropTypes.bool,\n sellerAlias: PropTypes.string,\n sellerDsrAverage: PropTypes.number,\n sellerMemberId: PropTypes.number,\n shippingOptions: PropTypes.array,\n shortDescription: PropTypes.string,\n startDate: PropTypes.string,\n totalBids: PropTypes.number,\n\n /* Currently only used in Wish list */\n isOverbidden: PropTypes.bool,\n isLeading: PropTypes.bool,\n isWinner: PropTypes.bool\n }),\n lazy: PropTypes.shape({\n offset: PropTypes.number,\n once: PropTypes.bool,\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n placeholder: PropTypes.node,\n imagePlaceholder: PropTypes.node\n }),\n onAddToWishlist: PropTypes.func,\n onRemoveFromWishlist: PropTypes.func,\n onQuickView: PropTypes.func,\n onSettings: PropTypes.func,\n preferredCurrency: preferredCurrencyPropTypes,\n ready: PropTypes.bool,\n showBidStatus: PropTypes.bool,\n showShippingOrOnDisplay: PropTypes.bool,\n isShopOwnedByCurrentMember: PropTypes.bool\n};\n\nexport default ItemCard;\n","import actionTypes from './action-types';\nimport { Analytics } from 'packages';\nimport cookieUtil from 'tradera-utils/cookie';\n\nexport const setPreferredCurrency = currencyCode => {\n Analytics.trackEvent({\n category: 'Settings',\n action: 'Currency',\n label: currencyCode\n });\n\n createPreferredCurrencyCookie(currencyCode);\n\n return {\n type: actionTypes.SET_PREFERRED_CURRENCY,\n payload: { currencyCode: currencyCode }\n };\n};\n\nexport const setCurrencyIfNotChosen = currencyCode => dispatch => {\n if (cookieUtil.readCookie('preferred_currency') || currencyCode === 'SEK') {\n return;\n }\n\n dispatch(setPreferredCurrency(currencyCode));\n};\n\nconst yearInMilliseconds = 1000 * 60 * 60 * 24 * 365;\nconst createPreferredCurrencyCookie = currencyCode => {\n cookieUtil.createCookie(\n 'preferred_currency',\n currencyCode,\n new Date(new Date().getTime() + yearInMilliseconds)\n );\n};\n","export const selectCurrencies = state => state.multiCurrency.currencies;\n\nexport const selectPreferredCurrency = state =>\n state.multiCurrency.preferredCurrency;\n\nexport const selectShowCurrencySelection = state =>\n !!(\n state.multiCurrency.enabled &&\n state.multiCurrency.preferredCurrency &&\n state.multiCurrency.currencies &&\n state.multiCurrency.currencies.length > 0\n );\n","import {\n useBreakpoint,\n isMobile\n} from 'tradera-components/breakpoint/breakpoint';\n\nconst useIsMobile = () => isMobile(useBreakpoint());\n\nexport default useIsMobile;\n","export default {\n ADD: 'ITEMS/ADD',\n ADD_RECENTLY_VIEWED: 'ITEMS/ADD_RECENTLY_VIEWED',\n WISHLIST: 'ITEMS/WISHLIST',\n WISHLIST_ADD_RANGE: 'ITEMS/WISHLIST_ADD_RANGE',\n SETTINGS: 'ITEMS/SETTINGS',\n UPDATE_ITEM: 'ITEMS/UPDATE_ITEM'\n};\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport MediaQuery from 'react-responsive';\nimport ExpandableMenuItem from 'tradera-components/site-header/dropdown-menu-item-expandable';\nimport {\n selectPreferredCurrency,\n selectShowCurrencySelection\n} from 'tradera-state/multi-currency';\nimport {\n selectPreferredLanguage,\n selectShouldAlwaysDisplayInMenu\n} from 'tradera-state/language/selectors';\nimport { LocalizationMenu } from 'static/script/components/localization/localization-menu';\nimport LocationIcon from '@tradera/blueprint/theme/icons2/location.svg?jsx';\nimport { BREAKPOINT_SIZES, BREAKPOINTS } from 'tradera-constants/breakpoints';\nimport { selectShowRegionSelection } from 'tradera-state/shipping-region/selectors';\nimport { useTranslator } from 'tradera-lang/translate';\n\nexport const LocalizationMenuItem = ({\n onToggle,\n preferredCurrency,\n showCurrencySelection,\n preferredLanguage,\n shouldAlwaysDisplayInMenu,\n showRegionSelection\n}) => {\n const { t } = useTranslator();\n const onOpen = useCallback(() => onToggle('Open - Localization'), [\n onToggle\n ]);\n const onClose = useCallback(() => onToggle('Close - Localization'), [\n onToggle\n ]);\n\n const mediaQuery = shouldAlwaysDisplayInMenu\n ? { minWidth: BREAKPOINT_SIZES[BREAKPOINTS.XS].min }\n : { maxWidth: BREAKPOINT_SIZES[BREAKPOINTS.MD].max };\n\n return (\n \n }\n onOpen={onOpen}\n onClose={onClose}>\n \n \n \n );\n};\n\nLocalizationMenuItem.propTypes = {\n onToggle: PropTypes.func.isRequired,\n preferredCurrency: PropTypes.object,\n showCurrencySelection: PropTypes.bool.isRequired,\n preferredLanguage: PropTypes.object\n};\n\nconst mapStateToProps = state => ({\n preferredCurrency: selectPreferredCurrency(state),\n showCurrencySelection: selectShowCurrencySelection(state),\n preferredLanguage: selectPreferredLanguage(state),\n shouldAlwaysDisplayInMenu: selectShouldAlwaysDisplayInMenu(state),\n showRegionSelection: selectShowRegionSelection(state)\n});\n\nexport const ConnectedLocalizationMenuItem = connect(mapStateToProps)(\n LocalizationMenuItem\n);\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport PenIcon from '@tradera/blueprint/theme/icons2/pen.svg?jsx';\nimport SwishIcon from '@tradera/blueprint/theme/icons/swish.svg?jsx';\nimport WarningIcon from '@tradera/blueprint/theme/icons/warning.svg?jsx';\n\nconst trackPaymentOnboarding = (action, label) => {\n GtmService.trackAction('Tradera Payment Onboarding', action, label);\n};\n\nconst InvoiceUnpaidAlert = () => {\n const { t } = useTranslator();\n return (\n
    \n {t('siteheader_invoiceUnpaidDescription')}\n
    \n );\n};\n\nconst InvoiceOverdueAlert = () => {\n const { t } = useTranslator();\n return (\n
    \n \n \n {t('siteheader_invoiceOverdueTitle')}\n
    \n {t('siteheader_invoiceOverdueDescription')}\n
    \n
    \n );\n};\n\nconst BankAccountMissingAlert = () => {\n const { t } = useTranslator();\n trackPaymentOnboarding(\n 'Bank account Onboarding Alert',\n 'Will add from - Account menu alert'\n );\n return (\n
    \n \n \n {t('siteheader_bankAccountMissingTitle')}\n
    \n {t('siteheader_bankAccountMissingDescription')}\n
    \n
    \n );\n};\n\nconst PayoutFailedAlert = () => {\n const { t } = useTranslator();\n return (\n
    \n \n \n {t('siteheader_payoutFailedTitle')}\n
    \n {t('siteheader_payoutFailedDescription')}\n
    \n
    \n );\n};\n\nconst PayoutReadyBankAccountMissingAlert = () => {\n const { t } = useTranslator();\n trackPaymentOnboarding(\n 'Bank account Onboarding Alert',\n 'Will add from - Account menu alert - Failed payment'\n );\n return (\n
    \n
    \n \n \n \n {t('siteheader_paymentReadBankAccountMissingTitle')}\n \n
    \n {t('siteheader_paymentReadBankAccountMissingDescription')}\n
    \n
    \n
    \n );\n};\n\nconst SwishMissingAlert = ({ dismissSwish, enableSwishUrl }) => {\n const { t } = useTranslator();\n trackPaymentOnboarding(\n 'Swish Onboarding Alert',\n 'Show on - Account menu alert'\n );\n return (\n
    \n
    \n \n \n {t('siteheader_swishMissingTitle')}\n
    \n {t('siteheader_swishMissingDescription')}\n
    \n
    \n {\n e.preventDefault();\n location.href = enableSwishUrl;\n trackPaymentOnboarding(\n 'Swish Onboarding Alert',\n 'Will add from - Account menu alert'\n );\n }}>\n \n {t('siteheader_addSwish')}\n \n {\n e.preventDefault();\n dismissSwish();\n trackPaymentOnboarding(\n 'Swish Onboarding Alert',\n 'Dismissed from - Account menu alert'\n );\n }}>\n {t('siteheader_swishNoThanks')}\n
    \n \n );\n};\n\nconst HyperwalletPayeeVerificationAlert = () => {\n const { t } = useTranslator();\n return (\n
    \n
    \n \n \n \n {t('siteheader_hyperwalletPayeeVerificationTitle')}\n \n
    \n {t('siteheader_hyperwalletPayeeVerificationDescription')}\n
    \n
    \n {\n e.preventDefault();\n location.href = '/my/PayeeVerification';\n }}>\n {t('siteheader_hyperwalletPayeeVerificationMoreInfo')}\n \n
    \n );\n};\n\nconst HyperwalletPayeeVerificationReviewAlert = () => {\n const { t } = useTranslator();\n return (\n {\n e.preventDefault();\n location.href = '/my/PayeeVerificationCompleted';\n }}>\n \n \n \n {t('siteheader_hyperwalletPayeeVerificationReviewTitle')}\n \n
    \n {t('siteheader_hyperwalletPayeeVerificationReviewDescription')}\n
    \n \n );\n};\n\nconst OnboardToTraderaPayAlert = () => {\n const { t } = useTranslator();\n return (\n {\n e.preventDefault();\n location.href = '/my/Payments';\n }}>\n
    \n \n \n {t('siteheader_onboardToTraderaPayTitle')}\n
    \n {t('siteheader_onboardToTraderaPayDescription')}\n
    \n
    \n {\n e.preventDefault();\n location.href = '/my/Payments';\n }}>\n {t('siteheader_onboardToTraderaPayMoreInfo')}\n \n \n );\n};\n\nexport {\n InvoiceUnpaidAlert,\n InvoiceOverdueAlert,\n BankAccountMissingAlert,\n PayoutFailedAlert,\n PayoutReadyBankAccountMissingAlert,\n SwishMissingAlert,\n HyperwalletPayeeVerificationAlert,\n HyperwalletPayeeVerificationReviewAlert,\n OnboardToTraderaPayAlert\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport RatingStars from 'tradera-components/rating-stars/rating-stars';\nimport ALink from 'tradera-components/alink/alink';\nimport './profile-card.scss';\n\nconst getGaLinkAttributes = label => ({\n 'data-ga-category': 'Top navigation',\n 'data-ga-action': 'Account menu',\n 'data-ga-label': `Link - ${label}`\n});\n\nconst getGaButtonAttributes = label => ({\n 'data-ga-category': 'Top navigation',\n 'data-ga-action': 'Account menu',\n 'data-ga-label': `Button - ${label}`\n});\n\nconst ProfileCard = ({\n closeProfileMenu,\n memberAlias,\n memberId,\n rating,\n imageUrl,\n cleanedMemberAlias\n}) => {\n const [imageAvailable, setImageAvailable] = useState(true);\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n
    \n {imageUrl && imageAvailable && (\n {\n setImageAvailable(false);\n }}\n />\n )}\n
    \n \n {imageUrl\n ? t('siteHeader_changeCoverImage')\n : t('siteHeader_addCoverImage')}\n \n \n {memberAlias}\n \n {rating && (\n
    \n \n
    \n )}\n
    \n );\n};\n\nProfileCard.propTypes = {\n memberAlias: PropTypes.string,\n memberId: PropTypes.number,\n rating: PropTypes.number,\n imageUrl: PropTypes.string\n};\n\nexport default ProfileCard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport MediaQuery from 'react-responsive';\nimport { useDispatch } from 'react-redux';\n\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport { BREAKPOINT_SIZES, BREAKPOINTS } from 'tradera-constants/breakpoints';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { getMenuGaAttributes } from 'tradera-components/site-header/site-header.analytics';\n\nimport { useQualtive } from 'tradera-hooks/use-qualtive';\nimport { SURVEYS } from 'tradera-constants/surveys';\nimport uiActions from 'tradera-state/ui/actions';\nimport MenuItemSeparator from 'tradera-components/site-header/dropdown-menu-item-separator';\nimport MenuItem from 'tradera-components/site-header/dropdown-menu-item';\nimport ExpandableMenuItem from 'tradera-components/site-header/dropdown-menu-item-expandable';\nimport { ConnectedLocalizationMenuItem } from './expandable-localization-menu-item.jsx';\nimport {\n InvoiceUnpaidAlert,\n InvoiceOverdueAlert,\n BankAccountMissingAlert,\n PayoutFailedAlert,\n PayoutReadyBankAccountMissingAlert,\n SwishMissingAlert,\n HyperwalletPayeeVerificationAlert,\n HyperwalletPayeeVerificationReviewAlert,\n OnboardToTraderaPayAlert\n} from './profile-menu-alerts';\nimport ProfileCard from '../profile/profile-card';\nimport AuctionIcon from '@tradera/blueprint/theme/icons2/auction.svg?jsx';\nimport AuctionLostIcon from '@tradera/blueprint/theme/icons2/bid-lost.svg?jsx';\nimport BookmarkIcon from '@tradera/blueprint/theme/icons2/bookmark.svg?jsx';\nimport BuyIcon from '@tradera/blueprint/theme/icons2/buy.svg?jsx';\nimport ChatIcon from '@tradera/blueprint/theme/icons2/chat.svg?jsx';\nimport DateIcon from '@tradera/blueprint/theme/icons2/date.svg?jsx';\nimport DocumentIcon from '@tradera/blueprint/theme/icons2/document.svg?jsx';\nimport HeartIcon from '@tradera/blueprint/theme/icons2/heart.svg?jsx';\nimport HomeIcon from '@tradera/blueprint/theme/icons2/home.svg?jsx';\nimport ListIcon from '@tradera/blueprint/theme/icons2/list.svg?jsx';\nimport LogoutIcon from '@tradera/blueprint/theme/icons2/logout.svg?jsx';\nimport PackageIcon from '@tradera/blueprint/theme/icons2/package.svg?jsx';\nimport PenIcon from '@tradera/blueprint/theme/icons2/pen.svg?jsx';\nimport RatingPositiveIcon from '@tradera/blueprint/theme/icons2/rating-positive.svg?jsx';\nimport SaleIcon from '@tradera/blueprint/theme/icons2/sale.svg?jsx';\nimport SettingsIcon from '@tradera/blueprint/theme/icons2/settings.svg?jsx';\nimport SoldIcon from '@tradera/blueprint/theme/icons2/sold.svg?jsx';\nimport StarIcon from '@tradera/blueprint/theme/icons2/star.svg?jsx';\nimport UnsoldIcon from '@tradera/blueprint/theme/icons2/unsold.svg?jsx';\nimport UserIcon from '@tradera/blueprint/theme/icons2/user.svg?jsx';\nimport WalletIcon from '@tradera/blueprint/theme/icons2/wallet.svg?jsx';\nimport WinningIcon from '@tradera/blueprint/theme/icons2/winning.svg?jsx';\nimport WriteIcon from '@tradera/blueprint/theme/icons2/write.svg?jsx';\nimport { useMenuHeightFix } from 'tradera-hooks/use-menu-height-fix';\nimport initData from 'init-data';\n\nconst mediaBelowLarge = { maxWidth: BREAKPOINT_SIZES[BREAKPOINTS.MD].max };\n\nconst getGaAttributes = label =>\n getMenuGaAttributes('Top navigation', 'Account menu', label);\n\nconst trackOnClick = label => {\n GtmService.trackAction('Top navigation', 'Account menu', `Link - ${label}`);\n};\n\nconst trackExpandItemClick = label => {\n GtmService.trackAction('Top navigation', 'Account menu', label);\n};\n\nconst ProfileMenuContent = ({\n cleanedMemberAlias,\n dismissSwish,\n logOut,\n memberAlias,\n memberDetailedSellerRatingAverage,\n memberHeroImage = {},\n memberId,\n showMessagingLink,\n showPayments1Menu,\n showPayments2Menu,\n systemMessages,\n threadsUnread\n}) => {\n const { t } = useTranslator();\n const dispatch = useDispatch();\n const { toLocalizedUrl } = useUrlLocalizer();\n const isSettingsEnabled = useIsFeatureEnabled('my-tradera-settings');\n const isTraderaShopEnabled = useIsFeatureEnabled('tradera-shop');\n const menuContentRef = useMenuHeightFix();\n const { isQualtiveEnabled, openQualtiveModal } = useQualtive();\n\n const closeProfileMenu = () => dispatch(uiActions.closeProfileMenu());\n\n return (\n <>\n
    \n \n
    \n
      \n }\n border\n gaAttributes={getGaAttributes('My Tradera Overview')}\n />\n {showMessagingLink && (\n <>\n }\n border\n notify={threadsUnread}\n follow={false}\n gaAttributes={getGaAttributes('Messages')}\n />\n \n )}\n \n }\n border\n gaAttributes={getGaAttributes(\n 'Create new listing - from top'\n )}\n />\n \n }\n border\n onOpen={() => trackExpandItemClick('Open - Watchlist')}\n onClose={() =>\n trackExpandItemClick('Close - Watchlist')\n }>\n }\n border\n gaAttributes={getGaAttributes('Wishlist')}\n />\n }\n border\n gaAttributes={getGaAttributes('Saved searches')}\n />\n }\n gaAttributes={getGaAttributes('Favorite seller')}\n />\n \n }\n border\n onOpen={() => trackExpandItemClick('Open - Buying')}\n onClose={() => trackExpandItemClick('Close - Buying')}>\n }\n border\n gaAttributes={getGaAttributes('Ongoing auctions')}\n />\n }\n border\n gaAttributes={getGaAttributes('Won / Bought')}\n />\n }\n border\n gaAttributes={getGaAttributes('Lost')}\n />\n }\n gaAttributes={getGaAttributes('Rate seller')}\n />\n \n }\n border\n onOpen={() => trackExpandItemClick('Open - Selling')}\n onClose={() => trackExpandItemClick('Close - Selling')}>\n }\n border\n gaAttributes={getGaAttributes('Active listings')}\n />\n }\n border\n gaAttributes={getGaAttributes('Sold listings')}\n />\n }\n border\n gaAttributes={getGaAttributes('Unsold listings')}\n />\n }\n border\n gaAttributes={getGaAttributes('Picklist')}\n />\n }\n border\n gaAttributes={getGaAttributes('Create new listing')}\n />\n }\n border\n gaAttributes={getGaAttributes('Listing templates')}\n />\n }\n border\n gaAttributes={getGaAttributes('Rate buyer')}\n />\n {isTraderaShopEnabled && (\n \n {t('siteHeader_buyShippingBags')}{' '}\n \n {t('siteHeader_new')}\n \n \n }\n link={toLocalizedUrl(\n '/tradera-shop/shipping-bags'\n )}\n className=\"site-dropdown__item-with-icon indent-2\"\n icon={}\n gaAttributes={getGaAttributes(\n 'Buy shipping bags'\n )}\n />\n )}\n \n \n \n }\n inSPA={true}\n onClick={closeProfileMenu}\n border\n gaAttributes={getGaAttributes('My profile')}\n />\n }\n inSPA={true}\n onClick={closeProfileMenu}\n border\n gaAttributes={getGaAttributes('Ratings')}\n />\n }\n border\n gaAttributes={getGaAttributes('Notifications')}\n />\n \n }\n notificationDot={systemMessages.InvoiceUnpaid && 'warning'}\n alerts={[\n systemMessages.InvoiceUnpaid && (\n \n ),\n systemMessages.InvoiceOverdue && (\n \n )\n ]}\n border\n gaAttributes={getGaAttributes('Invoices')}\n />\n {showPayments1Menu && (\n }\n alerts={[\n systemMessages.OnboardToTraderaPay && (\n \n )\n ]}\n border\n gaAttributes={getGaAttributes('Payouts')}\n />\n )}\n {showPayments2Menu && (\n }\n alerts={[\n systemMessages.BankAccountMissing && (\n \n ),\n systemMessages.PayoutReadyBankAccountMissing && (\n \n ),\n systemMessages.PayoutFailed && (\n \n ),\n systemMessages.SwishNumberMissing && (\n \n ),\n systemMessages.HyperwalletPayeeVerificationRequired && (\n \n ),\n systemMessages.HyperwalletPayeeVerificationUnderReview && (\n \n )\n ]}\n border\n gaAttributes={getGaAttributes('Payouts')}\n />\n )}\n }\n border\n gaAttributes={getGaAttributes('Settings')}\n />\n \n \n {isQualtiveEnabled && (\n }\n onClick={() => {\n openQualtiveModal(SURVEYS.general, t);\n trackOnClick('Leave feedback Qualtive');\n }}\n />\n )}\n }\n border\n gaAttributes={getGaAttributes('Customer service')}\n />\n \n }\n gaAttributes={getGaAttributes('Logout')}\n />\n {/* NOTE: Fix for iPhone menu making bottom element unclickable */}\n \n
    \n \n );\n};\n\nProfileMenuContent.propTypes = {\n cleanedMemberAlias: PropTypes.string,\n dismissSwish: PropTypes.func,\n logOut: PropTypes.func,\n memberAlias: PropTypes.string,\n memberDetailedSellerRatingAverage: PropTypes.number,\n memberHeroImage: PropTypes.object,\n memberId: PropTypes.number,\n showMessagingLink: PropTypes.bool,\n showPayments1Menu: PropTypes.bool,\n showPayments2Menu: PropTypes.bool,\n systemMessages: PropTypes.object,\n threadsUnread: PropTypes.number\n};\nProfileMenuContent.defaultProps = {\n systemMessages: {}\n};\n\nexport default ProfileMenuContent;\n","import React from 'react';\nimport MenuItemSeparator from 'tradera-components/site-header/dropdown-menu-item-separator';\nimport MenuItem from 'tradera-components/site-header/dropdown-menu-item';\nimport ExpandableMenuItem from 'tradera-components/site-header/dropdown-menu-item-expandable';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { getMenuGaAttributes } from 'tradera-components/site-header/site-header.analytics';\nimport STRINGS from 'static/script/constants/strings';\nimport { getReturnUrl } from 'tradera-utils/login';\nimport logger from 'logger';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport { useQualtive } from 'tradera-hooks/use-qualtive';\nimport { SURVEYS } from 'tradera-constants/surveys';\nimport { getInitData } from 'packages/init-data';\n\nimport ChatIcon from '@tradera/blueprint/theme/icons2/chat.svg?jsx';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport { useMenuHeightFix } from 'tradera-hooks/use-menu-height-fix';\n\nconst onIframeLoad = (e, closeMenu) => {\n const iframe = e.target;\n if (iframe) {\n const iframeDocument =\n iframe.contentDocument || iframe.contentWindow.document;\n if (iframeDocument) {\n iframeDocument.body.addEventListener('keydown', e => {\n if (e.keyCode === 27) {\n closeMenu();\n }\n });\n }\n }\n};\n\nconst handleBotClick = () => {\n const botWidget = document.querySelector('.humany-trigger');\n if (botWidget) {\n botWidget.click();\n }\n};\n\nconst getGaAttributes = label =>\n getMenuGaAttributes('Top navigation', 'Login menu', label);\n\nconst trackOnClick = label => {\n GtmService.trackAction('Top navigation', 'Login menu', `Link - ${label}`);\n};\n\nconst trackExpandItemClick = label => {\n GtmService.trackAction('Top navigation', 'Login menu', label);\n};\n\nconst SignInMenuContent = ({ closeMenu, redirectUrl }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const initData = getInitData();\n const menuContentRef = useMenuHeightFix();\n const { isQualtiveEnabled, openQualtiveModal } = useQualtive();\n return (\n <>\n onIframeLoad(e, closeMenu)}>\n

    {STRINGS.IFRAME_NOT_SUPPORTED}

    \n \n }\n border={false}\n onOpen={() => trackExpandItemClick('Open - Help')}\n onClose={() => trackExpandItemClick('Close - Help')}>\n }\n gaAttributes={getGaAttributes('Forgot')}\n />\n }\n gaAttributes={getGaAttributes('Help pages')}\n />\n }\n gaAttributes={getGaAttributes('Customer service')}\n />\n\n }\n onClick={async () => {\n try {\n const { default: AddHumanyBot } = await import(\n /* webpackChunkName: \"humany-bot\" */ 'static/script/components/humany/humany-bot'\n );\n AddHumanyBot(initData);\n handleBotClick();\n } catch (e) {\n logger(e);\n }\n\n trackOnClick('Chat with JUNO');\n }}\n />\n {isQualtiveEnabled && (\n }\n onClick={() => {\n openQualtiveModal(SURVEYS.general);\n trackOnClick('Leave feedback Qualtive');\n }}\n />\n )}\n {/* NOTE: Fix for iPhone menu making bottom element unclickable */}\n \n \n \n );\n};\n\nexport default SignInMenuContent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport { RemoveScroll } from 'react-remove-scroll';\n\nimport {\n Breakpoint,\n BREAKPOINTS\n} from 'tradera-components/breakpoint/breakpoint';\nimport {\n EnterFrom,\n EnterFade\n} from 'tradera-components/transitions/transitions';\nimport ApplicationErrorBoundary from 'tradera-components/application-error-boundary/application-error-boundary';\nimport Overlay from 'components/modals/overlay';\nimport ProfileMenuContent from './profile-menu-content';\nimport SignInMenuContent from './sign-in-menu-content';\n\nimport 'tradera-components/site-header/dropdown-menu.scss';\nimport './profile-menu.scss';\n\nconst ProfileMenu = props => {\n const {\n className,\n dismissSwish,\n expanded,\n handleExpand,\n logOut,\n member,\n redirectUrl,\n showMessagingLink,\n systemMessages,\n threadsUnread,\n transparentHeader\n } = props;\n\n const {\n cleanedMemberAlias,\n isLoggedIn,\n memberAlias,\n memberDetailedSellerRatingAverage,\n memberHeroImage,\n memberId\n } = member;\n\n const showPayments1Menu =\n member.paymentSettings && member.paymentSettings.showPayments1Menu;\n\n const showPayments2Menu =\n member.paymentSettings && member.paymentSettings.showPayments2Menu;\n\n const renderChild = () => (\n \n
    \n {isLoggedIn ? (\n \n ) : (\n \n )}\n
    \n
    \n );\n\n return (\n \n \n \n );\n};\n\nProfileMenu.defaultProps = {\n expanded: false\n};\n\nProfileMenu.propTypes = {\n className: PropTypes.string,\n dismissSwish: PropTypes.func.isRequired,\n expanded: PropTypes.bool,\n logOut: PropTypes.func.isRequired,\n member: PropTypes.shape({\n cleanedMemberAlias: PropTypes.string,\n isLoggedIn: PropTypes.bool.isRequired,\n memberAlias: PropTypes.string,\n memberDetailedSellerRatingAverage: PropTypes.number,\n memberHeroImage: PropTypes.object,\n memberId: PropTypes.number\n }),\n showMessagingLink: PropTypes.bool,\n systemMessages: PropTypes.object,\n threadsUnread: PropTypes.number\n};\n\nexport default ProfileMenu;\n","import React from 'react';\nimport UserIcon from '@tradera/blueprint/theme/icons2/user-fill.svg?jsx';\n\nconst Profile = ({ isLoggedIn, facebookId }) =>\n isLoggedIn && facebookId ? (\n \n ) : (\n <>\n \n \n );\n\nexport default Profile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport DropdownIcon from '@tradera/blueprint/theme/icons2/dropdown.svg?jsx';\nimport { useTranslator } from 'tradera-lang/translate';\nimport MessageIcon from '@tradera/blueprint/theme/icons2/message.svg?jsx';\nimport Profile from 'tradera-components/site-header/profile';\n\nconst ProfileLink = ({\n facebookId,\n handleProfileClick,\n isLoggedIn,\n memberAlias,\n menuExpanded,\n systemMessageCount,\n threadsUnread,\n transparentHeader\n}) => {\n const { t } = useTranslator();\n const logInText = t('siteHeader_logIn');\n const tooltip = isLoggedIn ? t('siteHeader_myTradera') : logInText;\n const text = isLoggedIn ? memberAlias : logInText;\n\n let badgeType = 'primary';\n if (systemMessageCount > 0) {\n badgeType = 'danger';\n }\n const multipleBadges = threadsUnread > 0 && systemMessageCount > 0;\n\n return (\n \n \n \n {(threadsUnread > 0 || systemMessageCount > 0) && (\n \n {threadsUnread > 0 && (\n \n \n {threadsUnread < 100 ? threadsUnread : '99+'}\n \n )}\n {systemMessageCount > 0 && (\n 0\n ? 'border-left border-white system-count--messaging'\n : 'system-count'\n }`}>\n {systemMessageCount}\n \n )}\n \n )}\n \n {text}\n \n {isLoggedIn && (\n \n )}\n \n \n );\n};\n\nProfileLink.propTypes = {\n facebookId: PropTypes.string,\n handleProfileClick: PropTypes.func,\n isLoggedIn: PropTypes.bool,\n menuExpanded: PropTypes.bool,\n memberAlias: PropTypes.string,\n systemMessageCount: PropTypes.number,\n threadsUnread: PropTypes.number\n};\n\nexport default ProfileLink;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport uiActions from 'tradera-state/ui/actions';\nimport ProfileMenu from '../profile-menu/profile-menu';\nimport ProfileLink from './profile-link';\nimport { trackProfileClick } from './site-header.analytics';\nimport { useUrlLocalizer } from 'tradera-lang/translate';\n\nconst ProfileMenuLink = props => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const handleLoginClick = (redirectUrl = false) =>\n props.signIn(toLocalizedUrl(redirectUrl));\n\n // Prevent Default and show login, if not logged in\n const preventNavigationAndShowLogin = (event, redirect) => {\n const {\n member: { isLoggedIn }\n } = props;\n if (!isLoggedIn) {\n event.preventDefault();\n handleLoginClick(redirect);\n }\n };\n\n const handleProfileClick = evt => {\n const {\n member: { isLoggedIn },\n pageName,\n profileMenu,\n openProfileMenu,\n closeProfileMenu,\n closeCategoryDropdownMenu\n } = props;\n\n if (profileMenu.open === 'open') {\n trackProfileClick(isLoggedIn, false);\n closeProfileMenu();\n } else {\n closeCategoryDropdownMenu();\n trackProfileClick(isLoggedIn, true);\n // not logged in\n if (!isLoggedIn) {\n preventNavigationAndShowLogin(evt, false);\n return;\n } else {\n openProfileMenu();\n }\n }\n\n if (pageName.includes('MyTradera')) {\n window.scrollTo(0, 0);\n }\n };\n\n const {\n dismissSwish,\n featureSwitches,\n logOut,\n messagingThreads,\n member,\n profileMenu,\n systemMessages,\n systemMessageCount,\n transparentHeader\n } = props;\n\n const { open: profileMenuOpen = false } = profileMenu;\n\n const showMessagingLink = featureSwitches['messaging'];\n\n const { threadsUnread } = messagingThreads;\n\n const { redirectUrl } = profileMenu;\n\n return (\n <>\n \n \n \n );\n};\n\nconst mapStateToProps = state => ({\n featureSwitches: state.environment.featureSwitches,\n member: state.member,\n messagingThreads: state.ui.badges.messaging,\n pageName: state.page.type,\n profileMenu: state.ui.profileMenu,\n showHeaderSearch: state.ui.showHeaderSearch,\n systemMessages: state.ui.systemMessages,\n systemMessageCount: state.ui.badges.system\n});\n\nconst mapDispatchToProps = dispatch => {\n return {\n closeCategoryDropdownMenu: () =>\n dispatch(uiActions.closeCategoryDropdownMenu()),\n closeProfileMenu: () => dispatch(uiActions.closeProfileMenu()),\n dismissSwish: () => dispatch(uiActions.dismissSwish()),\n logOut: () => dispatch(uiActions.logOut()),\n openProfileMenu: () => dispatch(uiActions.openProfileMenu()),\n signIn: redirectUrl => dispatch(uiActions.signIn({ redirectUrl }))\n };\n};\n\nProfileMenuLink.propTypes = {\n dismissSwish: PropTypes.func,\n featureSwitches: PropTypes.object,\n member: PropTypes.object,\n messagingThreads: PropTypes.object,\n pageName: PropTypes.string,\n systemMessages: PropTypes.object,\n systemMessageCount: PropTypes.number\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ProfileMenuLink);\n","import {\n useBreakpoint,\n isDesktop\n} from 'tradera-components/breakpoint/breakpoint';\n\nconst useIsDesktop = () => isDesktop(useBreakpoint());\n\nexport default useIsDesktop;\n","let startTime = 0;\n\nconst startSession = () => {\n startTime = new Date().getTime();\n};\n\nconst getElapsedMillis = () => {\n return new Date().getTime() - startTime;\n};\n\nexport default {\n startSession,\n getElapsedMillis\n};\n","/* eslint-disable promise/always-return */\n/* eslint-disable promise/catch-or-return */\nimport scribe from './scribe';\nimport sessionService from './session-service';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport { defaultClient as httpClient } from 'tradera-utils/http';\n\nfunction trackItemPublished(draft) {\n var isFromTemplate = isDraftFromTemplate(draft);\n scribe.sendSessionDuration(\n sessionService.getElapsedMillis(),\n isFromTemplate\n );\n}\n\nfunction prepareForPublish(draft) {\n draft.shippingOptions = draft.shippingOptions.filter(item => !!item.type);\n draft.descriptionLanguageCodeIso2 =\n draft.descriptionLanguageCodeIso2 || 'sv';\n draft.currency = draft.currency || 'SEK';\n}\n\nfunction isNullOrUndefined(val) {\n return val === null || val === undefined;\n}\n\nfunction isDraftFromTemplate(draft) {\n return draft && !isNullOrUndefined(draft.templateId);\n}\n\nconst publish = async (draft, hasTraderaPayConsent) => {\n prepareForPublish(draft);\n const response = await httpClient.post(ENDPOINTS.SELLING_ITEM_PUBLISH, {\n draft: draft,\n hasTraderaPayConsent: hasTraderaPayConsent\n });\n trackItemPublished(draft);\n if (response.data.errorCode) {\n throw response.data;\n }\n\n return response.data;\n};\n\nexport default {\n publish\n};\n","import imageActions from '../image-actions';\n\nconst handleInvalidImages = (errors, dispatch, translator) => {\n const displayTexts = [];\n let invalidImageCount = 0;\n errors.forEach(error => {\n let invalidImageIds = error.message.split(',');\n invalidImageIds.forEach(id => {\n dispatch(imageActions.removeImageWithId(id));\n invalidImageCount++;\n });\n });\n if (invalidImageCount > 0) {\n displayTexts.push(\n translator('syi_publish_error_invalid_image', {\n count: invalidImageCount\n })\n );\n }\n return displayTexts;\n};\n\nconst translateErrorCode = (error, translator) => {\n switch (error.errorCode) {\n case 'AlreadyPublished':\n return translator('syi_publish_error_alreadypublished');\n case 'BuyItNowPriceNotLargerThanOpeningPrice':\n return translator(\n 'syi_publish_error_buyitnowpricenotlargerthanopeningprice'\n );\n case 'BuyItNowPriceNotLargerThanReservePrice':\n return translator(\n 'syi_publish_error_buyitnowpricenotlargerthanreserveprice'\n );\n case 'BuyItNowPriceTooLarge':\n return translator('syi_publish_error_buyitnowpricetoolarge');\n case 'BuyItNowPriceUnset':\n return translator('syi_publish_error_buyitnowpriceunset');\n case 'CampaignCodeInvalid':\n return translator('syi_publish_error_campaigncodeinvalid');\n case 'CategoryContainsTooManyItems':\n return translator('syi_publish_error_categorycontainstoomanyitems');\n case 'CategoryDoesNotSupportBin':\n return translator('syi_publish_error_categorydoesnotsupportbin');\n case 'CategoryDoesNotSupportUsedItems':\n return translator(\n 'syi_publish_error_categorydoesnotsupportuseditems'\n );\n case 'CategoryIdUnknown':\n return translator('syi_publish_error_categoryidunknown');\n case 'CustomEndDateTooLate':\n return translator('syi_publish_error_customenddatetoolate');\n case 'CustomEndDateTooSoon':\n return translator('syi_publish_error_customenddatetoosoon');\n case 'DisplayHighlightedCannotBeRemoved':\n return translator(\n 'syi_publish_error_displayhighlightedcannotberemoved'\n );\n case 'DisplayPromotedCannotBeRemoved':\n return translator(\n 'syi_publish_error_displaypromotedcannotberemoved'\n );\n case 'DurationNotAllowed':\n return translator('syi_publish_error_durationnotallowed');\n case 'ImagesTooFew':\n return translator('syi_publish_error_imagestoofew');\n case 'ImagesTooMany':\n return translator('syi_publish_error_imagestoomany');\n case 'ItemHasBidsAndCannotBeChanged':\n return translator(\n 'syi_publish_error_itemhasbidsandcannotbechanged'\n );\n case 'LongDescriptionCannotBeEmpty':\n return translator('syi_publish_error_longdescriptioncannotbeempty');\n case 'LongDescriptionTooLong':\n return translator('syi_publish_error_longdescriptiontoolong');\n case 'MemberIsActiveInternationalBuyer':\n return translator(\n 'syi_publish_error_memberisactiveinternationalbuyer'\n );\n case 'MemberIsSuspended':\n return translator('syi_publish_error_memberissuspended');\n case 'MemberNotAllowedToListImmeditateEndingItems':\n return translator(\n 'syi_publish_error_membernotallowedtolistimmeditateendingitems'\n );\n case 'OpeningPriceBelowOne':\n return translator('syi_publish_error_openingpricebelowone');\n case 'OpeningPriceTooLarge':\n return translator('syi_publish_error_openingpricetoolarge');\n case 'OwnReferenceTooLong':\n return translator('syi_publish_error_ownreferencetoolong');\n case 'PriceBelowOne':\n return translator('syi_publish_error_pricebelowone');\n case 'PriceBelowZero':\n return translator('syi_publish_error_pricebelowzero');\n case 'ReservePriceNotLargerThanOpeningPrice':\n return translator(\n 'syi_publish_error_reservepricenotlargerthanopeningprice'\n );\n case 'ReservePriceTooLarge':\n return translator('syi_publish_error_reservepricetoolarge');\n case 'ShippingCostBelowZero':\n return translator('syi_publish_error_shippingcostbelowzero');\n case 'ShippingOptionsCannotBeEmpty':\n return translator('syi_publish_error_shippingoptionscannotbeempty');\n case 'ShippingOptionsCountTooLarge':\n return translator('syi_publish_error_shippingoptionscounttoolarge');\n case 'ShippingOptionsMoreThanOneWithTakeawayOnly':\n return translator(\n 'syi_publish_error_shippingoptionsmorethanonewithtakeawayonly'\n );\n case 'ShortDescriptionCannotBeEmpty':\n return translator(\n 'syi_publish_error_shortdescriptioncannotbeempty'\n );\n case 'ShortDescriptionTooLong':\n return translator('syi_publish_error_shortdescriptiontoolong');\n case 'UnknownError':\n return translator('syi_publish_error_unknownerror');\n }\n\n return error.message;\n};\n\nexport const handleServerValidationError = (errors, dispatch, translator) => {\n const invalidImageErrorCodes = ['DeletedImage', 'MissingImage'];\n const imageErrorFilter = error =>\n invalidImageErrorCodes.includes(error.errorCode);\n const nonImageErrorFilter = error =>\n !invalidImageErrorCodes.includes(error.errorCode);\n\n const imageErrors = errors.filter(imageErrorFilter);\n const nonImageErrors = errors.filter(nonImageErrorFilter);\n\n const imageErrorDisplayTexts = handleInvalidImages(\n imageErrors,\n dispatch,\n translator\n );\n const nonImageErrorDisplayTexts = nonImageErrors.map(error =>\n translateErrorCode(error, translator)\n );\n\n const errorDisplayTexts = imageErrorDisplayTexts.concat(\n nonImageErrorDisplayTexts\n );\n const errorDisplayText = errorDisplayTexts.join(' ').trim();\n dispatch({\n type: 'SET_PUBLISH_FAILED',\n reasonDisplayText: errorDisplayText ? errorDisplayText : null\n });\n};\n","/* eslint-disable promise/always-return */\n/* eslint-disable promise/catch-or-return */\nimport 'jquery';\nimport publishService from 'tradera-apps/syi/script/app_react/services/publish-service';\nimport navigationService from 'tradera-apps/syi/script/app_react/services/navigation-service';\nimport draftService from 'tradera-apps/syi/script/app_react/services/draft-service';\nimport categoryActions from './category-actions';\nimport syiActions from './syi-actions';\nimport paymentActions from './payment-actions';\nimport imageActions from './image-actions';\nimport priceActions from './price-actions';\nimport { shortDescriptionActions } from './short-description-actions';\nimport { setDescriptionLanguageCodeIso2 } from 'tradera-state/views/syi/reducers/short-description';\nimport longDescriptionActions from './long-description-actions';\nimport shippingActions from './shipping-actions';\nimport campaignCodeActions from './campaign-code-actions';\nimport {\n resetCharityAndShippingInfo,\n setCharityAndFetchInfo,\n setCharityFromDraftAndFetchInfo\n} from 'tradera-state/views/syi/actions/charity-actions';\nimport feesActions from './fees-actions';\nimport {\n setAttributesFromDraft,\n resetImageAttributesSuggestions\n} from './attributes-actions';\nimport scribe from 'tradera-apps/syi/script/app_react/services/scribe';\nimport sessionService from 'tradera-apps/syi/script/app_react/services/session-service';\nimport googleTagManager from 'tradera-apps/syi/script/app_react/services/google-tagmanager';\nimport {\n setAllowedBuyerRegion,\n setAvailableAllowedBuyerRegions\n} from '../reducers/buyer-region';\nimport { handleServerValidationError } from './helpers/server-validation-error-helper';\nimport { globalStore } from 'tradera-state/configure-store';\nimport { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\nimport { selectSuggestedAttributes } from 'tradera-state/views/syi/selectors/attribute-selectors';\nimport initData from 'init-data';\n\nconst store = globalStore();\n\nfunction ensureDraftReason(draft) {\n if (!draft.draftReason) {\n draft.draftReason = 'NewItem';\n }\n}\n\nconst setDraft = (draft, params = {}) => (dispatch, getState) => {\n dispatch(syiActions.disableAutoSave());\n ensureDraftReason(draft);\n sessionService.startSession(draft.draftReason);\n\n let isNewDraft =\n getSyiSlice(getState()).draft.draftId != draft.draftId ||\n getSyiSlice(getState()).draft.draftReason != draft.draftReason;\n let isChangeItem = draft.draftReason === 'ChangeItem';\n\n // Do first for actions that depends on this info.\n dispatch(syiActions.setIsEditOfPublishedItem(isChangeItem));\n syiActions.hideAllErrors();\n dispatch(categoryActions.reset());\n\n dispatch({\n type: 'SET_DRAFT_PROPERTIES',\n draft: draft\n });\n\n dispatch(\n setAllowedBuyerRegion({\n allowedBuyerRegion: draft.allowedBuyerRegion\n })\n );\n dispatch(setAvailableAllowedBuyerRegions());\n dispatch(setItemCondition(draft.itemCondition));\n dispatch(\n campaignCodeActions.setInitialCampaignCode(\n draft.campaignCode,\n draft.campaignCodeId,\n draft.campaignCodeDescription,\n isChangeItem\n )\n );\n dispatch(setDurationDays(draft.durationDays));\n dispatch(setCustomEndTime(draft.customEndTime));\n\n dispatch(\n categoryActions.setPath(draft.shortDescription, draft.categoryPath)\n );\n\n // Setting short description also loads top categories!\n dispatch(\n shortDescriptionActions.setShortDescription(draft.shortDescription)\n );\n dispatch(setDescriptionLanguageCodeIso2(draft.descriptionLanguageCodeIso2));\n dispatch(setCurrency(draft.currency));\n dispatch(categoryActions.setDraftCategory(draft.categoryId));\n dispatch(\n longDescriptionActions.setLongDescriptionFromDraft(\n draft.longDescription\n )\n );\n dispatch(setDisplayPromoted(draft.displayPromoted));\n dispatch(setDisplayHighlighted(draft.displayHighlighted));\n dispatch(imageActions.setDraftImages(draft.images || []));\n dispatch(resetImageAttributesSuggestions());\n dispatch(\n priceActions.setFromDraft(\n draft.openingBid,\n draft.fixedPrice,\n draft.reservePrice,\n draft.charity?.charityId,\n draft.vat,\n isChangeItem\n )\n );\n\n if (initData.featureSwitches['pennybridge-charities']) {\n if (params.charityId) {\n dispatch(setCharityAndFetchInfo(params.charityId));\n } else if (draft.charity) {\n dispatch(setCharityFromDraftAndFetchInfo(draft.charity));\n }\n }\n dispatch(paymentActions.setSelectedPaymentOptions(draft.paymentOptions));\n dispatch(setAttributesFromDraft(draft));\n\n const shippingOptions = getShippingOptionsFromDraft(\n draft.shippingOptions,\n draft.fromCountry,\n initData.featureSwitches['shipping-from-country']\n );\n\n const fromCountry = getFromCountryFromDraft(\n draft.fromCountry,\n initData.memberCountryCodeIso2,\n initData.featureSwitches['shipping-from-country']\n );\n\n dispatch(shippingActions.setShippingOptionsFromDraft(shippingOptions));\n dispatch(\n shippingActions.setShippingFromcountry({\n fromCountry\n })\n );\n\n dispatch(syiActions.enableAutoSave());\n\n if (isNewDraft) {\n scribe.sendSessionStart();\n }\n};\n\nexport const getShippingOptionsFromDraft = (\n shippingOptions,\n fromCountry,\n isShippingFromCountryEnabled\n) => {\n return isShippingFromCountryEnabled && fromCountry\n ? shippingOptions\n : (fromCountry && fromCountry === 'SE') || !fromCountry\n ? shippingOptions\n : [];\n};\n\nexport const getFromCountryFromDraft = (\n fromCountry,\n memberCountryCodeIso2,\n isShippingFromCountryEnabled\n) => {\n return isShippingFromCountryEnabled && fromCountry\n ? fromCountry\n : isShippingFromCountryEnabled && memberCountryCodeIso2 === 'DK'\n ? memberCountryCodeIso2\n : 'SE';\n};\n\nconst setIsLoading = isLoading => ({\n type: 'SET_DRAFT_IS_LOADING',\n payload: isLoading\n});\n\nconst loadDraft = (dispatch, draftId) => {\n dispatch(setIsLoading(true));\n return draftService\n .loadDraft(draftId)\n .then(result => {\n dispatch(setDraft(result));\n return result;\n })\n .catch(result => {\n navigationService.goToStart();\n throw result;\n })\n .finally(() => dispatch(setIsLoading(false)));\n};\n\nconst loadDrafts = () => dispatch => {\n return draftService.loadDrafts().then(drafts => {\n let resumableDrafts = [];\n\n drafts.forEach(draft => {\n if (\n canBeResumed(\n draft.draftId,\n draft.draftReason,\n draft.shortDescription,\n draft.longDescription,\n [{ imageUrl: draft.imageUrl }]\n )\n ) {\n resumableDrafts.push(draft);\n }\n });\n\n dispatch(setResumableDrafts(resumableDrafts));\n return resumableDrafts;\n });\n};\n\nconst loadImagesFromDraft = draftId => async (dispatch, getState) => {\n const browserDraftImageUrls = (getSyiSlice(getState()).images.slots || [])\n .map(image => image.imageUrl)\n .filter(Boolean);\n\n const serverDraft = await draftService.loadDraft(draftId);\n const serverDraftImages = serverDraft.images || [];\n const serverDraftImageUrls = serverDraftImages.map(image => image.imageUrl);\n\n const changedImages = browserDraftImageUrls\n .filter(x => !serverDraftImageUrls.includes(x))\n .concat(\n serverDraftImageUrls.filter(x => !browserDraftImageUrls.includes(x))\n );\n const imagesHaveChanged = changedImages.length > 0;\n if (imagesHaveChanged) {\n dispatch(imageActions.setDraftImages(serverDraftImages));\n }\n return imagesHaveChanged;\n};\n\nconst canBeResumed = (\n draftId,\n draftReason,\n shortDescription,\n longDescription,\n images\n) => {\n if (!draftId) {\n return false;\n }\n\n if (draftReason !== 'NewItem') {\n return false;\n }\n\n var hasShortDescription =\n shortDescription && shortDescription.trim().length > 0;\n var hasLongDescription =\n longDescription && longDescription.trim().length > 0;\n var hasImage =\n Array.isArray(images) && images.some(image => !!image.imageUrl);\n return hasShortDescription || hasLongDescription || hasImage;\n};\n\nconst updateDraftCanBeResumed = () => (dispatch, getState) => {\n let draft = getSyiSlice(getState()).draft;\n let shortDescription = getSyiSlice(getState()).shortDescription\n .shortDescription;\n let longDescription = getSyiSlice(getState()).longDescription\n .longDescription;\n let imageSlots = getSyiSlice(getState()).images.slots;\n\n // TODO: avoid duplication by using canBeResumed\n if (!draft.draftId) {\n return false;\n }\n\n if (draft.draftReason !== 'NewItem') {\n return false;\n }\n\n var hasShortDescription =\n shortDescription && shortDescription.trim().length > 0;\n var hasLongDescription =\n longDescription && longDescription.trim().length > 0;\n var hasImage =\n Array.isArray(imageSlots) && imageSlots.some(image => !!image.imageUrl);\n let canBeResumed = hasShortDescription || hasLongDescription || hasImage;\n\n dispatch({\n type: 'SET_DRAFT_CAN_BE_RESUMED',\n payload: canBeResumed\n });\n};\n\nconst setResumableDrafts = drafts => dispatch => {\n dispatch({\n type: 'SET_DRAFTS',\n payload: drafts\n });\n};\n\nconst setDraftId = draftId => {\n store.dispatch({\n type: 'SET_DRAFT_ID',\n payload: draftId\n });\n};\n\nconst setCustomEndTime = customEndTime => (dispatch, getState) => {\n const price = getSyiSlice(getState()).price;\n const hasOpeningBid = !!price.openingBid;\n const hasAuctionBinPrice = !!price.auctionBinPrice;\n const isAuctionBin = hasOpeningBid && hasAuctionBinPrice;\n const isPureBin = !hasOpeningBid && hasAuctionBinPrice;\n dispatch({\n type: 'SET_CUSTOM_END_TIME',\n payload: customEndTime,\n isPureBin,\n isAuctionBin,\n isChangeItem: getSyiSlice(getState()).syi.isEditOfPublishedItem\n });\n dispatch(feesActions.updatePrices());\n};\n\nconst setDurationDays = durationDays => (dispatch, getState) => {\n const price = getSyiSlice(getState()).price;\n const hasOpeningBid = !!price.openingBid;\n const hasAuctionBinPrice = !!price.auctionBinPrice;\n const isAuctionBin = hasOpeningBid && hasAuctionBinPrice;\n const isPureBin = !hasOpeningBid && hasAuctionBinPrice;\n dispatch({\n type: 'SET_DURATION_DAYS',\n payload: durationDays,\n isPureBin,\n isAuctionBin,\n isChangeItem: getSyiSlice(getState()).syi.isEditOfPublishedItem\n });\n dispatch(feesActions.updatePrices());\n};\n\nconst resetDurationAndEndTime = () => (dispatch, getState) => {\n const price = getSyiSlice(getState()).price;\n const hasOpeningBid = !!price.openingBid;\n const hasAuctionBinPrice = !!price.auctionBinPrice;\n const isAuctionBin = hasOpeningBid && hasAuctionBinPrice;\n const isPureBin = !hasOpeningBid && hasAuctionBinPrice;\n dispatch({\n type: 'RESET_DURATION_AND_END_TIME',\n isPureBin,\n isAuctionBin\n });\n dispatch(feesActions.updatePrices());\n};\n\nconst setRestart = restart => {\n store.dispatch({\n type: 'SET_RESTART',\n payload: restart\n });\n};\n\nconst setDisplayPromoted = displayPromoted => dispatch => {\n dispatch({\n type: 'SET_DISPLAY_PROMOTED',\n payload: displayPromoted || false\n });\n dispatch(feesActions.updatePrices());\n};\n\nconst setDisplayHighlighted = displayHighlighted => dispatch => {\n dispatch({\n type: 'SET_DISPLAY_HIGHLIGHTED',\n payload: displayHighlighted || false\n });\n dispatch(feesActions.updatePrices());\n};\n\nconst setReference = reference => {\n store.dispatch({\n type: 'SET_REFERENCE',\n payload: reference\n });\n};\n\nconst trackAttributeSuggestions = (\n draftSelectedAttributes,\n suggestedAttributes,\n suggestionEngine,\n completionTimeInSeconds,\n isNewDraft\n) => {\n const comparer = (a, b) => a.localeCompare(b);\n\n draftSelectedAttributes.forEach(attribute => {\n const label = [\n suggestionEngine,\n attribute.id,\n attribute.backingField,\n attribute.values?.sort(comparer).join(','),\n suggestedAttributes\n .find(sa => sa.id === attribute.id)\n ?.values?.sort(comparer)\n .join(','),\n completionTimeInSeconds,\n !!isNewDraft\n ];\n const analyticsData = {\n category: 'MachineLearning',\n action: 'SyiAttributeSuggestion',\n label: label.join(';')\n };\n googleTagManager.trackEvent(analyticsData);\n });\n};\n\nconst publish = translator => (dispatch, getState) => {\n dispatch({ type: 'SET_PUBLISH_PENDING' });\n\n const state = getSyiSlice(getState());\n const { displayHighlighted, displayPromoted } = state.extraFeatures;\n const reservePrice = state.price.reservePrice;\n const customEndTime = draftService.getCustomEndTime(state.itemDuration);\n const draft = draftService.buildDraftFromState(state);\n var splitTestGroups = getState().environment.splitTestGroups;\n var featureSwitches = getState().environment.featureSwitches;\n\n publishService\n .publish(draft, state.memberConsent.hasTraderaPayConsent)\n .then(result => {\n if (displayHighlighted) {\n googleTagManager.trackAddonBeforePublish('Highlight');\n }\n if (displayPromoted) {\n googleTagManager.trackAddonBeforePublish('Rank up');\n }\n if (reservePrice) {\n googleTagManager.trackAddonBeforePublish('Reserve price');\n }\n if (customEndTime) {\n googleTagManager.trackAddonBeforePublish('End time');\n }\n\n if (featureSwitches['syi-attribute-suggestions']) {\n const draftSelectedAttributes =\n draft.attributeValues.termAttributeValues;\n const suggestedAttributes =\n selectSuggestedAttributes(getState()) || [];\n trackAttributeSuggestions(\n draftSelectedAttributes,\n suggestedAttributes,\n splitTestGroups['attribute_suggestion_extractor'],\n Math.round(sessionService.getElapsedMillis() / 1000),\n state.draft.isNewDraft\n );\n }\n\n dispatch(setDraft({}));\n navigationService.goToPublished(result.itemId);\n })\n .catch(result => {\n let response = result.responseJSON;\n if (\n hasResponseErrorCode(response, [\n 'DraftAlreadyPublished',\n 'DraftBelongsToAnotherMember'\n ])\n ) {\n dispatch(setDraft({}));\n navigationService.goToStart();\n } else if (hasResponseErrorCode(response, ['ValidationError'])) {\n handleServerValidationError(\n response.errors || [],\n dispatch,\n translator\n );\n } else {\n dispatch({ type: 'SET_PUBLISH_FAILED' });\n dispatch(syiActions.toggleModal('error-modal-publish-failed'));\n }\n });\n};\n\nconst hasResponseErrorCode = (responseOrNull, arrayOfErrorCodesToCheck) =>\n responseOrNull &&\n arrayOfErrorCodesToCheck.includes(responseOrNull.errorCode);\n\nconst loadDraftIfMissing = draftId => (dispatch, getState) => {\n var draft = getSyiSlice(getState()).draft;\n const isAlreadyLoaded = draft.draftId === draftId;\n if (isAlreadyLoaded) {\n return Promise.resolve(draft);\n }\n return loadDraft(dispatch, draftId);\n};\n\nconst loadDefaultDraft = ({ charityId }) => dispatch => {\n syiActions.reset();\n dispatch(categoryActions.reset());\n dispatch(resetCharityAndShippingInfo());\n dispatch(setDraft(draftService.loadDefaultDraft(), { charityId }));\n dispatch(shippingActions.resetSelected());\n};\n\nconst loadDefaultTemplateDraft = () => dispatch => {\n syiActions.reset();\n dispatch(categoryActions.reset());\n dispatch(resetCharityAndShippingInfo());\n var template = draftService.loadDefaultTemplateDraft();\n template.templateId = 'new';\n dispatch(setDraft(template));\n};\n\nconst useDraftAsTemplate = () => dispatch => {\n dispatch({\n type: 'SET_DRAFT_REASON',\n payload: 'Template'\n });\n dispatch({\n type: 'SET_DRAFT_ID',\n payload: null\n });\n};\n\nconst setDraftVersion = version => dispatch => {\n dispatch({\n type: 'SET_DRAFT_VERSION',\n payload: version\n });\n};\n\nexport const triggerSave = () => (dispatch, getState) =>\n saveDraft(dispatch, getState);\n\nconst saveDraft = (dispatch, getState) => {\n let draft = draftService.buildDraftFromState(getSyiSlice(getState()));\n let version = getSyiSlice(getState()).draft.version || 0;\n return draftService\n .saveDraft(draft)\n .then(result => {\n if (draft.draftId !== result.draftId) {\n dispatch({\n type: 'SET_DRAFT_ID',\n payload: result.draftId\n });\n }\n if (version > 0 && version + 1 !== result.version) {\n // Unexpected version. The draft is being edited somewhere else.\n }\n const wasNewDraftWithoutId = !draft.draftId && !!result.draftId;\n if (wasNewDraftWithoutId) {\n navigationService.setDraftUrlWithoutReload(result.draftId);\n }\n // Must happen after new URL is set for re-render to happen.\n dispatch(setDraftVersion(result.version));\n return result;\n })\n .catch(result => {\n let response = result.responseJSON;\n if (\n hasResponseErrorCode(response, [\n 'DraftAlreadyPublished',\n 'DraftBelongsToAnotherMember'\n ])\n ) {\n dispatch(setDraft({}));\n navigationService.goToStart();\n } else if (result.status == 404) {\n dispatch(setDraft({}));\n navigationService.goToStart();\n }\n throw result;\n });\n};\n\nconst setUsedAllowed = isAllowed => ({\n type: 'SET_ITEM_CONDITION_SELECTION_ERROR',\n payload: isAllowed ? null : 'syi_validation_used_not_allowed_for_category'\n});\n\nconst setItemCondition = condition => dispatch => {\n dispatch({\n type: 'SET_ITEM_CONDITION',\n payload: condition\n });\n dispatch(updateItemConditionRestrictionForCategory());\n};\n\nconst updateItemConditionRestrictionForCategory = () => (\n dispatch,\n getState\n) => {\n const condition = getSyiSlice(getState()).itemCondition.itemCondition;\n const isUsed = condition === 'Used';\n if (isUsed) {\n const isAllowed = isUsedAllowed(getState);\n dispatch(setUsedAllowed(isAllowed));\n } else {\n dispatch(setUsedAllowed(true));\n }\n};\n\nconst isUsedAllowed = getState => {\n const categoryRestriction = getSyiSlice(getState()).syi.categoryRestriction;\n return !categoryRestriction || categoryRestriction.allowUsed !== false;\n};\n\nconst resetItemCondition = () => ({\n type: 'RESET_ITEM_CONDITION'\n});\n\nconst publishAdditionalDescription = text => (dispatch, getState) => {\n if (text && text.length > 0) {\n dispatch({\n type: 'ADD_ADDITIONAL_DESCRIPTION',\n payload: text\n });\n }\n dispatch({ type: 'SET_PUBLISH_PENDING' });\n let draft = draftService.buildDraftFromState(getSyiSlice(getState()));\n publishService\n .publish(draft)\n .then(result => {\n navigationService.goToPublished(result.itemId);\n dispatch(setDraft({}));\n })\n .catch(() => {\n dispatch({ type: 'SET_PUBLISH_FAILED' });\n });\n};\n\nconst resetDraft = () => ({ type: 'RESET_DRAFT' });\n\nconst resetDrafts = () => dispatch => {\n dispatch({\n type: 'SET_DRAFTS',\n payload: null\n });\n};\n\nconst setCurrency = currency => ({\n type: 'SET_CURRENCY',\n payload: { currency }\n});\n\nexport default {\n setDraft,\n loadDraft,\n loadDrafts,\n loadImagesFromDraft,\n canBeResumed,\n updateDraftCanBeResumed,\n setDraftId,\n setCustomEndTime,\n setDurationDays,\n resetDurationAndEndTime,\n setRestart,\n setDisplayPromoted,\n setDisplayHighlighted,\n setReference,\n publish,\n loadDraftIfMissing,\n loadDefaultDraft,\n loadDefaultTemplateDraft,\n useDraftAsTemplate,\n saveDraft,\n setItemCondition,\n resetItemCondition,\n publishAdditionalDescription,\n resetDraft,\n resetDrafts,\n updateItemConditionRestrictionForCategory,\n setIsLoading\n};\n","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, getState) => {\n const { openedFrom, ...restOfPayload } = payload;\n\n if (getState().ui.quickView.loading) {\n return;\n }\n dispatch({\n type: actionTypes.LOADING_QUICK_VIEW,\n payload: true\n });\n\n return getItem(restOfPayload.itemId)\n .then(({ data }) => {\n if (data) {\n const updatedData = {\n ...data,\n imageFormats: data.imageFormats?.map(i => ({\n ...i,\n alt: i.alt || data.shortDescription\n }))\n };\n dispatch(itemActions.add([updatedData]));\n }\n dispatch({\n type: actionTypes.OPEN_QUICK_VIEW,\n payload: restOfPayload\n });\n gtm.trackAction('Quick View', `Open: from ${openedFrom}`);\n dispatch({\n type: actionTypes.LOADING_QUICK_VIEW,\n payload: false\n });\n return data;\n })\n .catch(error => {\n dispatch(closeQuickView());\n dispatch({\n type: actionTypes.LOADING_QUICK_VIEW,\n payload: false\n });\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\nconst openYoutubeVideoModal = payload => ({\n type: actionTypes.OPEN_YOUTUBE_VIDEO_MODAL,\n payload\n});\n\nconst closeYoutubeVideoModal = payload => ({\n type: actionTypes.CLOSE_YOUTUBE_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 openYoutubeVideoModal,\n closeYoutubeVideoModal,\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';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n API_ERRORS,\n axiosConfigs,\n axiosWithTokenRefresh,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\nimport { touchWebClient } from 'tradera-utils/http';\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 return touchWebClient.get('api/messaging/stats', {\n cancelTokenId: 'fetchMessagingNotifications',\n ...axiosConfigs.authenticated\n });\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","const getJSValue = {\n True: true,\n False: false,\n All: 'All'\n};\n\nconst setJSValue = {\n true: 'True',\n false: 'False',\n All: 'All'\n};\n\nexport const setEnum = value => setJSValue[value];\nexport const getEnum = value => getJSValue[value];\n","import { createSlice } from '@reduxjs/toolkit';\nimport { assertNoUndefinedProperties } from 'tradera-utils/assert';\nimport { getItemState } from '../view-item/item-state-helper';\nimport { getAmountDetails } from 'tradera-apps/tradera/components/vip/bidding/bid-details'; // TODO put getAmountDetails somewhere else\nimport { VIEW_STATES } from './constants';\n\nexport const initialState = {\n amount: 0,\n breadCrumbs: [],\n categoryId: 0,\n categoryNames: [],\n categories: [],\n categoryLevel: 0,\n description: null,\n hasEnded: false,\n images: [],\n itemId: 0,\n itemUrl: null,\n paymentOptions: [],\n paymentTerms: null,\n reasons: [],\n resultMessage: null,\n shippingOptions: [],\n shippingTerms: [],\n sellerMemberId: 0,\n title: null,\n viewState: VIEW_STATES.LOADING\n};\n\nconst slice = createSlice({\n name: 'reportItem',\n initialState,\n reducers: {\n resetInitialState: () => {\n return initialState;\n },\n setReportItem: (state, { payload: { item, itemUrl, reasons } }) => {\n const itemDetails = item.itemDetails;\n const bidInfo = item.bidInfo;\n const itemState = getItemState(\n itemDetails.hasEnded,\n itemDetails.itemType,\n bidInfo.bidCount,\n bidInfo.reservePriceReached,\n itemDetails.openingBid,\n bidInfo.nextValidBidAmount,\n bidInfo.transactionType,\n bidInfo.leadingBidderMemberId\n );\n const amountDetails = getAmountDetails(\n () => '', // We are currently not interested in displaying what the amount means in the current UX.\n itemState,\n itemDetails.fixedPrice,\n bidInfo.leadingBidAmount,\n itemDetails.openingBid,\n bidInfo.bidCount > 0\n );\n state.amount = amountDetails.amount;\n state.allowedBuyerRegion = itemDetails.allowedBuyerRegion;\n state.breadCrumbs = item.breadCrumbs;\n state.categoryId = itemDetails.categoryId;\n state.categoryNames = item.breadCrumbs.map(\n breadCrumb => breadCrumb.text\n );\n state.description = itemDetails.description;\n state.endDate = itemDetails.endDate;\n state.hasEnded = itemDetails.hasEnded;\n state.images = itemDetails.images;\n state.itemId = itemDetails.itemId;\n state.itemUrl = itemUrl;\n state.paymentOptions = itemDetails.paymentOptions;\n state.reasons = reasons;\n state.shippingOptions = itemDetails.shippingOptions;\n state.shippingTerms = itemDetails.shippingTerms;\n state.sellerMemberId = itemDetails.sellerMemberId;\n state.title = itemDetails.title;\n state.viewState = itemDetails.hasEnded\n ? VIEW_STATES.ITEM_ENDED\n : VIEW_STATES.FORM;\n assertNoUndefinedProperties(state);\n },\n setViewState: (state, { payload }) => {\n state.viewState = payload;\n },\n setCategories: (state, { payload: categories, categoryLevel }) => {\n state.categories = categories;\n state.categoryLevel = categoryLevel;\n }\n }\n});\n\nexport const {\n resetInitialState,\n setReportItem,\n setViewState,\n setCategories\n} = slice.actions;\nexport const reducer = slice.reducer;\n","import { 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';\nimport initialState from './initial-state';\nimport PAGE_TYPES from 'tradera-constants/page-types';\nimport * as discoverTracking from 'tradera-apps/tradera/components/discover/helpers/search-gtm';\n\nconst requestSearchResults = () => {\n return {\n type: actionTypes.REQUEST_SEARCH_RESULTS\n };\n};\n\nconst resolvePageTitleTranslation = (state, pageType, categoryPath, query) => {\n const { discover } = state;\n const shouldSetPageMetaTitle =\n pageType && pageType !== PAGE_TYPES.CUSTOM_RESULT_PAGE;\n if (!shouldSetPageMetaTitle) {\n return;\n }\n let reverseCategoryPath = categoryPath.filter(c => c.id > 0).reverse();\n const rootCategory =\n reverseCategoryPath.length > 0 ? reverseCategoryPath[0] : null;\n const rootCategoryId = rootCategory ? rootCategory.id : 0;\n const secondHandCategories = [16, 33, 1612];\n const metaTitleKey =\n pageType === PAGE_TYPES.CATEGORY_RESULT_PAGE &&\n secondHandCategories.includes(rootCategoryId)\n ? `pageMeta_title_${pageType}_secondHand`\n : `pageMeta_title_${pageType}`;\n const metaTitleData = {\n query: query || '',\n category: discover.headerText || ''\n };\n return { metaTitleKey, metaTitleData };\n};\n\nconst updatePageMetaForSearchResults = pageType => (dispatch, getState) => {\n const discover = getState().discover;\n const { categoryPath, queryParams, reduxContainer } = discover;\n const { ads, pageMeta } = reduxContainer;\n const pageTitleTranslation = resolvePageTitleTranslation(\n getState(),\n pageType,\n categoryPath,\n queryParams.q\n );\n dispatch(\n pageActions.setPageMeta({\n ...pageMeta,\n ...pageTitleTranslation\n })\n );\n if (ads) dispatch(adsActions.setAds(ads));\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 => {\n const {\n result: { fallbackItems, items, itemsOnDisplay }\n } = payload;\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 dispatch({\n type: actionTypes.RECEIVE_SEARCH_RESULTS,\n payload\n });\n};\n\nconst fetchSearchResults = (endpoint, queryParams, pageType, onLoaded) => {\n return async (dispatch, getState) => {\n dispatch(requestSearchResults());\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 .finally(() => {\n dispatch(afterReceiveSearchResults(pageType, onLoaded));\n });\n };\n};\n\nconst afterReceiveSearchResults = (pageType, onLoaded) => (\n dispatch,\n getState\n) => {\n dispatch(updatePageMetaForSearchResults(pageType));\n dispatch(() => {\n trackNewSearch(getState);\n onLoaded();\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\nconst reset = () => (dispatch, getState) => {\n const state = getState();\n return dispatch({\n type: actionTypes.RESET,\n payload: {\n initialState: initialState(state.initData)\n }\n });\n};\n\nconst trackNewSearch = getState => {\n const state = getState();\n const { categoryPath, itemsById, metaTitle } = state.discover;\n discoverTracking.trackNewSearch(categoryPath, itemsById, metaTitle);\n};\n\nexport default {\n afterReceiveSearchResults,\n addItemOnDisplay,\n fetchSearchResults,\n receiveSearchResults,\n removeItemOnDisplay,\n requestSearchResults,\n reset,\n setCategoryPath,\n setCurrentCategoryId,\n setSingleFilterValue\n};\n","// @ts-check\nimport { BREAKPOINTS, BREAKPOINT_SIZES } from 'tradera-constants/breakpoints';\n\n/**\n * Return breakpoint label for given width\n *\n * @param {int} [width]\n * @returns {string|null}\n */\nfunction getCurrentBreakpoint(width = window.innerWidth) {\n for (let { min, max, name } of Object.values(BREAKPOINT_SIZES)) {\n if (width >= min && width <= max) {\n return name;\n }\n }\n return null;\n}\n\n/**\n * Check if current width is within a given breakpoint range\n *\n * @param {string} name\n * @param {int} [width]\n * @returns {boolean}\n */\nfunction isBreakpoint(name, width = window.innerWidth) {\n return (\n width >= BREAKPOINT_SIZES[name].min &&\n width <= BREAKPOINT_SIZES[name].max\n );\n}\n\n/**\n * Check if current width is in a given breakpoint range or below\n *\n * @param {string} name\n * @param {int} [width]\n * @returns {boolean}\n */\nfunction isBreakpointOrLower(name, width = window.innerWidth) {\n return width <= BREAKPOINT_SIZES[name].max;\n}\n\n/**\n * Check if current width is in a given breakpoint range or above\n *\n * @param {string} name\n * @param {int} [width]\n * @returns {boolean}\n */\nfunction isBreakpointOrHigher(name, width = window.innerWidth) {\n return width >= BREAKPOINT_SIZES[name].min;\n}\n\n/**\n * Check if current breakpoint is classified as desktop (large and above)\n *\n * @returns {boolean}\n */\nfunction isDesktop() {\n return isBreakpointOrHigher(BREAKPOINTS.LG);\n}\n\n/**\n * Check if current breakpoint is classified as tablet (medium)\n *\n * @returns {boolean}\n */\nfunction isTablet() {\n return isBreakpoint(BREAKPOINTS.MD);\n}\n\n/**\n * Check if current breakpoint is classified as mobile (small and below)\n * @param {int} [width]\n * @returns {boolean}\n */\nfunction isMobile(width = window.innerWidth) {\n return isBreakpointOrLower(BREAKPOINTS.SM, width);\n}\n\nexport {\n BREAKPOINTS,\n BREAKPOINT_SIZES,\n getCurrentBreakpoint,\n isBreakpoint,\n isBreakpointOrLower,\n isBreakpointOrHigher,\n isDesktop,\n isTablet,\n isMobile\n};\n","/**\n * Inject a script in the head with given text content\n *\n * @param {string} text\n * @param {object} [attributes]\n * @returns {HTMLElement} - The injected script element\n */\nfunction injectScript(text, attributes) {\n const scriptElement = document.createElement('script');\n Array.from(Object.entries(attributes)).forEach(([name, value]) => {\n scriptElement.setAttribute(name, value);\n });\n scriptElement.appendChild(document.createTextNode(text));\n document.head.appendChild(scriptElement);\n return scriptElement;\n}\n\nfunction loadScript(src, options = {}) {\n const optionsWithDefaults = {\n timeout: options.timeout || 0\n };\n return new Promise((resolve, reject) => {\n if (document.querySelector(`head > script[src=\"${src}\"]`) !== null) {\n resolve();\n return;\n }\n\n const script = document.createElement('script');\n\n let timeoutTimer;\n if (optionsWithDefaults.timeout > 0) {\n timeoutTimer = setTimeout(() => {\n script.onload = null;\n script.onerror = null;\n document.head.removeChild(script);\n reject(new Error('SCRIPT_LOAD_TIMEOUT'));\n }, optionsWithDefaults.timeout);\n }\n\n script.src = src;\n script.async = true;\n script.onload = () => {\n if (timeoutTimer) clearTimeout(timeoutTimer);\n resolve();\n };\n script.onerror = error => {\n if (timeoutTimer) clearTimeout(timeoutTimer);\n reject(error);\n };\n document.head.appendChild(script);\n });\n}\n\nexport { injectScript, loadScript };\n","import React, { useCallback, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport RadioSwitch from 'tradera-components/form-controls/radio-switch';\n\nconst ContentSwitch = props => {\n const { className, defaultSelected, onSwitch, options, title } = props;\n const [selected, setSelected] = useState(\n defaultSelected || Object.keys(options)[0]\n );\n // Keep track of which options have been shown to only render what's needed\n const [renderedOptions, setRenderedOptions] = useState([selected]);\n const onChange = useCallback(\n selected => {\n if (!renderedOptions.includes(selected)) {\n setRenderedOptions([...renderedOptions, selected]);\n }\n setSelected(selected);\n if (onSwitch) onSwitch(selected);\n },\n [onSwitch, renderedOptions, setRenderedOptions, setSelected]\n );\n\n return (\n
    \n
    \n {title && (\n

    \n {title}\n

    \n )}\n \n ({\n value: key,\n name: options[key].label\n }))}\n checked={selected}\n handleOnChange={onChange}\n />\n
    \n
    \n {Object.entries(options).map(([key, option]) => (\n \n {renderedOptions.includes(key) ? option.node : null}\n \n ))}\n \n );\n};\n\nContentSwitch.propTypes = {\n defaultSelected: PropTypes.string,\n onSwitch: PropTypes.func,\n options: PropTypes.objectOf(\n PropTypes.shape({\n label: PropTypes.node.isRequired,\n node: PropTypes.node.isRequired\n })\n ).isRequired,\n title: PropTypes.string\n};\n\nContentSwitch.defaultProps = {\n lazyLoad: true\n};\n\nexport default ContentSwitch;\n","export default {\n AUCTION: 'Auction',\n CART: 'Cart',\n BIN: 'Bin'\n};\n","import { logger } from 'packages';\nimport TRANSACTION_TYPES from 'tradera-constants/transaction-types';\nimport ITEM_TYPES from 'tradera-constants/item-types';\nimport { ITEM_STATES } from './constants';\n\nconst getEndedItemState = (\n itemType,\n bidCount,\n reservePriceReached,\n openingBid,\n nextValidBidAmount,\n transactionType,\n leadingBidMemberId\n) => {\n const isAuction = itemType === ITEM_TYPES.AUCTION;\n const isAuctionBin = itemType === ITEM_TYPES.AUCTION_BIN;\n const isBuyItNow = itemType === ITEM_TYPES.PURE_BIN;\n const isShopItem = itemType === ITEM_TYPES.SHOP_ITEM;\n\n // transactionType may not be set if feature-toggle 'always-enrich-with-transactiontype' is off in WebApi.\n if (transactionType === TRANSACTION_TYPES.BIN) {\n return ITEM_STATES.ENDED_AUCTION_BIN_BOUGHT_AS_BIN;\n }\n\n // When transactionType is not available (feature toggle is off), we can still figure out\n // that the item was bought with buy-it-now price if there are no bids and a leading bidder exist.\n if (\n !transactionType &&\n isAuctionBin &&\n bidCount === 0 &&\n reservePriceReached &&\n leadingBidMemberId > 0\n ) {\n return ITEM_STATES.ENDED_AUCTION_BIN_BOUGHT_AS_BIN;\n }\n\n if ((isAuction || isAuctionBin) && bidCount === 0) {\n return ITEM_STATES.ENDED_AUCTION_WITHOUT_BID;\n }\n if (bidCount > 0 && !reservePriceReached) {\n return ITEM_STATES.ENDED_AUCTION_WITHOUT_WINNING_BID;\n }\n if (bidCount > 0 && reservePriceReached) {\n return ITEM_STATES.ENDED_AUCTION_WITH_WINNING_BID;\n }\n if (isBuyItNow || isShopItem) {\n return ITEM_STATES.ENDED_FIXED_PRICE;\n }\n logger(\n `Unknown ended state for parameters: ${JSON.stringify({\n itemType,\n bidCount,\n reservePriceReached,\n openingBid,\n nextValidBidAmount\n })}`\n );\n return ITEM_STATES.UNKNOWN;\n};\n\nconst getOngoingItemState = itemType => {\n if (itemType === ITEM_TYPES.AUCTION) {\n return ITEM_STATES.ONGOING_AUCTION;\n }\n if (ITEM_TYPES.AUCTION_BIN) {\n return ITEM_STATES.ONGOING_AUCTION_BIN;\n }\n if (itemType === ITEM_TYPES.PURE_BIN || itemType === ITEM_TYPES.SHOP_ITEM) {\n return ITEM_STATES.ONGOING_FIXED_PRICE;\n }\n logger(\n `Unknown ongoing state for parameters: ${JSON.stringify({\n itemType\n })}`\n );\n return ITEM_STATES.UNKNOWN;\n};\n\nexport const getItemState = (\n hasEnded,\n itemType,\n bidCount,\n reservePriceReached,\n openingBid,\n nextValidBidAmount,\n transactionType,\n leadingBidMemberId\n) => {\n if (hasEnded) {\n return getEndedItemState(\n itemType,\n bidCount,\n reservePriceReached,\n openingBid,\n nextValidBidAmount,\n transactionType,\n leadingBidMemberId\n );\n }\n return getOngoingItemState(itemType);\n};\n","export const selectRouterState = state => state.router;\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst BidsLabel = ({ className, tagName: TagName, count }) => {\n const { t } = useTranslator();\n return (\n \n {t('itemCard_numberOfBidsWithCount', { count })}\n \n );\n};\nBidsLabel.defaultProps = {\n tagName: 'span'\n};\nexport default BidsLabel;\n","export const VIEW_STATES = {\n FORM: 'FORM',\n ITEM_ENDED: 'ITEM_ENDED',\n LOADING: 'LOADING',\n SUBMIT_FAILED: 'SUBMIT_FAILED',\n SUBMIT_SUCCESS: 'SUBMIT_SUCCESS',\n SUBMITTING: 'SUBMITTING'\n};\n\nexport const REASONS = {\n NONE: '0',\n SUSPECTED_FRAUD: '1',\n ITEM_IS_A_COUNTERFEIT: '2',\n BRAND_NAME_MISUSE: '3',\n WRONG_CATEGORY: '4',\n PROHIBITED_SHIPPINGvOR_PAYMEN_TMETHOD: '5',\n OTHER_PROHIBITED_ITEM: '6',\n OTHER_PROHIBITED_SETUP: '7',\n OTHER: '8'\n};\n","import React from 'react';\nimport { Helmet } from 'react-helmet';\nimport { connect } from 'react-redux';\n\nimport { toAbsoluteUrl } from 'tradera-utils/url';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst BODY_PAGETYPE_CLASS_PREFIX = 'site-pagename-';\n\nconst PageHead = props => {\n const { t } = useTranslator();\n const {\n breadcrumbs,\n canonicalLink,\n metaDescription,\n metaRobots,\n metaTitle,\n metaTitleKey,\n metaTitleData,\n siteLayout,\n type\n } = props;\n\n const bodyClass = `${BODY_PAGETYPE_CLASS_PREFIX + type} ${\n siteLayout === 'site-width-full' ? 'site-width-full' : ''\n }`;\n const title =\n metaTitleKey && metaTitleData\n ? t(metaTitleKey, metaTitleData)\n : metaTitle;\n return (\n \n {title}\n \n \n \n \n \n \n );\n};\n\nconst mapStateToProps = state => {\n return {\n breadcrumbs: state.page.breadcrumbs,\n canonicalLink: state.page.canonicalLink,\n metaDescription: state.page.metaDescription,\n metaRobots: state.page.metaRobots,\n metaTitle: state.page.metaTitle,\n metaTitleKey: state.page.metaTitleKey,\n metaTitleData: state.page.metaTitleData,\n type: state.page.type,\n siteLayout: state.ui.siteLayout\n };\n};\n\nexport default connect(mapStateToProps)(PageHead);\n","export function filterCategories(categories, filter) {\n if (categories && filter.length > 0) {\n return categories\n .slice()\n .map(category => {\n const categoryNodes =\n category.categoryNodes\n ?.slice()\n .filter(node =>\n node.title\n .toLowerCase()\n .includes(filter.toLowerCase())\n ) || [];\n return {\n ...category,\n categoryNodes\n };\n })\n .filter(category => category.categoryNodes.length > 0);\n }\n return categories;\n}\n","/*\n * OBSOLETE - use google tag manager service instead:\n * src\\EbaySweden.TouchWeb\\static\\script\\app\\ui\\google-tagmanager-service.js\n *\n */\n\nexport default new (function() {\n var timers = {};\n var sentCounter = {};\n\n function pushToDataLayer(payload) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push(payload);\n }\n\n this.trackAddonAfterPublish = function(addOnfeatureName) {\n const isPageOpenedFromMail =\n window.location.pathname.indexOf('/selling/features') > -1;\n const label = isPageOpenedFromMail\n ? 'After Publish Mail'\n : 'After Publish';\n this.trackEvent({\n category: 'Listing AddOns',\n action: addOnfeatureName,\n label: label\n });\n };\n\n this.trackAddonBeforePublish = function(addOnfeatureName) {\n this.trackEvent({\n category: 'Listing AddOns',\n action: addOnfeatureName,\n label: 'Before Publish'\n });\n };\n\n this.trackPageView = function() {\n pushToDataLayer({ event: 'trackPageview' });\n };\n\n this.trackTiming = function(analyticsData) {\n pushToDataLayer({\n event: 'timing',\n timingCategory: analyticsData.category || '',\n timingVar: analyticsData.variable || '',\n timingValue: analyticsData.value || '',\n timingLabel: analyticsData.label || ''\n });\n };\n\n this.startTimer = function(name) {\n timers[name] = new Date().getTime();\n sentCounter[name] = 0;\n };\n\n this.sendTimer = function(name, analyticsData) {\n var duration = +new Date().getTime() - timers[name];\n\n analyticsData.label = Math.round(duration / 1000) + ' s';\n\n this.trackSellItemEvent(analyticsData);\n\n sentCounter[name] += 1;\n };\n\n this.sendTimerOnce = function(name, analyticsData) {\n if (sentCounter[name] === 0) {\n this.sendTimer(name, analyticsData);\n }\n };\n\n this.trackEvent = function(analyticsData) {\n pushToDataLayer({\n event: 'trackEvent',\n eventCategory: analyticsData.category || '',\n eventAction: analyticsData.action || '',\n eventLabel: analyticsData.label || '',\n eventValue: analyticsData.value || '0'\n });\n };\n})();\n","//jshint module : true\nimport actionTypes from './action-types';\n\nconst setPageMeta = meta => {\n return {\n type: actionTypes.SET_PAGE_META,\n payload: meta\n };\n};\n\nexport default {\n setPageMeta\n};\n","export const getShippingDisplayText = (type, t) => {\n switch (type) {\n case 'Alternative':\n return t('shippingInfo_alternativeShippingOption');\n case 'Bussgods':\n return 'Bussgods';\n case 'DHL':\n return 'DHL';\n case 'FedEx':\n return 'FedEx';\n case 'NotSpecified':\n return t('shippingInfo_notSpecified');\n case 'Posten':\n return 'PostNord';\n case 'PostNordParcel':\n return t('shippingInfo_postNordParcel');\n case 'PostNordStamp':\n return t('shippingInfo_postNordStamp');\n case 'SchenkerPrivpak':\n return 'DB Schenker';\n case 'Takeaway':\n return t('shippingInfo_pickup');\n case 'TakeawayOnly':\n return t('shippingInfo_pickupOnly');\n case 'UPS':\n return 'Ups';\n default:\n return type;\n }\n};\n","import React from 'react';\nimport './dropdown-menu-burger.scss';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { Button } from 'tradera-components/atoms/button/button';\n\nconst DropDownMenuHamburger = ({ active, className, onClick, tabIndex }) => {\n const { t } = useTranslator();\n return (\n \n \n \n \n \n {t('siteHeader_dropDownMenuHamburger')}\n \n \n );\n};\n\nexport default DropDownMenuHamburger;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ALink from 'tradera-components/alink/alink';\n\nconst MenuItemButton = ({\n className,\n containerClass,\n follow,\n gaAttributes,\n inSPA,\n label,\n link,\n onClick\n}) => {\n return (\n
  • \n \n \n {label}\n \n —>\n \n
  • \n );\n};\n\nMenuItemButton.defaultProps = {\n className: '',\n containerClass: 'site-dropdown__item-default',\n follow: true\n};\n\nMenuItemButton.propTypes = {\n notify: PropTypes.number,\n link: PropTypes.string,\n bold: PropTypes.bool,\n border: PropTypes.bool,\n label: PropTypes.node,\n gaAttributes: PropTypes.object\n};\n\nexport default MenuItemButton;\n","/**\n * Factory for the dropdown menu\n */\nimport React from 'react';\nimport MediaQuery from 'react-responsive';\n\nimport { BREAKPOINT_SIZES, BREAKPOINTS } from 'tradera-constants/breakpoints';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport { filterCategories } from 'tradera-helpers/filter-categories-helper';\nimport MenuItemSeparator from 'tradera-components/site-header/dropdown-menu-item-separator';\nimport MenuItemButton from 'tradera-components/site-header/dropdown-menu-item-button';\nimport MenuItem from 'tradera-components/site-header/dropdown-menu-item';\nimport ExpandableMenuItem from 'tradera-components/site-header/dropdown-menu-item-expandable';\nimport ALink from 'tradera-components/alink/alink';\nimport CategoryIcon from '@tradera/blueprint/theme/icons2/category.svg?jsx';\nimport EndingSoonIcon from '@tradera/blueprint/theme/icons2/branded-ending.svg?jsx';\nimport InfoIcon from '@tradera/blueprint/theme/icons2/info.svg?jsx';\nimport LoadingIcon from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\nimport PenIcon from '@tradera/blueprint/theme/icons2/pen.svg?jsx';\nimport RecommendedIcon from '@tradera/blueprint/theme/icons2/branded-recommended.svg?jsx';\nimport SearchIcon from '@tradera/blueprint/theme/icons2/search.svg?jsx';\nimport BrandIcon from '@tradera/blueprint/theme/icons2/sale.svg?jsx';\nimport UserIcon from '@tradera/blueprint/theme/icons2/user.svg?jsx';\nimport CategoryCharityIcon from '@tradera/blueprint/theme/icons2/category-charity.svg?jsx';\nimport ValuationIcon from '@tradera/blueprint/theme/icons2/valuation.svg?jsx';\nimport InspirationIcon from '@tradera/blueprint/theme/icons2/inspiration.svg?jsx';\nimport { getCategoryIcon } from 'tradera-helpers/category-icon-helper';\nimport { useMenuHeightFix } from 'tradera-hooks/use-menu-height-fix';\nimport featureToggles from 'tradera-apps/my-tradera/app/utils/feature-toggles';\n\nconst getGaAttributes = label => ({\n 'data-ga-category': 'Top navigation',\n 'data-ga-action': 'Category menu',\n 'data-ga-label': `Link - ${label}`\n});\n\nconst DropdownMenuContent = ({\n categories,\n inSPA,\n isLoggedIn,\n onClick,\n trackAnalytics\n}) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const mediaProps = { maxWidth: BREAKPOINT_SIZES[BREAKPOINTS.MD].max };\n\n const sourceCategories =\n categories.list.length > 0\n ? categories.list\n : categories.topLevelCategories;\n // Only show rebate codes for non logged in users.\n const categoryList = sourceCategories\n .map(category => ({ ...category, open: false }))\n .filter(category => !isLoggedIn || (isLoggedIn && category.id !== 0));\n\n const menuContentRef = useMenuHeightFix();\n\n return (\n
      \n {/* NOTE: Notifications are disabled for burger button for desktop due to hidden cart and messaging, see DropDownMenuHamburger */}\n \n {!isLoggedIn && (\n <>\n }\n inSPA={false}\n label={t('siteHeader_howTo')}\n link={toLocalizedUrl('/how-to-buy')}\n onClick={onClick}\n />\n }\n inSPA={false}\n label={t('siteHeader_register')}\n link=\"/register\"\n onClick={onClick}\n />\n }\n inSPA={false}\n label={t('siteHeader_createItem')}\n link={toLocalizedUrl('/selling')}\n onClick={onClick}\n />\n \n )}\n \n\n }\n inSPA={false}\n label={\n isLoggedIn\n ? t('siteHeader_recommendedForYou')\n : t('siteHeader_recommendedAnonymous')\n }\n link={toLocalizedUrl('/ma/endless-recommendation/endingSoon')}\n onClick={onClick}\n />\n }\n inSPA={inSPA}\n label={t('siteHeader_lastChance')}\n link={toLocalizedUrl('/campaign/sista-chansen?sortBy=TimeLeft')}\n onClick={onClick}\n />\n }\n inSPA={inSPA}\n label={t('siteHeader_brands')}\n link={toLocalizedUrl('/brands')}\n onClick={onClick}\n />\n {featureToggles.isPennybridgeCharitiesEnabled && (\n }\n inSPA={inSPA}\n label={t('siteHeader_donateWithTradera')}\n link={toLocalizedUrl('/causes')}\n onClick={onClick}\n />\n )}\n {featureToggles.isValuationPageEnabled && (\n }\n inSPA={inSPA}\n label={t('siteHeader_valuation')}\n link={toLocalizedUrl('/valuation')}\n onClick={onClick}\n />\n )}\n\n {!categories.error && (\n <>\n \n \n \n {t('siteHeader_categoriesAll')}\n \n \n }\n />\n {categories.isFetching ? (\n }\n label={`${t('siteHeader_loading')}`}\n />\n ) : (\n \n )}\n {!isLoggedIn && (\n }\n inSPA={false}\n label={t('siteHeader_inspiration')}\n link={toLocalizedUrl('/inspiration/')}\n onClick={onClick}\n />\n )}\n \n )}\n {/* NOTE: Fix for iPhone menu making bottom element unclickable */}\n \n \n \n
    \n );\n};\n\nclass CategoryMenuItems extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n filter: '',\n filteredCategories: props.categoryList\n };\n }\n\n handleFilterChange = event => {\n this.filterCategories(event.target.value.trim());\n };\n\n handleFilterBlur = () => {\n this.props.trackAnalytics('Category Search');\n };\n\n handleFilterKey = event => {\n const { key, target } = event;\n switch (key) {\n case 'Escape':\n event.stopPropagation();\n if (this.state.filter === '') {\n event.target.blur();\n }\n this.filterCategories('');\n break;\n case 'Enter':\n event.stopPropagation();\n target.blur();\n break;\n }\n };\n\n filterCategories = filter => {\n this.setState({\n filter,\n filteredCategories: filterCategories(\n this.props.categoryList,\n filter\n )\n });\n };\n\n componentDidUpdate(prevProps) {\n if (this.props.categoryList.length !== prevProps.categoryList.length) {\n filterCategories(prevProps.categoryList, this.state.filter);\n }\n }\n\n render() {\n const {\n inSPA,\n trackAnalytics,\n searchPlaceholder,\n onClick\n } = this.props;\n const { filter, filteredCategories } = this.state;\n return (\n <>\n \n
    \n \n \n
    \n \n }\n className=\"bg-white\"\n />\n {filteredCategories.map(\n category =>\n category && (\n \n )\n )}\n \n );\n }\n}\n\nconst CategoryMenuItem = ({\n category: { id, title, categoryNodes, open, href },\n inSPA = false,\n onClick,\n trackAnalytics\n}) => {\n if (!categoryNodes) {\n return (\n trackAnalytics(`Open - ${title}`)}\n onClose={() => trackAnalytics(`Close - ${title}`)}\n />\n );\n }\n return (\n trackAnalytics(`Open - ${title}`)}\n onClose={() => trackAnalytics(`Close - ${title}`)}>\n {categoryNodes.map(categoryNode => {\n if (categoryNode.isTopLevel) {\n return (\n ${categoryNode.title}`\n )}\n inSPA={inSPA}\n label={categoryNode.title}\n link={categoryNode.href}\n onClick={onClick}\n />\n );\n }\n\n return (\n ${categoryNode.title}`\n )}\n inSPA={inSPA}\n label={categoryNode.title}\n link={categoryNode.href}\n onClick={onClick}\n />\n );\n })}\n \n );\n};\n\nexport default DropdownMenuContent;\n","import React from 'react';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nconst TopLevelCategories = ({ topLevelCategories }) => {\n return topLevelCategories?.map(c => (\n \n {c.title}\n \n ));\n};\n\nconst SeoLinks = ({ isLoggedIn, topLevelCategories }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n
    \n {topLevelCategories?.length >= 0 && (\n \n )}\n {!isLoggedIn && (\n \n {t('siteHeader_inspiration')}\n \n )}\n
    \n );\n};\n\nexport { SeoLinks };\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { TransitionGroup } from 'react-transition-group';\nimport MediaQuery from 'react-responsive';\nimport { RemoveScroll } from 'react-remove-scroll';\n\nimport categoryActions from 'tradera-state/categories/actions';\nimport uiActions from 'tradera-state/ui/actions';\nimport { BREAKPOINTS, BREAKPOINT_SIZES } from 'tradera-constants/breakpoints';\nimport { logger } from 'packages';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport {\n EnterFade,\n EnterFrom\n} from 'tradera-components/transitions/transitions';\nimport ApplicationErrorBoundary from 'tradera-components/application-error-boundary/application-error-boundary';\nimport Overlay from 'components/modals/overlay';\nimport DropDownMenuHamburger from './dropdown-menu-burger';\nimport DropdownMenuContent from './dropdown-menu-content';\nimport { SeoLinks } from './seo-links';\n\nimport './dropdown-menu.scss';\n\nconst trackAnalytics = (\n label,\n action = 'Category menu',\n category = 'Top navigation'\n) => {\n try {\n GtmService.trackAction(category, action, label);\n } catch (error) {\n logger(error);\n }\n};\n\nconst DropdownMenu = ({\n className,\n featureSwitches,\n inSPA,\n isLoggedIn,\n transparentHeader,\n tabIndex\n}) => {\n const dropdownMenu = useSelector(state => state.ui.categoryDropdownMenu);\n const categories = useSelector(state => state.categories);\n const expanded = dropdownMenu.open === 'open';\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (featureSwitches['preload-menu-categories']) {\n dispatch(categoryActions.fetchTopLevelCategories());\n }\n }, [dispatch, featureSwitches]);\n\n const trackClick = () => {\n trackAnalytics(expanded ? 'Menu close' : 'Menu open');\n };\n\n const onClick = () => {\n if (expanded) {\n dispatch(uiActions.closeCategoryDropdownMenu());\n } else {\n dispatch(uiActions.closeProfileMenu());\n if (!categories.isFetching && categories.list.length === 0) {\n dispatch(categoryActions.fetchCategoryList());\n }\n dispatch(uiActions.openCategoryDropdownMenu());\n }\n };\n\n const onItemClick = () => {\n dispatch(uiActions.closeCategoryDropdownMenu());\n };\n\n const sideMenuMediaProps = {\n maxWidth: BREAKPOINT_SIZES[BREAKPOINTS.LG].max\n };\n const dropdownMenuMediaProps = {\n minWidth: BREAKPOINT_SIZES[BREAKPOINTS.LG].max\n };\n\n const renderChild = () => (\n \n
    \n \n
    \n
    \n );\n\n return (\n \n \n \n {expanded && (\n \n {\n onClick();\n trackClick();\n }}\n tabIndex=\"-1\"\n />\n \n )}\n \n \n );\n};\n\nDropdownMenu.propTypes = {\n className: PropTypes.string,\n isLoggedIn: PropTypes.bool,\n expanded: PropTypes.bool\n};\n\nDropdownMenu.defaultProps = {\n className: ''\n};\n\nexport default DropdownMenu;\n","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 React from 'react';\nimport SettingsIcon from '@tradera/blueprint/theme/icons2/settings.svg?jsx';\n\nconst SettingsButton = ({\n className,\n iconClassName,\n onClick,\n ...otherProps\n}) => {\n return (\n \n \n \n );\n};\nexport default SettingsButton;\n","import { createSlice } from '@reduxjs/toolkit';\n\nconst isNewDraft = location.pathname.endsWith('new');\nconst queryParams = new URLSearchParams(location.search);\nconst queryParamCharityId = queryParams.get('charityId');\nconst preselectCharity = isNewDraft && queryParamCharityId;\n\nconst initialStateShipping = {\n forceFreeShipping: false,\n isFreeShippingPaidByProvider: false,\n freeShippingPaidByProviderName: null\n};\n\nconst initialState = {\n anonymous: true,\n charityId: preselectCharity ? Number(queryParamCharityId) : null,\n description: null,\n logoUrl: null,\n name: null,\n percentageToDonate: preselectCharity ? 100 : 0,\n ...initialStateShipping\n};\n\nconst charitySlice = createSlice({\n name: 'charity',\n initialState,\n reducers: {\n setCharityId: (state, { payload }) => {\n state.charityId = payload.charityId;\n if (payload.charityId) {\n state.percentageToDonate = 100;\n } else {\n state.percentageToDonate = 0;\n }\n },\n setCharityInfo: (\n state,\n { payload: { name, description, logoUrl } }\n ) => {\n return { ...state, name, description, logoUrl };\n },\n setCharityAnonymous: (state, { payload }) => {\n state.anonymous = payload.anonymous;\n },\n setCharityFromDraft: (state, { payload }) => {\n state.charityId = payload.charityId;\n state.percentageToDonate = payload.percentageToDonate;\n state.anonymous = payload.anonymous;\n },\n resetCharity: () => {\n return { ...initialState };\n },\n setCharityShippingInfo: (state, { payload }) => {\n return { ...state, ...payload };\n }\n }\n});\n\nexport const {\n resetCharity,\n setCharityAnonymous,\n setCharityFromDraft,\n setCharityId,\n setCharityInfo,\n setCharityShippingInfo\n} = charitySlice.actions;\n\nexport default charitySlice.reducer;\n","import config from './config';\nimport eventBroadcaster from './event-broadcaster';\nimport scribe from './scribe';\nimport { logger } from 'packages';\nimport axios from 'axios';\n\nexport default new (function() {\n var allowedFileExtensions = ['.jpeg', '.jpg', '.png', '.gif'];\n var maxFileSize = 1024 * 1024 * 20;\n\n this.isMultifileSupported = function() {\n return typeof window.FormData !== 'undefined';\n };\n\n this.uploadFiles = function(files, maxNumberOfFiles, imageFlow) {\n for (let i = 0; i < files.length && i < maxNumberOfFiles; i++) {\n const file = files[i];\n var validationResult = validateFile(file);\n if (validationResult) {\n notifyImageValidationFailed(validationResult);\n return;\n }\n }\n for (let i = 0; i < files.length && i < maxNumberOfFiles; i++) {\n const file = files[i];\n uploadFileWithFormData(file, imageFlow);\n }\n };\n\n this.uploadFromFileInput = function(\n fileInput,\n maxNumberOfFiles,\n imageFlow\n ) {\n if (typeof window.FormData === 'undefined') {\n uploadFileWithDom(fileInput, imageFlow);\n fileInput.value = '';\n } else {\n for (\n var i = 0;\n i < fileInput.files.length && i < maxNumberOfFiles;\n i++\n ) {\n var file = fileInput.files[i];\n var validationResult = validateFile(file);\n if (validationResult) {\n fileInput.value = '';\n notifyImageValidationFailed(validationResult);\n return;\n }\n }\n for (\n let i = 0;\n i < fileInput.files.length && i < maxNumberOfFiles;\n i++\n ) {\n let file = fileInput.files[i];\n uploadFileWithFormData(file, imageFlow);\n }\n fileInput.value = '';\n }\n };\n\n this.uploadCroppedImageFile = async function(\n imageFile,\n imageFlow,\n slotIndex\n ) {\n if (imageFile.type && imageFile.type.startsWith('image/')) {\n var validationResult = validateFile(imageFile);\n if (validationResult) {\n notifyImageValidationFailed(validationResult);\n return;\n }\n return uploadFileWithFormData(imageFile, imageFlow, slotIndex);\n }\n };\n\n async function uploadFileWithFormData(file, imageFlow, replaceIndex) {\n let startTime = new Date().getTime();\n var formData = new FormData();\n formData.append('imageFile', file);\n\n const url = config[imageFlow + 'ImagesUrl'];\n try {\n const response = await axios.post(url, formData);\n notifyImageUploaded(\n response.data.imageId,\n response.data.imageUrl,\n replaceIndex\n );\n let endTime = new Date().getTime();\n scribe.sendDuration(\n 'image_upload_client_time',\n endTime - startTime\n );\n } catch (error) {\n if (error.response) {\n notifyImageUploadFailed(file);\n } else if (error.request) {\n // The request was made but no response was received\n notifyImageUploadFailed(file);\n logger('Image upload failed. Reason: No response');\n } else {\n // Something happened in setting up the request that triggered an Error\n notifyImageUploadFailed(file);\n logger('Image upload failed. Reason: ' + error.message);\n }\n }\n }\n\n function uploadFileWithDom(fileInput, imageFlow) {\n var iframe_name = 'iframe_' + new Date().getTime();\n var iframe = document.createElement('iframe');\n var form = document.createElement('form');\n var input = document.createElement('input');\n form.setAttribute('name', 'upload_form');\n form.setAttribute('id', 'upload_form');\n form.setAttribute('style', 'height: 0px;');\n form.setAttribute('method', 'post');\n form.setAttribute('action', config[imageFlow + 'ImagesUrl']); // e.g. \"draft\" + \"ImagesUrl\"\n form.setAttribute('enctype', 'multipart/form-data');\n form.setAttribute('target', iframe_name);\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', 'iframe');\n input.setAttribute('value', 'true');\n iframe.setAttribute('name', iframe_name);\n iframe.setAttribute('style', 'height: 0px;');\n iframe.setAttribute('id', iframe_name);\n\n form.appendChild(input);\n\n var fileInputParent = fileInput.parentNode;\n form.appendChild(fileInput);\n\n document.body.appendChild(iframe);\n document.body.appendChild(form);\n form.submit();\n\n fileInputParent.appendChild(fileInput); // Restore input node\n document.body.removeChild(form);\n\n // Only one file is supported using this method.\n var theFile = fileInput.value;\n\n iframe.onload = function(e) {\n try {\n var responseText = $(\n e.target.contentDocument.body.innerHTML\n ).text();\n var response = $.parseJSON(responseText);\n notifyImageUploaded(response.imageId, response.imageUrl);\n } catch (err) {\n notifyImageUploadFailed(theFile);\n logger('Image upload with DOM failed.');\n fileInput.value = '';\n }\n\n document.body.removeChild(iframe);\n };\n }\n\n function endsWith(str, suffix) {\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n }\n\n function hasValidFileExtension(filename) {\n return allowedFileExtensions.some(fileExt =>\n endsWith(filename.toUpperCase(), fileExt.toUpperCase())\n );\n }\n\n function hasValidFileSize(fileSize) {\n return fileSize < maxFileSize;\n }\n\n function validateFile(file) {\n if (file === undefined) {\n return 'syi_validation_images_upload_error'; //'Något blev fel vid uppladdningen av filen';\n }\n if (!hasValidFileExtension(file.name)) {\n return 'syi_validation_images_upload_wrong_type'; //'Filen du laddade upp är av fel typ.';\n }\n if (!hasValidFileSize(file.size)) {\n return 'syi_validation_images_upload_too_large'; //'Filen du laddade upp är för stor.';\n }\n return false;\n }\n\n function notifyImageUploaded(imageId, imageUrl, replaceIndex) {\n eventBroadcaster.trigger(\n 'imageUploaded',\n imageId,\n imageUrl,\n replaceIndex\n );\n }\n\n function notifyImageUploadFailed(file) {\n eventBroadcaster.trigger('imageUploadFailed', file);\n }\n\n function notifyImageValidationFailed(displayMessage) {\n eventBroadcaster.trigger('imageValidationFailed', displayMessage);\n }\n})();\n","import { createSlice } from '@reduxjs/toolkit';\nimport { Analytics } from 'packages';\nimport dayjs from 'dayjs';\nimport { VIEW_ITEM_STATES } from './constants';\nimport { getItemApi, placeBidApi } from './api';\nimport logger from 'packages/logger';\nimport * as analytics from '../../../apps/tradera/components/vip/helpers/analytics';\nimport itemActions from '../../items/actions';\nimport { assertNoUndefinedProperties } from 'tradera-utils/assert';\nimport adsActions from 'tradera-state/ads/actions';\nimport pageActions from 'tradera-state/page/actions';\nimport {\n selectBidInfo,\n selectItemId,\n selectItemDetails,\n selectBreadcrumbs,\n selectViewItem\n} from './selectors';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { getItemState } from './item-state-helper';\nimport history from 'tradera-utils/history';\nimport { BID_VALIDATION_RESULTS } from 'tradera-apps/tradera/components/vip/api/vip-api-constants';\n\nconst initialPlaceBidResponse = {\n info: null,\n isSuccessful: null,\n validationResult: null,\n error: null\n};\n\nexport const translatedDescriptionStates = {\n DEFAULT: 'DEFAULT',\n LOADING: 'LOADING',\n SERVER_ERROR: 'SERVER_ERROR',\n TRANSLATION_ON_DEMAND_DISABLED: 'TRANSLATION_ON_DEMAND_DISABLED'\n};\n\nexport const initialState = {\n initialBidFormValue: null,\n bidInfo: null,\n breadCrumbs: [],\n isBidding: false,\n itemDetails: {},\n itemState: null,\n viewItemState: null,\n myMaxBidAmount: null,\n placeBidResponse: initialPlaceBidResponse,\n serverSecondsLeft: null,\n translatedDescription: null,\n translatedDescriptionState: translatedDescriptionStates.DEFAULT,\n showLiveUpdates: false,\n reduxContainer: null\n};\n\nconst viewItemSlice = createSlice({\n name: 'viewItem',\n initialState,\n reducers: {\n resetPlaceBidResponse: state => {\n state.placeBidResponse = initialPlaceBidResponse;\n },\n resetInitialState: () => {\n return initialState;\n },\n setInitialBidFormValue: (state, { payload }) => {\n state.initialBidFormValue = payload;\n },\n setIsApprovedBuyer: (state, { payload }) => {\n state.itemDetails.isApprovedBuyer = payload;\n },\n setIsInternationalWacko: (state, { payload }) => {\n state.itemDetails.isWackoViewModel.isInternationalWacko = payload;\n },\n setVipLiveUpdate: (state, { payload: { showLiveUpdates } }) => {\n state.showLiveUpdates = showLiveUpdates;\n },\n setItemDetails: (state, { payload: itemDetails }) => {\n state.itemDetails = mapItemDetails(itemDetails);\n },\n setPurchaseInfo: (state, { payload: purchaseInfo }) => {\n state.purchaseInfo = purchaseInfo;\n },\n setBreadCrumbs: (state, { payload: breadCrumbs }) => {\n state.breadCrumbs = breadCrumbs.map(({ href, text }, index) => ({\n id: index,\n url: href,\n name: text\n }));\n },\n setIsBidding: (state, { payload: isBidding }) => {\n state.isBidding = isBidding;\n },\n setPlaceBidResponse: (\n state,\n { payload: { isSuccessful, validationResult, bidError } }\n ) => {\n state.placeBidResponse.isSuccessful = isSuccessful;\n state.placeBidResponse.validationResult = validationResult;\n state.placeBidResponse.error = bidError;\n },\n setBidInfo: (state, { payload: { bidInfo, itemId, memberId } }) => {\n // Ensure bid is for current item.\n if (state.itemDetails?.itemId !== itemId) {\n logger(new Error(`setBidInfo was not for current item`), {\n contexts: {\n items: {\n currentItemId: state.itemDetails?.itemId,\n bidInfoItemId: itemId\n }\n }\n });\n return;\n }\n\n // Ensure incoming data is for latest bid. It is possible to get stale data in\n // the response from place bid due to eventual consistency. When that happens\n // we should have received the latest bid before via web socket. For items where\n // web socket updates are not enabled (too long time left of auction) the effect\n // is considered acceptable. Just make sure to not overwrite newer data here.\n const isFirstBidInfo = !state.bidInfo;\n const isLatestBid =\n isFirstBidInfo || state.bidInfo.bidId <= bidInfo.bidId;\n if (!isLatestBid) return;\n\n const bidStatus = getLeadingBidStatus(\n bidInfo,\n memberId,\n state.bidInfo\n );\n\n const existingBidCount = state.bidInfo?.bidCount || 0;\n const incomingBidCount = bidInfo.bidCount || 0;\n const newBidInfo = {\n bidId: bidInfo.bidId || 0,\n leadingBidAmount: bidInfo.leadingBidAmount || 0,\n leadingBidderMemberId: bidInfo.leadingBidderMemberId || null,\n leadingBidMemberAlias: bidInfo.leadingBidMemberAlias || null,\n nextValidBidAmount: bidInfo.nextValidBidAmount,\n transactionType: state.bidInfo?.transactionType\n ? state.bidInfo.transactionType\n : bidInfo.transactionType || null,\n\n // Never update with a lower bidCount. Can happen if place-bid-response comes before WebSocket event.\n bidCount:\n incomingBidCount > existingBidCount\n ? incomingBidCount\n : existingBidCount,\n\n // Never reset if reservePriceReached was true. Can happen if place-bid-response comes before WebSocket event.\n reservePriceReached:\n state.bidInfo?.reservePriceReached ||\n bidInfo.reservePriceReached ||\n false\n };\n\n assertNoUndefinedProperties(newBidInfo);\n\n state.bidInfo = { ...newBidInfo, ...bidStatus };\n },\n setMyMaxBidAmount: (state, { payload }) => {\n state.myMaxBidAmount = payload;\n },\n setItemState: (state, { payload }) => {\n state.itemState = payload;\n },\n setViewItemState: (state, { payload: viewItemState }) => {\n state.viewItemState = viewItemState;\n },\n setServerSecondsLeft: (state, { payload }) => {\n state.serverSecondsLeft = payload;\n },\n setTranslatedDescription: (state, { payload }) => {\n state.translatedDescription = { ...payload };\n state.translatedDescriptionState =\n translatedDescriptionStates.DEFAULT;\n },\n setTranslationOnDemandDisabled: state => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.TRANSLATION_ON_DEMAND_DISABLED;\n },\n resetTranslatedDescription: {\n reducer: state => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.DEFAULT;\n },\n prepare: payload => {\n Analytics.trackEvent({\n category: 'View Item Page',\n action: 'Translation',\n label: 'Hide'\n });\n return { payload };\n }\n },\n beginLoadingTranslatedDescription: state => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.LOADING;\n },\n failedLoadingTranslatedDescription: state => {\n state.translatedDescriptionState =\n translatedDescriptionStates.SERVER_ERROR;\n },\n setSellerItems: (state, { payload }) => {\n state.sellerItems = payload;\n },\n setReduxContainer: (state, { payload }) => {\n state.reduxContainer = payload;\n }\n }\n});\n\nexport default viewItemSlice.reducer;\n\nexport const mapItemDetails = itemDetails => ({\n ...itemDetails,\n descriptionLanguageCodeIso2: itemDetails.descriptionLanguageCodeIso2.toLowerCase(),\n images: itemDetails.images.map(img => ({\n thumbnail: img.thumbnail,\n multiThumbnail: img.thumbnail,\n medium: img.medium || img.small,\n normal: img.normal,\n smallFit: img.smallFit,\n mediumFit: img.mediumFit,\n largeFit: img.largeFit,\n alt: img.alt || img.altText\n }))\n});\n\nexport const handleItemModel = (itemModel, memberId) => (\n dispatch,\n getState\n) => {\n const previousItemId = selectItemId(getState());\n dispatch(viewItemSlice.actions.setItemDetails(itemModel.itemDetails));\n dispatch(viewItemSlice.actions.setPurchaseInfo(itemModel.purchaseInfo));\n\n dispatch(\n itemActions.setItemWishList(\n itemModel.itemDetails.itemId,\n itemModel.itemDetails.inWishList\n )\n );\n dispatch(\n viewItemSlice.actions.setVipLiveUpdate({\n showLiveUpdates: itemModel.showLiveUpdates\n })\n );\n dispatch(viewItemSlice.actions.setBreadCrumbs(itemModel.breadCrumbs));\n dispatch(\n viewItemSlice.actions.setBidInfo({\n bidInfo: itemModel.bidInfo,\n itemId: itemModel.itemDetails.itemId,\n memberId\n })\n );\n\n if (itemModel.bidInfo.maxBidAmount) {\n dispatch(\n viewItemSlice.actions.setMyMaxBidAmount(\n itemModel.bidInfo.maxBidAmount\n )\n );\n }\n\n const isSafeToShowWinnerStatus =\n itemModel.itemDetails.hasEnded && !itemModel.hasBidsWinnerToBeConfirmed;\n\n const viewItemState = isSafeToShowWinnerStatus\n ? VIEW_ITEM_STATES.ENDED\n : VIEW_ITEM_STATES.ACTIVE;\n\n dispatch(viewItemSlice.actions.setViewItemState(viewItemState));\n dispatch(\n updateItemState(\n selectItemDetails(getState()),\n selectBidInfo(getState()),\n viewItemState\n )\n );\n\n dispatch(viewItemSlice.actions.setReduxContainer(itemModel.reduxContainer));\n dispatch(\n viewItemSlice.actions.setServerSecondsLeft(itemModel.serverSecondsLeft)\n );\n\n const isNewPage = previousItemId != selectItemId(getState());\n if (isNewPage) {\n dispatch(handleNewPage);\n }\n};\n\nexport const handleNewPage = (dispatch, getState) => {\n const reduxContainer = selectViewItem(getState()).reduxContainer;\n\n dispatch(adsActions.setAds(reduxContainer.ads));\n dispatch(pageActions.setPageMeta(reduxContainer.pageMeta));\n\n const currentItemDetails = selectItemDetails(getState());\n const currentBidInfo = selectBidInfo(getState());\n const breadCrumbs = selectBreadcrumbs(getState());\n const swedishCategoryPath = breadCrumbs.map(b => b.name).join(' > ');\n\n const getAuctionState = () => {\n const hasWon =\n currentItemDetails.hasEnded && currentBidInfo.hasLeadingBid;\n const isLeading =\n !currentItemDetails.hasEnded && currentBidInfo.hasLeadingBid;\n if (hasWon) return 'won';\n if (isLeading) return 'leading';\n return currentItemDetails.hasEnded ? 'ended' : 'normal';\n };\n\n const contentGroup = `${currentItemDetails.itemType}-${getAuctionState()}`;\n GtmService.trackGtmEvent('viewItem', {\n page: {\n itemState: contentGroup,\n 'content-group-2': swedishCategoryPath,\n 'content-group-3': contentGroup\n },\n itemType: currentItemDetails.itemType,\n itemId: currentItemDetails.itemId,\n itemFixedPrice: currentItemDetails.fixedPrice || 0,\n itemCategory: swedishCategoryPath,\n itemStatus: currentItemDetails.hasEnded ? 'inactive' : 'active',\n itemEndDate: dayjs(currentItemDetails.endDate).format('YYYYMMDD')\n });\n};\n\nconst updateItemState = (itemDetails, bidInfo, viewItemState) => dispatch => {\n const itemState = getItemState(\n viewItemState === VIEW_ITEM_STATES.ENDED,\n itemDetails.itemType,\n bidInfo.bidCount,\n bidInfo.reservePriceReached,\n itemDetails.openingBid,\n bidInfo.nextValidBidAmount,\n bidInfo.transactionType,\n bidInfo.leadingBidderMemberId\n );\n dispatch(viewItemSlice.actions.setItemState(itemState));\n};\n\n/**\n * It is possible that we need to update the URL\n * when an auction that expires is automatically\n * restarted and gets a new itemId. Without this,\n * we could end up in an endless recursion of\n * trying to fetch data for the itemId in the URL.\n * @param {*} currentItemId\n * @param {*} itemModel\n */\nexport const ensureCorrectUrlForItem = (expectedItemId, itemModel) => {\n const incomingItemId = itemModel.itemDetails.itemId;\n if (expectedItemId !== incomingItemId) {\n // Restarted item, update URL\n history.replace({\n pathname: itemModel.reduxContainer.pageMeta.canonicalLink,\n search: window.location.search\n });\n }\n};\n\nexport const fetchItemAndBidInfo = (\n itemId,\n shouldResetInititalState,\n setLoading,\n setLoaded\n) => async (dispatch, getState) => {\n setLoading && setLoading();\n const { memberId = 0 } = getState().member;\n if (shouldResetInititalState) {\n dispatch(viewItemSlice.actions.resetInitialState());\n }\n try {\n const itemModel = (await getItemApi(itemId)).data;\n dispatch(handleItemModel(itemModel, memberId));\n setLoaded && setLoaded();\n ensureCorrectUrlForItem(itemId, itemModel);\n } catch (error) {\n const status = error.response && error.response.status;\n if (status === 404) {\n // Handle server side.\n window.location.reload();\n } else {\n logger(error);\n }\n }\n};\n\nconst getLeadingBidStatus = (bidInfo, memberId, previousBidInfo = null) => {\n const hadLeadingBid = !!previousBidInfo?.hasLeadingBid;\n const hasLeadingBid =\n !!memberId && memberId === bidInfo.leadingBidderMemberId;\n const hadLostLeadingBid = !!previousBidInfo?.hasLostLeadingBid;\n const hasLostLeadingBid =\n (hadLostLeadingBid || hadLeadingBid) && !hasLeadingBid;\n return {\n // ...bidInfo,\n hasLostLeadingBid,\n hasLeadingBid\n };\n};\n\nexport const toggleWishList = (itemId, forceAdd = false) => (\n dispatch,\n getState\n) => {\n const shouldNotTrackWishlistEventBecauseNeedsToBeSameAsLegacyVip = true;\n const inWishListOldValue = getState().items.wishListItemIds.has(itemId);\n const inWishListNewValue = !inWishListOldValue || forceAdd;\n\n const itemDetails = getState().views.viewItem.itemDetails;\n const wishListCountOldValue = itemDetails.wishListCount;\n let wishListCountNewValue = wishListCountOldValue;\n if (Number.isInteger(wishListCountNewValue)) {\n if (inWishListOldValue && !inWishListNewValue) {\n wishListCountNewValue--;\n } else if (!inWishListOldValue && inWishListNewValue) {\n wishListCountNewValue++;\n }\n }\n dispatch(\n viewItemSlice.actions.setItemDetails({\n ...itemDetails,\n inWishList: inWishListNewValue,\n wishListCount: wishListCountNewValue\n })\n );\n\n return dispatch(\n itemActions.wishlist(\n itemId,\n inWishListNewValue,\n shouldNotTrackWishlistEventBecauseNeedsToBeSameAsLegacyVip\n )\n ).then(inWishListNewValue => {\n if (inWishListNewValue !== undefined) {\n analytics.trackWishlist(itemId, inWishListNewValue);\n } else {\n //Restore previous value;\n const itemDetails = getState().views.viewItem.itemDetails;\n dispatch(\n viewItemSlice.actions.setItemDetails({\n ...itemDetails,\n inWishList: inWishListOldValue,\n wishListCount: wishListCountOldValue\n })\n );\n }\n return inWishListNewValue;\n });\n};\n\nexport const placeBid = (itemId, memberId, amount, onLoggedOut) => async (\n dispatch,\n getState\n) => {\n dispatch(viewItemSlice.actions.setIsBidding(true));\n try {\n const result = await placeBidApi(itemId, amount, onLoggedOut);\n\n if (!result) {\n dispatch(\n viewItemSlice.actions.setPlaceBidResponse({\n isSuccessful: false,\n validationResult: {\n code: BID_VALIDATION_RESULTS.OFFLINE\n }\n })\n );\n dispatch(viewItemSlice.actions.setInitialBidFormValue(amount));\n dispatch(viewItemSlice.actions.setIsBidding(false));\n return;\n }\n\n const {\n analyticsData,\n bidInfo,\n isSuccessful,\n item: updatedItem,\n validationResult,\n myMaxBidAmount,\n serverSecondsLeft\n } = result;\n\n if (isSuccessful) {\n dispatch(\n viewItemSlice.actions.setBidInfo({ bidInfo, itemId, memberId })\n );\n dispatch(viewItemSlice.actions.setMyMaxBidAmount(myMaxBidAmount));\n dispatch(\n viewItemSlice.actions.setInitialBidFormValue(\n bidInfo.nextValidBidAmount\n )\n );\n } else {\n // suggest next valid bid to user\n dispatch(\n viewItemSlice.actions.setInitialBidFormValue(\n bidInfo.nextValidBidAmount\n )\n );\n }\n\n analytics.trackBidPlaced(\n itemId,\n validationResult.code,\n analyticsData.isMaxBid,\n analyticsData.potentialBidChange,\n analyticsData.bidId,\n analyticsData.transactionTotal,\n analyticsData.weightedBidValue\n );\n\n const currentItemDetails = getState().views.viewItem.itemDetails;\n dispatch(\n viewItemSlice.actions.setItemDetails({\n ...currentItemDetails,\n ...updatedItem\n })\n );\n\n dispatch(\n viewItemSlice.actions.setPlaceBidResponse({\n isSuccessful,\n validationResult,\n bidError: null\n })\n );\n\n dispatch(viewItemSlice.actions.setServerSecondsLeft(serverSecondsLeft));\n } catch (error) {\n logger(error);\n dispatch(\n viewItemSlice.actions.setPlaceBidResponse({\n isSuccessful: false,\n validationResult: null,\n error\n })\n );\n }\n dispatch(viewItemSlice.actions.setIsBidding(false));\n};\n\nexport const setNotValidToBidOrBuyNow = () => dispatch => {\n return dispatch(\n viewItemSlice.actions.setPlaceBidResponse({\n isSuccessful: false,\n validationResult: {\n code: BID_VALIDATION_RESULTS.BIDDING_OR_BUYING_OWN_ITEM\n }\n })\n );\n};\n\nexport const {\n beginLoadingTranslatedDescription,\n failedLoadingTranslatedDescription,\n resetPlaceBidResponse,\n resetTranslatedDescription,\n setBidInfo,\n setIsApprovedBuyer,\n setIsInternationalWacko,\n setViewItemState,\n setTranslatedDescription,\n setTranslationOnDemandDisabled,\n setSellerItems\n} = viewItemSlice.actions;\n","import config from 'tradera-apps/syi/script/app_react/services/config';\nimport userData from 'tradera-apps/syi/script/app_react/services/user-data';\nimport { getSyiSlice } from 'tradera-state/views/syi/selectors/syi';\n\nconst updatePrices = () => (dispatch, getState) => {\n const priceInfo = {\n auctionCommission: 0,\n fixedPriceCommission: 0,\n featureFees: [],\n feesTotal: 0\n };\n\n const state = getSyiSlice(getState());\n\n const commissionShare = 0.1;\n const commissionMinimum = config.commissionMinimum;\n const commissionCap = config.commissionCap;\n\n if (state.price.openingBid) {\n priceInfo.auctionCommission = Math.min(\n Math.max(\n state.price.openingBid * commissionShare,\n commissionMinimum\n ),\n commissionCap\n );\n }\n\n if (state.price.fixedPrice) {\n priceInfo.fixedPriceCommission = Math.min(\n Math.max(\n state.price.fixedPrice * commissionShare,\n commissionMinimum\n ),\n commissionCap\n );\n }\n\n if (state.price.reservePrice) {\n priceInfo.featureFees.push({\n description: 'Reservationspris',\n price: 40\n });\n }\n\n if (\n typeof state.itemDuration.customEndTimeHour === 'string' &&\n typeof state.itemDuration.customEndTimeMinute === 'string'\n ) {\n priceInfo.featureFees.push({\n description: 'Vald sluttid',\n price: state.itemDuration.customEndTimePrice\n });\n }\n\n if (state.extraFeatures.displayHighlighted) {\n priceInfo.featureFees.push({\n description: 'Highlight',\n price: config.highlightFeaturePrice\n });\n }\n\n if (state.extraFeatures.displayPromoted) {\n priceInfo.featureFees.push({\n description: 'Rank up',\n price: 45\n });\n }\n\n priceInfo.feesTotal = priceInfo.featureFees.reduce(\n (memo, fee) => memo + fee.price,\n 0\n );\n\n dispatch({\n type: 'SET_CHOSEN_EXTRA_FEATURES',\n payload: priceInfo.featureFees\n });\n};\n\nconst setDiscountFactor = discountFactor => ({\n type: 'SET_DISCOUNT_FACTOR',\n discountFactor: discountFactor\n});\n\nconst resetDiscountFactor = () => ({\n type: 'RESET_DISCOUNT_FACTOR'\n});\n\nconst setCampaignCommission = campaignCommissionProcent => ({\n type: 'SET_CAMPAIGN_COMMISSION_PROCENT',\n campaignCommissionProcent: campaignCommissionProcent\n});\n\nconst resetCampaignCommission = () => ({\n type: 'RESET_CAMPAIGN_COMMISSION_PROCENT'\n});\n\nconst updateMaxCommission = () => (dispatch, getState) => {\n let maxFeeCap = getSyiSlice(getState()).campaignCode.maxFeeCap;\n const isDomainNameCategory =\n getSyiSlice(getState()).category.draftCategoryId ===\n config.domainNameCategoryId;\n if (maxFeeCap === null || isDomainNameCategory) {\n dispatch({\n type: 'SET_MAX_COMMISSION_COST',\n payload: {\n maxCommissionCost: isDomainNameCategory\n ? undefined\n : config.commissionCap,\n isCategoryWithNoCommissionCap: isDomainNameCategory\n }\n });\n } else {\n dispatch({\n type: 'SET_MAX_COMMISSION_COST',\n payload: {\n maxCommissionCost: maxFeeCap,\n isCategoryWithNoCommissionCap: false\n }\n });\n }\n};\n\nconst updateCommission = () => (dispatch, getState) => {\n let campaignCommissionProcent = getSyiSlice(getState()).fees\n .campaignCommissionProcent;\n if (campaignCommissionProcent === null) {\n const isDomainNameCategory =\n getSyiSlice(getState()).category.draftCategoryId ===\n config.domainNameCategoryId;\n if (userData.isCompanyUser) {\n let companyMinCommissionProcent = 5;\n let companyMaxCommissionProcent = 8;\n let discountFactor = getSyiSlice(getState()).fees.discountFactor;\n if (discountFactor !== null) {\n companyMinCommissionProcent =\n companyMinCommissionProcent * (1 - discountFactor);\n companyMaxCommissionProcent =\n companyMaxCommissionProcent * (1 - discountFactor);\n }\n\n let commissionProcent = '0';\n if (companyMaxCommissionProcent > 0) {\n commissionProcent = isDomainNameCategory\n ? companyMaxCommissionProcent.toString()\n : companyMinCommissionProcent +\n ' - ' +\n companyMaxCommissionProcent;\n }\n\n dispatch({\n type: 'SET_COMMISSION_PROCENT',\n commissionProcent: commissionProcent\n });\n dispatch({\n type: 'SET_IS_VARIABLE_COMMISSION',\n payload: true\n });\n } else {\n const isCourseLiteratureCategory = [\n 302937,\n 302942,\n 302951,\n 302934,\n 302949,\n 302943,\n 302948,\n 342944,\n 302941,\n 302936,\n 302938,\n 302946,\n 302944,\n 302945,\n 302950,\n 302940,\n 302947,\n 302935,\n 1123\n ].includes(getSyiSlice(getState()).category.draftCategoryId);\n dispatch({\n type: 'SET_COMMISSION_PROCENT',\n commissionProcent: isCourseLiteratureCategory ? '0' : '10'\n });\n dispatch({\n type: 'SET_IS_VARIABLE_COMMISSION',\n payload: false\n });\n }\n } else {\n dispatch({\n type: 'SET_COMMISSION_PROCENT',\n commissionProcent: campaignCommissionProcent\n });\n dispatch({\n type: 'SET_IS_VARIABLE_COMMISSION',\n payload: false\n });\n }\n};\n\nexport default {\n updatePrices,\n updateCommission,\n setDiscountFactor,\n resetDiscountFactor,\n setCampaignCommission,\n resetCampaignCommission,\n updateMaxCommission\n};\n","export { default } from './application-error-boundary';\n","/* eslint-disable promise/always-return */\n/* eslint-disable promise/catch-or-return */\nimport 'underscore';\nimport { touchWebClient } from 'tradera-utils/http';\n\nvar _cache = {};\nvar _title = '';\n\nfunction existsInCache(categoryId) {\n return !_.isUndefined(_cache[categoryId]);\n}\n\nconst clearCache = title => {\n if ((!_title && !title) || _title === title) {\n return;\n }\n _cache = {};\n};\n\nconst loadTopCategories = title => {\n return new Promise((resolve, reject) => {\n clearCache(title);\n _title = title;\n\n if (_cache.topCategories) {\n resolve(_cache.topCategories);\n } else {\n touchWebClient\n .post('/selling/toplevelcategorysuggestions', {\n title: title || ''\n })\n .then(function(result) {\n _cache.topCategories = result.data;\n resolve(result.data);\n })\n .catch(reject);\n }\n });\n};\n\nconst loadChildCategories = (title, categoryId, level) => {\n return new Promise((resolve, reject) => {\n _title = title;\n if (!categoryId) {\n reject();\n return;\n }\n\n if (existsInCache(categoryId)) {\n resolve(_cache[categoryId]);\n } else {\n const levelToSearch = level + 1;\n const params = {\n title: title || '',\n categoryId: categoryId,\n levelToSearch\n };\n touchWebClient\n .post('/selling/categorysuggestions', params, {\n cancelTokenId: `cancel-category-level-search-${levelToSearch}`\n })\n .then(function(result) {\n _cache[categoryId] = result.data;\n resolve(result.data);\n })\n .catch(reject);\n }\n });\n};\n\nconst prefetchChildren = (title, categories, level) => {\n _title = title;\n var allCategories = categories.categories.concat(categories.suggestions);\n var ids = _.chain(allCategories)\n .filter(function(c) {\n return !existsInCache(c.categoryId);\n })\n .map(function(c) {\n return c.categoryId;\n })\n .value();\n\n if (_.isEmpty(ids)) {\n return;\n }\n\n var params = {\n title: _title || '',\n categoryIds: ids,\n levelToSearch: level + 1\n };\n\n touchWebClient\n .post('/selling/childcategorysuggestions', params)\n // eslint-disable-next-line promise/always-return\n .then(function(result) {\n _.each(result.data, function(categoryInfo) {\n _cache[categoryInfo.categoryId] = categoryInfo;\n });\n });\n};\n\nexport default {\n clearCache,\n loadTopCategories,\n loadChildCategories,\n prefetchChildren\n};\n","import React, { Component } from 'react';\nimport { hot } from 'react-hot-loader';\nimport { compose } from 'redux';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport Sticky from 'react-stickynode';\nimport MediaQuery from 'react-responsive';\nimport { selectShowCurrencySelection } from 'tradera-state/multi-currency';\nimport {\n selectShouldDisplayInHeader,\n selectIsForeignLanguageActivated\n} from 'tradera-state/language/selectors';\nimport { selectIsSwedishVisitor } from 'tradera-state/shipping-region/selectors';\nimport {\n BREAKPOINTS,\n BREAKPOINT_SIZES,\n isDesktop,\n isTablet,\n isMobile\n} from 'tradera-utils/breakpoints';\nimport {\n withBreakpoint,\n isMobile as isMobileBreakpoint\n} from 'tradera-components/breakpoint/breakpoint';\nimport { HOVER_MENUS } from './hover-menu/constants';\nimport cookieUtil from 'tradera-utils/cookie';\nimport { onWindowLoad } from 'utils/on-ready';\nimport { actions as memberStateActions } from 'tradera-state/member';\nimport uiActions from 'tradera-state/ui/actions';\nimport { withUrlLocalizer } from 'tradera-lang/translate';\nimport TraderaLogo from 'components/tradera/logo?jsx';\nimport CartLink from 'tradera-components/site-header/cart-link';\nimport DropdownMenu from 'tradera-components/site-header/dropdown-menu';\nimport SignUpLink from 'tradera-components/site-header/sign-up-link';\nimport ALink from 'tradera-components/alink/alink';\nimport { SearchInSpa, SearchOutsideSpa } from 'components/search/search';\nimport ModalPortal from 'tradera-components/portals/modal-portal';\nimport PushNotificationModal from 'tradera-components/push-notification-modal/push-notification-modal';\nimport { ConnectedLocalizationLink } from './localization-link';\nimport BuyingLink from './buying-link';\nimport HowToLink from './how-to-link';\nimport ProfileMenuLink from './profile-menu-link';\nimport { SearchButton } from './search-button';\n\nimport './slim-header.scss';\nimport ModalRenderer from 'tradera-components/modal-renderer/modal-renderer';\nimport MessagingModal from 'tradera-components/messaging/messaging-modal';\nimport WishlistLink from 'tradera-components/site-header/wishlist-link';\nimport LiveShoppingLink from 'tradera-components/site-header/live-shopping-link';\nimport OngoingAuctionsLink from 'tradera-components/site-header/ongoing-auctions-link';\nimport SellingLink from 'tradera-components/site-header/selling-link';\nimport { TraderaToastContainer } from 'tradera-components/toasts/tradera-toast-container';\n\nclass SiteHeader extends Component {\n static propTypes = {\n cartItems: PropTypes.string,\n cartSum: PropTypes.string,\n closeMessagingModal: PropTypes.func,\n currentCategoryId: PropTypes.number,\n fetchMessagingNotifications: PropTypes.func,\n getGeolocation: PropTypes.func,\n inSPA: PropTypes.bool,\n searchQuery: PropTypes.string,\n setCurrentCategoryId: PropTypes.func,\n showHeaderSearch: PropTypes.bool\n };\n\n static defaultProps = {\n inSPA: false\n };\n\n constructor(props) {\n super(props);\n this.state = {\n sticky: false,\n autoFocusSearch: false\n };\n }\n\n componentDidMount() {\n const {\n featureSwitches,\n isLoggedIn,\n fetchMessagingNotifications,\n getGeolocation\n } = this.props;\n getGeolocation();\n\n if (featureSwitches['messaging'] && isLoggedIn) {\n fetchMessagingNotifications();\n }\n\n // Scroll up one pixel to show fixed header on mobile\n onWindowLoad(() => {\n // Toggle on sticky behavior on window load to force reflow and show sticky header on mobile & Firefox\n this.setState({ sticky: true });\n });\n }\n\n handleClickSearch = () => {\n const { openSearchForm, closeSearchForm, showSearch } = this.props;\n if (showSearch) {\n closeSearchForm();\n } else {\n openSearchForm();\n }\n this.setState(prevState => ({\n ...prevState,\n autoFocusSearch: !prevState.showSearch\n }));\n };\n\n handleMouseOverMenu = menu => {\n if (isDesktop()) {\n this.setState({\n activeHoverMenu: menu\n });\n }\n };\n\n handleMouseOutMenu = () => {\n this.setState({\n activeHoverMenu: false\n });\n };\n\n // Event handler for menu button:\n // Mobile: link, no menu open\n // Tablet: not a link, menu open\n // Desktop: link, menu open\n handleMenuClick = (event, menu) => {\n if (isMobile() && menu !== HOVER_MENUS.LOCALIZATION) {\n return;\n }\n\n // Prevent click for tablet to allow tap to open\n if (isTablet()) {\n event.preventDefault();\n }\n // Force focus so touch devices can get a blur event\n event.target.focus();\n this.setState(state => ({\n activeHoverMenu: state.activeHoverMenu === menu ? false : menu\n }));\n };\n\n // Event handler for non-linked menu button that always open a menu\n handleAlwaysOpenMenuClick = (event, menu) => {\n event.preventDefault();\n event.target.focus();\n this.setState(state => ({\n activeHoverMenu: state.activeHoverMenu === menu ? false : menu\n }));\n };\n\n handleMenuBlur = () => {\n this.setState({\n activeHoverMenu: false\n });\n };\n\n handleRegisterClick = () => {\n const { isLoggedIn } = this.props;\n\n if (!isLoggedIn) {\n const cookieName = 'signup_referral_path';\n const expireDate = new Date();\n const value = window.location.href;\n expireDate.setTime(expireDate.getTime() + 10 * 60 * 1000);\n cookieUtil.createCookie(cookieName, value, expireDate);\n }\n };\n\n render() {\n const {\n cartItems,\n cartSum,\n closeMessagingModal,\n closeNotificationOptinModal,\n currentBreakpoint,\n featureSwitches,\n inSPA,\n isForeignVisitor,\n isLoggedIn,\n messagingModal,\n notificationOptinModal,\n pageName,\n showSearch,\n showCurrencySelection,\n showHeaderSearch,\n shouldDisplayLanguageSelectionInHeader,\n toLocalizedUrl\n } = this.props;\n const { sticky } = this.state;\n const formattedCartItems = parseInt(cartItems, 10);\n const hasCartItems = formattedCartItems > 0;\n const stickyEnabledOnPage = !pageName?.includes('MyTradera');\n const isMobile = isMobileBreakpoint(currentBreakpoint);\n\n const hideElements =\n !showHeaderSearch && pageName?.includes('StartPage');\n const transparentHeader = hideElements && !isMobile;\n const isLiveEnabled = featureSwitches['live-shopping'];\n\n return (\n \n \n \n \n \n \n \n \n \n \n {inSPA ? (\n \n ) : (\n \n )}\n \n \n
      \n
    • \n \n
    • \n {isLoggedIn && (\n \n \n \n )}\n {isLiveEnabled && (\n
    • \n \n
    • \n )}\n
    • \n {isLoggedIn ? (\n \n ) : (\n \n )}\n
    • \n {isLoggedIn && (\n
    • \n \n
    • \n )}\n {isLoggedIn && (\n
    • \n \n
    • \n )}\n {(showCurrencySelection ||\n shouldDisplayLanguageSelectionInHeader) && (\n \n
    • \n \n
    • \n \n )}\n {hasCartItems && (\n
    • \n \n
    • \n )}\n
    • \n \n
    • \n {!isLoggedIn && (\n
    • \n \n
    • \n )}\n
    \n \n \n \n {messagingModal.open === 'open' && (\n \n \n \n )}\n {notificationOptinModal.open === 'open' && (\n \n \n \n )}\n \n \n \n );\n }\n}\n\nconst mapStateToProps = state => {\n return {\n categoryPath: state.page.categoryPath,\n currentCategoryId: state.page.currentCategoryId,\n featureSwitches: state.environment.featureSwitches,\n hasSearch: state.ui.hasSearch,\n isLoggedIn: state.member.isLoggedIn,\n messagingModal: state.ui.messagingModal,\n notificationOptinModal: state.ui.notificationOptinModal,\n pageName: state.page.type,\n isForeignVisitor:\n !selectIsSwedishVisitor(state) ||\n selectIsForeignLanguageActivated(state),\n searchParams: state.discover.searchParams,\n searchUrl: state.discover.searchUrl,\n shouldDisplayLanguageSelectionInHeader: selectShouldDisplayInHeader(\n state\n ),\n showCurrencySelection: selectShowCurrencySelection(state),\n showHeaderSearch: state.ui.showHeaderSearch,\n showSearch: state.ui.showSearchForm,\n systemMessageCount: state.ui.badges.system,\n systemMessages: state.ui.systemMessages\n };\n};\n\nconst mapDispatchToProps = {\n closeCategoryDropdownMenu: uiActions.closeCategoryDropdownMenu,\n closeMessagingModal: uiActions.closeMessagingModal,\n closeNotificationOptinModal: uiActions.closeNotificationOptinModal,\n closeSearchForm: uiActions.closeSearchForm,\n fetchMessagingNotifications: uiActions.fetchMessagingNotifications,\n getGeolocation: memberStateActions.getGeolocation,\n openSearchForm: uiActions.openSearchForm\n};\n\nexport default hot(module)(\n compose(\n withBreakpoint,\n withUrlLocalizer,\n connect(mapStateToProps, mapDispatchToProps)\n )(SiteHeader)\n);\nexport { SiteHeader };\n","import { createBrowserHistory } from 'history';\n\nconst history = createBrowserHistory();\n\nexport default history;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport DialogModal from 'tradera-components/dialog/dialog-modal';\nimport ModalContainer from 'static/script/components/modals/modal-container';\nimport ModalHeader from 'static/script/components/modals/modal-header';\nimport ModalBody from 'static/script/components/modals/modal-body';\nimport { useTranslator } from 'tradera-lang/translate';\nimport dropin from 'braintree-web-drop-in';\nimport { webApiClient } from 'tradera-utils/http';\nimport { setIsInternationalWacko } from 'tradera-state/views/view-item/reducer';\nimport './card-verification-modal.scss';\nimport { LocalLoader } from 'tradera-components/loader';\nimport { selectPreferredLanguage } from 'tradera-state/language/selectors';\nimport { useQualtive } from 'tradera-hooks/use-qualtive';\nimport { SURVEYS } from 'tradera-constants/surveys';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\n\nconst states = {\n START: 'START',\n LOADING: 'LOADING',\n CARD_VERIFICATION_MODAL: 'CARD_VERIFICATION_MODAL',\n ERROR: 'ERROR',\n NOT_VERIFIED: 'NOT_VERIFIED'\n};\n\nexport const CardVerificationModal = ({ closeModal, onCardVerified }) => {\n const preferredLanguage = useSelector(selectPreferredLanguage);\n const memberEmail = useSelector(state => state.initData.memberEmail);\n const [state, setState] = useState(states.START);\n const [isHidden, setIsHidden] = useState(false);\n const { t } = useTranslator();\n const submitButtonRef = useRef();\n const dispatch = useDispatch();\n const { openQualtiveModal } = useQualtive();\n\n const onClose = () => {\n closeModal();\n GtmService.trackAction('VIP', 'Card Verification', 'Close modal');\n openQualtiveModal(SURVEYS.cardVerification, t);\n };\n\n useEffect(() => {\n if (state !== states.START) {\n return;\n }\n\n GtmService.trackAction('VIP', 'Card Verification', 'Start');\n\n const onSuccess = nonce => {\n setState(states.LOADING);\n webApiClient\n .post('/shopping/payment/verifybraintreecardnonce', { nonce })\n .then(({ data }) => {\n if (data.isVerified) {\n onCardVerified();\n GtmService.trackAction(\n 'VIP',\n 'Card Verification',\n 'Verified'\n );\n dispatch(setIsInternationalWacko(false));\n return;\n }\n GtmService.trackAction(\n 'VIP',\n 'Card Verification',\n 'NotVerified'\n );\n setIsHidden(false);\n setState(states.NOT_VERIFIED);\n return;\n })\n .catch(() => {\n GtmService.trackAction(\n 'VIP',\n 'Card Verification',\n 'Server error'\n );\n setState(states.ERROR);\n });\n };\n\n webApiClient\n .get('/shopping/payment/braintreeclienttokenforverification')\n .then(({ data }) => {\n setState(states.CARD_VERIFICATION_MODAL);\n const options = {\n authorization: data.clientToken,\n container: '#dropin-container',\n locale: preferredLanguage.languageCodeIso2,\n threeDSecure: true\n };\n dropin.create(options, (createErrors, instance) => {\n submitButtonRef.current.addEventListener('click', () => {\n setIsHidden(true);\n try {\n instance.requestPaymentMethod(\n {\n threeDSecure: {\n amount: '1',\n email: memberEmail\n }\n },\n (requestPaymentMethodErr, payload) => {\n if (requestPaymentMethodErr) {\n setIsHidden(false);\n setState(states.NOT_VERIFIED);\n const error =\n requestPaymentMethodErr._braintreeWebError ||\n {};\n\n GtmService.trackAction(\n 'VIP',\n 'Card Verification',\n `${error.type}:${error.code}`\n );\n\n return;\n }\n\n if (!payload || !payload.nonce) {\n setIsHidden(false);\n setState(states.NOT_VERIFIED);\n\n if (payload) {\n const threeDSecureValidationFailed =\n payload.liabilityShiftPossible &&\n !payload.liabilityShifted;\n\n GtmService.trackAction(\n 'VIP',\n 'Card Verification',\n threeDSecureValidationFailed\n ? 'ThreeDSecure failed'\n : 'Card invalid'\n );\n }\n return;\n }\n\n onSuccess(payload.nonce);\n }\n );\n } catch (e) {\n setIsHidden(false);\n setState(states.NOT_VERIFIED);\n GtmService.trackAction(\n 'VIP',\n 'Card Verification',\n 'requestPaymentMethod failed'\n );\n throw e;\n }\n });\n });\n return;\n })\n .catch(() => setState(states.ERROR));\n setState(states.LOADING);\n }, [onCardVerified, dispatch, state, preferredLanguage, memberEmail]);\n\n const restart = () => {\n GtmService.trackAction('VIP', 'Card Verification', 'Restart');\n setState(states.START);\n };\n\n return (\n \n \n \n
    \n {t('internationalwacko_cardverificationmodal_header')}\n
    \n
    \n \n {state === states.LOADING && }\n {state === states.CARD_VERIFICATION_MODAL && (\n
    \n

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

    \n

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

    \n

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

    \n\n
    \n\n \n {t(\n 'internationalwacko_cardverificationmodal_verifyCard'\n )}\n \n
    \n )}\n {state === states.ERROR && (\n

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

    \n )}\n {state === states.NOT_VERIFIED && (\n
    \n

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

    \n

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

    \n \n {t(\n 'internationalwacko_cardverificationmodal_tryAgain'\n )}\n \n
    \n )}\n \n \n \n );\n};\n","export const actionTypes = {\n SET: 'COOKIES_SET'\n};\n\nexport const setCookie = (name, value) => ({\n type: actionTypes.SET,\n payload: {\n name: name,\n value: value\n }\n});\n\nexport default {\n actionTypes,\n setCookie\n};\n","import React from 'react';\n\nconst DiscountBadge = ({ className, discountRate }) => {\n return (\n \n -{discountRate}%\n \n );\n};\n\nexport default DiscountBadge;\n","import ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n axiosWithTokenRefresh,\n defaultJsonRequestHeaders,\n handleError,\n reloadOnUnauthorized,\n logError\n} from 'tradera-utils/api';\nimport { webApiClient } from 'tradera-utils/http';\n\nexport const getStartPageConfig = languageCodeIso2 => {\n return axiosWithTokenRefresh()\n .get(\n `${ENDPOINTS.CMS_API}/api/pages/start?locale=${languageCodeIso2}`,\n {\n headers: defaultJsonRequestHeaders\n }\n )\n .catch(handleError())\n .catch(logError)\n .then(response => response?.data);\n};\n\nexport const getTrendingBrands = () => {\n return axiosWithTokenRefresh()\n .get(ENDPOINTS.CMS_API + '/api/trending/brands', {\n headers: defaultJsonRequestHeaders\n })\n .catch(handleError())\n .catch(logError)\n .then(response => response?.data || [])\n .then(items =>\n items\n .map(({ name, index, slug, logoImageUrl }) => ({\n name,\n index,\n url: `/brand/${slug}`,\n logoImageUrl\n }))\n .sort(sortByIndex)\n );\n};\n\nconst sortByIndex = (a, b) => a.index - b.index;\n\nexport const getTrendingSearchesCms = () => {\n return axiosWithTokenRefresh()\n .get(ENDPOINTS.CMS_API + '/api/trending/searches', {\n headers: defaultJsonRequestHeaders\n })\n .catch(handleError())\n .catch(logError)\n .then(response => response?.data || [])\n .then(items =>\n items\n .map(({ index, categoryId, query }) => ({\n name: query,\n index,\n url: `/search?q=${query}${\n categoryId ? `&categoryId=${categoryId}` : ''\n }&sortBy=MostBids`\n }))\n .sort(sortByIndex)\n );\n};\n\nexport const getTrendingSearchesPersonalisedSuggestions = () => {\n return axiosWithTokenRefresh()\n .get(ENDPOINTS.PERSONALISED_SUGGESTIONS + '/trending-searches', {\n headers: defaultJsonRequestHeaders\n })\n .catch(handleError())\n .catch(logError)\n .then(response => response?.data || []);\n};\n\nexport const getWishListItems = () => {\n return axiosWithTokenRefresh()\n .get(ENDPOINTS.WISHLIST + '?filter=active&itemsPerPage=8', {\n headers: defaultJsonRequestHeaders\n })\n .catch(handleError())\n .catch(reloadOnUnauthorized)\n .catch(logError)\n .then(response => response?.data.items || []);\n};\n\nexport const getFavouriteSellers = shippingCountryCode => {\n return webApiClient\n .get(\n `/discover/favouritesellers-and-items2?maxFavouriteSellers=4&maxItemsPerFavouriteSeller=3&shippingCountryCode=${shippingCountryCode}`\n )\n .then(response => response?.data || {});\n};\n\nexport const getSellerSuggestions = shippingCountryCode => {\n return webApiClient\n .get(\n `/discover/seller-suggestions?maxSellers=4&maxItemsPerSeller=3&shippingCountryCode=${shippingCountryCode}`\n )\n .then(response => response?.data?.favouriteSellerCardDtos || []);\n};\n","import {\n getStartPageConfig,\n getTrendingBrands,\n getTrendingSearchesCms,\n getTrendingSearchesPersonalisedSuggestions,\n getWishListItems,\n getFavouriteSellers,\n getSellerSuggestions\n} from './api';\nimport {\n setStartPageConfigAction,\n setStartPageConfigStatusAction,\n setTrendingBrandsAction,\n setTrendingBrandsStatusAction,\n setTrendingSearchesAction,\n setTrendingSearchesStatusAction,\n setWishListAction,\n setWishListStatusAction,\n setFavouriteSellersAction,\n setFavouriteSellersStatusAction\n} from './reducer';\nimport { selectPreferredLanguage } from 'tradera-state/language/selectors';\nimport itemActions from 'tradera-state/items/actions';\n\nconst defaultStartPageConfig = {\n header: {\n alternativeText: '',\n backgroundImage: null,\n isCampaignMode: false,\n webpageUrl: ''\n },\n contentLoggedOut: [{ type: 'lastChance' }, { type: 'recentlyViewed' }],\n contentLoggedIn: [\n { type: 'wishList' },\n { type: 'favouriteSellers' },\n { type: 'lastChance' },\n { type: 'recentlyViewed' }\n ]\n};\n\nexport const fetchStartPageConfig = () => async (dispatch, getState) => {\n const { status } = getState().views.startPage;\n if (status !== 'NOT_FETCHED') return;\n\n dispatch(setStartPageConfigStatusAction({ status: 'LOADING' }));\n\n const config = await getStartPageConfig(\n selectPreferredLanguage(getState()).languageCodeIso2\n );\n\n dispatch(\n setStartPageConfigAction({\n config: config || defaultStartPageConfig,\n status: 'HAS_DATA'\n })\n );\n};\n\nexport const fetchTrendingBrandsIfNeeded = () => async (dispatch, getState) => {\n const { status } = getState().views.startPage.trendingBrands;\n if (status !== 'NOT_FETCHED') return;\n\n dispatch(setTrendingBrandsStatusAction({ status: 'LOADING' }));\n\n const brandsResult = await getTrendingBrands();\n\n const newStatus = brandsResult.length > 0 ? 'HAS_DATA' : 'HAS_NO_DATA';\n dispatch(\n setTrendingBrandsAction({ items: brandsResult, status: newStatus })\n );\n};\n\nexport const fetchTrendingSearchesIfNeeded = () => async (\n dispatch,\n getState\n) => {\n const { status } = getState().views.startPage.trendingSearches;\n\n if (status !== 'NOT_FETCHED') return;\n\n const isTrendingSearchesFromMlEnabled = getState().environment\n .featureSwitches['trending-searches-from-ml'];\n\n dispatch(setTrendingSearchesStatusAction({ status: 'LOADING' }));\n\n const searchesResult = isTrendingSearchesFromMlEnabled\n ? await getTrendingSearchesPersonalisedSuggestions()\n : await getTrendingSearchesCms();\n\n const newStatus = searchesResult.length > 0 ? 'HAS_DATA' : 'HAS_NO_DATA';\n dispatch(\n setTrendingSearchesAction({ items: searchesResult, status: newStatus })\n );\n};\n\nexport const fetchWishList = () => async (dispatch, getState) => {\n const { status } = getState().views.startPage.wishList;\n if (status === 'LOADING') return;\n\n dispatch(setWishListStatusAction({ status: 'LOADING' }));\n\n const items = await getWishListItems();\n dispatch(itemActions.add(items));\n\n const itemIds = items.map(item => item.itemId);\n dispatch(itemActions.addItemsToWishList(itemIds));\n const newStatus = items.length > 0 ? 'HAS_DATA' : 'HAS_NO_DATA';\n dispatch(setWishListAction({ itemIds: itemIds, status: newStatus }));\n};\n\nexport const fetchFavouriteSellers = () => async (dispatch, getState) => {\n const { status } = getState().views.startPage.favouriteSellers;\n if (status === 'LOADING') return;\n\n const isSellerSuggestionsEnabled = getState().environment.featureSwitches[\n 'seller-suggestions'\n ];\n\n dispatch(setFavouriteSellersStatusAction({ status: 'LOADING' }));\n\n const shippingCountryCode = getState().shippingRegion.shippingCountry\n .countryCodeIso2;\n const promise = getFavouriteSellers(shippingCountryCode);\n const suggestionsPromise =\n isSellerSuggestionsEnabled && getSellerSuggestions(shippingCountryCode);\n const { favouriteSellers = [], items = [], totalItems = 0 } = await promise;\n dispatch(itemActions.add(items));\n\n const itemIds = items.map(item => item.itemId);\n\n const newStatus = totalItems > 0 ? 'HAS_DATA' : 'HAS_NO_DATA';\n dispatch(\n setFavouriteSellersAction({\n sellers: favouriteSellers,\n itemIds,\n totalItems,\n status: newStatus\n })\n );\n\n if (isSellerSuggestionsEnabled) {\n const sellerSuggestions = await suggestionsPromise;\n dispatch(\n setFavouriteSellersAction({\n sellerSuggestions\n })\n );\n }\n};\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport './start-page-hero-banner.scss';\n\nexport const StartPageHeroBanner = () => {\n const { bannerLinks } = useSelector(\n state => state.views.startPage.config.header\n );\n\n const content = (icon, text) => (\n <>\n {icon && icon.baseUrl && (\n \n )}\n {text}\n \n );\n\n return bannerLinks && bannerLinks.length > 0 ? (\n
    \n
    \n {bannerLinks.map(({ text, url, icon }) => (\n \n {url ? (\n \n {content(icon, text)}\n \n ) : (\n content(icon, text)\n )}\n
    \n ))}\n
    \n
    \n ) : null;\n};\n","import React from 'react';\nimport { CAROUSEL, HEADER } from './content-types';\n\nexport const getImageSizes = (\n imageCount,\n image,\n containerType,\n format = 'jpg&fl=progressive'\n) => {\n if (!image) {\n return {};\n }\n const { baseUrl } = image;\n\n const imageUrl = baseUrl + '?fm=' + format;\n\n if (containerType === HEADER) {\n return {\n srcSet: `${imageUrl}&w=1920 1920w, ${imageUrl}&w=768 768w, ${imageUrl}&w=425 425w`,\n sizes: '100vw'\n };\n }\n\n if (containerType === CAROUSEL) {\n return {\n srcSet: `${imageUrl}&w=1250 1250w, ${imageUrl}&w=768 768w, ${imageUrl}&w=425 425w`,\n sizes: '(max-width: 425px) 425px, (max-width: 768px) 768px, 1250px'\n };\n }\n\n let imageSizes;\n switch (imageCount) {\n case 1:\n imageSizes = {\n srcSet: `${imageUrl}&w=1230 1230w, ${imageUrl}&w=768 768w, ${imageUrl}&w=425 425w`,\n sizes:\n '(max-width: 425px) 425px, (max-width: 768px) 768px, 1230px'\n };\n break;\n case 2:\n imageSizes = {\n srcSet: `${imageUrl}&w=605 605w, ${imageUrl}&w=397 397w, ${imageUrl}&w=425 425w`,\n sizes:\n '(max-width: 425px) 425px, (max-width: 768px) 397px, 605px'\n };\n break;\n case 3:\n imageSizes = {\n srcSet: `${imageUrl}&w=605 605w, ${imageUrl}&w=397 397w, ${imageUrl}&w=425 425w`,\n sizes:\n '(max-width: 425px) 425px, (max-width: 768px) 397px, 605px'\n };\n break;\n default:\n imageSizes = {\n srcSet: `${imageUrl}&w=1250 1250w, ${imageUrl}&w=768 768w, ${imageUrl}&w=425 425w`,\n sizes:\n '(max-width: 425px) 425px, (max-width: 768px) 768px, 1250px'\n };\n break;\n }\n return imageSizes;\n};\n\nexport const getWebpImage = (imageCount, image, containerType) => {\n if (!image) {\n return {};\n }\n\n const imageSizes = getImageSizes(imageCount, image, containerType, 'webp');\n\n const { srcSet, sizes } = imageSizes;\n\n return ;\n};\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useNetworkStatus } from 'react-adaptive-hooks';\nimport { getCurrentBreakpoint } from 'tradera-utils/breakpoints';\nimport {\n isMobile,\n isTablet,\n isDesktop\n} from 'tradera-components/breakpoint/breakpoint';\nimport './media-item.scss';\n\nconst Video = ({ video, poster }) => {\n const {\n largeUrl: videoLarge,\n mediumUrl: videoMedium,\n smallUrl: videoSmall\n } = video;\n\n const [loops, setLoops] = useState(0);\n\n const videoRef = useRef(null);\n\n const playVideo = async video => {\n try {\n await video.play();\n } catch (err) {\n return;\n }\n };\n\n const currentBreakpoint = getCurrentBreakpoint();\n\n const isMobileBreakpoint = isMobile(currentBreakpoint);\n const isTabletBreakpoint = isTablet(currentBreakpoint);\n const isDesktopBreakpoint = isDesktop(currentBreakpoint);\n\n const handleVideoEnded = useCallback(() => {\n const video = videoRef.current;\n let videoLoops;\n\n // Set number of loops depending on video length\n if (video.duration > 30) {\n videoLoops = 2;\n } else if (video.duration > 10) {\n videoLoops = 4;\n } else {\n videoLoops = 8;\n }\n\n if (loops < videoLoops) {\n playVideo(video);\n }\n setLoops(loops + 1);\n }, [loops]);\n\n useEffect(() => {\n const videoElement = videoRef.current;\n videoElement.addEventListener('ended', handleVideoEnded);\n return () => {\n videoElement.removeEventListener('ended', handleVideoEnded);\n };\n });\n\n return (\n
    \n \n {isDesktopBreakpoint && (\n \n )}\n {isTabletBreakpoint && (\n \n )}\n {isMobileBreakpoint && (\n \n )}\n \n
    \n );\n};\n\nconst MediaItem = ({\n alternativeText,\n heading,\n imageSizes,\n image,\n video,\n webpImage\n}) => {\n const { effectiveConnectionType } = useNetworkStatus();\n\n if (!image) {\n return null;\n }\n\n const { srcSet, sizes } = imageSizes;\n\n const { largeUrl, mediumUrl, smallUrl } = image;\n\n //Return image instead of video if on slow connection\n let media;\n switch (effectiveConnectionType) {\n case 'slow-2g':\n case '2g':\n case '3g':\n media = (\n \n {webpImage && webpImage}\n \n \n );\n break;\n default:\n media = video ? (\n