{"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/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/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/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/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/hooks/use-split-test-group.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/EbaySweden.TouchWeb/static/script/components/customer-feedback/qualtive-loader.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/EbaySweden.TouchWeb/static/script/components/customer-feedback/qualtive-button.jsx","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-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/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.js","webpack:///./src/frontend/state/views/syi/reducers/attributes-helpers.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/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.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/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-info-card.jsx","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","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","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","featureSwitches","origin","hostname","messagingIframeUrl","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","survey","surveys","displayName","languageCodeIso3","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","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","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","link","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","utils","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","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","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","setEditedImageIndex","imageIndex","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","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","validate","validationError","shortDescriptionSlice","setShortDescription","resetShortDescription","QuickViewButton","iconClassName","Button","unbutton","wide","translucent","outline","branded","fluid","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","INPUT_TYPE_MAP","Color","Dropdown","transformServerOption","serverOption","warningLabel","transformServerAttribute","attribute","hiddenCategories","sortOrder","backingField","possibleValues","inputType","isMultiSelect","maxNumberOfValues","minNumberOfValues","numberOfValuesSelected","shouldTranslateValues","setAttributesFromDraft","draft","attributeValues","fetchForCategory","defaultClient","SELLING_ATTRIBUTES","attributeDefinitions","updateCategoryAttributesOptionsStatuses","campaignCodeActions","validateCampaignCode","updateAttribute","attributeId","optionValue","activate","onUpdated","selectCategoryAttributes","resetAttribute","throttledFetchCategoryAttributeSuggestions","fetchCategoryAttributeSuggestions","execute","splitTestGroup","splitTestGroups","splitTestEnabled","extractorType","getAttributeSuggestionExtractor","SELLING_SUGGEST_ATTRIBUTES","suggestedAttributes","termAttributeValues","transformServerAttributeSuggestion","suggestionsExtractorType","splitTest","attributeSuggestion","values","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","daysUntilPurchaseOrderExpires","LINK","unpaidShipping","EXTERNAL_LINK","hasShipmentReceipt","hasShipmentLabel","SINGLE_FEEDBACK_DIALOG_ID","featureToggles","soldActions","buttonTheme","boughtActions","selectPurchaseOrderState","selectRouterState","itemsOrderedByID","myTraderaItems","updateditems","modifyHistory","defaultPayload","query","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","filterAvailableLanguages","gpsCountry","memberCountry","languagesToShow","sv","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","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","videoId","closeVideoModal","openYoutubeVideoModal","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","WrappedComponent","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","ALTERNATIVE","BUSSGODS","FEDEX","NOT_SPECIFIED","POSTNORD","POSTNORD_PARCEL","POSTNORD_STAMP","SCHENKER","TAKE_AWAY","TAKE_AWAY_ONLY","UPS","logoImgUrl","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","combinedShippingPriceRequested","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","useSplitTestGroup","splitTestName","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","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","isQualtiveEnabled","loadQualtiveScript","attemptsLeft","interval","qualtive","mapLocale","LOCALES","openQualtiveModal","translator","dataAttributeName","js","setAttribute","getElementsByTagName","addScriptToDom","locale","supportURL","darkMode","user","present","general","selectShipping","paynova","automaticSuggestion","cardVerification","bankId","myTraderaBuyerActiveItems","myTraderaBuyerPurchases","myTraderaBuyerItemsLost","myTraderaSellerActiveItems","myTraderaSellerSoldItems","myTraderaSellerUnsoldItems","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","descriptionLanguageCodeIso2","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","toUpperCase","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","obj","warnIfDevBuild","isHybridAppContext","isBasicApp","getElementsByClassName","AppToMount","App","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","showDanishFromCountry","selectMemberCountryCodeIso2","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","cv","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","currentTimeoutId","poll","zs","sessionId","call","getSessionStatus","ZignSec","ZsProduct","Scanning","openInIframe","relay_state","relayState","analysis_types","r","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","SELLING_DONT_ASK_FOR_SCHENKER_UPSELL","WEB_PUSH_ACCEPTED","COMBINED_SHIPPING_ALERT_SOLD","COMBINED_SHIPPING_ALERT_BOUGHT","COMBINED_SHIPPING_ALERT_SYI","CHECKOUT_DONT_CONFIRM_REQUEST_COMBINED_SHIPPING","SELLER_LIST_COMPACT_VIEW","CACHE_MESSAGING_BADGES","CACHE_RECENTLY_VIEWED_ITEMS","CACHE_SYSTEM_MESSAGES","APPLE_ID_USER","STORAGE_VALUES","SAVE_SEARCH_HINT_CLICKED","QualtiveButton","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","translate","update","safeMount","selector","opts","mountedComponents","mount","setupTeardown","keepRootTag","unmounted","vdom","unmount","unmountAll","off","countryName","isDenmarkCountryCode","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","FavouriteSellersFallback","gpt","adContainerRef","refresh","stickyBottom","stickyEnabled","stickyTop","canCreateDfpAd","adUnitPath","sizeMapping","minViewportWidth","maxViewportWidth","pageTargeting","customTargetingParameters","offsetWidth","slotTargeting","pos","availableAllowedBuyerRegions","findIndexOfRegion","regionValue","allowedBuyerRegions","selectedBuyerRegionText","availableAllowedBuyerRegionsForEditWithBids","isSetAllowedBuyerRegionToAtLeastEuEnabled","isTraderaPayEnabled","hasSetAllowedBuyerRegion","initModuleGlobals","buyerRegionSlice","setAllowedBuyerRegion","region","regionOrDefault","isFromDraft","setAllowedBuyerRegionAtLeastEu","euIndex","setAvailableAllowedBuyerRegions","availableRegions","draftState","regionState","regions","selectedRegion","Sweden","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","setSuggestedShippingProducts","shippingProducts","getShippingProvidersWithProducts","primaryShippingProviders","isLoadingProvidersWithProducts","calculateShipping","shippingCalculatorService","additionalInfo","clearSuggestedShippingProducts","makeSecondaryShippingOptionPrimary","removeShippingOption","removeTakeawayDeliveryAccepted","takeawaySelected","setCalculatorDimensions","dimensions","setSecondaryShippingOptionOpen","secondaryShippingOptionOpen","setShippingOptionCost","setShippingOptionsFromDraft","removeCostIfCostMatchesSelectedProduct","shippingState","getVariant","setShippingOptionVariantAfterDraft","isPrimary","getPrimaryOrSecondaryProducts","productVariant","setTakeawayDeliveryAccepted","toggleShippingCalculator","toggleShippingOption","isAdd","upsellShippingTypes","setShippingFromcountry","NextArrow","arrowClassName","display","PreviousArrow","BasicCarousel","slider","slickNext","slickPrev","goTo","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","setUploadFailed","setUploading","numberOfSlots","prepareUpload","selectedFilesCount","freeSlotCount","errorActions","numberOfFilesToUpload","MissingDraftId","setIsUploadingWithApp","isUploadingWithApp","cancelMobileUpload","draftSocket","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","linkProps","imageStyle","aspectRatio","paddingTop","ALink","ToBuyLink","howTo","useMenuHeightFix","menuContentRef","parentElement","marginBottom","marginY","maxHeight","SingleFeedbackDialog","isSeller","MODAL_TYPE","BANK_ID","SWISH_APP_2_APP","SWISH_HANDEL","CONFIRM_REQUEST_COMBINED_SHIPPING","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","statistics","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","paymentOptionsTop","showToggle","forceBraintreeIfNeeded","allErrorsVisible","editedImageIndex","publishPending","publishFailed","publishFailedReasonDisplayText","publishedItemPendingVip","publishedItem","openModalData","autoSaveEnabled","draftCanBeResumed","itemUpdating","itemUpdated","step1","step2","step3","step4","optionHasError","validateProviders","hasAnyNonValidOption","hasAnyValidOption","weightIsInvalid","isAdvanced","isWeightValid","weightValidationError","primaryValidations","secondaryValidations","getFirstValidationError","primaryValidationError","secondaryValidationError","globalValidationError","takeawayDeliveryAccepted","validationErrors","global","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_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","draftAttributes","selectableSuggestedAttributes","RESET_ATTRIBUTES","SET_CATEGORY_ATTRIBUTES","SET_DRAFT_ATTRIBUTES","SET_CATEGORY_ATTRIBUTE_OPTION","o","UPDATE_CATEGORY_ATTRIBUTES_OPTIONS_STATUSES","draftAttributeValues","tav","SET_CATEGORY_ATTRIBUTES_SUGGESTIONS","incomingSuggestedAttributes","selectableSuggestions","categoryAttribute","suggestedAttribute","isSelectableSuggestion","isMaxReached","consent","shouldGiveConsent","isSyiMemberConsentEnabled","hasTraderaPayConsent","hasValidationError","createInitalState","SET_TRADERAPAY_CONSENT","hasLoaded","viewItemState","isBidding","placeBidResponse","initialBidFormValue","combineReducers","isSyiAttributesEnabled","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","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","isBatchPayoutsListEnabled","paymentSettingsUrl","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","invalidImageErrorCodes","imageErrors","nonImageErrors","imageErrorDisplayTexts","displayTexts","invalidImageCount","invalidImageIds","imageActions","handleInvalidImages","nonImageErrorDisplayTexts","translateErrorCode","errorDisplayTexts","errorDisplayText","ensureDraftReason","setDraft","categoryActions","setItemCondition","setDurationDays","setCustomEndTime","shortDescriptionActions","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","setDescriptionLanguageCodeIso2","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","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","onload","responseText","uploadFileWithDom","uploadCroppedImageFile","imageFile","initialPlaceBidResponse","translatedDescriptionStates","SERVER_ERROR","TRANSLATION_ON_DEMAND_DISABLED","showLiveUpdates","viewItemSlice","resetPlaceBidResponse","setInitialBidFormValue","setIsApprovedBuyer","isApprovedBuyer","setIsInternationalWacko","isWackoViewModel","isInternationalWacko","setVipLiveUpdate","setItemDetails","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","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","StartPageHero","showRecentSearches","showTrendingSearches","backgroundVideo","searchElementRef","searchInView","searchInViewEntry","parsedCampaignUrl","toRelativeTraderaUrl","FallbackImage","isSpaLink","opacity","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","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","linkStart","linkEnd","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","Causes","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","onerror"],"mappings":"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C,GAAI,aACJC,GAAI,aACJC,GAAI,aACJ3/F,GAAI,aACJ4/F,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJ1xB,GAAI,aACJ2xB,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,aACJpwF,GAAI,aACJqwF,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJruC,GAAI,aA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","file":"script/chunks/chunk.tradera.09ebbd57ae.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","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 buyerMember:\n page.listType === PAGE_LIST_TYPES.BUYER_PURCHASES\n ? purchaseOrder.sellerMember\n : purchaseOrder.buyerMember,\n sellerMember:\n page.listType === PAGE_LIST_TYPES.BUYER_PURCHASES\n ? purchaseOrder.buyerMember\n : purchaseOrder.sellerMember,\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 }\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","import initData from 'init-data';\n\nexport const getMessagingUrl = toLocalizedUrl =>\n initData.featureSwitches['messaging-in-touchweb']\n ? toLocalizedUrl(window.origin + '/messagingiframe')\n : location.hostname === 'beta-a.tradera.com'\n ? 'https://tradera-staging-messaging.firebaseapp.com'\n : initData.messagingIframeUrl;\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 'components/customer-feedback/qualtive-loader';\nimport { QualtiveButton } from 'components/customer-feedback/qualtive-button';\nimport LanguageIcon from '@tradera/blueprint/theme/icons2/language.svg?jsx';\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 \n
\n ({\n name: `${language.displayName} - ${language.languageCodeIso3}`,\n value: language.languageCodeIso2\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 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 ALink from 'tradera-components/alink/alink';\nimport './rating-stars.scss';\n\n// Rating is multipled with 20.5 to account for margin between stars and rounding up\n\nconst RatingStars = ({\n memberAlias,\n memberId,\n rating,\n gaAttributes,\n dark = false,\n onClick\n}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n \n
    \n \n \n ★\n ★\n ★\n ★\n ★\n
    \n
    \n ★\n ★\n ★\n ★\n ★\n
    \n \n
    \n \n {utils.getDisplayRating(rating)}\n \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};\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?.featureSwitches['batch-payouts-list']\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?.featureSwitches['batch-payouts-list'],\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}) => {\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 );\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};\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) => {\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: leadingBid\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 setEditedImageIndex: function(imageIndex) {\n store.dispatch({\n type: 'SET_EDITED_IMAGE_INDEX',\n payload: imageIndex\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","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","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';\n\nconst initialState = {\n shortDescription: null,\n validationError: null\n};\n\nconst validate = state => ({\n ...state,\n validationError:\n state.shortDescription && state.shortDescription.trim() !== ''\n ? null\n : 'syi_validation_missing_title'\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 }\n});\n\nexport const {\n setShortDescription,\n resetShortDescription\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';\nconst throttleTimeout = 2000;\nconst suggestionsThrottle = new ThrottledAction(throttleTimeout, true);\n\nconst INPUT_TYPE_MAP = {\n Button: 'button',\n Color: 'color',\n Dropdown: 'dropdown'\n};\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 hiddenCategories: attribute.hiddenCategories,\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 fetchForCategory = categoryId => async dispatch => {\n dispatch({\n type: 'RESET_ATTRIBUTES'\n });\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({\n type: 'RESET_ATTRIBUTES'\n });\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) => async dispatch => {\n const action = () => {\n dispatch(\n fetchCategoryAttributeSuggestions(categoryId, shortDescription)\n );\n };\n suggestionsThrottle.execute(action);\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.combinedShippingInformation\n .hasBuyerRequestedCombinedShippingPrice ||\n purchaseOrder.combinedShippingInformation\n .daysUntilPurchaseOrderExpires <= 0) &&\n !purchaseOrder.state.isPaid,\n isPrimaryAction: () =>\n !purchaseOrder.shipping.shippingDiscount &&\n purchaseOrder.combinedShippingInformation\n .daysUntilPurchaseOrderExpires <= 0\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 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.buyerMember.memberId}/${purchaseOrder.buyerMember.alias}`,\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 filterAvailableLanguages: (state, action) => {\n // Always show swedish, english, the language from the url, the language of the country the user is in, and\n // the language of the country of the member. This is temporary logic during initial internationalization.\n const gpsCountry = (action.payload.isoCode || '').toLowerCase();\n const memberCountry = (\n state.memberCountryCodeIso2 || ''\n ).toLowerCase();\n const urlLanguage = state.preferred.languageCodeIso2;\n const languagesToShow = {\n da: gpsCountry === 'dk' || memberCountry === 'dk',\n de: gpsCountry === 'de' || memberCountry === 'de',\n sv: true,\n en: true,\n [urlLanguage]: true\n };\n state.available = state.available.filter(\n ({ languageCodeIso2 }) =>\n languagesToShow[languageCodeIso2] === true\n );\n }\n }\n});\n\nexport const { setPreferred, filterAvailableLanguages } = 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 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 { videoId, title, pageType } = action.payload;\n return {\n ...state,\n videoModal: {\n ...state.videoModal,\n open: CONSTANTS.MODAL.OPEN,\n videoId: videoId,\n title: title,\n pageType: pageType\n }\n };\n };\n\n const closeVideoModal = () => {\n return {\n ...state,\n videoModal: {\n ...state.videoModal,\n open: CONSTANTS.MODAL.CLOSED\n }\n };\n };\n\n 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\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};\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 'CombinedShipping':\n newState.modifiers.sellerFilters.combinedShippingPriceRequested = setEnum(\n true\n );\n newState.modifiers.sellerFilters.hidden = setEnum(false);\n break;\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","import { useSelector } from 'react-redux';\n\nconst useSplitTestGroup = splitTestName =>\n useSelector(state => state.environment.splitTestGroups[splitTestName]);\nexport default useSplitTestGroup;\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\n .get(t)\n .find(p => p.type === 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","/**\n * These functions control loading and opening of a Qualtive feedback script.\n * We use this because we do not want to load the Qualtive script on each page load.\n */\nimport initData from 'init-data';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\n\n/**\n * Returns true if Qualtive widgets is enabled.\n */\nconst isQualtiveEnabled = () => {\n return (\n initData &&\n initData.featureSwitches &&\n initData.featureSwitches['qualtive-feedback'] &&\n GdprSettings.isFunctionalEnabled()\n );\n};\n\n/**\n * Adds the Qualtive script to the page if not there\n */\nconst addScriptToDom = () => {\n if (!isQualtiveEnabled()) {\n return;\n }\n const dataAttributeName = 'data-qualtive-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', 'https://static.qualtive.io/client/web.v1.js');\n document.getElementsByTagName('head')[0].appendChild(js);\n loadQualtiveScript();\n};\n\n/**\n * Loads Qualtive script\n */\nconst loadQualtiveScript = () => {\n if (!isQualtiveEnabled()) {\n return;\n }\n let attemptsLeft = 100;\n const timeBetweenAttempts = 50;\n const interval = setInterval(function() {\n if (window.qualtive) {\n clearInterval(interval);\n } else if (--attemptsLeft < 1) {\n clearInterval(interval);\n }\n }, timeBetweenAttempts);\n};\n\nconst mapLocale = languageCodeIso2 => {\n const LOCALES = {\n sv: 'sv-se',\n en: 'en-us',\n da: 'da-dk',\n de: 'de-de'\n };\n\n return languageCodeIso2 in LOCALES\n ? LOCALES[languageCodeIso2]\n : LOCALES['sv'];\n};\n\n/**\n * Opens Qualtive with a certain survey/question.\n */\nconst openQualtiveModal = (survey, translator) => {\n if (!isQualtiveEnabled() || !survey) {\n return;\n }\n addScriptToDom();\n let attemptsLeft = 100;\n const timeBetweenAttempts = 50;\n const { languageCodeIso2 } = initData;\n let qualtive;\n const interval = setInterval(function() {\n qualtive = window.qualtive;\n if (qualtive) {\n let payload = {\n title: translator(survey.title),\n locale: mapLocale(languageCodeIso2),\n supportURL: survey.supportURL,\n darkMode: 'never'\n };\n const { memberId } = initData;\n if (memberId) {\n payload = { ...payload, user: { id: memberId } };\n }\n setTimeout(() => {\n qualtive.present(survey.survey, payload);\n }, 100);\n clearInterval(interval);\n } else if (--attemptsLeft < 1) {\n clearInterval(interval);\n }\n }, timeBetweenAttempts);\n};\n\nconst surveys = {\n general: {\n survey: 'tradera/hur-tycker-du-att-det-fungerar-att-anvanda-tradera',\n title: 'qualtiveTitle_generalFeedback',\n supportURL: 'https://info.tradera.com/'\n },\n selectShipping: {\n survey: 'tradera/valja-frakt-hur-fungerar-det-for-dig',\n title: 'qualtiveTitle_selectShipping'\n },\n messaging: {\n survey:\n 'tradera/hur-tycker-du-att-det-fungerar-att-skicka-och-ta-emot-meddelanden',\n title: 'qualtiveTitle_messaging'\n },\n language: {\n survey: 'tradera/english-translation---rate-your-experience',\n title: 'qualtiveTitle_translations'\n },\n paynova: {\n survey: 'tradera/hur-tycker-du-att-paynova-fungerar',\n title: 'qualtiveTitle_paynova'\n },\n automaticSuggestion: {\n survey: 'tradera/var-de-automatiska-forslagen-relevanta-for-dig',\n title: 'qualtiveTitle_automaticsuggestions'\n },\n cardVerification: {\n survey: 'tradera/vad-fick-dig-att-avbryta-kortverifieringen',\n title: 'qualtiveTitle_cardverification'\n },\n bankId: {\n survey: 'tradera/bankid',\n title: 'qualtiveTitle_bankid'\n },\n myTraderaBuyerActiveItems: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-aktiva-annonser',\n title: 'qualtiveTitle_mytraderabuyeractiveitems'\n },\n myTraderaBuyerPurchases: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-mina-kop',\n title: 'qualtiveTitle_mytraderabuyerpurchases'\n },\n myTraderaBuyerItemsLost: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-mina-ej-vunna',\n title: 'qualtiveTitle_mytraderabuyeritemslost'\n },\n myTraderaSellerActiveItems: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-aktiva-annonser-2',\n title: 'qualtiveTitle_mytraderaselleractiveitems'\n },\n myTraderaSellerSoldItems: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-salda-annonser',\n title: 'qualtiveTitle_mytraderasellersolditems'\n },\n myTraderaSellerUnsoldItems: {\n survey:\n 'tradera/hur-tycker-du-det-fungerar-att-filtrera-soka-och-sortera-i-listan-for-osalda-annonser',\n title: 'qualtiveTitle_mytraderasellerunsolditems'\n }\n};\n\nexport { openQualtiveModal, isQualtiveEnabled, surveys };\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 = () => ({ ...defaultDrafts.newItem });\n\nconst loadDefaultTemplateDraft = () => ({ ...defaultDrafts.newTemplate });\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.draft.descriptionLanguageCodeIso2;\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';\nimport { filterAvailableLanguages } from 'tradera-state/language/reducer';\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 dispatch(filterAvailableLanguages(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 var featureSwitches = getState().environment.featureSwitches;\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 if (featureSwitches['syi-attributes']) {\n dispatch(fetchForCategory(categoryId));\n dispatch(\n fetchCategoryAttributeSuggestions(\n categoryId,\n slice.shortDescription.shortDescription\n )\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 };\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 { axiosWithTokenRefresh } from 'tradera-utils/api';\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 axiosWithTokenRefresh()\n .get('/api/member-identification/queries/ScanningsCreateWebToken', {\n params: {\n purpose: 'SYI'\n }\n })\n .then(async ({ data }) => {\n setIsLoading(false);\n const zs = new window.ZignSec(\n data.token,\n window.ZsProduct.Scanning\n );\n\n const r = await zs.openInIframe('zs-root', {\n relay_state: data.relayState,\n analysis_types: ['document', 'selfie', 'fraud']\n });\n await poll(zs, r.id);\n\n setIsLoading(true);\n return await axiosWithTokenRefresh().post(\n '/api/member-identification/commands/ScanningResult',\n {\n sessionId: r.id,\n relayState: data.relayState\n }\n );\n })\n .then(({ data }) => {\n setIsLoading(false);\n\n if (data.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 SELLING_DONT_ASK_FOR_SCHENKER_UPSELL: 'dontAskForSchenkerUpsell',\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 CHECKOUT_DONT_CONFIRM_REQUEST_COMBINED_SHIPPING:\n 'dontConfirmRequestCombinedShipping',\n SELLER_LIST_COMPACT_VIEW: 'sellerListCompactView',\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 PropTypes from 'prop-types';\nimport { openQualtiveModal, isQualtiveEnabled } from './qualtive-loader';\nimport { useTranslator } from 'tradera-lang/translate';\n\nexport const QualtiveButton = ({ survey, icon, text, className }) => {\n const { t } = useTranslator();\n return isQualtiveEnabled() ? (\n openQualtiveModal(survey, t)}>\n {icon}\n {text}\n \n ) : null;\n};\n\nQualtiveButton.propTypes = {\n survey: PropTypes.object.isRequired,\n text: PropTypes.string.isRequired,\n icon: PropTypes.node\n};\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 logo: \n }\n ]\n },\n {\n type: 'payment2',\n partners: [\n {\n logo: \n },\n {\n logo: \n }\n ]\n },\n {\n type: 'payment3',\n partners: [\n {\n logo: \n },\n {\n logo: \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","/**\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","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\nimport StarIcon from '@tradera/blueprint/theme/icons2/star.svg?jsx';\nimport './favourite-sellers.scss';\n\nconst FavouriteSellersFallback = () => {\n const { t } = useTranslator();\n\n return (\n
    \n

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

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

    \n {t('startPage_favoriteSeller_fallback_text2')}\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\nlet availableAllowedBuyerRegions;\nlet initialState;\n\nconst regionOrDefault = region =>\n region ? region : availableAllowedBuyerRegions[0];\n\nconst findIndexOfRegion = (regionValue, state) =>\n state.availableAllowedBuyerRegions.findIndex(r => r.value === regionValue);\n\nconst initModuleGlobals = () => {\n if (\n !initData.pageSpecificData ||\n !initData.pageSpecificData.allowedBuyerRegions\n ) {\n return null;\n }\n\n availableAllowedBuyerRegions =\n initData.pageSpecificData.allowedBuyerRegions;\n\n initialState = {\n availableAllowedBuyerRegions: availableAllowedBuyerRegions,\n selectedBuyerRegion: availableAllowedBuyerRegions[0].value,\n selectedBuyerRegionText: availableAllowedBuyerRegions[0].text,\n availableAllowedBuyerRegionsForEditWithBids: false,\n isSetAllowedBuyerRegionToAtLeastEuEnabled:\n initData &&\n initData.featureSwitches &&\n initData.featureSwitches[\n 'international-shipping-schenker-eu-default'\n ],\n isTraderaPayEnabled: userData.payment.isTraderaPayEnabled,\n hasSetAllowedBuyerRegion: false\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 } = regionOrDefault(region);\n state.selectedBuyerRegion = value;\n state.selectedBuyerRegionText = text;\n\n if (!action.payload.isFromDraft) {\n state.hasSetAllowedBuyerRegion = true;\n }\n\n return state;\n },\n setAllowedBuyerRegionAtLeastEu: state => {\n if (\n !state.isSetAllowedBuyerRegionToAtLeastEuEnabled ||\n !state.isTraderaPayEnabled ||\n state.hasSetAllowedBuyerRegion\n ) {\n return state;\n }\n\n const euIndex = findIndexOfRegion('EU', state);\n const currentIndex = findIndexOfRegion(\n state.selectedBuyerRegion,\n state\n );\n if (currentIndex < euIndex) {\n const { value, text } = state.availableAllowedBuyerRegions[\n euIndex\n ];\n state.selectedBuyerRegion = value;\n state.selectedBuyerRegionText = text;\n }\n return state;\n },\n setAvailableAllowedBuyerRegions: (state, action) => {\n state.availableAllowedBuyerRegions =\n action.payload.availableRegions;\n state.availableAllowedBuyerRegionsForEditWithBids = true;\n return state;\n }\n }\n});\n\nexport const setAvailableAllowedBuyerRegions = () => (dispatch, getState) => {\n const draftState = getSyiSlice(getState()).draft;\n const regionState = getSyiSlice(getState()).buyerRegion;\n const regions = regionState.availableAllowedBuyerRegions;\n const selectedRegion = regionState.selectedBuyerRegion;\n const filters = {\n Sweden: region =>\n ['Sweden', 'Nordic', 'EU', 'International'].indexOf(region.value) >\n -1,\n Nordic: region =>\n ['Nordic', 'International'].indexOf(region.value) > -1,\n EU: region => ['EU', 'International'].indexOf(region.value) > -1,\n International: region => ['International'].indexOf(region.value) > -1\n };\n const useFilter = draftState.draftReason === 'ChangeItemWithBids';\n const filter = (useFilter && filters[selectedRegion]) || (() => true);\n const availableRegions = regions.filter(filter);\n dispatch(\n buyerRegionSlice.actions.setAvailableAllowedBuyerRegions({\n availableRegions\n })\n );\n};\n\nexport const {\n setAllowedBuyerRegion,\n setAllowedBuyerRegionAtLeastEu\n} = buyerRegionSlice.actions;\n\nexport default buyerRegionSlice.reducer;\n","/* eslint-disable */\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","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 { setAllowedBuyerRegionAtLeastEu } from '../reducers/buyer-region';\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, getState) => {\n const selectedShippingOptions = getSyiSlice(getState()).shipping\n .selectedShippingOptions;\n\n const isAdd = !selectedShippingOptions.find(\n shippingOption => shippingOption.type === type\n );\n const upsellShippingTypes = [\n 'PostNordParcel',\n 'PostNordStamp',\n 'SchenkerPrivpak'\n ];\n const isUpsellShippingType = upsellShippingTypes.includes(type);\n if (isUpsellShippingType && isAdd) {\n dispatch(setAllowedBuyerRegionAtLeastEu());\n }\n\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 setTakeawayDeliveryAccepted = () => ({\n type: 'SET_TAKEAWAY_SELECTED',\n payload: {\n takeawaySelected: true\n }\n});\n\nconst removeTakeawayDeliveryAccepted = () => ({\n type: 'SET_TAKEAWAY_SELECTED',\n payload: {\n takeawaySelected: false\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({\n type: 'SET_TAKEAWAY_SELECTED',\n payload: {\n takeawaySelected: true\n }\n });\n } else {\n dispatch({\n type: 'SET_TAKEAWAY_SELECTED',\n payload: {\n takeawaySelected: false\n }\n });\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 removeTakeawayDeliveryAccepted,\n reset,\n resetSelected,\n setCalculatorDimensions,\n setSecondaryShippingOptionOpen,\n setShippingOptionCost,\n setShippingOptionsFromDraft,\n setShippingOptionVariant,\n setSuggestedShippingProducts,\n setTakeawayDeliveryAccepted,\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';\n\nconst setDraftImages = images => dispatch => {\n dispatch({\n type: 'SET_DRAFT_IMAGES',\n payload: images\n });\n\n dispatch(draftActions.updateDraftCanBeResumed());\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 }\n\n dispatch(draftActions.updateDraftCanBeResumed());\n};\n\nconst setUploadedImageInImageSlot = (\n slotIndex,\n imageId,\n imageUrl\n) => dispatch => {\n dispatch({\n type: 'SET_UPLOADED_IMAGE_IN_SLOT',\n slotIndex: slotIndex,\n imageUrl: imageUrl,\n imageId: imageId\n });\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 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};\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 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 if (isLoaded) {\n currentSrc = src;\n currentClassName = className + ' ' + loadedClassName;\n } else if (error) {\n currentSrc = fallbackSrc;\n currentClassName = className + ' ' + fallbackClassName;\n }\n return (\n \n {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 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 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 if (lazy) {\n return (\n \n \n {children}\n \n \n );\n } else {\n return (\n \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 CONFIRM_REQUEST_COMBINED_SHIPPING: 'CONFIRM_REQUEST_COMBINED_SHIPPING'\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';\nimport { selectCookiesState } from '../state/reducers/cookies';\nimport { isNormalListViewType } from './item-helper';\nimport { selectMyTraderaState } from 'tradera-apps/my-tradera/app/state/reducers/my-tradera';\nimport { selectRouterState } from 'tradera-apps/my-tradera/app/state/selectors/router';\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 const cookies = selectCookiesState(state);\n const listType =\n selectMyTraderaState(state).page &&\n selectMyTraderaState(state).page[\n selectRouterState(state).location.pathname\n ]?.listType;\n\n const checkModifiersExist =\n !!state && filtersState && filtersState.modifiers;\n\n const defaultFilters = getDefaultFilters(filtersState, checkModifiersExist);\n\n const listViewTypeWithFallBack =\n cookies['LIST_VIEW_TYPE_' + listType] || cookies.LIST_VIEW_TYPE;\n\n if (isNormalListViewType(listViewTypeWithFallBack)) {\n return {\n ...defaultFilters,\n 'filters[sellerFilters][combinedShippingPriceRequested]':\n checkModifiersExist && filtersState.modifiers.sellerFilters\n ? filtersState.modifiers.sellerFilters\n .combinedShippingPriceRequested\n : ''\n };\n }\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 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.takeawaySelected\n };\n shapePaymentOptions(newState);\n return validate(newState);\n }\n case 'ENSURE_ANY_PAYMENT_OPTION_FOR_CHARITY': {\n const newState = { ...state };\n const hasAnyValidPayment = 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 editedImageIndex: null,\n publishPending: false,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishedItemPendingVip: false,\n publishedItem: null,\n openModal: null,\n openModalData: null,\n autoSaveEnabled: false,\n draftCanBeResumed: false,\n itemUpdating: false,\n itemUpdated: false\n};\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'RESET_SYI':\n return { ...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_EDITED_IMAGE_INDEX':\n return { ...state, editedImageIndex: action.payload };\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 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 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) {\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 }) => {\n if (hasAnyNonValidOption) {\n return errors.invalid;\n }\n if (weightIsInvalid) {\n return errors.weight;\n }\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 = getFirstValidationError(\n primaryValidations\n );\n newState.secondaryValidationError =\n getFirstValidationError(secondaryValidations) || getDuplicateError();\n\n newState.globalValidationError =\n !newState.primaryValidationError &&\n !newState.secondaryValidationError &&\n !newState.takeawayDeliveryAccepted &&\n !primaryValidations.hasAnyValidOption &&\n !secondaryValidations.hasAnyValidOption\n ? errors.empty\n : null;\n\n const validationErrors = {};\n if (newState.globalValidationError)\n validationErrors.global = newState.globalValidationError;\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 = 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 if (state.takeawayDeliveryAccepted) {\n const takeAwayOption =\n result.length === 0\n ? {\n type: 'TakeawayOnly',\n name: 'Endast avhämtning',\n summaryDisplayName: 'Endast avhämtning'\n }\n : {\n type: 'Takeaway',\n name: 'Avhämtning',\n summaryDisplayName: 'Avhämtning'\n };\n result.push(takeAwayOption);\n }\n return result;\n};\n","import { 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 takeawayDeliveryAccepted: 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 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 }\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_TAKEAWAY_SELECTED: (state, action) => {\n state.takeawayDeliveryAccepted = action.payload.takeawaySelected;\n state.selectedShippingOptions = getSelectedShippingOptions(state);\n return validate(state);\n },\n SET_SECONDARY_SHIPPING_OPTION_OPEN: (state, action) => {\n return validate({\n ...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","import config from 'tradera-apps/syi/script/app_react/services/config';\nimport { 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 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 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 return newState;\n};\n\nconst resetAttributes = () => {\n return { ...initialState };\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 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};\n\nexport default (state, action) => {\n if (!config.isSyiAttributesEnabled) {\n return initialState;\n }\n state = state || initialState;\n const reducer = reducers[action.type];\n if (reducer) {\n return validate(reducer(state, action));\n }\n return state;\n};\n","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 { 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 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 const imageUrl = item.imageUrl?.replace('/medium/', '/medium-fit/');\n ///////\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 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 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';\nimport {\n openQualtiveModal,\n isQualtiveEnabled,\n surveys\n} from 'static/script/components/customer-feedback/qualtive-loader';\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';\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 isBatchPayoutsListEnabled = useIsFeatureEnabled('batch-payouts-list');\n const menuContentRef = useMenuHeightFix();\n const paymentSettingsUrl = isBatchPayoutsListEnabled\n ? toLocalizedUrl('/my/settings/payouts')\n : toLocalizedUrl('/my/Payments2');\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 {\n openQualtiveModal,\n isQualtiveEnabled,\n surveys\n} from 'static/script/components/customer-feedback/qualtive-loader';\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 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, t);\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}\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 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 { setAttributesFromDraft } 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 setAllowedBuyerRegionAtLeastEu,\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 isFromDraft: true\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(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(\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 if (fromCountry === 'DK') {\n dispatch(setAllowedBuyerRegionAtLeastEu());\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 setDescriptionLanguageCodeIso2 = descriptionLanguageCodeIso2 => ({\n type: 'SET_DESCRIPTION_LANGUAGECODE',\n payload: { descriptionLanguageCodeIso2 }\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 setDescriptionLanguageCodeIso2\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","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 { 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 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\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 dispatch(\n viewItemSlice.actions.setViewItemState(\n itemModel.itemDetails.hasEnded\n ? VIEW_ITEM_STATES.ENDED\n : VIEW_ITEM_STATES.ACTIVE\n )\n );\n dispatch(\n updateItemState(\n selectItemDetails(getState()),\n selectBidInfo(getState())\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) => dispatch => {\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 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 {\n openQualtiveModal,\n surveys\n} from 'static/script/components/customer-feedback/qualtive-loader';\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\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