{"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/state/language/selectors.js","webpack:///./src/frontend/apps/tradera/components/vip/bidding/bin-modal/bin-modal-item-display.jsx","webpack:///./src/frontend/components/item-card/item-card-parts/time-left-label.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/utils/time-api.js","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/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/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/components/search-input.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/components/highlight-word.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/components/suggestion-list-items.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/components/search/components/search-suggestion.jsx","webpack:///./src/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/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/apps/syi/script/app_react/services/navigation-service.js","webpack:///./src/frontend/state/shipping-region/initial-state.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/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/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/language/index.js","webpack:///./src/frontend/state/views/view-item/selectors.js","webpack:///./src/frontend/state/language/reducer.js","webpack:///./src/frontend/utils/countdown.js","webpack:///./src/frontend/utils/date-now.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/frontend/components/portals/modal-portal.jsx","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/ajax.js","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/server-time-left.jsx","webpack:///./src/frontend/apps/tradera/components/vip/helpers/time-left.jsx","webpack:///./src/frontend/components/loader/index.js","webpack:///./src/frontend/apps/tradera/components/discover/helpers/search-gtm.js","webpack:///./src/frontend/apps/my-tradera/app/state/selectors/item-labels.js","webpack:///./src/frontend/components/item-card/item-card-parts/fixed-price-label.jsx","webpack:///./src/frontend/state/views/cart/initial-state.js","webpack:///./src/frontend/components/item-card/item-card-parts/price-label.jsx","webpack:///./src/frontend/state/discover/initial-state.js","webpack:///./src/frontend/components/shipping/shipping-provider-icon.jsx","webpack:///./src/frontend/components/site-header/hover-menu/hover-menu.jsx","webpack:///./src/frontend/apps/my-tradera/app/constants/column-definitions.js","webpack:///./src/frontend/apps/syi/script/app_react/services/campaign-service.js","webpack:///./src/frontend/state/views/syi/actions/campaign-code-actions.js","webpack:///./src/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/items/initial-state.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/site-footer.jsx","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/short-description.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/components/item-card/item-card-parts/animated-time-left-label.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/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/hooks/use-split-test-group.js","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/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","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","TimeLeftLabel","isEndingSoon","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","isLoggedIn","member","multiCurrency","addItems","itemActions","add","openQuickView","uiActions","openedFrom","toggleWishlist","wishlist","updateItem","props","inSPA","pageSpecificData","BuyingEventPusherEnabled","BuyingEventPusherServerUrl","setState","useEffect","axios","CancelToken","source","cancel","cancelToken","token","CANCELLED","ABORTED","NETWORK","registerLiveUpdates","url","onConnect","socket","emit","onClientEvent","Type","Event","AuctionId","currentBid","BidAmount","totalBids","NumberOfBids","itemCount","useIsMobile","handleQuickView","displayItems","generateItemCardPlaceholders","itemsMap","maxItemsCount","mappedItems","resolveItems","animatePriceLabel","animateTimeLeft","featureSwitches","lazy","lazyLoadSettings","onAddToWishlist","onQuickView","onRemoveFromWishlist","ready","useLink","compose","withUrlLocalizer","withTranslator","hot","module","queryServerTime","retryCount","latencyLimit","maxRetries","requestStart","getCurrentLanguage","currentTime","start","latency","parse","getServerTime","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","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","join","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","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","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","providerName","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","cancelTokenId","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","imageFormats","shortDescription","existsInWishList","handleModalDismiss","closeQuickView","disableNext","disablePrev","mediaQuery","minWidth","onKeyDown","prevItem","nextItem","top","right","zIndex","images","pageType","fixedHeight","carouselStyle","bottom","left","ShippingDisplay","shippingPriceRange","isFromAndToCountryDifferent","displayOptions","option","shippingOptionsPart","displayText","replace","shouldShowFromCountry","isSwedenCountryCodeOrUndefined","minPrice","maxPrice","specialSearchTerms","stammisglaset","SearchCategory","handleCategoryChange","selectOptions","selectedCategoryId","chosenCategory","isDefaultSelected","SearchInput","categoriesElement","inputClassName","onBlur","onClearSearchInput","onFocus","onFormSubmit","onUserInputChange","onUserKeyUp","searchInputRef","searchTerm","selectedCategory","suggestionsElement","placeHolderTranslation","categoryName","showClearButton","onSubmit","placeholder","maxLength","ref","HighlightWord","query","split","current","evt","fixFlexHeightInIpadMini2Style","flexBasis","PreviousSearchesListItem","changeSearchTerm","isSelected","onPreviousSearchRemoved","toSearchString","q","addRecentSearchText","onMouseDown","removeRecentSearchText","SearchesSuggestionsListItem","ShopsSuggestionsListItem","suggestionUrl","urlName","CharitiesSuggestionsListItem","slug","CampaignSuggestionsListItem","campaignId","headline","AdvancedSearchListItem","SellerSearchListItem","searchUrl","SearchSuggestion","suggestions","visible","onChangeSearchTerm","selectedIndex","searchSuggestionsElementRef","entry","componentProps","KEYCODE","Search","allCategories","categoryPath","discoverCurrentCategoryId","discoverSearchTerm","queryParams","history","createRef","currentCategoryId","setCurrentCategoryId","isSearchInputFocused","setIsSearchInputFocused","setSearchTerm","setSuggestions","selectedSuggestionIndex","setSelectedSuggestionIndex","loadSuggestionsDebounce","debounce","callback","getSuggestionsWrapper","enableSuggestionsFromBackend","getSuggestions","limitPrevious","enablePrevious","enableSuggestions","loadSearchSuggestions","newSearchTerm","changeWindowLocation","newQuery","trimmedSearchTerm","newSearchUrl","specialTermUrl","filteredQueryParams","spage","isQueryReformulation","SEARCH","qs","stringify","addQueryPrefix","currentCategory","getNewSearchUrl","addRecentSearch","blur","allCategoriesOption","isTopLevel","selected","optionsList","selectedOption","getCategoryDropdownConfig","categorySelectOptions","discoverActions","selectedOptions","which","click","incrementBy","newIndex","currentIndex","totalElements","getNextIndex","handleUpDownArrowKeys","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","status","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","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","itemSize","ShippingCountrySelect","showShippingCountries","isLoadingAvailableShippingCountries","onShippingCountrySelected","ConnectedShippingCountrySelect","selectAvailableShippingCountries","LocalizationMenu","showCurrencySelection","showRegionSelection","BUYER_ACTIVE_ITEMS_HIDE","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","goToStart","toLocalizedRiotUrl","goToSummary","draftId","goToPublished","setDraftUrlWithoutReload","replaceState","localizationRegionPickerEnabled","regionPickerDismissed","GdprSettings","availableShippingCountries","hasLoadedAvailableShippingCountries","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","removeRecentSearch","useIsFeatureEnabled","featureName","setLongDescription","longDescription","draftActions","updateDraftCanBeResumed","setLongDescriptionFromDraft","reset","errors","ELASTIC_MYTRADERA","isBuyerOrderInformationEnabled","isDisputesEntranceEnabled","isLeaveFeedbackReactEnabled","isMyTraderaElasticEnabled","isMessagingEnabled","isMessagingBuyerButtonsEnabled","isMessagingSellerButtonsEnabled","isOrderCheckoutBinEnabled","downloadCsvPayouts","isCombinedShippingListEnabled","isCombinedShippingListBuyerViewEnabled","isInrPurchaseOrderEnabled","isUpiPurchaseOrderEnabled","isPennybridgeCharitiesEnabled","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","selling","settings","settingsAccount","settingsEmail","settingsSelling","settingsNotifications","settingsSecurity","settingsPayouts","buyShippingBags","urls","class","isExternal","showBasedOnInitData","isBuyerPage","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","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","locale","cartItemCount","getAttribute","cartSum","cartItems","Expand","CSSTransition","timeout","classNames","EnterFrom","unmountOnExit","EnterFade","AnimateOnValueChange","trigger","animate","setAnimate","firstUpdate","useRef","onAnimationEnd","BidDetails","isCountdownEnabled","isEnding","itemState","leadingBidAmount","onShowBids","secondsLeft","serverSecondsLeft","isVipBidAnimationEnabled","hasBids","amountDetails","getAmountDetails","amountTitle","amountValue","formatNumberWithSeparators","timeTitle","timeValue","seconds","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","utilizeCancelToken","ITEM_DESCRIPTION","getItemApi","IGNORE_ME","placeBidApi","onLoggedOut","bid","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","success","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","cb","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","has","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","getTimeSpanParts","optionsWithDefaults","startUnit","endUnit","parts","remaining","started","TIME_SPAN_UNIT_LENGTHS","part","floor","TIME_SPAN_UNITS","DAYS","HOURS","MINUTES","SECONDS","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","ItemCardComponent","ItemListCard","ItemCard","imageMode","onAttributeButtonClick","onSettings","QuickViewButton","iconClassName","Button","unbutton","wide","round","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","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","filterBar","shownFilters","withPageInit","initialPayload","sellerEmail","memberEmail","stateCookies","pageListType","setPageListType","listViewTypeWithFallBack","featureToggleErrors","filtersActions","setFiltersForSelectedPage","hash","URL_HASHES","openChangeCombinedShippingModal","shouldOpenChangeCombinedShippingModal","removeHashFromUrl","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","isTranslateDescriptionEnabled","selectViewItem","selectTranslatedDescription","translatedDescription","selectItemDetails","selectBreadcrumbs","breadCrumbs","selectItemId","selectBidInfo","selectTranslatedDescriptionState","translatedDescriptionState","languageSlice","filterAvailableLanguages","gpsCountry","memberCountry","languagesToShow","sv","getTimeLeftInSeconds","endTimeInMs","calculateClientEndTime","serverTimeInms","serverlatency","clientTimeInMs","itemEndTimeInMs","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","ModalPortal","notificationPortalRoot","$","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","DAY_IN_SECONDS","HOUR_IN_SECONDS","ServerTimeLeft","ifValueNotZeroShowLabel","minutes","hours","days","getTimeLeftLabel","timeLeftWarning","formattedTimeLeft","hoursOrEmpty","minutesOrEmpty","formatTimeSpan","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","isShopOwnedByCurrentMember","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","validate","campaignCodeValid","validation","validationDisplayMessage","campaign","campaignCodeId","campaignCodeMessage","isCustomLengthFeeFree","isUnsoldFeeFree","provisionFactor","discountFactor","maxFeeCap","bannerMobileImageUrl","bannerTabletImageUrl","bannerDesktopImageUrl","CHARITIES","userData","charities","throttledCampaignCodeValidation","delayedValidationTimeoutId","resetCharityCampaign","getSyiSlice","charityCampaign","wasForceFreeShipping","forceFreeShipping","shippingActions","resetSelected","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","clearInterval","mapLocale","LOCALES","openQualtiveModal","translator","dataAttributeName","js","setAttribute","getElementsByTagName","addScriptToDom","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","draftCategoryPath","slots","slot","imageId","isListingImage","draftImage","listingImage","rotationDegrees","filename","imageGroupId","resolveImages","isPureBinSelected","auctionBinPrice","vat","durationDays","customEndTime","selectedShippingOptions","fromCountry","selectedPaymentOptions","buyerRegion","selectedBuyerRegion","displayPromoted","extraFeatures","displayHighlighted","charityId","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","useMemo","resolveActiveCategoryPath","scrollLeft","scrollWidth","clientWidth","itemScope","BreadcrumbItem","origin","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","cacheOrder","recent","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","getElementsByClassName","AppToMount","App","createEndDateForCountdownDecorator","serverTimeMs","serverLatencyMs","nowMs","originalEndTimeMs","calculatedEndTimeMs","endDateForCountdown","ADD","addAndDecorateItemsWithEndDateForCountdown","serverTimeObject","endDateForCountdownDecorator","decoratedItems","addRecentlyViewed","getStore","ADD_RECENTLY_VIEWED","shouldNotTrackEventBecauseNeedsToBeSameAsLegacyVip","onSignedOutError","exists","gtmCore","postWishlistItem","TIMEOUT","removeWishList","REMOVE_WISHLIST","UPDATE_ITEM","minDelayInMs","alwaysDelay","lastActionTime","timeoutId","wrappedAction","timeNow","BuyNowLabel","SellerRating","includeTotal","isGood","isBad","formattedRating","textClassName","Number","SellerLink","sellerAlias","prettifyRating","noRating","ShippingLabel","hasFreeShipping","hasNonSpecifiedShipping","isPickupOnly","handleWishlist","discountRate","itemAttributesForFilter","isShopItem","isNewToday","showShopItemSettings","priceBeforeDiscount","showBids","showBuyNow","buyNowPrice","showShipping","showOnDisplayRibbon","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","AttributeButtonsList","attributeButtons","AUCTION","AUCTION_BIN","PURE_BIN","SHOP_ITEM","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","lokaliseKey","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","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","useInView","threshold","symbolRef","inView","appName","getFullYear","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","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","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","hasSetAllowedBuyerRegionAtLeastEu","initModuleGlobals","buyerRegionSlice","setAllowedBuyerRegion","region","regionOrDefault","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","checkResponseLoggedOut","getItemDiscountQuota","ITEM_DISCOUNT_QUOTA","postItemSettings","onDisplay","SETTINGS","toInt","n","SELLING_SHIPPING_CALCULATOR","getShippingProviders","SHIPPING_PROVIDERS","prepareResultForView","useAdvancedWidget","products","variants","promotedProviders","promoted","isObsolete","validationError","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","MESSAGING_REMOTE_URL","hostname","messagingIframeUrl","MessagingModal","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","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","itemsFromSeller","getActionsForItem","isLeading","fixedItemUrl","fixItemUrlIfNeeded","activeBuyerActions","dispute","lostActions","unpaidShippingUrl","unpaidShippingId","isDiscountAfterPaymentSupported","isDiscountBeforePaymentSupported","hide","unshift","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","Recommendations","collapseIfEmpty","createRequestUrl","enableQuickView","errorFallback","gtmLabel","infiniteScrollEnabled","itemCardProps","loader","noMoreItemsMarker","onReachedEnd","showAds","loadingState","setLoadingState","setItemIds","rootMargin","loadingTriggerRef","loadingTriggerInView","addItemIds","itemIdsToAdd","getItems","defaultJsonRequestHeaders","itemsInResponse","reloadOnUnauthorized","nextPage","itemComponents","margin","adSenseQuery","adSenseShoppingPublisherId","isAutoStartAllowed","autoStartToken","onCompleteCallback","onCloseCallback","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","newCache","newCacheOrder","updatedRecent","recentItem","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","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","setCharityId","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","animateTimeLeftWarningLimit","gaCategory","showBidStatus","showShippingOrOnDisplay","showSellerAlias","isOverbidden","countdownWarningLimit","createPreferredCurrencyCookie","LocalizationMenuItem","onToggle","ConnectedLocalizationMenuItem","trackPaymentOnboarding","InvoiceUnpaidAlert","InvoiceOverdueAlert","BankAccountMissingAlert","PayoutFailedAlert","PayoutReadyBankAccountMissingAlert","SwishMissingAlert","dismissSwish","enableSwishUrl","HyperwalletPayeeVerificationAlert","HyperwalletPayeeVerificationReviewAlert","OnboardToTraderaPayAlert","getGaLinkAttributes","getGaButtonAttributes","ProfileCard","cleanedMemberAlias","imageAvailable","setImageAvailable","mediaBelowLarge","trackExpandItemClick","ProfileMenuContent","memberDetailedSellerRatingAverage","showMessagingLink","isSettingsEnabled","OnboardToTraderaPay","HyperwalletPayeeVerificationUnderReview","trackOnClick","SignInMenuContent","closeMenu","onLoad","iframe","iframeDocument","contentDocument","onIframeLoad","AddHumanyBot","botWidget","ProfileMenu","handleExpand","renderChild","TransitionGroup","mountOnEnter","facebookId","borderRadius","ProfileLink","handleProfileClick","menuExpanded","systemMessageCount","logInText","badgeType","multipleBadges","ProfileMenuLink","preventNavigationAndShowLogin","redirect","handleLoginClick","messagingThreads","profileMenuOpen","useIsDesktop","startTime","trackItemPublished","isFromTemplate","isDraftFromTemplate","scribe","sessionService","prepareForPublish","SELLING_ITEM_PUBLISH","handleServerValidationError","invalidImageErrorCodes","imageErrors","nonImageErrors","imageErrorDisplayTexts","displayTexts","invalidImageCount","invalidImageIds","imageActions","handleInvalidImages","nonImageErrorDisplayTexts","translateErrorCode","errorDisplayTexts","errorDisplayText","setDraft","ensureDraftReason","categoryActions","setItemCondition","setDurationDays","setCustomEndTime","shortDescriptionActions","setShortDescription","longDescriptionActions","priceActions","setCharityFromDraft","paymentActions","getShippingOptionsFromDraft","getFromCountryFromDraft","isShippingFromCountryEnabled","navigationService","finally","canBeResumed","hasShortDescription","hasLongDescription","hasImage","setResumableDrafts","hasAuctionBinPrice","hasResponseErrorCode","responseOrNull","arrayOfErrorCodesToCheck","triggerSave","setDraftVersion","setUsedAllowed","isAllowed","condition","isUsedAllowed","allowUsed","resumableDrafts","browserDraftImageUrls","serverDraft","serverDraftImages","serverDraftImageUrls","changedImages","imagesHaveChanged","imageSlots","setDraftId","resetDurationAndEndTime","setRestart","setReference","publishService","googleTagManager","trackAddonBeforePublish","draftSelectedAttributes","suggestionEngine","completionTimeInSeconds","comparer","localeCompare","trackAttributeSuggestions","loadDraftIfMissing","useDraftAsTemplate","resetItemCondition","publishAdditionalDescription","resetDraft","resetDrafts","restOfPayload","updatedData","gtm","updateItemLayout","defaultCookie","updateSiteLayout","MEMBER_SYSTEM_MESSAGES","fetchedMessages","fetchMessagingNotifications","messagingNotifications","PAYMENT_SWISH_OPTOUT","getJSValue","True","False","All","setJSValue","true","false","getEnum","categoryNames","paymentTerms","reasons","resultMessage","shippingTerms","viewState","resetInitialState","getItemState","breadCrumb","setCategories","updatePageMetaForSearchResults","pageMeta","pageTitleTranslation","rootCategory","rootCategoryId","secondHandCategories","resolvePageTitleTranslation","itemsToAdd","afterReceiveSearchResults","discoverTracking","fetchSearchResults","searchResults","isBreakpointOrLower","ContentSwitch","defaultSelected","onSwitch","setSelected","renderedOptions","setRenderedOptions","leadingBidMemberId","ITEM_TYPES","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","charitySlice","percentageToDonate","anonymous","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","vipLiveUpdatesEnabled","vipLiveUpdatesUrl","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","img","thumbnail","small","altText","handleItemModel","itemModel","previousItemId","maxBidAmount","updateItemState","handleNewPage","hasWon","currentItemDetails","currentBidInfo","swedishCategoryPath","contentGroup","itemFixedPrice","itemCategory","itemEndDate","ensureCorrectUrlForItem","expectedItemId","shouldResetInititalState","previousBidInfo","hadLeadingBid","hadLostLeadingBid","toggleWishList","forceAdd","inWishList","inWishListNewValue","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","AnimatedTimeLeftLabel","countdownSecondsLimit","timeLeftSeconds","countdown","setCountdown","stopCountdown","useTicker","formatDuration","DiscountBadge","getStartPageConfig","CMS_API","sortByIndex","defaultStartPageConfig","alternativeText","isCampaignMode","webpageUrl","contentLoggedOut","contentLoggedIn","fetchStartPageConfig","fetchTrendingBrandsIfNeeded","logoImageUrl","fetchTrendingSearchesIfNeeded","isTrendingSearchesFromMlEnabled","fetchWishList","fetchFavouriteSellers","isSellerSuggestionsEnabled","promise","suggestionsPromise","favouriteSellerCardDtos","getImageSizes","imageSizes","baseUrl","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","FavouriteSellerCard","sellerProfileUrl","matchedItems","heroImageUrl","isSuggestion","useSplitTestGroup","splitTestName","FavouriteSellersInternal","triggerOnce","allSellerSuggestions","isSellerSuggestionsSplitTestEnabled","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","OPTIONAL_LANG","SUPPORTED_LANGUAGES","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","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","payouts","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","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","intervals","period","cleanup","callbacks","intervalId"],"mappings":"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ACJqzB,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,aACJtuF,GAAI,aACJuuF,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJ7uC,GAAI,aACJ8uC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aAC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","file":"script/chunks/chunk.tradera.62f467e4c8.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\";","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 React from 'react';\n\nconst TimeLeftLabel = ({ className, isEndingSoon, timeLeft }) => {\n return (\n \n );\n};\nexport default TimeLeftLabel;\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';\n\nconst LastChance = props => (\n \n \n \n \n \n);\n\nconst LastChanceNew = props => {\n const {\n addItems,\n initData,\n inSPA,\n isLoggedIn,\n items,\n openQuickView,\n preferredCurrency,\n toggleWishlist,\n toLocalizedUrl,\n updateItem\n } = props;\n const {\n BuyingEventPusherEnabled,\n BuyingEventPusherServerUrl\n } = initData.pageSpecificData;\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 (BuyingEventPusherEnabled) {\n return registerLiveUpdates({\n url: BuyingEventPusherServerUrl,\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 currentBid: data.Event.BidAmount,\n totalBids: data.Event.NumberOfBids\n }\n });\n break;\n }\n }\n });\n }\n }, [\n BuyingEventPusherEnabled,\n BuyingEventPusherServerUrl,\n itemIds,\n updateItem\n ]);\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 initData: state.initData,\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 axios from 'axios';\nimport { getCurrentLanguage } from 'tradera-lang/boot-languages';\nimport { toLocalizedUrl } from 'tradera-utils/url';\n\nconst timeDiffInMs = start => {\n return Date.now() - start;\n};\n\nconst queryServerTime = async retryCount => {\n const latencyLimit = 500;\n const maxRetries = 2;\n const requestStart = Date.now();\n const {\n data: { currentTime }\n } = await axios.get(\n toLocalizedUrl(\n '/api/webapi/discover/server-time.json',\n getCurrentLanguage()\n )\n );\n const latency = timeDiffInMs(requestStart);\n\n if (latency < latencyLimit) {\n return { currentTime: Date.parse(currentTime), latency };\n } else if (retryCount < maxRetries) {\n return queryServerTime(retryCount + 1);\n } else {\n return null;\n }\n};\n\n/**\n * Requests server time and returns\n * { currentTime, latency }\n */\nexport const getServerTime = async () => {\n return await queryServerTime(0);\n};\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 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 { 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';\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 } 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}) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n const { t } = useTranslator();\n\n if (open !== 'open') {\n return null;\n }\n\n const { imageFormats, shortDescription, url, existsInWishList } = 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};\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});\n\nexport default connect(mapStateToProps)(QuickView);\n","export const generateItemCardPlaceholders = itemCount =>\n [...new Array(itemCount)].map((_, index) => ({\n itemId: index,\n shortDescription: '',\n url: '/'\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 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}) => {\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,\n onUserInputChange: PropTypes.func,\n onUserKeyUp: PropTypes.func,\n searchInputRef: PropTypes.object,\n searchTerm: PropTypes.string,\n selectedCategory: PropTypes.object,\n suggestionsElement: PropTypes.element\n};\n\nexport default SearchInput;\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);\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)}\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)}\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)}\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 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 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 (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 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 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};\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 setPreferredLanguage\n} from 'tradera-state/language';\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 { 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 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};\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 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.payments2,\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 &&\n initData.paymentSettings &&\n initData.paymentSettings.showPayments2Menu === true\n );\n },\n icon: ,\n columns: payments2Columns\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 { 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, { useEffect } from 'react';\nimport { Router } from 'react-router';\nimport history from 'tradera-utils/history';\nimport { hot } from 'react-hot-loader';\nimport dayjs from 'dayjs';\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';\nimport { getCurrentLanguage } from 'tradera-lang/boot-languages';\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 useEffect(() => {\n dayjs.locale(getCurrentLanguage());\n }, []);\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';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\n\nexport const BidDetails = ({\n bidCount,\n endDate,\n fixedPrice,\n hasEnded,\n isCountdownEnabled,\n isEnding,\n itemState,\n leadingBidAmount,\n onShowBids,\n openingBid,\n preferredCurrency,\n secondsLeft,\n serverSecondsLeft\n}) => {\n const { t } = useTranslator();\n const isVipBidAnimationEnabled = useIsFeatureEnabled('vip-bid-animation');\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 {isVipBidAnimationEnabled ? (\n \n {formatNumberWithSeparators(amountDetails.amount)}{' '}\n {t('vip_currency')}\n \n ) : (\n <>\n {formatNumberWithSeparators(amountDetails.amount)}{' '}\n {t('vip_currency')}\n \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 isCountdownEnabled: PropTypes.bool.isRequired,\n itemState: PropTypes.string.isRequired,\n leadingBidAmount: PropTypes.number,\n onShowBids: PropTypes.func,\n openingBid: PropTypes.number,\n secondsLeft: PropTypes.number,\n serverSecondsLeft: 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 = (itemId, languageCodeIso2) => {\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 }\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 animateTimeLeft,\n featureSwitches,\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}) => {\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 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} 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 = () =>\n document.location.hash.split(\n URL_HASHES.openChangeCombinedShippingModal + '='\n )[1];\n\n const purchaseOrderId = getPurchaseOrderIdFromHash();\n\n if (shouldOpenChangeCombinedShippingModal() && purchaseOrderId) {\n dispatch(myTraderaActions.openChangeShipping(purchaseOrderId));\n removeHashFromUrl();\n dispatch(\n setCookie(\n 'LIST_VIEW_TYPE_' + state.page.listType,\n LIST_VIEW_TYPES.NORMAL\n )\n );\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","export * from './actions';\nexport * from './selectors';\n","import { selectIsForeignLanguageActivated } from '../../language';\nimport { isSwedenCountryNameOrUndefined } from 'tradera-utils/countrycode';\n\nexport const isTranslateDescriptionEnabled = state =>\n selectIsForeignLanguageActivated(state);\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 { now } from './date-now';\n\nexport const getTimeLeftInSeconds = endTimeInMs => {\n return Math.floor((endTimeInMs - now()) / 1000);\n};\n\n/**\n * Calculates and end time that expires in the same amount of time as on server.\n * @param {*} serverTimeInms\n * @param {*} serverlatency\n * @param {*} clientTimeInMs\n * @param {*} itemEndTimeInMs\n */\nexport const calculateClientEndTime = (\n serverTimeInms,\n serverlatency,\n clientTimeInMs,\n itemEndTimeInMs\n) => {\n const diff = serverTimeInms - clientTimeInMs;\n const adjustedEndTime = itemEndTimeInMs - diff - serverlatency;\n return adjustedEndTime;\n};\n","export const now = () => Date.now();\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 { 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 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};\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\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';\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';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst DAY_IN_SECONDS = 24 * 60 * 60;\nconst HOUR_IN_SECONDS = 60 * 60;\nconst MINUTE_IN_SECONDS = 60;\nexport const TIME_LEFT_WARNING_LIMIT = 4 * 60 * 60;\n\nconst ServerTimeLeft = ({ seconds }) => {\n const { t } = useTranslator();\n const ifValueNotZeroShowLabel = (label, value) =>\n value > 0 ? ' ' + t(label, { count: value }) : '';\n\n const getTimeLeftLabel = () => {\n if (seconds < MINUTE_IN_SECONDS) {\n return t('vip_less_than_1_min_left');\n }\n if (seconds < HOUR_IN_SECONDS) {\n const minutes = Math.floor(seconds / MINUTE_IN_SECONDS);\n return t('vip_minutes', { count: minutes });\n }\n\n if (seconds >= HOUR_IN_SECONDS && seconds < DAY_IN_SECONDS) {\n const hours = Math.floor(seconds / HOUR_IN_SECONDS);\n const minutes = Math.floor(\n Math.floor(seconds % HOUR_IN_SECONDS) / MINUTE_IN_SECONDS\n );\n return (\n t('vip_hours', { count: hours }) +\n ifValueNotZeroShowLabel('vip_minutes', minutes)\n );\n }\n\n const days = Math.floor(seconds / DAY_IN_SECONDS);\n const hours = Math.floor(\n Math.floor(seconds % DAY_IN_SECONDS) / HOUR_IN_SECONDS\n );\n\n return (\n t('vip_days', { count: days }) +\n ifValueNotZeroShowLabel('vip_hours', hours)\n );\n };\n\n return (\n \n {getTimeLeftLabel()}\n \n );\n};\n\nServerTimeLeft.propTypes = {\n seconds: PropTypes.number\n};\n\nexport default ServerTimeLeft;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ServerTimeLeft from './server-time-left';\n\nimport { getTimeSpanParts, TIME_SPAN_UNITS } from 'tradera-utils/date';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst TIME_LEFT_DAY_LIMIT = 24 * 60 * 60;\nconst TIME_LEFT_HOUR_LIMIT = 60 * 60;\nconst TIME_LEFT_MINUTE_LIMIT = 60;\n\nconst TIME_LEFT_WARNING_LIMIT = 4 * 60 * 60;\n\nfunction TimeLeft(props) {\n const {\n className = '',\n isCountdownEnabled,\n serverSecondsLeft,\n icon,\n seconds,\n ...otherProps\n } = props;\n const { t } = useTranslator();\n\n if (!isCountdownEnabled)\n return ;\n\n const timeLeftWarning = seconds <= TIME_LEFT_WARNING_LIMIT;\n return (\n seconds >= 0 && (\n \n {icon}\n {seconds > 0 ? formatTimeSpan(seconds, t) : t('vip_ended')}\n \n )\n );\n}\n\nconst hoursOrEmpty = (hours, t) =>\n hours ? t('vip_hours', { count: hours }) : '';\n\nconst minutesOrEmpty = (minutes, t) =>\n minutes ? t('vip_minutes', { count: minutes }) : '';\n\nfunction formatTimeSpan(secondsLeft, t) {\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 }) + ' ' + hoursOrEmpty(hours, t);\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 }) + ' ' + minutesOrEmpty(minutes, t);\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\nTimeLeft.propTypes = {\n seconds: PropTypes.number.isRequired,\n serverSecondsLeft: PropTypes.number,\n isCountdownEnabled: PropTypes.bool.isRequired\n};\n\nexport default TimeLeft;\n","export { default, GlobalLoader, LocalLoader, PortalLoader } from './loader';\n","/**\n * This is a helper class for sending google analytics events for the search experience\n * This is a wrapper for the GtmService. Do not call GTM or GA directly but use the GtmService.\n * Events tracked by this file set all GA categories to \"Search\" to namespace events\n */\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\n\nconst GA_EVENT_SEARCH_CATEGORY = 'Search';\n\nconst filterNameMappings = {\n itemCondition: 'Condition',\n itemType: 'Ad Format',\n sellerType: 'Seller Type',\n county: 'Geo - Selected',\n countyBox: 'Geo',\n itemStatus: 'Item Status',\n shoeTypes: 'Type',\n subDepartments: 'Department',\n shoeSizes: 'Size',\n brandTags: 'Brand',\n sortBy: 'Sorting',\n price: 'Price',\n Layout: 'Layout',\n categorySelected: 'Category - Selected',\n categoryHorizontalSelected: 'Category - Hrz nav - Selected'\n};\n\n/**\n * Generic action tracker for things that happen in the Search.\n * @param {string} action\n * @param {string} label\n */\nexport const trackAction = (action, label) => {\n GtmService.trackAction(GA_EVENT_SEARCH_CATEGORY, action, label);\n};\n\nconst getFilterLabel = key => {\n if (key in filterNameMappings) {\n return filterNameMappings[key];\n } else {\n return key;\n }\n};\n\n/**\n * translates the tech names of the filters to ga friendly names. to see the techie names a filter has\n * see the URL paramters on a search or a browse page.\n * @param {string} filter the name of the filter\n * @param {string} value the value the filter gets\n */\nexport const trackFilter = (filter, value) => {\n let action = getFilterLabel(filter);\n trackAction(`Filter ${action}`, value);\n};\n\nexport const trackNavigation = label => {\n trackAction('Navigation', label);\n};\n\nexport const trackAccordion = filter => {\n let action = getFilterLabel(filter);\n trackAction('Filter box - Open/Close', action);\n};\n\nexport const trackButton = label => {\n trackAction('Button', label);\n};\n\nexport const trackLink = (action, label) => {\n trackAction(`Link - ${action}`, label);\n};\n\nexport const trackPriceFilter = (fromPrice, toPrice) => {\n if (fromPrice === '1') {\n fromPrice = undefined;\n }\n\n // get a label that represents the current selected value\n let lbl = [];\n if (typeof fromPrice !== 'undefined') {\n lbl.push('Min set');\n }\n if (typeof toPrice !== 'undefined') {\n lbl.push('Max set');\n }\n if (lbl.length === 0) {\n lbl.push('All');\n }\n trackAction(`Filter Price`, lbl.join(' and '));\n};\n\n/**\n * Tracks to google tag manager that a new search was made\n * @param {object} searchResults data returned fromm ajax when doing a search or browsing.\n * Note: needs to be the normalized version.\n */\nexport const trackNewSearch = (categoryPath, itemIds, metaTitle) => {\n if (typeof categoryPath === 'undefined' || categoryPath.length == 0) {\n return;\n }\n\n let reverseCategoryPath = categoryPath\n .filter(c => c.id > 0)\n .map(c => c.name)\n .reverse();\n\n GtmService.trackGtmEvent('viewCategory', {\n category: reverseCategoryPath.join(' > ')\n });\n\n GtmService.push({\n 'page.content-group-2': reverseCategoryPath.slice(0, 3).join(' > '),\n categoryId: categoryPath.length > 0 ? categoryPath[0].id : null\n });\n\n if (itemIds && itemIds.length >= 3) {\n GtmService.trackGtmEvent('viewItems', {\n itemIds: itemIds.slice(0, 3),\n keywords: categoryPath[0].name\n });\n }\n\n GtmService.push({\n ga_page_title: metaTitle\n });\n};\n","export const getTranslatedImageLabel = (t, labelKey) => {\n switch (labelKey) {\n case buyerActiveItemsLabelKeys.RESERVE_PRICE_NOT_REACHED:\n case activeLabelKeys.RESERVE_PRICE_NOT_REACHED:\n case unsoldLabelKeys.RESERVE_PRICE_NOT_REACHED:\n return t('myt_itemCard_imgLabel_reservePriceNotReached');\n case soldLabelKeys.NOT_PAID:\n case purchasesLabelKeys.NOT_PAID:\n return t('myt_itemCard_imgLabel_notPaid');\n case unsoldLabelKeys.NOT_PAID:\n return t('myt_itemCard_imgLabel_unsoldNotPaid');\n case soldLabelKeys.PAID:\n case purchasesLabelKeys.PAID:\n return t('myt_itemCard_imgLabel_paid');\n case soldLabelKeys.DONE:\n case purchasesLabelKeys.DONE:\n return t('myt_itemCard_imgLabel_done');\n case buyerActiveItemsLabelKeys.LEADING:\n return t('myt_itemCard_imgLabel_leading');\n case buyerActiveItemsLabelKeys.OVERBIDDEN:\n return t('myt_itemCard_imgLabel_overbidden');\n case buyerActiveItemsLabelKeys.BID_REMOVED:\n return t('myt_itemCard_imgLabel_bidRemoved');\n case activeLabelKeys.NOT_STARTED:\n return t('myt_itemCard_imgLabel_notStarted');\n case activeLabelKeys.HAS_BIDS:\n return t('myt_itemCard_imgLabel_hasBids');\n case activeLabelKeys.ACTIVE:\n return t('myt_itemCard_imgLabel_active');\n case activeLabelKeys.SOLD:\n return t('myt_itemCard_imgLabel_sold');\n case activeLabelKeys.NOT_SOLD:\n return t('myt_itemCard_imgLabel_notSold');\n case soldLabelKeys.SHIPPING_BOOKED:\n return t('myt_itemCard_imgLabel_shippingBooked');\n case soldLabelKeys.SHIPPED:\n return t('myt_itemCard_imgLabel_shipped');\n case unsoldLabelKeys.FORICBLY_CLOSED:\n return t('myt_itemCard_imgLabel_forciblyClosed');\n case unsoldLabelKeys.RESTARTED:\n return t('myt_itemCard_imgLabel_restarted');\n case itemLostLabelKeys.REMOVED:\n return t('myt_itemCard_imgLabel_removed');\n case itemLostLabelKeys.LOST:\n return t('myt_itemCard_imgLabel_lost');\n default:\n return '';\n }\n};\n\nconst buyerActiveItemsLabelKeys = {\n RESERVE_PRICE_NOT_REACHED: 'BUYER_RESERVE_PRICE_NOT_REACHED',\n LEADING: 'LEADING',\n OVERBIDDEN: 'OVERBIDDEN',\n BID_REMOVED: 'BID_REMOVED'\n};\n\nconst activeLabelKeys = {\n NOT_STARTED: 'NOT_STARTED',\n RESERVE_PRICE_NOT_REACHED: 'ACTIVE_RESERVE_PRICE_NOT_REACHED',\n HAS_BIDS: 'HAS_BIDS',\n ACTIVE: 'ACTIVE',\n SOLD: 'SOLD',\n NOT_SOLD: 'NOT_SOLD'\n};\n\nconst soldLabelKeys = {\n NOT_PAID: 'SOLD_NOT_PAID',\n PAID: 'SOLD_PAID',\n SHIPPING_BOOKED: 'SHIPPING_BOOKED',\n SHIPPED: 'SHIPPED',\n DONE: 'SOLD_DONE'\n};\n\nconst unsoldLabelKeys = {\n NOT_PAID: 'UNSOLD_NOT_PAID',\n RESERVE_PRICE_NOT_REACHED: 'UNSOLD_RESERVE_PRICE_NOT_REACHED',\n FORICBLY_CLOSED: 'FORCIBLY_CLOSED',\n RESTARTED: 'RESTARTED'\n};\n\nconst purchasesLabelKeys = {\n NOT_PAID: 'PURHCASED_NOT_PAID',\n PAID: 'PURCHASED_PAID',\n DONE: 'PURCHASED_DONE'\n};\n\nconst itemLostLabelKeys = {\n LOST: 'LOST',\n REMOVED: 'ITEMLOST_REMOVED '\n};\n\nconst buyerActiveItemsLabels = {\n reservePriceNotReached: {\n key: buyerActiveItemsLabelKeys.RESERVE_PRICE_NOT_REACHED,\n color: 'red'\n },\n leading: {\n key: buyerActiveItemsLabelKeys.LEADING,\n color: 'green'\n },\n overbidden: {\n key: buyerActiveItemsLabelKeys.OVERBIDDEN,\n color: 'red'\n },\n bidRemoved: {\n key: buyerActiveItemsLabelKeys.BID_REMOVED,\n color: 'grey-hard'\n }\n};\n\nconst activeLabels = {\n notStarted: {\n key: activeLabelKeys.NOT_STARTED,\n color: 'grey-soft'\n },\n reservePriceNotReached: {\n key: activeLabelKeys.RESERVE_PRICE_NOT_REACHED,\n color: 'red'\n },\n hasBids: { key: activeLabelKeys.HAS_BIDS, color: 'green' },\n active: { key: activeLabelKeys.ACTIVE, color: 'blue' },\n sold: { key: activeLabelKeys.SOLD, color: 'green' },\n notSold: {\n key: activeLabelKeys.NOT_SOLD,\n color: 'grey-soft'\n }\n};\n\nconst soldLabels = {\n notPaid: { key: soldLabelKeys.NOT_PAID, color: 'red' },\n paid: { key: soldLabelKeys.PAID, color: 'green' },\n shippingBooked: {\n key: soldLabelKeys.SHIPPING_BOOKED,\n color: 'green'\n },\n shipped: { key: soldLabelKeys.SHIPPED, color: 'blue' },\n done: { key: soldLabelKeys.DONE, color: 'grey-hard' }\n};\n\nconst unsoldLabels = {\n notPaid: {\n key: unsoldLabelKeys.NOT_PAID,\n color: 'grey-hard'\n },\n reservePriceNotReached: {\n key: unsoldLabelKeys.RESERVE_PRICE_NOT_REACHED,\n color: 'red'\n },\n forciblyClosed: {\n key: unsoldLabelKeys.FORICBLY_CLOSED,\n color: 'red'\n },\n restarted: {\n key: unsoldLabelKeys.RESTARTED,\n color: 'blue'\n }\n};\n\nconst purchasesLabels = {\n notPaid: {\n key: purchasesLabelKeys.NOT_PAID,\n color: 'red'\n },\n paid: { key: purchasesLabelKeys.PAID, color: 'green' },\n done: { key: purchasesLabelKeys.DONE, color: 'grey-hard' }\n};\n\nconst itemLostLabels = {\n lost: {\n key: itemLostLabelKeys.LOST,\n color: 'grey-hard'\n },\n removed: {\n key: itemLostLabelKeys.REMOVED,\n color: 'grey-hard'\n }\n};\n\nexport const itemHasBids = item => item.bidInformation.bidCount > 0;\nexport const itemHasBidsButReservePriceNotReached = item =>\n item.transaction\n ? false\n : itemHasBids(item) &&\n !item.reservePriceReached &&\n item.listing.pricing.reservePrice !== -1;\n\nconst getActiveActiveLabel = item => {\n if (itemHasBidsButReservePriceNotReached(item)) {\n return activeLabels.reservePriceNotReached;\n }\n return itemHasBids(item) ? activeLabels.hasBids : activeLabels.active;\n};\n\nexport const getActiveLabel = item => {\n switch (item.activityType) {\n case 'NotPublished':\n return activeLabels.notStarted;\n case 'Active':\n return getActiveActiveLabel(item);\n case 'Sold':\n return activeLabels.sold;\n case 'Unsold':\n return activeLabels.unSold;\n }\n};\n\nexport const getUnsoldLabel = item => {\n if (item && item.listing.restart.hasRestartedChild) {\n return unsoldLabels.restarted;\n }\n if (item && item.forciblyClosed && item.forciblyClosed.closed) {\n return unsoldLabels.forciblyClosed;\n }\n if (itemHasBidsButReservePriceNotReached(item)) {\n return unsoldLabels.reservePriceNotReached;\n }\n return unsoldLabels.notPaid;\n};\n\nconst getStates = sellerState => ({\n paid: sellerState.paid ? 'done' : '',\n shipped: sellerState.shipped\n ? 'done'\n : sellerState.shippingBooked\n ? 'partial'\n : '',\n feedbackLeft: sellerState.feedbackLeft ? 'done' : ''\n});\n\nexport const getBuyerActiveItemsLabel = (item, memberId) => {\n if (item.caller.leadingBidRemoved === true) {\n return buyerActiveItemsLabels.bidRemoved;\n }\n\n if (\n item.bidInformation.leadingBidder &&\n item.bidInformation.leadingBidder.id === memberId\n ) {\n if (!item.reservePriceReached) {\n return buyerActiveItemsLabels.reservePriceNotReached;\n }\n return buyerActiveItemsLabels.leading;\n } else {\n return buyerActiveItemsLabels.overbidden;\n }\n};\n\nexport const getSoldLabel = item => {\n const sellerState = item.transaction.sellerState;\n const states = getStates(sellerState);\n if (sellerState.shipped && sellerState.paid && sellerState.feedbackLeft) {\n return {\n ...soldLabels.done,\n states: states\n };\n }\n\n if (sellerState.shipped || (sellerState.shipped && sellerState.paid)) {\n return {\n ...soldLabels.shipped,\n states: states\n };\n }\n\n if (sellerState.shippingBooked && sellerState.paid) {\n return {\n ...soldLabels.shippingBooked,\n states: states\n };\n }\n\n if (sellerState.paid) {\n return {\n ...soldLabels.paid,\n states: states\n };\n }\n\n return {\n ...soldLabels.notPaid,\n states: states\n };\n};\n\nexport const getPurchasesLabel = item => {\n const buyerState = item.transaction.buyerState;\n const states = getStates(buyerState);\n\n if (buyerState.paid && buyerState.feedbackLeft) {\n return {\n ...purchasesLabels.done,\n states: states\n };\n }\n\n if (buyerState.paid) {\n return {\n ...purchasesLabels.paid,\n states: states\n };\n }\n\n return {\n ...purchasesLabels.notPaid,\n states: states\n };\n};\n\nexport const getBuyerItemsLostLabel = item => {\n if (item && item.forciblyClosed && item.forciblyClosed.closed) {\n return {\n ...itemLostLabels.removed\n };\n }\n\n return {\n ...itemLostLabels.lost\n };\n};\n\nexport default {\n getActiveLabel,\n getBuyerItemsLostLabel,\n getSoldLabel,\n getUnsoldLabel\n};\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst FixedPriceLabel = ({ className }) => {\n const { t } = useTranslator();\n return {t('itemCard_fixedPrice')};\n};\n\nexport default FixedPriceLabel;\n","export default () => {\n return {\n isFetching: false,\n merchantPreOrders: [],\n errors: {}\n };\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useCurrentLanguage } from 'tradera-lang/translate';\nimport { formatPrice } from 'tradera-utils/format';\n\nconst PriceLabel = ({ tagName: TagName, className, price, hasDiscount }) => {\n const { language } = useCurrentLanguage();\n if (price) {\n return (\n \n {formatPrice(price, language, {\n // Swedish locale shows \"kr\", other \"SEK\"\n currencyDisplay: language.startsWith('sv')\n ? 'symbol'\n : 'code'\n })}\n \n );\n } else {\n return null;\n }\n};\nPriceLabel.propTypes = {\n tagName: PropTypes.string,\n className: PropTypes.string,\n price: PropTypes.number,\n hasDiscount: PropTypes.bool\n};\nPriceLabel.defaultProps = {\n tagName: 'span',\n className: ''\n};\n\nexport default PriceLabel;\n","import cookieUtil from 'tradera-utils/cookie';\nimport { SHIPPING_COUNTRY } from 'tradera-constants/cookies';\nimport {\n isSwedenCountryCodeOrUndefined,\n isSwedenCountryNameOrUndefined\n} from 'tradera-utils/countrycode';\n\nconst getInitialCategoryId = initData => {\n if (initData.categoryPath && initData.categoryPath.length > 0) {\n initData.categoryPath.forEach(item => {\n if (item.selected) {\n return item.id;\n }\n });\n }\n return 0;\n};\n\nexport default initData => {\n const { isLoggedIn, memberCountry } = initData;\n return {\n activeBrands: [],\n activeFilters: [],\n attributeFilters: [],\n categoryPath: initData.categoryPath || [],\n currentCategoryId: getInitialCategoryId(initData),\n displayAllowedBuyerRegionFilter:\n (cookieUtil.hasCookie(SHIPPING_COUNTRY) &&\n !isSwedenCountryCodeOrUndefined(\n cookieUtil.readCookie(SHIPPING_COUNTRY)\n )) ||\n (isLoggedIn && !isSwedenCountryNameOrUndefined(memberCountry)),\n endpoint: null,\n error: null,\n fallbackItemsById: [],\n filterCategories: {},\n filterPrice: {},\n filters: {},\n hasResult: false,\n headerText: null,\n internalSearch: {},\n introText: null,\n isFetchingGeolocation: false,\n isShopOwnedByCurrentMember: false,\n itemsById: [],\n itemsOnDisplayById: [],\n mainText: null,\n pagination: null,\n queryParams: {},\n totalItems: 0,\n discoverTranslationResult: {},\n reduxContainer: {}\n };\n};\n","import React from 'react';\nimport StampIcon from '@tradera/blueprint/theme/icons2/stamp.svg?jsx';\nimport PackageIcon from '@tradera/blueprint/theme/icons2/package.svg?jsx';\nimport { useTranslator } from 'tradera-lang/translate';\nimport shippingProviders from 'tradera-apps/my-tradera/app/data/shipping-providers';\n\nexport const ShippingProviderIcon = ({ providerName, iconClass, imgClass }) => {\n const { t } = useTranslator();\n const { text, logoImgUrl } = shippingProviders\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 };\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.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","import { cache, CACHE_KEYS } from 'tradera-utils/cache';\n\nexport default () => {\n const recent = cache.read(CACHE_KEYS.RECENTLY_VIEWED_ITEMS) || [];\n return {\n // Items by itemId\n cache: {},\n // List of item ids in ascending cache order (oldest first)\n cacheOrder: [],\n recent\n };\n};\n","export default {\n DEFAULT_ACTION: 'member/default',\n SET_IS_FETCHING_GEOLOCATION: 'MEMBER/SET_IS_FETCHING_GEOLOCATION',\n SET_GEOLOCATION: 'MEMBER/SET_GEOLOCATION',\n FAILED_LOADING_GEOLOCATION: 'MEMBER/FAILED_LOADING_GEOLOCATION',\n 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 } = 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 = isHybridAppContext ? 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';\nimport { calculateClientEndTime } from 'tradera-utils/countdown';\nimport { getServerTime } from 'tradera-utils/time-api';\n\nconst RECENTLY_VIEWED_CACHE_TTL = 30 * 24 * 60 * 60 * 1000;\n\n/**\n * Adds The property \"endDateForCountdown\" on the given item. This property is used\n * by ItemCard and ItemListCard to display the correct amount of time left of an auction.\n * @param {*} serverTimeInMs\n * @param {*} serverLatencyInMs\n * @param {*} nowInMs\n */\nconst createEndDateForCountdownDecorator = (\n serverTimeMs,\n serverLatencyMs,\n nowMs\n) => item => {\n const originalEndTimeMs = new Date(item.endDate).getTime();\n const calculatedEndTimeMs = calculateClientEndTime(\n serverTimeMs,\n serverLatencyMs,\n nowMs,\n originalEndTimeMs\n );\n item.endDateForCountdown = new Date(calculatedEndTimeMs);\n return item;\n};\n\nconst add = items => ({\n type: actionTypes.ADD,\n payload: items\n});\n\nconst addAndDecorateItemsWithEndDateForCountdown = items => async dispatch => {\n const serverTimeObject = await getServerTime();\n const endDateForCountdownDecorator = createEndDateForCountdownDecorator(\n serverTimeObject ? serverTimeObject.currentTime : 0,\n serverTimeObject ? serverTimeObject.latency : 0,\n Date.now()\n );\n const decoratedItems = items.map(endDateForCountdownDecorator);\n dispatch(add(decoratedItems));\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\n/**\n * Toggle item in wishlist\n *\n * @param {int} itemId\n * @param {boolean} [toggle] - Force add or remove from wishlist\n * @param {boolean} [shouldNotTrackEventBecauseNeedsToBeSameAsLegacyVip]\n * @returns {function(*, *): Promise<* | Error>}\n */\nconst wishlist = (\n itemId,\n toggle,\n shouldNotTrackEventBecauseNeedsToBeSameAsLegacyVip = false\n) => async (dispatch, getStore) => {\n const {\n member: { isLoggedIn, memberId },\n items: { cache },\n page\n } = getStore();\n let existsInWishList;\n if (toggle === undefined) {\n existsInWishList = cache[itemId]?.existsInWishList || false;\n } else {\n existsInWishList = !toggle;\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({\n type: actionTypes.WISHLIST,\n payload: { itemId, exists: !existsInWishList }\n });\n if (!existsInWishList) {\n gtmCore.trackGtmEvent('add-to-wishlist', {\n memberId: memberId,\n itemId: itemId\n });\n }\n 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({\n type: actionTypes.WISHLIST,\n payload: { itemId, exists: existsInWishList }\n });\n switch (error.message) {\n case API_ERRORS.LOGGED_OUT:\n onSignedOutError();\n break;\n default:\n break;\n }\n switch (error.message) {\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n case API_ERRORS.VERSION_MISMATCH:\n break;\n default:\n logger(error);\n break;\n }\n });\n};\n\nconst removeWishList = payload => ({\n type: actionTypes.REMOVE_WISHLIST,\n payload\n});\n\nconst updateItem = ({ itemId, item }) => ({\n type: actionTypes.UPDATE_ITEM,\n payload: { itemId, item }\n});\n\nexport default {\n add,\n addAndDecorateItemsWithEndDateForCountdown,\n addRecentlyViewed,\n wishlist,\n removeWishList,\n updateItem\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';\n\nconst SellerRating = ({ className, rating, includeTotal, isGood, isBad }) => {\n const formattedRating = rating.toString().replace(',', '.');\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 prettifyRating\n}) => {\n const { rating, includeTotal, noRating, isGood, isBad } = prettifyRating;\n return (\n \n \n {sellerAlias}\n \n {!noRating && (\n <>\n  \n \n \n )}\n \n );\n};\nexport default SellerLink;\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst ShippingLabel = ({\n className,\n hasFreeShipping,\n hasNonSpecifiedShipping,\n isPickupOnly,\n shippingPrice,\n tagName: TagName\n}) => {\n const { t } = useTranslator();\n if (hasFreeShipping) {\n return (\n \n {t('itemCard_freeShipping')}\n \n );\n } else if (hasNonSpecifiedShipping) {\n return (\n \n {t('itemCard_nonSpecifiedShipping')}\n \n );\n } else if (isPickupOnly) {\n return (\n \n {t('itemCard_pickup')}\n \n );\n } else if (shippingPrice) {\n return (\n \n {t('itemCard_addedShippingCost', { shippingPrice })}\n \n );\n } else {\n return null;\n }\n};\nShippingLabel.defaultProps = {\n tagName: 'span'\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 AnimatedTimeLeftLabel from './item-card-parts/animated-time-left-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 TimeLeftLabel from './item-card-parts/time-left-label';\nimport WishListButton from './item-card-parts/wish-list-button';\nimport './item-card.scss';\n\nfunction ItemListCard({\n animateTimeLeft,\n className,\n item = {},\n lazy,\n onClick,\n onAddToWishlist,\n onQuickView,\n onRemoveFromWishlist,\n onAttributeButtonClick,\n onSettings,\n preferredCurrency,\n ready\n}) {\n const inSPA = true;\n const { existsInWishList } = item;\n const itemUrl = `${item.url || item.itemUrl}`;\n const imageUrl = item.imageUrl.replace('/medium/', '/medium-fit/');\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 {item.hasDiscount && (\n \n )}\n

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

    \n
    \n
    \n

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

    \n
    \n {item.itemAttributesForFilter && onAttributeButtonClick && (\n

    \n \n

    \n )}\n
    \n \n {item.isShopItem ? (\n \n ) : animateTimeLeft ? (\n \n ) : (\n <>\n {item.isNewToday && (\n \n )}\n \n \n )}\n
    \n\n
    \n \n \n {onQuickView && (\n onQuickView(item.itemId)}\n />\n )}\n {item.showShopItemSettings && (\n onSettings(item.itemId)}\n />\n )}\n
    \n
    \n\n \n \n \n \n {item.hasDiscount && (\n \n )}\n {!item.isShopItem && item.showBids && (\n \n )}\n {item.showBuyNow && (\n \n )}\n {item.showBuyNow && (\n \n )}\n {item.showShipping && (\n \n )}\n {item.showOnDisplayRibbon && }\n

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

    \n \n \n );\n}\n\nItemListCard.defaultProps = {\n animateTimeLeft: false,\n className: '',\n onAddToWishlist: () => {},\n onRemoveFromWishlist: () => {},\n onQuickView: () => {}\n};\n\nItemListCard.propTypes = {\n animateTimeLeft: PropTypes.bool,\n // animateTimeLeftWarningLimit: PropTypes.number,\n className: PropTypes.string,\n // gaCategory: PropTypes.string,\n item: PropTypes.shape({\n buyNowPrice: PropTypes.number,\n currentBid: PropTypes.number,\n discountRate: PropTypes.number,\n displayHighlighted: PropTypes.bool,\n existsInWishList: PropTypes.bool,\n hasDiscount: PropTypes.bool,\n hasNonSpecifiedShipping: PropTypes.bool,\n imageHeight: PropTypes.number,\n imageUrl: PropTypes.string,\n imageWidth: PropTypes.number,\n isEndingSoon: PropTypes.bool,\n isNewToday: PropTypes.bool,\n isShopItem: PropTypes.bool,\n itemId: PropTypes.number,\n itemUrl: PropTypes.string,\n prettifyRating: PropTypes.shape({\n includeTotal: PropTypes.bool,\n isBad: PropTypes.bool,\n isGood: PropTypes.bool,\n noRating: PropTypes.bool,\n rating: PropTypes.string\n }),\n price: PropTypes.number,\n priceBeforeDiscount: PropTypes.number,\n sellerAlias: PropTypes.string,\n sellerDsrAverage: PropTypes.number,\n shortDescription: PropTypes.string,\n showBids: PropTypes.bool,\n showBuyNow: PropTypes.bool,\n showFreeShippingRibbon: PropTypes.bool,\n showOnDisplayRibbon: PropTypes.bool,\n showShopItemSettings: PropTypes.bool,\n showSmbMessage: PropTypes.bool,\n timeLeft: PropTypes.string,\n url: PropTypes.string\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};\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 AttributeButtonsList = ({ itemAttributesForFilter, onClick }) => {\n const attributeButtons = [];\n itemAttributesForFilter.map(attribute => {\n attributeButtons.push(\n onClick(attribute)}\n />\n );\n });\n\n return attributeButtons;\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 = (slotId, pageSize, seedItemIds = []) => {\n const endpoint = '/ma/recommendations-v3';\n\n return (pageIndex = 0) => {\n let queryParameters = {\n slotId,\n pageSize,\n pageIndex\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';\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 { 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';\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 {/* 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 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","/**\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};\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];\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 hasSetAllowedBuyerRegionAtLeastEu: false\n };\n};\n\ninitModuleGlobals();\nconst buyerRegionSlice = createSlice({\n name: 'buyer-region',\n initialState: initialState,\n reducers: {\n setAllowedBuyerRegion: (state, action) => {\n const region = availableAllowedBuyerRegions.find(\n r => r.value === action.payload\n );\n const { value, text } = regionOrDefault(region);\n state.selectedBuyerRegion = value;\n state.selectedBuyerRegionText = text;\n return state;\n },\n setAllowedBuyerRegionAtLeastEu: state => {\n if (\n !state.isSetAllowedBuyerRegionToAtLeastEuEnabled ||\n !state.isTraderaPayEnabled ||\n state.hasSetAllowedBuyerRegionAtLeastEu\n ) {\n return state;\n }\n\n const euIndex = findIndexOfRegion('EU', state);\n const currentIndex = findIndexOfRegion(\n state.selectedBuyerRegion,\n state\n );\n if (currentIndex < euIndex) {\n const { value, text } = state.availableAllowedBuyerRegions[\n euIndex\n ];\n state.selectedBuyerRegion = value;\n state.selectedBuyerRegionText = text;\n state.hasSetAllowedBuyerRegionAtLeastEu = true;\n }\n return state;\n },\n setAvailableAllowedBuyerRegions: (state, action) => {\n state.availableAllowedBuyerRegions =\n action.payload.availableRegions;\n state.availableAllowedBuyerRegionsForEditWithBids = true;\n return state;\n }\n }\n});\n\nexport const setAvailableAllowedBuyerRegions = () => (dispatch, getState) => {\n const draftState = getSyiSlice(getState()).draft;\n const regionState = getSyiSlice(getState()).buyerRegion;\n const regions = regionState.availableAllowedBuyerRegions;\n const selectedRegion = regionState.selectedBuyerRegion;\n const filters = {\n Sweden: region =>\n ['Sweden', 'Nordic', 'EU', 'International'].indexOf(region.value) >\n -1,\n Nordic: region =>\n ['Nordic', 'International'].indexOf(region.value) > -1,\n EU: region => ['EU', 'International'].indexOf(region.value) > -1,\n International: region => ['International'].indexOf(region.value) > -1\n };\n const useFilter = draftState.draftReason === 'ChangeItemWithBids';\n const filter = (useFilter && filters[selectedRegion]) || (() => true);\n const availableRegions = regions.filter(filter);\n dispatch(\n buyerRegionSlice.actions.setAvailableAllowedBuyerRegions({\n availableRegions\n })\n );\n};\n\nexport const {\n setAllowedBuyerRegion,\n setAllowedBuyerRegionAtLeastEu\n} = buyerRegionSlice.actions;\n\nexport default buyerRegionSlice.reducer;\n","/* eslint-disable */\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 initData from 'init-data';\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 = initData.featureSwitches[\n 'dhl-integrated-booking-enabled'\n ]\n ? ['DBSchenker', 'PostNord', 'DHL']\n : ['DBSchenker', 'PostNord'];\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 images: PropTypes.array.isRequired,\n pageType: PropTypes.string\n };\n\n static defaultProps = {\n carouselStyle: {},\n className: '',\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 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 initData from 'init-data';\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';\n\nconst MESSAGING_STATES = {\n LOADING: 'LOADING',\n READY: 'READY'\n};\nconst POST_MESSAGE_TYPE_PREFIX = 'tradera.messaging.';\n// For testing\nconst MESSAGING_REMOTE_URL =\n location.hostname === 'beta-a.tradera.com'\n ? 'https://tradera-staging-messaging.firebaseapp.com'\n : initData.messagingIframeUrl;\n\nclass MessagingModal extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n messaging: MESSAGING_STATES.LOADING,\n participating: props.participating || null\n };\n }\n\n handleMessage = event => {\n const {\n data: { type },\n origin\n } = event;\n if (origin !== MESSAGING_REMOTE_URL) {\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 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\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 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';\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\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 getItems = useCallback(\n page => {\n const endpoint = toLocalizedUrl(createRequestUrl(page));\n\n axios\n .get(endpoint, {\n cancelToken: cancelToken.current.token,\n headers: defaultJsonRequestHeaders\n })\n .then(({ data }) => {\n if (showAds && data?.gpt) {\n setAds({ gpt: data.gpt });\n }\n const itemsInResponse = data?.items || [];\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 addItems,\n addItemIds,\n createRequestUrl,\n itemIds,\n onError,\n onReachedEnd,\n setAds,\n showAds,\n toLocalizedUrl\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';\nimport initialState from './initial-state';\n\n// The max size of the item cache * before adding new items *\nconst ITEM_CACHE_MAX_SIZE = 500;\nconst RECENTLY_VIEWED_MAX_LENGTH = 4;\n\nexport default (state = initialState(), action) => {\n const add = () => {\n const { cache, cacheOrder } = state;\n // Clear out old items\n let newCache = {};\n let newCacheOrder = cacheOrder;\n if (cacheOrder.length > ITEM_CACHE_MAX_SIZE) {\n newCacheOrder = cacheOrder.slice(\n cacheOrder.length - ITEM_CACHE_MAX_SIZE\n );\n newCacheOrder.forEach(itemId => {\n newCache[itemId] = cache[itemId];\n });\n } else {\n newCache = cache;\n }\n // Add new items\n action.payload.forEach(item => {\n if (item.itemId in newCache) {\n // Combine existing item with updated item\n newCache[item.itemId] = {\n ...newCache[item.itemId],\n ...item\n };\n // Renew item in cache order\n newCacheOrder = [\n ...newCacheOrder.filter(itemId => itemId !== item.itemId),\n item.itemId\n ];\n } else {\n newCache[item.itemId] = item;\n newCacheOrder.push(item.itemId);\n }\n });\n\n return {\n ...state,\n cache: {\n ...newCache\n },\n cacheOrder: newCacheOrder\n };\n };\n\n const addRecentlyViewed = () => {\n const { payload: item } = action;\n const { recent } = state;\n // Remove item if already present\n let updatedRecent = recent.filter(\n recentItem => recentItem.itemId !== item.itemId\n );\n // Add to front of list\n updatedRecent.unshift(item);\n // Limit list length\n updatedRecent = updatedRecent.slice(0, RECENTLY_VIEWED_MAX_LENGTH);\n return {\n ...state,\n recent: updatedRecent\n };\n };\n\n const wishlist = () => {\n const {\n payload: { itemId, exists }\n } = action;\n return {\n ...state,\n cache: {\n ...state.cache,\n [itemId]: {\n ...state.cache[itemId],\n existsInWishList: exists\n }\n }\n };\n };\n\n const updateItem = () => {\n const {\n payload: { itemId, item }\n } = action;\n return {\n ...state,\n cache: {\n ...state.cache,\n [itemId]: {\n ...state.cache[itemId],\n ...item\n }\n }\n };\n };\n\n const def = () => state;\n\n const reducers = {\n [actionTypes.ADD]: add,\n [actionTypes.ADD_RECENTLY_VIEWED]: addRecentlyViewed,\n [actionTypes.WISHLIST]: wishlist,\n [actionTypes.UPDATE_ITEM]: updateItem\n };\n\n return !action || !action.type || !reducers[action.type]\n ? def()\n : reducers[action.type]();\n};\n","import actionTypes from './action-types';\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 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 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 shortDescription: null,\n validationError: null\n};\n\nfunction validate(newState) {\n newState.validationError =\n newState.shortDescription && newState.shortDescription.trim() !== ''\n ? null\n : 'syi_validation_missing_title';\n return newState;\n}\n\nexport default (state, action) => {\n state = state || initialState;\n switch (action.type) {\n case 'SET_SHORT_DESCRIPTION':\n return validate({ ...state, shortDescription: action.payload });\n case 'RESET_SHORT_DESCRIPTION':\n return validate({ ...state, shortDescription: null });\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 { setCharityId } from 'tradera-state/views/syi/reducers/charity';\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(setCharityId({ charityId: null }));\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 AnimatedTimeLeftLabel from './item-card-parts/animated-time-left-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 TimeLeftLabel from './item-card-parts/time-left-label';\nimport WishListButton from './item-card-parts/wish-list-button';\nimport './item-card.scss';\nimport SellerAliasBadge from './item-card-parts/seller-alias-badge';\n\nconst ItemCard = ({\n animatePriceLabel,\n animateTimeLeft,\n animateTimeLeftWarningLimit,\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}) => {\n let inSPA = true;\n const { existsInWishList } = item;\n const itemUrl = (item.url || item.itemUrl) && `${item.url || item.itemUrl}`;\n const imageUrl =\n item.imageUrl && item.imageUrl.replace('/medium/', '/medium-fit/');\n\n const handleSettings = event => {\n event.preventDefault();\n onSettings(item);\n };\n\n const handleQuickview = event => {\n event.preventDefault();\n onQuickView(item.itemId);\n };\n\n const handleWishlist = event => {\n event.preventDefault();\n if (existsInWishList) {\n onRemoveFromWishlist(item.itemId);\n } else {\n onAddToWishlist(item.itemId);\n }\n };\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 && item.showShipping && (\n \n )}\n {showShippingOrOnDisplay &&\n item.showOnDisplayRibbon && (\n \n )}\n {showBidStatus && item.isLeading && (\n \n )}\n {showBidStatus && item.isOverbidden && (\n \n )}\n
    \n \n
    \n {ready && (\n <>\n \n {onQuickView && (\n \n )}\n {item.showShopItemSettings && (\n \n )}\n \n )}\n
    \n

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

    \n {item.itemAttributesForFilter && onAttributeButtonClick && (\n

    \n \n

    \n )}\n
    \n {item.hasDiscount && (\n \n )}\n {animatePriceLabel ? (\n \n ) : (\n \n )}\n {item.isShopItem ? (\n \n ) : animateTimeLeft ? (\n \n ) : (\n \n )}\n \n {MultiCurrency.isVisible(item.price, preferredCurrency) &&\n !item.isShopItem &&\n item.showBids && (\n |\n )}\n {!item.isShopItem && item.showBids && (\n \n )}\n {item.isNewToday && (\n \n )}\n
    \n
    \n \n );\n};\n\nItemCard.defaultProps = {\n animatePriceLabel: false,\n animateTimeLeft: false,\n className: '',\n gaCategory: null,\n imageMode: ITEM_CARD_IMAGE_MODES.SQUARE,\n onAddToWishlist: () => {},\n onRemoveFromWishlist: () => {},\n onQuickView: null,\n showBidStatus: false,\n showShippingOrOnDisplay: true,\n showSellerAlias: false\n};\n\nItemCard.propTypes = {\n animatePriceLabel: PropTypes.bool,\n animateTimeLeft: PropTypes.bool,\n animateTimeLeftWarningLimit: PropTypes.number,\n className: PropTypes.string,\n gaCategory: PropTypes.string,\n imageMode: PropTypes.oneOf(Object.values(ITEM_CARD_IMAGE_MODES)),\n item: PropTypes.shape({\n buyNowPrice: PropTypes.number,\n currentBid: PropTypes.number,\n discountRate: PropTypes.number,\n displayHighlighted: PropTypes.bool,\n existsInWishList: PropTypes.bool,\n hasDiscount: PropTypes.bool,\n hasNonSpecifiedShipping: PropTypes.bool,\n imageHeight: PropTypes.number,\n imageUrl: PropTypes.string,\n imageWidth: PropTypes.number,\n isEndingSoon: PropTypes.bool,\n isNewToday: PropTypes.bool,\n isShopItem: PropTypes.bool,\n itemId: PropTypes.number,\n itemUrl: PropTypes.string,\n prettifyRating: PropTypes.shape({\n includeTotal: PropTypes.bool,\n isBad: PropTypes.bool,\n isGood: PropTypes.bool,\n noRating: PropTypes.bool,\n rating: PropTypes.string\n }),\n price: PropTypes.number,\n priceBeforeDiscount: PropTypes.number,\n sellerAlias: PropTypes.string,\n sellerDsrAverage: PropTypes.number,\n shortDescription: PropTypes.string,\n showBids: PropTypes.bool,\n showBuyNow: PropTypes.bool,\n showFreeShippingRibbon: PropTypes.bool,\n showOnDisplayRibbon: PropTypes.bool,\n showShopItemSettings: PropTypes.bool,\n showSmbMessage: PropTypes.bool,\n timeLeft: PropTypes.string,\n url: PropTypes.string\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};\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 REMOVE_WISHLIST: 'ITEMS/REMOVE_WISHLIST',\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';\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 menuContentRef = useMenuHeightFix();\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'\n : ''\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}\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 { setCharityFromDraft } from '../reducers/charity';\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 => (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(setAllowedBuyerRegion(draft.allowedBuyerRegion));\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'] && draft.charity) {\n dispatch(setCharityFromDraft(draft.charity));\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 = () => dispatch => {\n syiActions.reset();\n dispatch(categoryActions.reset());\n dispatch(setDraft(draftService.loadDefaultDraft()));\n dispatch(shippingActions.resetSelected());\n};\n\nconst loadDefaultTemplateDraft = () => dispatch => {\n syiActions.reset();\n dispatch(categoryActions.reset());\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\nexport default {\n setDraft,\n loadDraft,\n loadDrafts,\n loadImagesFromDraft,\n canBeResumed,\n updateDraftCanBeResumed,\n setDraftId,\n setCustomEndTime,\n setDurationDays,\n resetDurationAndEndTime,\n setRestart,\n setDisplayPromoted,\n setDisplayHighlighted,\n setReference,\n publish,\n loadDraftIfMissing,\n loadDefaultDraft,\n loadDefaultTemplateDraft,\n useDraftAsTemplate,\n saveDraft,\n setItemCondition,\n resetItemCondition,\n publishAdditionalDescription,\n resetDraft,\n resetDrafts,\n updateItemConditionRestrictionForCategory,\n setIsLoading\n};\n","import { logger } from 'packages';\nimport * as gtm from 'tradera-apps/tradera/components/discover/helpers/search-gtm';\nimport { getReturnUrl } from 'tradera-utils/login';\nimport { DEFAULT_COOKIES } from 'tradera-constants/cookies';\nimport { API_ERRORS } from 'tradera-utils/api';\nimport { cache, CACHE_KEYS } from 'tradera-utils/cache';\nimport cookieUtil from 'tradera-utils/cookie';\nimport actionTypes from './action-types';\nimport {\n getSystemMessages,\n getMessagingNotifications,\n getDismissSwish\n} from './api';\nimport itemActions from '../items/actions';\nimport { getItem } from '../items/api';\n\nconst toggleHeaderSearch = payload => ({\n type: actionTypes.TOGGLE_HEADER_SEARCH,\n payload\n});\n\nconst openGdprModal = payload => ({\n type: actionTypes.OPEN_GDPR_MODAL,\n payload\n});\n\nconst closeGdprModal = payload => ({\n type: actionTypes.CLOSE_GDPR_MODAL,\n payload\n});\n\nconst openGdprSettings = payload => ({\n type: actionTypes.OPEN_GDPR_SETTINGS,\n payload\n});\n\nconst closeGdprSettings = payload => ({\n type: actionTypes.CLOSE_GDPR_SETTINGS,\n payload\n});\n\nconst openQuickView = payload => (dispatch, getState) => {\n const { openedFrom, ...restOfPayload } = payload;\n\n if (getState().ui.quickView.loading) {\n return;\n }\n dispatch({\n type: actionTypes.LOADING_QUICK_VIEW,\n payload: true\n });\n\n return getItem(restOfPayload.itemId)\n .then(({ data }) => {\n if (data) {\n const updatedData = {\n ...data,\n imageFormats: data.imageFormats?.map(i => ({\n ...i,\n alt: i.alt || data.shortDescription\n }))\n };\n dispatch(itemActions.add([updatedData]));\n }\n dispatch({\n type: actionTypes.OPEN_QUICK_VIEW,\n payload: restOfPayload\n });\n gtm.trackAction('Quick View', `Open: from ${openedFrom}`);\n dispatch({\n type: actionTypes.LOADING_QUICK_VIEW,\n payload: false\n });\n return data;\n })\n .catch(error => {\n dispatch(closeQuickView());\n dispatch({\n type: actionTypes.LOADING_QUICK_VIEW,\n payload: false\n });\n logger(error);\n });\n};\n\nconst closeQuickView = payload => ({\n type: actionTypes.CLOSE_QUICK_VIEW,\n payload\n});\n\nconst openVideoModal = payload => ({\n type: actionTypes.OPEN_VIDEO_MODAL,\n payload\n});\n\nconst closeVideoModal = payload => ({\n type: actionTypes.CLOSE_VIDEO_MODAL,\n payload\n});\n\nconst openYoutubeVideoModal = payload => ({\n type: actionTypes.OPEN_YOUTUBE_VIDEO_MODAL,\n payload\n});\n\nconst closeYoutubeVideoModal = payload => ({\n type: actionTypes.CLOSE_YOUTUBE_VIDEO_MODAL,\n payload\n});\n\n/**\n * signIn\n * @param {object} payload\n * @param {string} payload.redirectUrl - where to send the user after login completes\n */\nconst signIn = payload => (dispatch, getStore) => {\n const {\n environment: { featureSwitches }\n } = getStore();\n\n if (!featureSwitches['login-anywhere']) {\n window.location = `/login${getReturnUrl(payload.redirectUrl)}`;\n } else {\n dispatch(openProfileMenu(payload.redirectUrl));\n }\n};\n\n/*\n Changes made to messaging modal will affect My Tradera as well!\n*/\nconst openMessagingModal = payload => ({\n type: actionTypes.OPEN_MESSAGING_MODAL,\n payload\n});\n\nconst closeMessagingModal = payload => ({\n type: actionTypes.CLOSE_MESSAGING_MODAL,\n payload\n});\n\n/**\n * Open a notification optin modal\n *\n * @param {boolean} type - type of notifications to show modal for\n * @returns {function(*, *): boolean}\n */\nconst openNotificationOptinModal = (\n modalType,\n gaLabel,\n title,\n description,\n tagGroups\n) => async (dispatch, getState) => {\n const { pushNotifications } = getState();\n if (!pushNotifications.enabled) {\n return;\n }\n if (pushNotifications.shownModals[modalType] === true) {\n return;\n }\n dispatch({\n type: actionTypes.OPEN_NOTIFICATION_OPTIN_MODAL,\n payload: {\n modalType,\n gaLabel,\n title,\n description,\n tagGroups\n }\n });\n};\n\nconst closeNotificationOptinModal = payload => ({\n type: actionTypes.CLOSE_NOTIFICATION_OPTIN_MODAL,\n payload\n});\n\nconst openProfileMenu = payload => ({\n type: actionTypes.OPEN_PROFILE_MENU,\n payload\n});\n\nconst closeProfileMenu = payload => ({\n type: actionTypes.CLOSE_PROFILE_MENU,\n payload\n});\n\nconst openCategoryDropdownMenu = payload => ({\n type: actionTypes.OPEN_CATEGORY_DROPDOWN_MENU,\n payload\n});\n\nconst closeCategoryDropdownMenu = payload => ({\n type: actionTypes.CLOSE_CATEGORY_DROPDOWN_MENU,\n payload\n});\n\nconst openSearchForm = payload => ({\n type: actionTypes.OPEN_SEARCH_FORM,\n payload\n});\n\nconst closeSearchForm = payload => ({\n type: actionTypes.CLOSE_SEARCH_FORM,\n payload\n});\n\nconst updateItemLayout = value => {\n const defaultCookie = DEFAULT_COOKIES['ITEM_LAYOUT'];\n const expires = defaultCookie.length;\n try {\n cookieUtil.createCookie(defaultCookie.key, value, expires);\n } catch (e) {\n logger(e);\n }\n return {\n type: actionTypes.ITEM_LAYOUT,\n payload: value\n };\n};\n\nconst updateSiteLayout = value => {\n const defaultCookie = DEFAULT_COOKIES['SITE_LAYOUT'];\n const expires = defaultCookie.length;\n try {\n cookieUtil.createCookie(defaultCookie.key, value, expires);\n } catch (e) {\n logger(e);\n }\n return {\n type: actionTypes.SITE_LAYOUT,\n payload: value\n };\n};\n\nconst updateSystemMessages = systemMessages => ({\n type: actionTypes.UPDATE_SYSTEM_MESSAGES,\n payload: systemMessages\n});\n\nconst fetchSystemMessages = () => async (dispatch, getState) => {\n const {\n environment: { featureSwitches },\n member: { isLoggedIn }\n } = getState();\n if (featureSwitches && featureSwitches['mytradera-alerts'] && isLoggedIn) {\n try {\n let systemMessages = cache.read(CACHE_KEYS.SYSTEM_MESSAGES);\n if (!systemMessages) {\n const fetchedMessages = await getSystemMessages();\n systemMessages = {};\n if (fetchedMessages && 'items' in fetchedMessages.data) {\n fetchedMessages.data.items.forEach(({ type }) => {\n systemMessages[type] = true;\n });\n cache.write(CACHE_KEYS.SYSTEM_MESSAGES, systemMessages);\n }\n }\n dispatch(updateSystemMessages(systemMessages));\n } catch (error) {\n // Invalidate cache to fetch fresh again next action\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n switch (error.message) {\n case API_ERRORS.LOGGED_OUT:\n await dispatch(logOut());\n window.location = '/login/logout';\n break;\n case API_ERRORS.IGNORE_ME:\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n break;\n default:\n logger(error);\n break;\n }\n }\n }\n};\n\nconst updateMessagingNotifications = payload => ({\n type: actionTypes.UPDATE_MESSAGING_NOTIFICATIONS,\n payload\n});\n\nconst fetchMessagingNotifications = () => async dispatch => {\n try {\n let messagingNotifications = cache.read(CACHE_KEYS.MESSAGING_BADGES);\n if (!messagingNotifications) {\n const { data } = await getMessagingNotifications();\n messagingNotifications = data;\n }\n dispatch(updateMessagingNotifications(messagingNotifications));\n } catch (error) {\n // Fail silently\n }\n};\n\nconst dismissSwish = () => dispatch => {\n dispatch({\n type: actionTypes.UPDATE_SYSTEM_MESSAGES,\n payload: {\n SwishNumberMissing: false\n }\n });\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n getDismissSwish().catch(() => {\n // Fail silently\n });\n};\n\nconst logOut = () => async dispatch => {\n cache.remove(CACHE_KEYS.MESSAGING_BADGES);\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n dispatch({\n type: actionTypes.LOG_OUT,\n payload: {}\n });\n};\n\nconst openItemSettings = payload => ({\n type: actionTypes.OPEN_ITEM_SETTINGS,\n payload: { item: payload }\n});\n\nconst closeItemSettings = payload => ({\n type: actionTypes.CLOSE_ITEM_SETTINGS,\n payload\n});\n\nexport default {\n toggleHeaderSearch,\n openGdprModal,\n closeGdprModal,\n openGdprSettings,\n closeGdprSettings,\n openQuickView,\n closeQuickView,\n openVideoModal,\n closeVideoModal,\n openYoutubeVideoModal,\n closeYoutubeVideoModal,\n signIn,\n openMessagingModal,\n closeMessagingModal,\n openNotificationOptinModal,\n closeNotificationOptinModal,\n updateItemLayout,\n updateSiteLayout,\n updateSystemMessages,\n fetchSystemMessages,\n updateMessagingNotifications,\n fetchMessagingNotifications,\n dismissSwish,\n openProfileMenu,\n closeProfileMenu,\n openCategoryDropdownMenu,\n closeCategoryDropdownMenu,\n openSearchForm,\n closeSearchForm,\n openItemSettings,\n closeItemSettings,\n logOut\n};\n","import axios from 'axios';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport {\n API_ERRORS,\n axiosConfigs,\n axiosWithTokenRefresh,\n finalizeResponse,\n handleError\n} from 'tradera-utils/api';\nimport { touchWebClient } from 'tradera-utils/http';\n\nfunction getSystemMessages() {\n return axiosWithTokenRefresh()\n .get(ENDPOINTS.MEMBER_SYSTEM_MESSAGES, {\n ...axiosConfigs.authenticated\n })\n .then(finalizeResponse())\n .catch(\n handleError({\n // Ignore 400 & 401 errors that slip through token refresh\n 400: API_ERRORS.IGNORE_ME,\n 401: API_ERRORS.IGNORE_ME\n })\n );\n}\n\nfunction getMessagingNotifications() {\n return touchWebClient.get('api/messaging/stats', {\n cancelTokenId: 'fetchMessagingNotifications',\n ...axiosConfigs.authenticated\n });\n}\n\nfunction getDismissSwish() {\n return axios\n .get(ENDPOINTS.PAYMENT_SWISH_OPTOUT, {\n ...axiosConfigs.authenticated\n })\n .then(finalizeResponse())\n .catch(handleError());\n}\n\nexport { getSystemMessages, getMessagingNotifications, getDismissSwish };\n","const getJSValue = {\n True: true,\n False: false,\n All: 'All'\n};\n\nconst setJSValue = {\n true: 'True',\n false: 'False',\n All: 'All'\n};\n\nexport const setEnum = value => setJSValue[value];\nexport const getEnum = value => getJSValue[value];\n","import { createSlice } from '@reduxjs/toolkit';\nimport { assertNoUndefinedProperties } from 'tradera-utils/assert';\nimport { getItemState } from '../view-item/item-state-helper';\nimport { getAmountDetails } from 'tradera-apps/tradera/components/vip/bidding/bid-details'; // TODO put getAmountDetails somewhere else\nimport { VIEW_STATES } from './constants';\n\nexport const initialState = {\n amount: 0,\n breadCrumbs: [],\n categoryId: 0,\n categoryNames: [],\n categories: [],\n categoryLevel: 0,\n description: null,\n hasEnded: false,\n images: [],\n itemId: 0,\n itemUrl: null,\n paymentOptions: [],\n paymentTerms: null,\n reasons: [],\n resultMessage: null,\n shippingOptions: [],\n shippingTerms: [],\n sellerMemberId: 0,\n title: null,\n viewState: VIEW_STATES.LOADING\n};\n\nconst slice = createSlice({\n name: 'reportItem',\n initialState,\n reducers: {\n resetInitialState: () => {\n return initialState;\n },\n setReportItem: (state, { payload: { item, itemUrl, reasons } }) => {\n const itemDetails = item.itemDetails;\n const bidInfo = item.bidInfo;\n const itemState = getItemState(\n itemDetails.hasEnded,\n itemDetails.itemType,\n bidInfo.bidCount,\n bidInfo.reservePriceReached,\n itemDetails.openingBid,\n bidInfo.nextValidBidAmount,\n bidInfo.transactionType,\n bidInfo.leadingBidderMemberId\n );\n const amountDetails = getAmountDetails(\n () => '', // We are currently not interested in displaying what the amount means in the current UX.\n itemState,\n itemDetails.fixedPrice,\n bidInfo.leadingBidAmount,\n itemDetails.openingBid,\n bidInfo.bidCount > 0\n );\n state.amount = amountDetails.amount;\n state.allowedBuyerRegion = itemDetails.allowedBuyerRegion;\n state.breadCrumbs = item.breadCrumbs;\n state.categoryId = itemDetails.categoryId;\n state.categoryNames = item.breadCrumbs.map(\n breadCrumb => breadCrumb.text\n );\n state.description = itemDetails.description;\n state.endDate = itemDetails.endDate;\n state.hasEnded = itemDetails.hasEnded;\n state.images = itemDetails.images;\n state.itemId = itemDetails.itemId;\n state.itemUrl = itemUrl;\n state.paymentOptions = itemDetails.paymentOptions;\n state.reasons = reasons;\n state.shippingOptions = itemDetails.shippingOptions;\n state.shippingTerms = itemDetails.shippingTerms;\n state.sellerMemberId = itemDetails.sellerMemberId;\n state.title = itemDetails.title;\n state.viewState = itemDetails.hasEnded\n ? VIEW_STATES.ITEM_ENDED\n : VIEW_STATES.FORM;\n assertNoUndefinedProperties(state);\n },\n setViewState: (state, { payload }) => {\n state.viewState = payload;\n },\n setCategories: (state, { payload: categories, categoryLevel }) => {\n state.categories = categories;\n state.categoryLevel = categoryLevel;\n }\n }\n});\n\nexport const {\n resetInitialState,\n setReportItem,\n setViewState,\n setCategories\n} = slice.actions;\nexport const reducer = slice.reducer;\n","import { logger } from 'packages';\n\nimport { getSearchResults } from './api';\nimport actionTypes from './action-types';\nimport itemActions from '../items/actions';\nimport pageActions from '../page/actions';\nimport adsActions from '../ads/actions';\nimport { API_ERRORS } from 'tradera-utils/api';\nimport { reload } from 'tradera-utils/location';\nimport initialState from './initial-state';\nimport PAGE_TYPES from 'tradera-constants/page-types';\nimport * as discoverTracking from 'tradera-apps/tradera/components/discover/helpers/search-gtm';\n\nconst requestSearchResults = () => {\n return {\n type: actionTypes.REQUEST_SEARCH_RESULTS\n };\n};\n\nconst resolvePageTitleTranslation = (state, pageType, categoryPath, query) => {\n const { discover } = state;\n const shouldSetPageMetaTitle =\n pageType && pageType !== PAGE_TYPES.CUSTOM_RESULT_PAGE;\n if (!shouldSetPageMetaTitle) {\n return;\n }\n let reverseCategoryPath = categoryPath.filter(c => c.id > 0).reverse();\n const rootCategory =\n reverseCategoryPath.length > 0 ? reverseCategoryPath[0] : null;\n const rootCategoryId = rootCategory ? rootCategory.id : 0;\n const secondHandCategories = [16, 33, 1612];\n const metaTitleKey =\n pageType === PAGE_TYPES.CATEGORY_RESULT_PAGE &&\n secondHandCategories.includes(rootCategoryId)\n ? `pageMeta_title_${pageType}_secondHand`\n : `pageMeta_title_${pageType}`;\n const metaTitleData = {\n query: query || '',\n category: discover.headerText || ''\n };\n return { metaTitleKey, metaTitleData };\n};\n\nconst updatePageMetaForSearchResults = pageType => (dispatch, getState) => {\n const discover = getState().discover;\n const { categoryPath, queryParams, reduxContainer } = discover;\n const { ads, pageMeta } = reduxContainer;\n const pageTitleTranslation = resolvePageTitleTranslation(\n getState(),\n pageType,\n categoryPath,\n queryParams.q\n );\n dispatch(\n pageActions.setPageMeta({\n ...pageMeta,\n ...pageTitleTranslation\n })\n );\n if (ads) dispatch(adsActions.setAds(ads));\n};\n\n/**\n *\n * @param {object} payload the normalized version of the response\n * @param {object} payload.result\n * @param {object} payload.result.categoryPath\n * @param {object[]} [payload.result.fallbackItems]\n * @param {object[]} [payload.result.items]\n * @param {object} [payload.result.itemsOnDisplay]\n * @param {object[]} [payload.result.itemsOnDisplay.items]\n * @param {object} [payload.result.reduxContainer]\n * @param {object} [payload.result.reduxContainer.ads]\n * @param {object} [payload.result.reduxContainer.pageMeta]\n */\nconst receiveSearchResults = payload => dispatch => {\n const {\n result: { fallbackItems, items, itemsOnDisplay }\n } = payload;\n\n const itemsToAdd = [];\n if (fallbackItems?.length > 0) {\n itemsToAdd.push(...fallbackItems);\n }\n if (items?.length > 0) {\n itemsToAdd.push(...items);\n }\n if (itemsOnDisplay?.items?.length > 0) {\n itemsToAdd.push(...itemsOnDisplay.items);\n }\n if (itemsToAdd.length > 0) {\n dispatch(itemActions.add(itemsToAdd));\n }\n\n dispatch({\n type: actionTypes.RECEIVE_SEARCH_RESULTS,\n payload\n });\n};\n\nconst fetchSearchResults = (endpoint, queryParams, pageType, onLoaded) => {\n return async (dispatch, getState) => {\n dispatch(requestSearchResults());\n const {\n environment: { version }\n } = getState();\n return getSearchResults(endpoint, queryParams, '', version)\n .then(({ data: result }) => {\n const searchResults = { result, endpoint, queryParams };\n dispatch(receiveSearchResults(searchResults));\n return searchResults;\n })\n .catch(error => {\n switch (error.message) {\n case API_ERRORS.CANCELLED:\n break;\n case API_ERRORS.VERSION_MISMATCH:\n reload(true);\n break;\n default:\n dispatch(handleSearchResultsError(error.message));\n break;\n }\n switch (error.message) {\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n case API_ERRORS.VERSION_MISMATCH:\n break;\n default:\n logger(error);\n break;\n }\n })\n .finally(() => {\n dispatch(afterReceiveSearchResults(pageType, onLoaded));\n });\n };\n};\n\nconst afterReceiveSearchResults = (pageType, onLoaded) => (\n dispatch,\n getState\n) => {\n dispatch(updatePageMetaForSearchResults(pageType));\n dispatch(() => {\n trackNewSearch(getState);\n onLoaded();\n });\n};\n\nconst handleSearchResultsError = payload => ({\n type: actionTypes.HANDLE_SEARCH_RESULTS_ERROR,\n payload\n});\n\nconst setSingleFilterValue = (filter, value) => {\n return {\n type: actionTypes.SET_SINGLE_FILTER,\n payload: {\n filter,\n value\n }\n };\n};\n\nconst addItemOnDisplay = payload => ({\n type: actionTypes.ADD_ITEM_ON_DISPLAY,\n payload\n});\n\nconst removeItemOnDisplay = payload => ({\n type: actionTypes.REMOVE_ITEM_ON_DISPLAY,\n payload\n});\n\nconst setCategoryPath = categoryPath => {\n return {\n type: actionTypes.SET_CATEGORY_PATH,\n payload: categoryPath\n };\n};\n\nconst setCurrentCategoryId = categoryId => {\n return {\n type: actionTypes.SET_CURRENT_CATEGORY_ID,\n payload: categoryId\n };\n};\n\nconst reset = () => (dispatch, getState) => {\n const state = getState();\n return dispatch({\n type: actionTypes.RESET,\n payload: {\n initialState: initialState(state.initData)\n }\n });\n};\n\nconst trackNewSearch = getState => {\n const state = getState();\n const { categoryPath, itemsById, metaTitle } = state.discover;\n discoverTracking.trackNewSearch(categoryPath, itemsById, metaTitle);\n};\n\nexport default {\n afterReceiveSearchResults,\n addItemOnDisplay,\n fetchSearchResults,\n receiveSearchResults,\n removeItemOnDisplay,\n requestSearchResults,\n reset,\n setCategoryPath,\n setCurrentCategoryId,\n setSingleFilterValue\n};\n","// @ts-check\nimport { BREAKPOINTS, BREAKPOINT_SIZES } from 'tradera-constants/breakpoints';\n\n/**\n * Return breakpoint label for given width\n *\n * @param {int} [width]\n * @returns {string|null}\n */\nfunction getCurrentBreakpoint(width = window.innerWidth) {\n for (let { min, max, name } of Object.values(BREAKPOINT_SIZES)) {\n if (width >= min && width <= max) {\n return name;\n }\n }\n return null;\n}\n\n/**\n * Check if current width is within a given breakpoint range\n *\n * @param {string} name\n * @param {int} [width]\n * @returns {boolean}\n */\nfunction isBreakpoint(name, width = window.innerWidth) {\n return (\n width >= BREAKPOINT_SIZES[name].min &&\n width <= BREAKPOINT_SIZES[name].max\n );\n}\n\n/**\n * Check if current width is in a given breakpoint range or below\n *\n * @param {string} name\n * @param {int} [width]\n * @returns {boolean}\n */\nfunction isBreakpointOrLower(name, width = window.innerWidth) {\n return width <= BREAKPOINT_SIZES[name].max;\n}\n\n/**\n * Check if current width is in a given breakpoint range or above\n *\n * @param {string} name\n * @param {int} [width]\n * @returns {boolean}\n */\nfunction isBreakpointOrHigher(name, width = window.innerWidth) {\n return width >= BREAKPOINT_SIZES[name].min;\n}\n\n/**\n * Check if current breakpoint is classified as desktop (large and above)\n *\n * @returns {boolean}\n */\nfunction isDesktop() {\n return isBreakpointOrHigher(BREAKPOINTS.LG);\n}\n\n/**\n * Check if current breakpoint is classified as tablet (medium)\n *\n * @returns {boolean}\n */\nfunction isTablet() {\n return isBreakpoint(BREAKPOINTS.MD);\n}\n\n/**\n * Check if current breakpoint is classified as mobile (small and below)\n * @param {int} [width]\n * @returns {boolean}\n */\nfunction isMobile(width = window.innerWidth) {\n return isBreakpointOrLower(BREAKPOINTS.SM, width);\n}\n\nexport {\n BREAKPOINTS,\n BREAKPOINT_SIZES,\n getCurrentBreakpoint,\n isBreakpoint,\n isBreakpointOrLower,\n isBreakpointOrHigher,\n isDesktop,\n isTablet,\n isMobile\n};\n","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 { 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\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 pageName: PropTypes.string,\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 charitySlice = createSlice({\n name: 'charity',\n initialState: {\n charityId: preselectCharity ? Number(queryParamCharityId) : null,\n percentageToDonate: preselectCharity ? 100 : 0,\n anonymous: true\n },\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 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 }\n});\n\nexport const {\n setCharityId,\n setCharityFromDraft,\n setCharityAnonymous\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} 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 vipLiveUpdatesEnabled: false,\n vipLiveUpdatesUrl: 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: (\n state,\n { payload: { vipLiveUpdatesEnabled, vipLiveUpdatesUrl } }\n ) => {\n state.vipLiveUpdatesEnabled = vipLiveUpdatesEnabled;\n state.vipLiveUpdatesUrl = vipLiveUpdatesUrl;\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 }\n});\n\nexport default viewItemSlice.reducer;\n\nexport const mapItemDetails = itemDetails => ({\n ...itemDetails,\n images: itemDetails.images.map(img => ({\n thumbnail: img.thumbnail,\n multiThumbnail: img.thumbnail,\n medium: img.medium || img.small,\n normal: img.normal,\n smallFit: img.smallFit,\n mediumFit: img.mediumFit,\n largeFit: img.largeFit,\n alt: img.alt || img.altText\n }))\n});\n\nexport const handleItemModel = (itemModel, memberId) => (\n dispatch,\n getState\n) => {\n const previousItemId = selectItemId(getState());\n dispatch(viewItemSlice.actions.setItemDetails(itemModel.itemDetails));\n dispatch(\n viewItemSlice.actions.setVipLiveUpdate({\n vipLiveUpdatesEnabled: itemModel.vipLiveUpdatesEnabled,\n vipLiveUpdatesUrl: itemModel.vipLiveUpdatesUrl\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(adsActions.setAds(itemModel.reduxContainer.ads));\n dispatch(pageActions.setPageMeta(itemModel.reduxContainer.pageMeta));\n dispatch(\n viewItemSlice.actions.setServerSecondsLeft(itemModel.serverSecondsLeft)\n );\n\n const isNewPage = previousItemId != selectItemId(getState());\n if (isNewPage) {\n handleNewPage(getState);\n }\n};\n\nexport const handleNewPage = getState => {\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) => async (\n dispatch,\n getStore\n) => {\n const shouldNotTrackWishlistEventBecauseNeedsToBeSameAsLegacyVip = true;\n const itemDetails = getStore().views.viewItem.itemDetails;\n let inWishListNewValue = await dispatch(\n itemActions.wishlist(\n itemId,\n !itemDetails.inWishList || forceAdd,\n shouldNotTrackWishlistEventBecauseNeedsToBeSameAsLegacyVip\n )\n );\n dispatch(\n viewItemSlice.actions.setItemDetails({\n ...itemDetails,\n inWishList: inWishListNewValue\n })\n );\n if (inWishListNewValue !== undefined) {\n analytics.trackWishlist(itemId, 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 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';\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 messagingThreads: PropTypes.object,\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 messagingThreads,\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 { threadsUnread } = messagingThreads;\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 messagingThreads: state.ui.badges.messaging,\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';\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","import React, { useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslator } from 'tradera-lang/translate';\nimport { formatDuration } from 'tradera-utils/format';\nimport { useTicker } from '../hooks';\n\nconst AnimatedTimeLeftLabel = ({\n className,\n countdownSecondsLimit,\n countdownWarningLimit,\n tagName: TagName,\n endDate,\n timeLeft\n}) => {\n const { t } = useTranslator();\n const timeLeftSeconds = useMemo(\n () => Math.floor((new Date(endDate) - new Date()) / 1000),\n [endDate]\n );\n const [countdown, setCountdown] = useState(timeLeftSeconds);\n const stopCountdown = useTicker(1000, () => {\n if (countdown > 0) {\n setCountdown(countdown - 1);\n } else {\n stopCountdown();\n }\n });\n if (isNaN(countdown)) {\n return null;\n }\n return (\n \n {countdown <= 0 ? (\n {t('itemCard_ended')}\n ) : (\n \n {formatDuration(countdown, countdownSecondsLimit) || (\n // eslint-disable-next-line\n \n )}\n \n )}\n \n );\n};\nAnimatedTimeLeftLabel.propTypes = {\n className: PropTypes.string,\n countdownSecondsLimit: PropTypes.number,\n countdownWarningLimit: PropTypes.number,\n tagName: PropTypes.string,\n endDate: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n timeLeft: PropTypes.string\n};\nAnimatedTimeLeftLabel.defaultProps = {\n className: '',\n // Show detailed countdown at this number of seconds left\n countdownSecondsLimit: 120,\n // Show warning countdown at this number of seconds\n countdownWarningLimit: 60,\n tagName: 'span'\n};\n\nexport default AnimatedTimeLeftLabel;\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 = () => {\n return axiosWithTokenRefresh()\n .get(ENDPOINTS.FAVOURITE_SELLERS, {\n headers: defaultJsonRequestHeaders\n })\n .catch(handleError())\n .catch(reloadOnUnauthorized)\n .catch(logError)\n .then(response => response?.data || {});\n};\n\nexport const getSellerSuggestions = shippingCountryCode => {\n return webApiClient\n .get(\n `/discover/seller-suggestions?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';\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\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 =\n getState().environment.featureSwitches['seller-suggestions'] &&\n getState().environment.splitTestGroups['seller_suggestions'] ===\n 'enabled';\n\n dispatch(setFavouriteSellersStatusAction({ status: 'LOADING' }));\n\n const promise = getFavouriteSellers();\n const suggestionsPromise =\n isSellerSuggestionsEnabled &&\n getSellerSuggestions(\n getState().shippingRegion.shippingCountry.countryCodeIso2\n );\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 { 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
    \n );\n\nTags.defaultProps = {\n scroll: false,\n titleOnSameLine: false\n};\n\nTags.propTypes = {\n gaCategory: PropTypes.string,\n onClickTag: PropTypes.func,\n scroll: PropTypes.bool,\n tags: PropTypes.array.isRequired,\n titleOnSameLine: PropTypes.bool\n};\n\nexport default Tags;\n","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslator } from 'tradera-lang/translate';\nimport PropTypes from 'prop-types';\nimport Tags from '../tags/tags';\nimport { fetchTrendingSearchesIfNeeded } from 'tradera-state/views/start-page/actions';\nimport HotIcon from '@tradera/blueprint/theme/icons2/hot.svg?jsx';\nimport './trending-searches-tags.scss';\n\nconst TrendingSearchesTags = ({ className, inHeader }) => {\n const { t } = useTranslator();\n const dispatch = useDispatch();\n\n const tags = useSelector(\n state => state.views.startPage.trendingSearches.items\n );\n\n useEffect(() => {\n dispatch(fetchTrendingSearchesIfNeeded());\n }, [dispatch]);\n\n if (!tags || tags.length === 0) {\n return null;\n }\n\n const textOrIcon = inHeader ? (\n \n {t('trendingTags_searches')}:\n \n ) : (\n \n );\n\n return (\n \n {textOrIcon}\n \n \n );\n};\n\nTrendingSearchesTags.defaultProps = {\n className: ''\n};\n\nTrendingSearchesTags.propTypes = {\n className: PropTypes.string,\n inHeader: PropTypes.bool.isRequired\n};\n\nexport default TrendingSearchesTags;\n","import { useSelector } from 'react-redux';\n\nconst useRecentSearchesUpdated = () =>\n useSelector(state => state.personalisation.recentSearches.lastUpdated);\n\nexport default useRecentSearchesUpdated;\n","import React, { useMemo } from 'react';\nimport TimeIcon from '@tradera/blueprint/theme/icons2/time.svg?jsx';\nimport PropTypes from 'prop-types';\n\nimport { STORAGE_KEYS } from 'tradera-constants/storage';\nimport StorageService from 'static/script/app/data/storage-service';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\nimport useRecentSearchesUpdated from 'tradera-hooks/use-recent-searches-updated';\nimport Tags from '../tags/tags';\nimport { addRecentSearch } from 'components/search/helpers/suggestions-api';\n\nimport './recent-searches-tags.scss';\n\nconst RecentSearchesTags = ({ inHeader, className }) => {\n const recentSearchesUpdated = useRecentSearchesUpdated();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const tags = useMemo(() => getPreviousSearches(inHeader ? 7 : 16), [\n inHeader,\n recentSearchesUpdated\n ]);\n\n const isEnabled = useIsFeatureEnabled('recent-searches-tags');\n\n if (!isEnabled || !tags || tags.length === 0) {\n return null;\n }\n\n return (\n \n \n addRecentSearch(tag.name)}\n scroll={!inHeader}\n tags={tags}\n titleOnSameLine\n />\n \n );\n};\n\nconst getPreviousSearches = limit => {\n const previousSearchService = new StorageService(\n STORAGE_KEYS.SEARCH_RECENT\n );\n const previousResults =\n previousSearchService.fetch().orderByTimestamp() || [];\n return previousResults\n .splice(0, limit)\n .map(item => ({ name: item.key, url: '/search?q=' + item.key }));\n};\n\nRecentSearchesTags.defaultProps = {\n className: ''\n};\n\nRecentSearchesTags.propTypes = {\n className: PropTypes.string,\n inHeader: PropTypes.bool.isRequired\n};\n\nexport default RecentSearchesTags;\n","import React, { useCallback, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useInView } from 'react-intersection-observer';\n\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\nimport useIsMobile from 'tradera-hooks/use-is-mobile';\nimport { getImageSizes, getWebpImage } from '../image-sizes';\nimport { HEADER } from '../content-types';\nimport { trackContainerClick } from '../analytics';\nimport { isSpaLink, toRelativeTraderaUrl } from 'tradera-utils/url';\nimport ALink from 'tradera-components/alink/alink';\nimport MediaItem from '../media/media-item';\nimport TrendingSearchesTags from '../trending/trending-searches-tags';\nimport TraderaLogo from 'components/tradera/logo';\nimport { SearchInSpa, SearchOutsideSpa } from 'components/search/search';\nimport uiActions from 'tradera-state/ui/actions';\nimport RecentSearchesTags from '../recent-searches/recent-searches-tags';\nimport './start-page-hero.scss';\n\nconst StartPageHero = ({\n isLoading,\n showRecentSearches,\n showTrendingSearches\n}) => {\n const {\n backgroundVideo,\n backgroundImage,\n isCampaignMode,\n trackingId,\n webpageUrl = ''\n } = useSelector(state => state.views.startPage.config.header);\n\n const inSPA = true;\n\n const videoEnabled = useIsFeatureEnabled('start-page-contentful-video');\n const video = videoEnabled ? backgroundVideo : null;\n\n const [searchElementRef, searchInView, searchInViewEntry] = useInView({\n rootMargin: '-45px 0px 0px 0px',\n threshold: 1.0\n });\n\n const dispatch = useDispatch();\n const toggleHeaderSearch = useCallback(\n show => dispatch(uiActions.toggleHeaderSearch(show)),\n [dispatch]\n );\n useEffect(() => {\n if (searchInViewEntry) {\n toggleHeaderSearch(!searchInView);\n } else if (isCampaignMode) {\n toggleHeaderSearch(true);\n }\n }, [searchInViewEntry, isCampaignMode, searchInView, toggleHeaderSearch]);\n\n const isMobile = useIsMobile();\n const imageSizes = getImageSizes(1, backgroundImage, HEADER);\n const webpImage = getWebpImage(1, backgroundImage, HEADER);\n const parsedCampaignUrl = isCampaignMode\n ? toRelativeTraderaUrl(webpageUrl)\n : null;\n\n return (\n
    \n {backgroundImage ? (\n \n ) : (\n \n )}\n {isCampaignMode ? (\n trackContainerClick(HEADER, trackingId)}\n style={{ top: '0px' }}\n className=\"position-absolute w-100 h-100\"\n aria-label={trackingId}\n />\n ) : (\n
    \n \n
    \n \n
    \n
    \n \n {inSPA ? (\n \n ) : (\n \n )}\n {/* */}\n
    \n
    \n {showRecentSearches && (\n
    \n
    \n \n
    \n
    \n )}\n {showTrendingSearches && (\n
    \n
    \n \n
    \n
    \n )}\n
    \n \n )}\n \n );\n};\n\nStartPageHero.propTypes = {\n isLoading: PropTypes.bool.isRequired,\n showRecentSearches: PropTypes.bool.isRequired,\n showTrendingSearches: PropTypes.bool.isRequired\n};\n\nexport default StartPageHero;\n\nconst FallbackImage = () => (\n \n);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LazyLoad from 'react-lazyload';\n\nimport { isSpaLink, stripHost } from 'tradera-utils/url';\nimport { useUrlLocalizer } from 'tradera-lang/translate';\nimport { getImageSizes, getWebpImage } from '../image-sizes';\nimport { trackContainerClick } from '../analytics';\nimport MediaItem from '../media/media-item';\nimport ALink from 'tradera-components/alink/alink';\n\nconst CarouselItem = ({\n containerType,\n inSPA,\n item,\n itemCount,\n videoEnabled\n}) => {\n const {\n alternativeText,\n body,\n image,\n webpageUrl,\n heading,\n button,\n showHeading,\n trackingId,\n video\n } = item;\n const { toLocalizedUrl } = useUrlLocalizer();\n\n const showContent = showHeading || button || body;\n const imageSizes = getImageSizes(itemCount, image, containerType);\n const webpImage = getWebpImage(itemCount, image, containerType);\n const url = stripHost(toLocalizedUrl(webpageUrl));\n\n return (\n <>\n
    \n
    \n \n trackContainerClick(containerType, trackingId)\n }\n className=\"carousel-item-link\">\n \n \n \n \n
    \n
    \n {showContent && (\n
    \n {showHeading && (\n

    {heading}

    \n )}\n {body &&

    {body}

    }\n {button && (\n \n trackContainerClick(containerType, trackingId)\n }\n className=\"font-weight-bold btn btn-tertiary mt-1 text-styled\">\n {button}\n \n )}\n
    \n )}\n \n );\n};\n\nCarouselItem.propTypes = {\n item: PropTypes.shape({\n alternativeText: PropTypes.string,\n imageUrl: PropTypes.string,\n webpageUrl: PropTypes.string,\n heading: PropTypes.string,\n button: PropTypes.string,\n showsTitle: PropTypes.bool,\n video: PropTypes.object\n })\n};\n\nexport default CarouselItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Slider from 'react-slick';\nimport CarouselItem from './carousel-item';\nimport './carousel.scss';\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\nconst Carousel = ({ containerType, data, inSPA, settings, videoEnabled }) => {\n const { hiddenOn, title, items, type = 'default' } = data;\n\n if (hiddenOn?.some(x => x === 'Web')) {\n return null;\n }\n\n const itemCount = items.length;\n const singleItemWithContent =\n itemCount === 1 &&\n (items[0].showHeading || items[0].button || items[0].body);\n const singleItemClass = singleItemWithContent ? 'carousel--single' : '';\n\n return (\n \n {title &&

    {title}

    }\n \n {items &&\n items.map((item, index) => (\n
    \n \n
    \n ))}\n
    \n \n );\n};\n\nCarousel.defaultProps = {\n settings: {\n dots: true,\n infinite: true,\n speed: 500,\n lazyLoad: 'progressive',\n slidesToShow: 1,\n slidesToScroll: 1,\n initialSlide: 0,\n swipeToSlide: true,\n nextArrow: (\n \n ),\n prevArrow: (\n \n ),\n responsive: [\n {\n breakpoint: 768,\n settings: {\n arrows: false\n }\n }\n ]\n }\n};\n\nCarousel.propTypes = {\n data: PropTypes.shape({\n title: PropTypes.string,\n items: PropTypes.array.isRequired,\n type: PropTypes.string\n }).isRequired,\n inSPA: PropTypes.bool,\n settings: PropTypes.object,\n videoEnabled: PropTypes.bool\n};\n\nexport default Carousel;\n","import React, { useState } from 'react';\nimport LazyLoad from 'react-lazyload';\nimport { INSTAGRAM_FEED } from '../content-types';\nimport { trackContainerClick } from '../analytics';\nimport { useTranslator } from 'tradera-lang/translate';\nimport InstagramIcon from '@tradera/blueprint/theme/icons/instagram.svg?jsx';\nimport ImageIcon from '@tradera/blueprint/theme/icons2/image.svg?jsx';\nimport './instagram-feed.scss';\nimport initData from 'init-data';\n\nconst InstagramFeed = () => {\n const { t } = useTranslator();\n if (\n !initData.instagramFeed ||\n !initData.instagramFeed.posts ||\n initData.instagramFeed.posts.length === 0\n ) {\n return null;\n }\n\n const {\n instagramFeed: { posts }\n } = initData;\n\n return (\n
    \n

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

    \n
    \n {posts &&\n posts\n .slice(0, 6)\n .map((post, index) => (\n \n ))}\n
    \n
    \n );\n};\n\nconst InstagramImage = ({ imageUrl, url }) => {\n const [imageAvailable, setImageAvailable] = useState(true);\n\n return (\n
    \n \n trackContainerClick(INSTAGRAM_FEED, 'Instagram post')\n }\n rel=\"nofollow noopener noreferrer\">\n \n {imageAvailable ? (\n setImageAvailable(false)}\n />\n ) : (\n \n
    \n \n
    \n
    \n )}\n \n
    \n \n
    \n );\n};\n\nexport default InstagramFeed;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Carousel, { NextArrow, PreviousArrow } from '../carousel/carousel';\n\nconst PopularCategories = ({ containerType, data, inSPA, videoEnabled }) => {\n const { items, hiddenOn } = data;\n\n if (hiddenOn?.some(x => x === 'Web')) {\n return null;\n }\n\n // Do not allow container with items outside of range 1-3 or 6\n if (![1, 2, 3, 6].includes(items.length)) {\n return null;\n }\n\n const multiRow = items.length === 6;\n const slidesToShow = multiRow ? 1 : items.length;\n const singleItem = items.length === 1;\n\n const settings = {\n className: `${multiRow ? 'carousel--multi-row' : ''}`,\n dots: true,\n dotsClass: 'slick-dots mb-2',\n infinite: true,\n speed: 500,\n slidesToShow: slidesToShow,\n slidesToScroll: 1,\n initialSlide: 0,\n swipeToSlide: true,\n rows: multiRow ? 2 : 1,\n slidesPerRow: multiRow ? 3 : 1,\n nextArrow: ,\n prevArrow: ,\n responsive: [\n {\n breakpoint: 1025,\n settings: {\n slidesToShow: singleItem ? 1 : 2,\n slidesPerRow: 1,\n rows: 1\n }\n },\n {\n breakpoint: 768,\n settings: {\n slidesToShow: singleItem ? 1 : 2,\n slidesPerRow: 1,\n arrows: false,\n rows: 1\n }\n },\n {\n breakpoint: 576,\n settings: {\n slidesToShow: 1,\n slidesPerRow: 1,\n arrows: false,\n rows: 1\n }\n }\n ]\n };\n\n return (\n \n );\n};\n\nPopularCategories.propTypes = {\n data: PropTypes.shape({\n title: PropTypes.string,\n type: PropTypes.string,\n items: PropTypes.array.isRequired\n }).isRequired,\n inSPA: PropTypes.bool,\n videoEnabled: PropTypes.bool\n};\n\nexport default PopularCategories;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { useTranslator } from 'tradera-lang/translate';\n\nimport ItemCard from 'tradera-components/item-card/item-card';\n\nconst RecentlyViewed = props => {\n const { items } = props;\n const { t } = useTranslator();\n // Memoized link component to avoid rerendering of item cards\n\n if (!items || (items && items.length === 0)) return null;\n\n return (\n
    \n

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

    \n
    \n {items.map(item => (\n
    \n \n
    \n ))}\n
    \n
    \n );\n};\n\nconst mapStateToProps = state => ({\n items: state.items.recent\n});\n\nconst ConnectedRecentlyViewed = connect(mapStateToProps)(RecentlyViewed);\n\nexport { ConnectedRecentlyViewed as RecentlyViewed };\n","import React, { useState } from 'react';\n\nimport useIsLoggedIn from 'tradera-hooks/use-is-loggedin';\nimport { PICKS_FOR_YOU } from '../content-types';\nimport { trackContainerClick } from '../analytics';\nimport { LoadingSymbolCards } from 'static/script/components/recommendations/recommendation-loading-spinners';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\nimport ALink from 'tradera-components/alink';\nimport ApplicationErrorBoundary from 'tradera-components/application-error-boundary';\nimport ContentSwitch from 'tradera-components/content-switch';\nimport Recommendations from 'tradera-components/recommendations';\nimport { recommendationsRequestBuilder } from 'tradera-components/recommendations/recommendations-requests';\nimport useIsMobile from 'tradera-hooks/use-is-mobile';\n\nimport 'tradera-components/recommendations/recommendations.scss';\n\nconst PicksForYou = () => {\n const isLoggedIn = useIsLoggedIn();\n const { t } = useTranslator();\n const [error, setError] = useState(false);\n const itemsPerPage = useIsMobile() ? 6 : 8;\n\n return error ? null : (\n \n }>\n setError(true)}\n loader={\n \n }>\n \n \n \n ),\n label: t('startPage_recommendation_endingSoon')\n },\n selected: {\n node: (\n setError(true)}\n loader={\n \n }>\n \n \n ),\n label: t('startPage_recommendation_selected')\n }\n }}\n title={\n isLoggedIn\n ? t('startPage_recommendation_justForYou')\n : t('startPage_recommendation_trendingOnTradera')\n }\n />\n \n );\n};\n\nconst trackPicksForYouClick = label => {\n trackContainerClick(PICKS_FOR_YOU, label);\n};\n\nconst EndingSoonErrorMessage = () => {\n const inSPA = true;\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n
    \n

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

    \n

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

    \n
    \n \n {`${t('startPage_recommendation_lastChance')} ->`}\n \n
    \n
    \n );\n};\n\nconst LoadMoreButton = ({ recommendationMode }) => {\n const inSPA = true;\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n
    \n \n trackPicksForYouClick('Picks for you button below')\n }\n href={toLocalizedUrl(\n `/ma/endless-recommendation/${recommendationMode}`\n )}>\n {`${t('startPage_recommendation_showMore')} ->`}\n \n
    \n );\n};\n\nexport default PicksForYou;\n","import React from 'react';\nimport { useUrlLocalizer, useTranslator } from 'tradera-lang/translate';\nimport ALink from 'tradera-components/alink/alink';\nimport { trackContainerClick } from '../analytics';\nimport './favourite-sellers.scss';\nimport LazyLoad from 'react-lazyload';\nimport { Analytics } from 'packages';\n\nconst FavouriteSellerCard = ({\n sellerAlias,\n sellerId,\n sellerProfileUrl,\n matchedItems,\n hasShop,\n heroImageUrl,\n items,\n isSuggestion = false\n}) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n\n return (\n
    \n \n \n {hasShop && (\n \n {t(\n 'startPage_favouriteSellers_sellerCard_shopBadge'\n )}\n \n )}\n
    \n
    \n {\n trackContainerClick(\n 'favouriteSeller',\n 'Favourite Seller Card title'\n );\n\n if (isSuggestion) {\n Analytics.trackEvent({\n category: 'SellerSuggestion',\n action: 'NavigateProfile',\n label: `${sellerId}:${sellerAlias}`\n });\n }\n }}\n title={sellerAlias}\n useLink={true}>\n {sellerAlias}\n \n
    \n
    \n
    \n {items && items.length > 0 && (\n
    \n {items.map(item => (\n {\n trackContainerClick(\n 'favouriteSeller',\n 'Favourite Seller Card item'\n );\n\n if (isSuggestion) {\n Analytics.trackEvent({\n category: 'SellerSuggestion',\n action: 'NavigateItem',\n label: `${sellerId}:${sellerAlias}/${item.itemId}`\n });\n }\n }}\n useLink={true}>\n \n \n ))}\n
    \n )}\n
    \n {\n trackContainerClick(\n 'favouriteSeller',\n 'Favourite Seller Card button below'\n );\n\n if (isSuggestion) {\n Analytics.trackEvent({\n category: 'SellerSuggestion',\n action: 'NavigateProfile',\n label: `${sellerId}:${sellerAlias}`\n });\n }\n }}\n useLink={true}>\n {t('startPage_favouriteSellers_sellerCard_count', {\n count: matchedItems\n })}\n \n
    \n \n \n );\n};\n\nexport default FavouriteSellerCard;\n","import { useSelector } from 'react-redux';\n\nconst useSplitTestGroup = splitTestName =>\n useSelector(state => state.environment.splitTestGroups[splitTestName]);\nexport default useSplitTestGroup;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useUrlLocalizer, useTranslator } from 'tradera-lang/translate';\nimport { useInView } from 'react-intersection-observer';\nimport useIsMobile from 'tradera-hooks/use-is-mobile';\nimport useIsDesktop from 'tradera-hooks/use-is-desktop';\nimport ALink from 'tradera-components/alink/alink';\nimport ItemCard from 'tradera-components/item-card/item-card';\nimport { lazyLoadSettings } from 'tradera-components/item-card/config';\nimport { generateItemCardPlaceholders } from 'tradera-components/item-card/generate-item-card-placeholders';\nimport itemActions from 'tradera-state/items/actions';\nimport uiActions from 'tradera-state/ui/actions';\nimport { trackContainerClick } from '../analytics';\nimport { fetchFavouriteSellers } from 'tradera-state/views/start-page/actions';\nimport FavouriteSellerCard from './favourite-seller-card';\nimport FavouriteSellersFallback from './favourite-sellers-fallback';\nimport 'tradera-components/item-card/layout.scss';\nimport './favourite-sellers.scss';\nimport useIsLoggedIn from 'tradera-hooks/use-is-loggedin';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\nimport useSplitTestGroup from 'tradera-hooks/use-split-test-group';\n\nconst FavouriteSellers = () => {\n const isLoggedIn = useIsLoggedIn();\n\n return isLoggedIn ? : null;\n};\n\nconst FavouriteSellersInternal = () => {\n const inSPA = true;\n const { t } = useTranslator();\n const dispatch = useDispatch();\n\n const [loadingTriggerRef, loadingTriggerInView] = useInView({\n triggerOnce: true\n });\n\n useEffect(() => {\n if (loadingTriggerInView) {\n dispatch(fetchFavouriteSellers());\n }\n }, [dispatch, loadingTriggerInView]);\n\n const itemCount = 8;\n const {\n sellers: favouriteSellers,\n sellerSuggestions: allSellerSuggestions = [],\n itemIds,\n status\n } = useSelector(state => state.views.startPage.favouriteSellers);\n\n const items = useSelector(state => state.items.cache);\n const isMobile = useIsMobile();\n const isDesktop = useIsDesktop();\n const sellerSuggestions = isMobile\n ? allSellerSuggestions\n : allSellerSuggestions?.slice(0, isDesktop ? 6 : 4);\n\n const isSellerSuggestionsEnabled = useIsFeatureEnabled(\n 'seller-suggestions'\n );\n\n const isSellerSuggestionsSplitTestEnabled =\n useSplitTestGroup('seller_suggestions') === 'enabled';\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 = ['NOT_FETCHED', 'LOADING'].includes(status)\n ? generateItemCardPlaceholders(itemCount)\n : resolveItems(itemIds, items, itemCount);\n\n const toggleWishList = itemId => {\n dispatch(itemActions.wishlist(itemId));\n };\n\n const openQuickView = itemId =>\n dispatch(\n uiActions.openQuickView({\n itemIds,\n itemId,\n openedFrom: 'Start Page Favourite Sellers'\n })\n );\n\n const { toLocalizedUrl } = useUrlLocalizer();\n\n const showFallbackInfo = status === 'HAS_NO_DATA';\n\n return (\n \n
    \n

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

    \n \n trackContainerClick(\n 'favouriteSellers',\n 'Favourite-Sellers showAll link'\n )\n }\n useLink={false} // Use 'inSPA' when mytradera-page can be rnavigated to without a hard reload\n >\n {`${t('startPage_showAll_link')} ->`}\n \n
    \n {showFallbackInfo ? (\n \n ) : (\n <>\n {favouriteSellers && favouriteSellers.length > 0 && (\n \n {favouriteSellers.map(seller => (\n \n \n \n ))}\n \n )}\n \n {displayItems.map(item => (\n \n \n \n ))}\n {isMobile && (\n \n \n trackContainerClick(\n 'favouriteSellers',\n 'Favourite-Sellers button below'\n )\n }\n useLink={inSPA}>\n {`${t(\n 'startPage_favouriteSellers_showMore'\n )} ->`}\n \n \n )}\n \n {!isMobile && (\n
    \n \n trackContainerClick(\n 'favouriteSellers',\n 'Favourite-Sellers button below'\n )\n }\n useLink={inSPA}>\n {`${t(\n 'startPage_favouriteSellers_showMore'\n )} ->`}\n \n
    \n )}\n \n )}\n {isSellerSuggestionsEnabled &&\n isSellerSuggestionsSplitTestEnabled &&\n !!sellerSuggestions?.length && (\n
    \n

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

    \n \n {sellerSuggestions.map(seller => (\n \n \n
    \n ))}\n \n \n )}\n \n );\n};\n\nexport default FavouriteSellers;\n","import React from 'react';\n\nimport { useTranslator } from 'tradera-lang/translate';\nimport HeartIcon from '@tradera/blueprint/theme/icons2/heart.svg?jsx';\nimport CloseIcon from '@tradera/blueprint/theme/icons2/close.svg?jsx';\n\nconst WishListInfoCard = ({ onClose }) => {\n const { t } = useTranslator();\n return (\n
    \n
    \n \n \n {t('wishList_infoCardText')}\n
    \n
    \n );\n};\n\nexport default WishListInfoCard;\n","import React, { useState, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useUrlLocalizer, useTranslator } from 'tradera-lang/translate';\nimport { useInView } from 'react-intersection-observer';\nimport useIsMobile from 'tradera-hooks/use-is-mobile';\nimport ALink from 'tradera-components/alink/alink';\nimport ItemCard from 'tradera-components/item-card/item-card';\nimport { lazyLoadSettings } from 'tradera-components/item-card/config';\nimport { generateItemCardPlaceholders } from 'tradera-components/item-card/generate-item-card-placeholders';\nimport itemActions from 'tradera-state/items/actions';\nimport uiActions from 'tradera-state/ui/actions';\nimport { trackContainerClick } from '../analytics';\nimport { fetchWishList } from 'tradera-state/views/start-page/actions';\nimport HeartFilledIcon from '@tradera/blueprint/theme/icons2/heart-fill.svg?jsx';\nimport WishListInfoCard from './wish-list-info-card';\nimport { localStore } from 'utils/storage';\nimport { STORAGE_KEYS } from 'tradera-constants/storage';\nimport 'tradera-components/item-card/layout.scss';\nimport useIsLoggedIn from 'tradera-hooks/use-is-loggedin';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\n\nconst WishList = () => {\n const isLoggedIn = useIsLoggedIn();\n const isWishListEnabled = useIsFeatureEnabled('startpage-wish-list');\n\n return isLoggedIn && isWishListEnabled ? : null;\n};\n\nconst WishListInternal = () => {\n const { t } = useTranslator();\n const dispatch = useDispatch();\n\n const [loadingTriggerRef, loadingTriggerInView] = useInView({\n triggerOnce: true\n });\n\n useEffect(() => {\n if (loadingTriggerInView) {\n dispatch(fetchWishList());\n }\n }, [dispatch, loadingTriggerInView]);\n\n const itemCount = 8;\n const { itemIds, status } = useSelector(\n state => state.views.startPage.wishList\n );\n const items = useSelector(state => state.items.cache);\n const isMobile = useIsMobile();\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 = ['NOT_FETCHED', 'LOADING'].includes(status)\n ? generateItemCardPlaceholders(itemCount)\n : resolveItems(itemIds, items, itemCount);\n\n const toggleWishList = itemId => {\n dispatch(itemActions.wishlist(itemId));\n };\n\n const openQuickView = itemId =>\n dispatch(\n uiActions.openQuickView({\n itemIds,\n itemId,\n openedFrom: 'Start Page Wish List'\n })\n );\n\n const { toLocalizedUrl } = useUrlLocalizer();\n\n const onCloseInfoCard = () => {\n setHideWishListInfoCard(true);\n };\n const [hideWishListInfoCard, setHideWishListInfoCard] = useState(\n localStore.getItem(STORAGE_KEYS.HIDE_WISH_LIST_INFO_CARD) || false\n );\n useEffect(\n () =>\n localStore.setItem(\n STORAGE_KEYS.HIDE_WISH_LIST_INFO_CARD,\n hideWishListInfoCard\n ),\n [hideWishListInfoCard]\n );\n\n const showInfoCard =\n isMobile && !hideWishListInfoCard && status === 'HAS_DATA';\n const showFallbackInfo = status === 'HAS_NO_DATA';\n\n return (\n
    \n

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

    \n {showFallbackInfo ? (\n
    \n \n `,\n linkEnd: ''\n })\n }}\n />\n
    \n ) : (\n <>\n \n {showInfoCard && (\n \n )}\n {displayItems.map(item => (\n \n \n \n ))}\n {isMobile && (\n \n \n trackContainerClick(\n 'wishList',\n 'Wish-List button below'\n )\n }\n useLink={false} // Use 'inSPA' when mytradera-page can be rnavigated to without a hard reload\n >\n {`${t('wishList_showMore')} ->`}\n \n \n )}\n \n {!isMobile && (\n
    \n
    \n \n trackContainerClick(\n 'wishList',\n 'Wish-List button below'\n )\n }\n useLink={false} // Use 'inSPA' when mytradera-page can be rnavigated to without a hard reload\n >\n {`${t('wishList_showMore')} ->`}\n \n
    \n
    \n )}\n \n )}\n
    \n );\n};\n\nexport default WishList;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { logger } from 'packages';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\nimport ApplicationErrorBoundary from 'tradera-components/application-error-boundary';\nimport LastChance from './last-chance/last-chance';\nimport Carousel from './carousel/carousel';\nimport InstagramFeed from './instagram-feed/instagram-feed';\nimport PopularCategories from './popular-categories/popular-categories';\nimport { RecentlyViewed } from './recently-viewed/recently-viewed';\nimport PicksForYou from './picks-for-you/picks-for-you';\nimport FavouriteSellers from './favourite-sellers/favourite-sellers';\nimport WishList from './wish-list/wish-list';\nimport {\n LAST_CHANCE,\n PICKS_FOR_YOU,\n POPULAR_CATEGORIES,\n CAROUSEL,\n RECENTLY_VIEWED,\n INSTAGRAM_FEED,\n WISH_LIST,\n FAVOURITE_SELLERS\n} from './content-types';\nimport useIsLoggedIn from 'tradera-hooks/use-is-loggedin';\n\nconst Container = ({ container, inSPA, videoEnabled }) => {\n const { type, data } = container;\n\n switch (type) {\n case LAST_CHANCE:\n return ;\n case RECENTLY_VIEWED:\n return ;\n case CAROUSEL:\n return (\n \n );\n case POPULAR_CATEGORIES:\n return (\n \n );\n case PICKS_FOR_YOU:\n return ;\n case INSTAGRAM_FEED:\n return ;\n case WISH_LIST:\n return ;\n case FAVOURITE_SELLERS:\n return ;\n default:\n logger(`Unknown content type ${type}`);\n return null;\n }\n};\n\nconst PageContent = () => {\n const { contentLoggedIn, contentLoggedOut } = useSelector(\n state => state.views.startPage.config\n );\n const isLoggedIn = useIsLoggedIn();\n const content = isLoggedIn ? contentLoggedIn : contentLoggedOut;\n const videoEnabled = useIsFeatureEnabled('start-page-contentful-video');\n if (!content) {\n logger('Start page content missing');\n return (\n

    \n Start page content missing!\n

    \n );\n }\n return content.map((container, index) => {\n return (\n \n \n \n );\n });\n};\n\nexport default PageContent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ALink from 'tradera-components/alink/alink';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport { useUrlLocalizer } from 'tradera-lang/translate';\n\nconst ImageTag = ({ gaAction, gaCategory, imageUrl, name, onClick, url }) => {\n const { toLocalizedUrl } = useUrlLocalizer();\n return (\n {\n typeof onClick === 'function' && onClick();\n GtmService.trackAction(gaCategory, gaAction, name);\n }}\n href={toLocalizedUrl(url)}\n useLink={true}>\n {imageUrl ? {name} : name}\n \n );\n};\n\nImageTag.defaultProps = {\n gaAction: 'Navigation',\n gaCategory: 'Search'\n};\n\nImageTag.propTypes = {\n gaAction: PropTypes.string,\n gaCategory: PropTypes.string,\n imageUrl: PropTypes.string,\n name: PropTypes.string.isRequired,\n onClick: PropTypes.func,\n url: PropTypes.string.isRequired\n};\n\nexport default ImageTag;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport useIsMobile from 'tradera-hooks/use-is-mobile';\nimport ImageTag from './image-tag';\nimport './image-tags.scss';\n\nconst ImageTags = ({ gaCategory, onClickTag, tags }) => {\n const limitTags = useIsMobile() ? 9 : 12;\n return (\n tags &&\n tags.length > 0 && (\n
    \n {[...tags].splice(0, limitTags).map(tag => (\n \n typeof onClickTag === 'function' && onClickTag(tag)\n }\n url={tag.url}\n />\n ))}\n
    \n )\n );\n};\n\nImageTags.propTypes = {\n gaCategory: PropTypes.string,\n onClickTag: PropTypes.func,\n tags: PropTypes.array.isRequired\n};\n\nexport default ImageTags;\n","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslator } from 'tradera-lang/translate';\nimport ImageTags from '../tags/image-tags';\nimport { fetchTrendingBrandsIfNeeded } from 'tradera-state/views/start-page/actions';\n\nconst TrendingBrandsTags = () => {\n const { t } = useTranslator();\n const dispatch = useDispatch();\n\n const tags = useSelector(\n state => state.views.startPage.trendingBrands.items\n );\n\n useEffect(() => {\n dispatch(fetchTrendingBrandsIfNeeded());\n }, [dispatch]);\n\n if (!tags || tags.length === 0) {\n return null;\n }\n\n return (\n <>\n

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

    \n \n \n );\n};\n\nexport default TrendingBrandsTags;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslator } from 'tradera-lang/translate';\nimport Tags from '../tags/tags';\nimport { fetchTrendingBrandsIfNeeded } from 'tradera-state/views/start-page/actions';\nimport { fetchPersonalisedBrandsIfNeeded } from 'tradera-state/personalisation/actions';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport './personalised-tags.scss';\n\nconst PersonalisedBrandsTags = ({ scroll }) => {\n const { t } = useTranslator();\n const dispatch = useDispatch();\n const showFallback = useShowPersonalisedBrandsFallback();\n\n const tags = useSelector(state =>\n showFallback\n ? state.views.startPage.trendingBrands.items\n : state.personalisation.brands.items\n );\n\n useEffect(() => {\n dispatch(\n showFallback\n ? fetchTrendingBrandsIfNeeded()\n : fetchPersonalisedBrandsIfNeeded()\n );\n }, [dispatch, showFallback]);\n\n const isLoading = useIsPersonalisedBrandsTagsLoading();\n useEffect(() => {\n if (!isLoading) {\n GtmService.trackAction(\n showFallback\n ? 'Personalised Brands fallback showed'\n : 'Personalised Brands showed',\n 'Navigation'\n );\n }\n }, [showFallback, isLoading]);\n\n if (isLoading) {\n // Approximated height of component when loaded\n return
    ;\n }\n\n return (\n <>\n

    \n {showFallback\n ? t('trendingTags_brands')\n : t('personalised_suggestions_brands')}\n

    \n \n \n );\n};\n\nexport const useShowPersonalisedBrandsFallback = () =>\n useSelector(state => state.personalisation.brands.status == 'HAS_NO_DATA');\n\nexport const useIsPersonalisedBrandsTagsLoading = () => {\n const status = useSelector(state => state.personalisation.brands.status);\n const fallbackStatus = useSelector(\n state => state.views.startPage.trendingBrands.status\n );\n\n if (status === 'HAS_DATA') return false;\n if (status === 'HAS_NO_DATA') {\n if (fallbackStatus === 'HAS_DATA' || fallbackStatus === 'HAS_NO_DATA')\n return false;\n return true;\n }\n return true;\n};\n\nPersonalisedBrandsTags.defaultProps = {\n scroll: false\n};\n\nPersonalisedBrandsTags.propTypes = {\n scroll: PropTypes.bool\n};\n\nexport default PersonalisedBrandsTags;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslator } from 'tradera-lang/translate';\nimport Tags from '../tags/tags';\nimport { fetchTrendingSearchesIfNeeded } from 'tradera-state/views/start-page/actions';\nimport { fetchPersonalisedSearchesIfNeeded } from 'tradera-state/personalisation/actions';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\nimport './personalised-tags.scss';\n\nconst PersonalisedSearchesTags = ({ scroll }) => {\n const { t } = useTranslator();\n const dispatch = useDispatch();\n const showFallback = useShowPersonalisedSearchesFallback();\n\n const tags = useSelector(state =>\n showFallback\n ? state.views.startPage.trendingSearches.items\n : state.personalisation.searches.items\n );\n\n useEffect(() => {\n dispatch(\n showFallback\n ? fetchTrendingSearchesIfNeeded()\n : fetchPersonalisedSearchesIfNeeded()\n );\n }, [dispatch, showFallback]);\n\n const isLoading = useIsPersonalisedSearchesTagsLoading();\n useEffect(() => {\n if (!isLoading) {\n GtmService.trackAction(\n showFallback\n ? 'Personalised Searches fallback showed'\n : 'Personalised Searches showed',\n 'Navigation'\n );\n }\n }, [showFallback, isLoading]);\n\n if (isLoading) {\n // Approximated height of component when loaded\n return
    ;\n }\n\n return (\n <>\n

    \n {showFallback\n ? t('trendingTags_searches')\n : t('personalised_suggestions_searches')}\n

    \n \n \n );\n};\n\nexport const useShowPersonalisedSearchesFallback = () =>\n useSelector(\n state => state.personalisation.searches.status === 'HAS_NO_DATA'\n );\n\nexport const useIsPersonalisedSearchesTagsLoading = () => {\n const status = useSelector(state => state.personalisation.searches.status);\n const fallbackStatus = useSelector(\n state => state.views.startPage.trendingSearches.status\n );\n\n if (status === 'HAS_DATA') return false;\n if (status === 'HAS_NO_DATA') {\n if (fallbackStatus === 'HAS_DATA' || fallbackStatus === 'HAS_NO_DATA')\n return false;\n return true;\n }\n return true;\n};\n\nPersonalisedSearchesTags.defaultProps = {\n scroll: false\n};\n\nPersonalisedSearchesTags.propTypes = {\n scroll: PropTypes.bool\n};\n\nexport default PersonalisedSearchesTags;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport PersonalisedBrandsTags from './personalised-brands-tags';\nimport PersonalisedSearchesTags from './personalised-searches-tags';\n\nconst PersonalisedTags = ({ scroll }) => {\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n );\n};\n\nPersonalisedTags.propTypes = {\n scroll: PropTypes.bool.isRequired\n};\n\nexport default PersonalisedTags;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { fetchStartPageConfig } from 'tradera-state/views/start-page/actions';\nimport { usePageMeta, useScrollToTopOnMount } from 'tradera-hooks';\nimport useIsDesktop from 'tradera-hooks/use-is-desktop';\nimport useIsMobile from 'tradera-hooks/use-is-mobile';\nimport useIsLoggedIn from 'tradera-hooks/use-is-loggedin';\nimport { useIsFeatureEnabled } from 'tradera-hooks/use-is-feature-enabled';\nimport Ad from 'tradera-components/ads/ad';\nimport ApplicationErrorBoundary from 'tradera-components/application-error-boundary';\nimport Loader from 'tradera-components/loader/loader';\nimport StartPageHero from '../components/start-page/hero/start-page-hero';\nimport PageContent from '../components/start-page/page-content';\nimport '../components/start-page/ads/start-page-ad.scss';\nimport './start-page.scss';\n\nimport QuickView from 'tradera-components/quick-view/quick-view-modal';\nimport RecentSearchesTags from '../components/start-page/recent-searches/recent-searches-tags';\nimport TrendingSearchesTags from '../components/start-page/trending/trending-searches-tags';\nimport TrendingBrandsTags from '../components/start-page/trending/trending-brands-tags';\nimport PersonalisedTags from '../components/start-page/personalised/personalised-tags';\nimport { useIsPersonalisedBrandsTagsLoading } from '../components/start-page/personalised/personalised-brands-tags';\nimport {\n useIsPersonalisedSearchesTagsLoading,\n useShowPersonalisedSearchesFallback\n} from '../components/start-page/personalised/personalised-searches-tags';\n\nfunction StartPage({ pageType }) {\n const status = useSelector(state => state.views.startPage.status);\n const isCampaignMode = useSelector(\n state => state.views.startPage.config?.header.isCampaignMode\n );\n\n const dispatch = useDispatch();\n\n usePageMeta(pageType);\n useScrollToTopOnMount();\n\n const isDesktop = useIsDesktop();\n const isMobile = useIsMobile();\n const isLoggedIn = useIsLoggedIn();\n const isPersonalisedSuggestionsEnabled = useIsFeatureEnabled(\n 'personalised-suggestions'\n );\n\n useEffect(() => {\n if (status === 'NOT_FETCHED') {\n dispatch(fetchStartPageConfig());\n }\n }, [dispatch, status]);\n\n const isPersonalisedBrandsTagsLoading = useIsPersonalisedBrandsTagsLoading();\n const isPersonalisedSearchesTagsLoading = useIsPersonalisedSearchesTagsLoading();\n const showPersonalisedSearchesFallback = useShowPersonalisedSearchesFallback();\n\n if (status !== 'HAS_DATA') {\n return (\n
    \n \n
    \n );\n }\n\n const showPersonalisedTags = isLoggedIn && isPersonalisedSuggestionsEnabled;\n\n const isLoadingPersonalisedTags =\n showPersonalisedTags &&\n (isPersonalisedBrandsTagsLoading || isPersonalisedSearchesTagsLoading);\n\n const moveTrendingSearchesToPersonalised =\n showPersonalisedTags && showPersonalisedSearchesFallback;\n\n const showTrendingBrands = !isLoggedIn || !isPersonalisedSuggestionsEnabled;\n\n const showTrendingSearchesInHeader =\n !isCampaignMode && isDesktop && !moveTrendingSearchesToPersonalised;\n const showTrendingSearchesBelowHeader =\n !isCampaignMode && !isDesktop && !moveTrendingSearchesToPersonalised;\n\n const showRecentSearchesInHeader = !isCampaignMode && !isMobile;\n const showRecentSearchesBelowHeader = !isCampaignMode && isMobile;\n\n return (\n \n \n \n \n
    \n \n {showRecentSearchesBelowHeader && (\n
    \n \n
    \n )}\n {showTrendingSearchesBelowHeader && (\n
    \n \n
    \n )}\n {showPersonalisedTags && (\n
    \n \n
    \n )}\n {showTrendingBrands && (\n
    \n \n
    \n )}\n
    \n \n \n \n
    \n
    \n );\n}\n\nStartPage.propTypes = {\n pageType: PropTypes.string.isRequired\n};\n\nexport default StartPage;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n useTranslator,\n useCurrentLanguage,\n useUrlLocalizer\n} from 'tradera-lang/translate';\nimport {\n fetchCartData,\n removeItemsFromCart,\n setCartItemQuantity,\n confirmCartPurchase,\n startOffPlatformCheckout,\n createUncommittedPurchaseOrder\n} from 'tradera-state/views/cart/actions';\nimport cookieUtil from 'tradera-utils/cookie';\nimport SiteSubheader from 'tradera-components/site-subheader/site-subheader';\nimport Breadcrumbs from 'tradera-components/breadcrumbs/breadcrumbs';\nimport { formatPrice } from '@tradera/blueprint/utils';\nimport { LocalLoader } from 'tradera-components/loader';\nimport { getShippingDisplayText } from 'tradera-helpers/shipping-display-text';\n\nimport TopDescription from '../components/vip/bidding/bin-modal/bin-modal-top-description';\nimport SellerName from '../components/vip/bidding/bin-modal/bin-modal-seller-name';\nimport ItemDisplay from '../components/vip/bidding/bin-modal/bin-modal-item-display';\nimport ShippingDisplay from '../components/vip/bidding/bin-modal/bin-modal-shipping-display';\nimport PaymentSummary from '../components/vip/bidding/bin-modal/bin-modal-payment-summary';\nimport BottomButtons from '../components/vip/bidding/bin-modal/bin-modal-bottom-buttons';\nimport {\n Separator,\n BigSeparator\n} from '../components/vip/bidding/bin-modal/bin-modal';\nimport { CART_ID } from 'tradera-constants/cookies';\nimport uiActions from 'tradera-state/ui/actions';\nimport { selectMemberId } from 'tradera-state/member/selectors';\nimport { BID_VALIDATION_RESULTS } from '../components/vip/api/vip-api-constants';\nimport './cart-page.scss';\n\nconst mapShippingOption = (ship, t) => {\n return {\n displayText: getShippingDisplayText(ship.shippingType, t),\n cost: ship.shippingCost,\n toCountryCodeIso2: ship.toCountryCode\n };\n};\n\nconst hasTraderaPay = paymentOptions =>\n paymentOptions.some(option => option.paymentType === 'Braintree');\n\nconst CartPage = ({ history, location }) => {\n const cartId = cookieUtil.readCookie(CART_ID);\n const fromAddItem =\n new URLSearchParams(location.search).get('source') === 'addItem';\n const dispatch = useDispatch();\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n\n const { language } = useCurrentLanguage();\n\n const memberId = useSelector(selectMemberId);\n const { isFetching, merchantPreOrders, errors } = useSelector(\n state => state.views.cart\n );\n const preferredCurrency = useSelector(\n state => state.multiCurrency.preferredCurrency\n );\n const buyerCountryCode = useSelector(\n state => state.shippingRegion.shippingCountry.countryCodeIso2\n );\n\n useEffect(() => {\n dispatch(fetchCartData(cartId));\n }, [dispatch, cartId]);\n\n const goToSeller = (merchantId, cleanedAlias) => {\n window.location = toLocalizedUrl(\n `/profile/items/${merchantId}/${cleanedAlias}`\n );\n };\n\n const onConfirm = order => {\n if (!hasTraderaPay(order.paymentOptions) && !order.isSellpyCheckout) {\n dispatch(\n startOffPlatformCheckout(order.orderRows[0].itemId, () => {\n window.location = toLocalizedUrl('/shopping/cartcheckout');\n })\n );\n return;\n }\n\n if (!memberId) {\n return dispatch(\n uiActions.signIn({ redirectUrl: '/shopping/cart' })\n );\n }\n\n const shopItems = order.orderRows.map(item => {\n return {\n itemId: item.itemId,\n expectedItemPrice: item.unitPrice,\n quantity: item.quantity\n };\n });\n if (order.isSellpyCheckout) {\n dispatch(\n confirmCartPurchase(\n cartId,\n order.id,\n shopItems,\n transactionId => {\n window.location = `/Shopping/Summary/Index?transactionId=${transactionId}`;\n }\n )\n );\n } else if (order.isCommitOnPayment) {\n dispatch(\n createUncommittedPurchaseOrder(\n cartId,\n order.id,\n order.merchantMemberId,\n shopItems,\n purchaseOrderId => {\n window.location = `/Shopping/Checkout/SelectPayment?purchaseOrderId=${purchaseOrderId}`;\n }\n )\n );\n } else {\n dispatch(\n confirmCartPurchase(\n cartId,\n order.id,\n shopItems,\n transactionId => {\n window.location = `/Shopping/Checkout/SelectPaymentForTransaction?transactionId=${transactionId}`;\n }\n )\n );\n }\n };\n\n const isCheckoutDisabled = order => {\n return (\n order.orderRows.some(\n row =>\n (row.quantityInShop !== undefined &&\n row.quantity > row.quantityInShop) ||\n row.isUnavailable\n ) || errors[order.id]\n );\n };\n\n const changeItemQuantity = (itemId, quantity) => {\n if (quantity === 0) {\n dispatch(removeItemsFromCart(cartId, [itemId]));\n } else {\n dispatch(setCartItemQuantity(cartId, itemId, quantity));\n }\n };\n\n return (\n
    \n \n \n \n
    \n {isFetching && }\n\n {!isFetching && fromAddItem && (\n \n \n <- {t('checkout_bin_button1')}\n \n \n <- {t('checkout_bin_button1')}\n \n
    \n )}\n\n {!isFetching && merchantPreOrders.length === 0 && (\n
    \n {t('cartCheckoutOverview_cartEmpty')}\n
    \n )}\n\n {merchantPreOrders.length > 0 && (\n
    \n \n
    \n )}\n\n {merchantPreOrders.map(order => {\n const shippingOptions = order.shippingOptions.map(option =>\n mapShippingOption(option, t)\n );\n const totalPrice = order.orderRows.reduce(\n (sum, row) => sum + row.unitPrice * row.quantity,\n 0\n );\n const shippingPriceRange =\n order.isSellpyCheckout && order.shippingPriceRange\n ? {\n minPrice: order.shippingPriceRange.minPrice,\n maxPrice: Math.min(\n order.shippingPriceRange.maxPrice,\n 99\n )\n }\n : order.shippingPriceRange;\n return (\n \n \n\n {order.orderRows.map((row, index) => (\n \n changeItemQuantity(\n row.itemId,\n parseInt(event.target.value)\n )\n }\n itemUrl={toLocalizedUrl(row.itemUrl)}\n isUnavailable={row.isUnavailable}\n />\n ))}\n\n \n \n\n \n\n \n\n \n\n \n goToSeller(\n order.merchantMemberId,\n order.cleanedAlias\n ),\n text: t('checkout_bin_keepShopping', {\n seller: order.merchantAlias\n }),\n className: 'btn-primary'\n }}\n rightButton={{\n action: () => onConfirm(order),\n text:\n (hasTraderaPay(order.paymentOptions) &&\n !order.isCommitOnPayment) ||\n order.isSellpyCheckout\n ? t('checkout_bin_title')\n : t('cart_offplatform_continue'),\n className: 'btn-success',\n disabled: isCheckoutDisabled(order)\n }}\n />\n\n {errors && errors[order.id] && (\n \n )}\n
    \n );\n })}\n \n \n );\n};\n\nconst CartError = ({ error }) => {\n const { t } = useTranslator();\n\n const mapErrorCode = errorCode => {\n switch (errorCode) {\n case BID_VALIDATION_RESULTS.BIDDER_IS_BLOCKED:\n return 'checkout_item_bidderIsBlocked';\n default:\n return 'syi_publish_error_unknownerror';\n }\n };\n const errorMessage = mapErrorCode(error);\n\n return (\n
    \n
    \n

    {t(errorMessage)}

    \n
    \n
    \n );\n};\n\nexport default CartPage;\n","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useLocation } from 'react-router';\nimport pageActions from 'tradera-state/page/actions';\nimport { getCurrentPageFromRoute } from 'tradera-helpers/get-current-page-helper';\n\nexport const PageMeta = ({ routeMap }) => {\n const location = useLocation();\n const dispatch = useDispatch();\n\n useEffect(() => {\n const page = getCurrentPageFromRoute(routeMap, location);\n if (page) {\n const pageMetaData = {\n type: page.pageType\n };\n dispatch(pageActions.setPageMeta(pageMetaData));\n }\n }, [dispatch, location, routeMap]);\n\n return null;\n};\n","/* eslint-disable react/display-name */\nimport React, { Suspense, lazy } from 'react';\nimport qs from 'qs';\nimport { Redirect } from 'react-router';\nimport PAGE_TYPES from 'tradera-constants/page-types';\nimport { SUPPORTED_LANGUAGES } from 'tradera-utils/url';\nimport { NotFoundError } from 'tradera-components/errors';\nimport Loader from 'tradera-components/loader';\nimport StartPage from './pages/start-page'; // Startpage is included for speed\nimport CartPage from './pages/cart-page';\nimport { RouteMapRoutes } from 'tradera-components/route-map-routes/route-map-routes';\nimport { PageMeta } from 'tradera-components/page-meta/page-meta';\nimport GtmService from 'static/script/app/ui/google-tagmanager-service';\n\n// Lacy load other pages\nconst BrandPage = lazy(() =>\n import(\n /* webpackChunkName: \"brand-page\" */ 'tradera-apps/tradera/pages/brand-page'\n )\n);\nconst BrandListPage = lazy(() =>\n import(\n /* webpackChunkName: \"brand-list-page\" */ 'tradera-apps/tradera/pages/brand-list-page'\n )\n);\nconst CampaignPage = lazy(() =>\n import(\n /* webpackChunkName: \"campaign-page\" */ 'tradera-apps/tradera/pages/campaign-page'\n )\n);\nconst CategoryListPage = lazy(() =>\n import(\n /* webpackChunkName: \"category-list-page\" */ 'tradera-apps/tradera/pages/category-list-page'\n )\n);\nconst CategoryPage = lazy(() =>\n import(\n /* webpackChunkName: \"category-page\" */ 'tradera-apps/tradera/pages/category-page'\n )\n);\nconst CheckoutPage = lazy(() =>\n import(\n /* webpackChunkName: \"checkout-page\" */ 'tradera-apps/tradera/pages/checkout-page'\n )\n);\nconst CheckoutConfirmationPage = lazy(() =>\n import(\n /* webpackChunkName: \"checkout-confirmation-page\" */ 'tradera-apps/tradera/pages/checkout-confirmation-page'\n )\n);\nconst FavouriteSellersPage = lazy(() =>\n import(\n /* webpackChunkName: \"favourite-sellers\" */ 'tradera-apps/tradera/pages/favourite-sellers-page'\n )\n);\nconst Landing_GantXTradera = lazy(() =>\n import(\n /* webpackChunkName: \"landing_gantxtradera\" */ 'tradera-apps/tradera/pages/landing/gant-x-tradera'\n )\n);\nconst Landing_StadiumXTradera = lazy(() =>\n import(\n /* webpackChunkName: \"landing-stadiumxtradera\" */ 'tradera-apps/tradera/pages/landing/stadium-x-tradera'\n )\n);\nconst ProfilePage = lazy(() =>\n import(\n /* webpackChunkName: \"profile-page\" */ 'tradera-apps/tradera/pages/profile-page'\n )\n);\nconst ShippingInfoPage = lazy(() =>\n import(\n /* webpackChunkName: \"shippingcalculator\" */ 'tradera-apps/tradera/pages/shipping-info-page'\n )\n);\nconst CombinedShippingInfoPage = lazy(() =>\n import(\n /* webpackChunkName: \"combined-shipping\" */ 'tradera-apps/tradera/pages/combined-shipping-info'\n )\n);\nconst RecommendationsPage = lazy(() =>\n import(\n /* webpackChunkName: \"profile-page\" */ 'tradera-apps/tradera/pages/recommendations-page'\n )\n);\nconst ReportItemPage = lazy(() =>\n import(\n /* webpackChunkName: \"report-item-page\" */ 'tradera-apps/tradera/pages/report-item-page'\n )\n);\nconst SearchPage = lazy(() =>\n import(\n /* webpackChunkName: \"search-page\" */ 'tradera-apps/tradera/pages/search-page'\n )\n);\nconst TraderaShopPage = lazy(() =>\n import(\n /* webpackChunkName: \"tradera-shop\" */ 'tradera-apps/tradera/pages/tradera-shop-page'\n )\n);\nconst VerifyPage = lazy(() =>\n import(\n /* webpackChunkName: \"verify-page\" */ 'tradera-apps/tradera/pages/verify-page'\n )\n);\nconst LiveShoppingListPage = lazy(() =>\n import(\n /* webpackChunkName: \"live-shopping-list-page\" */ 'tradera-apps/tradera/pages/live-shopping-list-page'\n )\n);\n\nconst LiveShoppingDetailsPage = lazy(() =>\n import(\n /* webpackChunkName: \"live-shopping-details-page\" */ 'tradera-apps/tradera/pages/live-shopping-details-page'\n )\n);\n\nconst LiveShoppingSignUpPage = lazy(() =>\n import(\n /* webpackChunkName: \"live-shopping-sign-up-page\" */ 'tradera-apps/tradera/pages/live-shopping-sign-up-page'\n )\n);\n\nconst ViewItemPage = lazy(() =>\n import(\n /* webpackChunkName: \"view-item-page\" */ 'tradera-apps/tradera/pages/view-item-page'\n )\n);\n\nconst UPI = lazy(() =>\n import(/* webpackChunkName: \"upi\" */ 'tradera-apps/tradera/pages/upi')\n);\n\nconst INR = lazy(() =>\n import(/* webpackChunkName: \"inr\" */ 'tradera-apps/tradera/pages/inr')\n);\n\nconst Cause = lazy(() =>\n import(/* webpackChunkName: \"cause\" */ 'tradera-apps/tradera/pages/cause')\n);\n\nconst Causes = lazy(() =>\n import(/* webpackChunkName: \"causes\" */ 'tradera-apps/tradera/pages/causes')\n);\n\nconst CausesInfo = lazy(() =>\n import(\n /* webpackChunkName: \"causes-info\" */ 'tradera-apps/tradera/pages/causes-info'\n )\n);\n\nexport const OPTIONAL_LANG = `/:lang(${SUPPORTED_LANGUAGES.join('|')})?`;\n\nexport const routeMap = {\n startPage: {\n path: [`${OPTIONAL_LANG}/`, `${OPTIONAL_LANG}`],\n pageType: PAGE_TYPES.START_PAGE,\n strict: true,\n exact: true,\n onLoaded: () => {\n GtmService.trackGtmEvent('viewHomePage');\n },\n render: props => \n },\n viewItemPage: {\n path: `${OPTIONAL_LANG}/item/:categoryId/:itemId/:itemSlug`,\n pageType: PAGE_TYPES.VIEW_ITEM_PAGE,\n mustLoadDataBeforePageTracking: true,\n render: props => \n },\n traderaShopPage: {\n path: '/:lang(en|de|da)?/tradera-shop/:urlSlug',\n pageType: PAGE_TYPES.TRADERA_SHOP_PAGE,\n render: props => \n },\n causesInfoPage: {\n path: `${OPTIONAL_LANG}/charity/how-to-become`,\n pageType: PAGE_TYPES.DEFAULT,\n render: props => \n },\n causesPage: {\n path: `${OPTIONAL_LANG}/causes`,\n pageType: PAGE_TYPES.DEFAULT,\n render: props => \n },\n causePage: {\n path: `${OPTIONAL_LANG}/cause/:causeSlug`,\n pageType: PAGE_TYPES.CUSTOM_RESULT_PAGE,\n mustLoadDataBeforePageTracking: true,\n render: props => \n },\n upiPage: {\n path: `${OPTIONAL_LANG}/resolution/UPI2/:purchaseOrderId`,\n pageType: PAGE_TYPES.DEFAULT,\n render: props => \n },\n inrPage: {\n path: `${OPTIONAL_LANG}/resolution/INR2/:purchaseOrderId`,\n pageType: PAGE_TYPES.DEFAULT,\n render: props => \n },\n brandPage: {\n path: `${OPTIONAL_LANG}/brand/:brand`,\n pageType: PAGE_TYPES.BRAND_PAGE,\n render: props => {\n const brand = props.match.params.brand;\n return ;\n }\n },\n brandListPage: {\n path: `${OPTIONAL_LANG}/brands/`,\n pageType: PAGE_TYPES.BRAND_LIST_PAGE,\n render: props => \n },\n campaignPage: {\n path: [\n `${OPTIONAL_LANG}/campaign/:campaignOrCharityId`,\n `${OPTIONAL_LANG}/charity/:campaignOrCharityId`\n ],\n pageType: PAGE_TYPES.CUSTOM_RESULT_PAGE,\n mustLoadDataBeforePageTracking: true,\n render: props => \n },\n categoryListPage: {\n path: `${OPTIONAL_LANG}/kategorier`,\n pageType: PAGE_TYPES.CATEGORY_LIST,\n render: props => \n },\n checkoutConfirmationPage: {\n path: `${OPTIONAL_LANG}/shopping/ordercheckout/confirmation/:purchaseOrderId`,\n pageType: PAGE_TYPES.DEFAULT,\n render: props => \n },\n checkoutPage: {\n path: `${OPTIONAL_LANG}/shopping/ordercheckout/:purchaseOrderId`,\n pageType: PAGE_TYPES.DEFAULT,\n render: props => (\n \n )\n },\n cartPage: {\n path: `${OPTIONAL_LANG}/shopping/cart`,\n pageType: PAGE_TYPES.DEFAULT,\n render: props => \n },\n searchResultPage: {\n path: `${OPTIONAL_LANG}/search`,\n pageType: PAGE_TYPES.SEARCH_RESULT_PAGE,\n mustLoadDataBeforePageTracking: true,\n onLoaded: getState => {\n const { itemsById, queryParams } = getState().discover;\n GtmService.trackGtmEvent('search', {\n searchTerm: queryParams.q,\n itemsById\n });\n },\n render: props => \n },\n favouriteSellersPage: {\n path: '/:lang(sv|en|de|da)?/favourite-sellers',\n pageType: PAGE_TYPES.FAVOURITE_SELLERS_PAGE,\n render: props => \n },\n landing_GantXTradera: {\n path: `${OPTIONAL_LANG}/gantxtradera`,\n pageType: PAGE_TYPES.DEFAULT,\n render: props => \n },\n landing_StadiumXTradera: {\n path: `${OPTIONAL_LANG}/stadiumxtradera`,\n pageType: PAGE_TYPES.DEFAULT,\n render: props => \n },\n liveShoppingSignUpPage: {\n path: '/:lang(en|de|da)?/live/sign-up',\n pageType: PAGE_TYPES.LIVE_SHOPPING,\n exact: true,\n render: props => \n },\n liveShoppingDetailsPage: {\n path: '/:lang(en|de|da)?/live/:liveId',\n pageType: PAGE_TYPES.LIVE_SHOPPING,\n render: props => \n },\n liveShoppingListPage: {\n path: '/:lang(en|de|da)?/live',\n pageType: PAGE_TYPES.LIVE_SHOPPING,\n render: props => \n },\n profilePage: {\n path: `${OPTIONAL_LANG}/profile/:profilePageType(items|feedback|information)/:memberId/:aliasSlug`,\n pageType: PAGE_TYPES.PROFILE_PAGE,\n mustLoadDataBeforePageTracking: true,\n render: props => \n },\n recommendationsPage: {\n path: `${OPTIONAL_LANG}/ma/endless-recommendation/:recommendationModeId(selected|endingSoon)`,\n pageType: PAGE_TYPES.ENDLESS_RECOMMENDATIONS_PAGE,\n render: props => \n },\n reportItemPage: {\n path: `${OPTIONAL_LANG}/report-item/:itemId`,\n pageType: PAGE_TYPES.REPORT_ITEM_PAGE,\n render: props => \n },\n verifyPage: {\n path: `${OPTIONAL_LANG}/verify/bankid`,\n pageType: PAGE_TYPES.DEFAULT,\n render: props => (\n \n )\n },\n CombinedShippingInfoPage: {\n path: `${OPTIONAL_LANG}/frakt/samfrakt`,\n pageType: PAGE_TYPES.DEFAULT,\n render: props => \n },\n ShippingInfoPage: {\n path: `${OPTIONAL_LANG}/frakt`,\n pageType: PAGE_TYPES.DEFAULT,\n render: props => \n },\n categoryResultPage: {\n path: [`${OPTIONAL_LANG}/category/:categoryId`],\n pageType: PAGE_TYPES.CATEGORY_RESULT_PAGE,\n exact: true,\n mustLoadDataBeforePageTracking: true,\n render: props => \n },\n legacyCategoryResultPage: {\n path: [`${OPTIONAL_LANG}/:categoryNameAndId`],\n pageType: PAGE_TYPES.CATEGORY_RESULT_PAGE,\n exact: true,\n render: props => {\n const s = props.match.params.categoryNameAndId;\n const divider = s.indexOf('_') > -1 ? '_' : '-';\n const parts = s.split(divider);\n const categoryId = parts.pop();\n return (\n \n );\n }\n },\n notFoundPage: {\n path: '*',\n pageType: PAGE_TYPES.ERROR_PAGE,\n exact: true,\n render: () => \n }\n};\n\nconst SuspenseFallback = () => {\n window.scrollTo(0, 0);\n return ;\n};\n\nconst Routes = () => {\n return (\n }>\n \n \n \n );\n};\n\nexport default Routes;\n","import qs from 'qs';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport initData from 'init-data';\n\nconst checkUserMessagingParticipation = sellerId => {\n return fetch(ENDPOINTS.TOUCHWEB_URL + 'messaging/participation/' + sellerId)\n .then(sellerResponse => sellerResponse.json())\n .then(data => 'participates' in data && data.participates);\n};\n\nconst setUserMessagingParticipation = async messagingSettings => {\n return fetch(\n ENDPOINTS.TOUCHWEB_URL + 'my/profile/messaging-participation',\n {\n method: 'POST',\n credentials: 'same-origin',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(messagingSettings)\n }\n )\n .then(userResponse => userResponse.json())\n .then(data => data);\n};\n\nconst getUserMessagingEmailSetting = async () => {\n return fetch(ENDPOINTS.TOUCHWEB_URL + 'api/messaging/emailnotify', {\n credentials: 'include'\n })\n .then(userResponse => userResponse.json())\n .then(data => data);\n};\n\nconst setUserMessagingEmailSetting = async setting => {\n return fetch(\n ENDPOINTS.TOUCHWEB_URL +\n 'api/messaging/emailnotify?emailNotify=' +\n setting,\n {\n method: 'POST',\n credentials: 'same-origin',\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n )\n .then(userResponse => userResponse.json())\n .then(data => data);\n};\n\n/**\n * Returns base path for a thread\n *\n * @param {number} u1\n * @param {number} u2\n * @param {number} l\n * @param {object} [options]\n * @param {boolean} [options.singleThread] - Open in single thread mode\n * @param {boolean} [options.openForm] - Open message form right away\n * @param {string} [options.source] - Message source info for tracking\n * @returns {string}\n */\nconst getMessagingThreadLink = (u1, u2, l, options) => {\n const optionsWithDefaults = {\n singleThread: false,\n openForm: false,\n ...options\n };\n const { singleThread, ...queryParams } = optionsWithDefaults;\n return (\n (singleThread ? '/thread/' : '/threads/') +\n 'u' +\n Math.min(u1, u2) +\n '_u' +\n Math.max(u1, u2) +\n '_l' +\n l +\n qs.stringify(queryParams, { addQueryPrefix: true })\n );\n};\n\n/**\n * Returns the path to a thread on Tradera's messaging page\n *\n * @param {number} u1\n * @param {number} u2\n * @param {number} l\n * @param {object} [options]\n * @returns {string}\n */\nconst getMessagingPageLink = (u1, u2, l, options) => {\n return (\n ENDPOINTS.TOUCHWEB_URL +\n 'messaging' +\n (u1 && u2 && l ? getMessagingThreadLink(u1, u2, l, options) : '')\n );\n};\n\n/**\n * Get messaging url\n *\n * @returns {string}\n */\nconst getMessagingRemoteUrl = () => {\n return initData.messagingIframeUrl;\n};\n\nexport {\n checkUserMessagingParticipation,\n setUserMessagingParticipation,\n getUserMessagingEmailSetting,\n setUserMessagingEmailSetting,\n getMessagingPageLink,\n getMessagingThreadLink,\n getMessagingRemoteUrl\n};\n","/**\n * @param {string} redirectURL\n */\nexport const getReturnUrl = redirectURL =>\n `?returnUrl=${encodeURIComponent(\n redirectURL\n ? redirectURL\n : window.location.pathname + window.location.hash\n )}`;\n","import React from 'react';\nimport PenIcon from '@tradera/blueprint/theme/icons2/pen.svg?jsx';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\n\nconst SignUpLink = ({ clickAction, transparentHeader, isForeignVisitor }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const register = t('siteHeader_register');\n const url = isForeignVisitor\n ? toLocalizedUrl('/register/foreign-private')\n : toLocalizedUrl('/register');\n\n return (\n \n \n \n {register}\n \n \n );\n};\n\nexport default React.memo(SignUpLink);\n","import draftActions from './draft-actions';\nimport { throttledFetchCategoryAttributeSuggestions } from './attributes-actions';\nimport { selectCategory } from 'tradera-state/views/syi/selectors/category-selectors';\n\nexport default {\n setShortDescription: shortDescription => (dispatch, getState) => {\n dispatch({\n type: 'SET_SHORT_DESCRIPTION',\n payload: shortDescription\n });\n dispatch(draftActions.updateDraftCanBeResumed());\n var featureSwitches = getState().environment.featureSwitches;\n if (featureSwitches['syi-attributes']) {\n dispatch(\n throttledFetchCategoryAttributeSuggestions(\n selectCategory(getState()).draftCategoryId,\n shortDescription\n )\n );\n }\n },\n reset: () => dispatch => {\n dispatch({\n type: 'RESET_SHORT_DESCRIPTION'\n });\n dispatch(draftActions.updateDraftCanBeResumed());\n }\n};\n","export const selectCategory = state => state.views.syi.category;\n","//jshint module : true\nimport payments from '../actions/payments-actions';\n\nconst initState = {\n bankIdVerification: {\n type: '',\n shouldInitBankID: false,\n bankIdInProgress: false,\n isAutoStartAllowed: false,\n autoStartToken: '',\n completeText: '',\n verificationText: '',\n bankIdErrorMessage: '',\n errorCount: 0,\n requireBankIdVerification: true\n },\n swishDetails: {\n newNumber: '',\n verifyCode: '',\n isValid: false,\n errorMessage: '',\n isCompany: false\n },\n bankAccountDetails: {\n newClearingNumber: '',\n newAccountNumber: '',\n bankAccountSaved: false,\n bankUnknown: false,\n errorMessage: '',\n hasFailedPayouts: false,\n isMemberSetForPayout: false\n },\n tink: {\n tinkOnboarding: false,\n iframeUrl: '',\n shouldInitTink: false,\n accounts: null,\n account: null,\n errorMessage: ''\n },\n payouts: [],\n pagination: {},\n paginationLinks: []\n};\n\nexport default (state = initState, action) => {\n switch (action.type) {\n // Init\n case payments.actionTypes.INIT_DATA_LOADED:\n var swishApp2AppMember =\n action.payload.initData.pageSpecificData.swishApp2AppMember;\n var braintreeMember =\n action.payload.initData.pageSpecificData.braintreeMember;\n var onboardToHyperwalletProblems =\n action.payload.initData.pageSpecificData\n .onboardToHyperwalletProblems;\n var isAutoStartAllowed =\n action.payload.initData.pageSpecificData.isAutoStartAllowed;\n var requireBankIdVerification =\n action.payload.initData.pageSpecificData\n .requireBankIdVerification;\n var isCompany = action.payload.initData.pageSpecificData.isCompany;\n var tinkLink = action.payload.initData.pageSpecificData.tinkLink;\n var tinkOnboarding =\n action.payload.initData.featureSwitches['tink-onboarding'];\n var hyperwalletPayeeVerification =\n action.payload.initData.pageSpecificData\n .hyperwalletPayeeVerification;\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n isAutoStartAllowed: isAutoStartAllowed,\n requireBankIdVerification: requireBankIdVerification\n },\n swishDetails: {\n ...state.swishDetails,\n number: swishApp2AppMember.phoneNumber,\n newNumber:\n swishApp2AppMember.phoneNumber ||\n swishApp2AppMember.suggestedPhoneNumber,\n enabled: swishApp2AppMember.enabled,\n state: swishApp2AppMember.state,\n isCompany: isCompany,\n checkMark:\n swishApp2AppMember.state == 'Step3' ? 'Completed' : ''\n },\n bankAccountDetails: {\n ...state.bankAccountDetails,\n maskedBankAccountNumber:\n braintreeMember.maskedBankAccountNumber,\n isBankAccountSupplied:\n braintreeMember.isBankAccountSupplied,\n hasFailedPayouts: braintreeMember.hasFailedPayouts,\n isMemberSetForPayout: braintreeMember.isMemberSetForPayout,\n onboardToHyperwalletProblems: onboardToHyperwalletProblems,\n checkMark:\n !braintreeMember.hasFailedPayouts &&\n braintreeMember.isBankAccountSupplied\n ? 'Completed'\n : ''\n },\n tink: {\n ...state.tink,\n tinkOnboarding: tinkOnboarding,\n iframeUrl: tinkLink\n },\n hyperwalletPayeeVerification\n };\n // Swish\n case payments.actionTypes.SAVE_PHONENUMBER:\n return {\n ...state,\n swishDetails: {\n ...state.swishDetails,\n number: action.payload,\n enabled: false,\n verifyCode: '',\n state: 'Step2',\n checkMark: '',\n errorMessage: ''\n }\n };\n case payments.actionTypes.DELETE_PHONENUMBER:\n return {\n ...state,\n swishDetails: {\n ...state.swishDetails,\n enabled: false,\n number: '',\n verifyCode: '',\n state: 'Step1',\n checkMark: '',\n errorMessage: ''\n }\n };\n case payments.actionTypes.UPDATE_PHONENUMBER:\n return {\n ...state,\n swishDetails: {\n ...state.swishDetails,\n newNumber: action.payload.number,\n checkMark: '',\n errorMessage: ''\n }\n };\n case payments.actionTypes.UPDATE_VERIFYCODE:\n return {\n ...state,\n swishDetails: {\n ...state.swishDetails,\n verifyCode: action.payload,\n checkMark: '',\n errorMessage: ''\n }\n };\n case payments.actionTypes.SWISH_ENABLED:\n return {\n ...state,\n swishDetails: {\n ...state.swishDetails,\n enabled: true,\n state: 'Step3',\n checkMark: 'Completed',\n errorMessage: ''\n }\n };\n case payments.actionTypes.INVALID_PHONENUMBER:\n case payments.actionTypes.INVALID_VERIFYCODE:\n case payments.actionTypes.SWISH_ERROR:\n return {\n ...state,\n swishDetails: {\n ...state.swishDetails,\n errorMessage: action.payload\n }\n };\n // BankAccount\n case payments.actionTypes.UPDATE_CLEARING_NUMBER:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n newClearingNumber: action.payload.newClearingNumber,\n checkMark: '',\n bankUnknown: false,\n errorMessage: ''\n }\n };\n case payments.actionTypes.UPDATE_ACCOUNT_NUMBER:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n newAccountNumber: action.payload.newAccountNumber,\n checkMark: '',\n bankUnknown: false,\n errorMessage: ''\n }\n };\n case payments.actionTypes.DELETE_BANK_ACCOUNT:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n maskedBankAccountNumber: '',\n isBankAccountSupplied: false,\n newClearingNumber: '',\n newAccountNumber: '',\n checkMark: '',\n errorMessage: ''\n }\n };\n case payments.actionTypes.INVALID_CLEARINGNUMBER:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n errorMessage: action.payload\n }\n };\n case payments.actionTypes.INVALID_BANKACCOUNTNUMBER:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n errorMessage: action.payload\n }\n };\n case payments.actionTypes.BANK_ERROR:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n errorMessage: action.payload\n }\n };\n case payments.actionTypes.BANK_ACCOUNT_SAVED:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n bankAccountSaved: true,\n isBankAccountSupplied: true,\n maskedBankAccountNumber: action.payload,\n checkMark: 'Completed',\n errorMessage: ''\n }\n };\n case payments.actionTypes.BANK_NOT_MATCHED:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n bankUnknown: true\n }\n };\n case payments.actionTypes.IGNORE_BANK_NOT_MATCHED:\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n bankUnknown: false\n }\n };\n // Tink\n case payments.actionTypes.INIT_TINK:\n return {\n ...state,\n tink: {\n ...state.tink,\n shouldInitTink: true,\n errorMessage: ''\n }\n };\n case payments.actionTypes.CANCEL_TINK:\n return {\n ...state,\n tink: {\n ...state.tink,\n shouldInitTink: false,\n accounts: null\n }\n };\n case payments.actionTypes.SHOW_BANK_ACCOUNTS:\n return {\n ...state,\n tink: {\n ...state.tink,\n accounts: action.payload\n }\n };\n case payments.actionTypes.SELECT_BANK_ACCOUNT:\n return {\n ...state,\n tink: {\n ...state.tink,\n account: action.payload\n }\n };\n case payments.actionTypes.TINK_COMPLETED:\n return {\n ...state,\n tink: {\n ...state.tink,\n shouldInitTink: false,\n accounts: null\n },\n bankAccountDetails: {\n ...state.bankAccountDetails,\n bankAccountSaved: true,\n isBankAccountSupplied: true,\n maskedBankAccountNumber: action.payload,\n checkMark: 'Completed'\n }\n };\n case payments.actionTypes.TINK_ERROR:\n return {\n ...state,\n tink: {\n ...state.tink,\n errorMessage: action.payload\n }\n };\n // BankId\n case payments.actionTypes.SKIP_BANKID_AUTH:\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n type: action.payload.type,\n shouldInitBankID: false,\n bankIdCompleted: true,\n completeText: action.payload.completeText,\n verificationText: action.payload.verificationText,\n bankIdErrorMessage: '',\n requireBankIdVerification: false\n }\n };\n case payments.actionTypes.BEGIN_BANKID_AUTH:\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n type: action.payload.type,\n shouldInitBankID: true,\n bankIdCompleted: false,\n completeText: action.payload.completeText,\n verificationText: action.payload.verificationText,\n bankIdErrorMessage: ''\n }\n };\n case payments.actionTypes.CANCEL_BANKID_AUTH:\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n type: '',\n shouldInitBankID: false,\n bankIdInProgress: false,\n bankIdCompleted: false,\n bankIdErrorMessage: ''\n }\n };\n case payments.actionTypes.BANKID_IN_PROGRESS:\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n bankIdInProgress: true,\n autoStartToken: action.payload.autoStartToken\n }\n };\n case payments.actionTypes.BANKID_ERROR:\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n bankIdErrorMessage: action.payload,\n bankIdInProgress: false,\n bankIdCompleted: false\n }\n };\n case payments.actionTypes.BANKID_COMPLETED:\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n shouldInitBankID: false,\n bankIdInProgress: false,\n bankIdCompleted: true\n }\n };\n // Payouts\n case payments.actionTypes.PAYOUTS_LOADED:\n return {\n ...state,\n payouts: action.payload.list,\n pagination: action.payload.pagination,\n paginationLinks: action.payload.paginationLinks\n };\n case payments.actionTypes.PAYOUTS_ERROR:\n return {\n ...state\n };\n // Default\n default:\n return state;\n }\n};\n\nexport const selectPaymentsState = state => state.views.myTradera.payments;\n","import { toLocalizedRiotUrl } from './../utils/language';\nconst config =\n window && window.sellingGlobalConfig\n ? { ...window.sellingGlobalConfig }\n : {};\n\nconfig.imageSizeX = 200;\nconfig.imageSizeY = 150;\nconfig.maxTemplates = 100;\nconfig.domainNameCategoryId = 344477;\nconfig.URL_BASE = toLocalizedRiotUrl('/selling/');\nconfig.RIOT_MOUNTPOINT = 'syi';\n\nexport default config;\n","import riot from 'riot';\nexport default riot.observable(new (function() {})());\n","import React from 'react';\n\nconst ErrorContainer = ({\n children,\n className = '',\n style = {},\n ...otherProps\n}) => (\n \n
    {children}
    \n \n);\n\nexport default ErrorContainer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport CartIcon from '@tradera/blueprint/theme/icons2/cart.svg?jsx';\nimport { useTranslator, useUrlLocalizer } from 'tradera-lang/translate';\n\nconst CartLink = ({ formattedCartItems, cartSum, transparentHeader }) => {\n const { t } = useTranslator();\n const { toLocalizedUrl } = useUrlLocalizer();\n const cartUrl = toLocalizedUrl('/shopping/cart');\n return (\n
    \n \n \n {formattedCartItems}\n \n
    \n \n
    \n
    \n \n {t('siteHeader_cart')}\n \n \n {cartSum} kr\n \n
    \n \n
    \n );\n};\n\nCartLink.propTypes = {\n formattedCartItems: PropTypes.number,\n cartSum: PropTypes.string\n};\n\nexport default React.memo(CartLink);\n","import React from 'react';\nimport { useTranslator } from 'tradera-lang/translate';\n\nconst NewTodayLabel = ({ className }) => {\n const { t } = useTranslator();\n return (\n \n {t('itemCard_isNewToday')}\n \n );\n};\n\nexport default NewTodayLabel;\n","export default initData => {\n return {\n isTcfLoaded: false,\n gpt: 'gptData' in initData ? initData.gptData : null,\n adSenseQuery: '',\n adSenseShoppingPublisherId: ''\n };\n};\n","import { isMobile, isMobileSafari, isIOS } from 'react-device-detect';\n\nexport default initData => {\n const {\n debug,\n discoverEnabled,\n environment,\n enableTimeMetrics,\n enableFastClick,\n featureSwitches,\n isHybridAppContext,\n isNativeAppContext,\n isSinglePageApp,\n splitTests,\n splitTestGroups,\n version,\n environmentHash\n } = initData;\n return {\n debug,\n discoverEnabled,\n environment,\n enableTimeMetrics,\n enableFastClick,\n featureSwitches,\n environmentHash,\n isHybridAppContext,\n isInIframe: window.frameElement ? true : false,\n isIOS,\n isNativeAppContext,\n isMobileDevice: isMobile,\n isMobileSafari,\n isSpaNavigationEnabled:\n isSinglePageApp && !isHybridAppContext && !window.frameElement\n ? true\n : false, // No SPA navigation in native apps or iFrame\n splitTests,\n splitTestGroups,\n version\n };\n};\n","export default initData => {\n const {\n cleanedMemberAlias,\n facebookId,\n isLoggedIn,\n memberAlias,\n memberDetailedSellerRatingAverage,\n memberCountry,\n memberCountryCodeIso2,\n memberEmail,\n memberFirstName,\n memberId,\n memberHeroImage,\n memberLastName,\n memberBirthdate,\n paymentSettings = {}\n } = initData;\n return {\n cleanedMemberAlias,\n facebookId,\n geolocation: null,\n isLoggedIn,\n memberAlias,\n memberDetailedSellerRatingAverage,\n memberCountry,\n memberCountryCodeIso2,\n memberEmail,\n memberFirstName,\n memberId,\n memberHeroImage,\n memberLastName,\n memberBirthdate,\n paymentSettings\n };\n};\n","import cookieUtil from 'tradera-utils/cookie';\nimport { resolveCode, resolveCurrency } from './helpers';\n\nexport default initData => {\n const enabled =\n initData &&\n initData.featureSwitches &&\n initData.featureSwitches['multi-currency'] &&\n initData.memberCountry !== 'Sverige';\n const currencies = initData.currencies || [];\n const initialCurrencyCode = resolveCode(\n enabled,\n cookieUtil.readCookie('preferred_currency'),\n currencies\n );\n\n return {\n enabled,\n currencies,\n preferredCurrency: resolveCurrency(\n enabled,\n initialCurrencyCode,\n currencies\n )\n };\n};\n","const getInitialPreferredLanguage = (\n languageCodeIso2,\n availableLanguages,\n defaultLanguage\n) => {\n const availableIsoCodes = availableLanguages.map(\n lang => lang.languageCodeIso2\n );\n if (\n !!languageCodeIso2 &&\n availableIsoCodes.indexOf(languageCodeIso2) !== -1\n ) {\n return availableLanguages.find(\n l => l.languageCodeIso2 === languageCodeIso2\n );\n }\n\n return defaultLanguage;\n};\n\nexport default initData => {\n const shouldDisplayInHeader = initData.memberCountry !== 'Sverige';\n const shouldAlwaysDisplayInMenu = initData.memberCountry === 'Sverige';\n\n return {\n shouldDisplayInHeader,\n shouldAlwaysDisplayInMenu,\n preferred: getInitialPreferredLanguage(\n initData.languageCodeIso2,\n initData.availableLanguages,\n initData.defaultLanguage\n ),\n memberCountryCodeIso2: initData.memberCountryCodeIso2,\n available: initData.availableLanguages\n };\n};\n","export default initData => {\n return {\n allCategories: initData.allCategories || [],\n breadcrumbs: '',\n canonicalLink: '',\n metaDescription: initData.description || '',\n metaRobots: '',\n metaTitle: initData.title || '',\n metaTitleData: null,\n metaTitleKey: null,\n type: initData.pageName || null\n };\n};\n","import { mapItemDetails } from '../view-item/reducer';\n\nexport default initData => {\n const { product, item } = initData.traderaShopProduct || {\n item: {}\n };\n\n return {\n product,\n itemDetails: mapItemDetails(item.itemDetails),\n loading: false\n };\n};\n","import getStartPageState from './start-page/initial-state';\nimport getCheckoutState from './checkout/initial-state';\nimport getProfileState from './profile/initial-state';\nimport getCartState from './cart/initial-state';\nimport getTraderaShopState from './tradera-shop/initial-state';\n\nexport default initData => {\n if (initData && initData.module) {\n const mod = initData.module.split('/');\n // can dynamically import the getInitialState from file in folder of mod[4] and execute\n switch (mod[4]) {\n case 'start-page':\n return { startPage: getStartPageState(initData) };\n case 'order-checkout':\n return { checkout: getCheckoutState() };\n case 'profile':\n return { profile: getProfileState(initData) };\n case 'cart':\n return { cart: getCartState() };\n case 'tradera-shop':\n return { traderaShop: getTraderaShopState(initData) };\n default:\n return {};\n }\n }\n\n return {};\n};\n","export default () => {\n return {\n loadingModel: false,\n model: null,\n showTranslatedReviews: false,\n translatedReviews: [],\n translatedReviewsLoading: false,\n translatedReviewsLoadingError: false\n };\n};\n","import initData from 'init-data';\n\nimport ads from './ads/initial-state';\nimport categories from './categories/initial-state';\nimport discover from 'tradera-state/discover/initial-state';\nimport environment from './environment/initial-state';\nimport items from './items/initial-state';\nimport member from './member/initial-state';\nimport multiCurrency from './multi-currency/initial-state';\nimport shippingRegion from './shipping-region/initial-state';\nimport language from './language/initial-state';\nimport page from './page/initial-state';\nimport ui from './ui/initial-state';\nimport views from './views/initial-state';\n\nconst stateWithCustomInitData = customInitData =>\n getInitialState(\n {\n ads,\n categories,\n discover,\n environment,\n initData,\n items,\n member,\n multiCurrency,\n language,\n page,\n shippingRegion,\n ui,\n views\n },\n customInitData\n );\n\nconst state = getInitialState(\n {\n ads,\n categories,\n discover,\n environment,\n initData,\n items,\n member,\n multiCurrency,\n language,\n page,\n shippingRegion,\n ui,\n views\n },\n initData\n);\n\n/**\n * Builds a complete initial state tree from a map of slice initial states, provided as a state object or a function that builds state from arguments\n *\n * @param {object} initializers\n * @param {string} initializers.key\n * @param {function|object} initializers.initialize\n * @param args\n * @return {object}\n */\nfunction getInitialState(initializers, ...args) {\n const state = {};\n Object.entries(initializers).forEach(([key, initialize]) => {\n state[key] =\n typeof initialize === 'function' ? initialize(...args) : initialize;\n });\n return state;\n}\n\nexport default state;\nexport { stateWithCustomInitData };\n","import axios from 'axios';\nimport ENDPOINTS from 'tradera-constants/endpoints';\nimport { logger } from 'packages/index';\nimport { STORAGE_KEYS } from 'tradera-constants/storage';\nimport StorageService from '../../../app/data/storage-service';\n\nconst previousSearchService = new StorageService(STORAGE_KEYS.SEARCH_RECENT);\nlet CancelToken = axios.CancelToken;\nlet cancel;\n\nexport const getSuggestions = async ({\n searchTerm = '',\n limitPrevious = 7,\n enablePrevious = false,\n enableSuggestions = false\n}) => {\n const generateSuggestionId = (categoryId, term) =>\n categoryId ? categoryId + '-' + term : term;\n\n let previousSearchResults = [],\n suggestedResults = {\n searches: [],\n shops: [],\n charities: [],\n campaigns: []\n };\n\n // ------------------------------\n // get suggestion data\n if (enablePrevious) {\n previousSearchResults = getPreviousSearches(searchTerm, limitPrevious);\n }\n\n if (enableSuggestions) {\n suggestedResults = await getSuggestionsFromBackend(searchTerm);\n }\n\n // ------------------------------\n // merge lists\n const withDuplicates = [].concat(\n previousSearchResults.map((item, index) => ({\n key: `previous_search-${index}`,\n type: 'previous',\n text: item.key,\n id: generateSuggestionId(null, index)\n })),\n suggestedResults.searches.map((item, index) => ({\n key: `suggested_search-${index}`,\n type: 'suggested-item',\n categories: item.categories,\n item,\n text: item.text,\n id: generateSuggestionId(\n item.category ? item.category.id : null,\n item.text\n )\n }))\n );\n const uniqueMap = new Map();\n withDuplicates.forEach(item => {\n if (uniqueMap.has(item.id)) return;\n uniqueMap.set(item.id, item);\n });\n const uniqueResults = Array.from(uniqueMap.values());\n\n const shopResults = suggestedResults.shops.map((item, key) => ({\n key: `suggested_shop-${key}`,\n type: 'suggested-shop',\n item,\n memberId: item.memberId,\n name: item.name,\n urlName: item.urlName,\n inSPA: false, // Turned off until profile pages are SPAified\n id: key\n }));\n\n const suggestedCharitiesResults = suggestedResults.charities || [];\n const charitiesResults = suggestedCharitiesResults.map((item, key) => ({\n key: `suggested_charity-${key}`,\n type: 'suggested-charity',\n item,\n name: item.name,\n slug: item.slug,\n inSPA: false, // Turned off until profile pages are SPAified\n id: key\n }));\n\n const suggestedCampaignResults = suggestedResults.campaigns || [];\n const campaignResults = suggestedCampaignResults.map((item, key) => ({\n key: `suggested_campaign-${key}`,\n type: 'suggested-campaign',\n item,\n capaignId: item.campaignId,\n name: item.name,\n urlName: item.urlName,\n inSPA: false, // Turned off until profile pages are SPAified\n id: key\n }));\n\n const allSuggestions = [\n ...campaignResults,\n ...uniqueResults,\n ...shopResults,\n ...charitiesResults,\n {\n key: 'advanced-search',\n type: 'link-advanced-search'\n },\n {\n key: 'seller-search',\n type: 'link-seller-search'\n }\n ];\n return allSuggestions;\n};\n\n// --------------------------------------------\n// backend suggestions\n// --------------------------------------------\n\nconst normalizeSearches = (searches = []) => {\n return searches.reduce((acc, search) => {\n if (search.categories) {\n search.categories.map(category => {\n acc.push({\n text: search.text,\n category: category\n });\n });\n } else {\n acc.push({\n text: search.text,\n category: null\n });\n }\n return acc;\n }, []);\n};\n\nconst getSuggestionsFromBackend = async searchTerm => {\n if (cancel !== undefined) {\n cancel();\n }\n try {\n const response = await axios.get(ENDPOINTS.SEARCH_SUGGESTIONS, {\n cancelToken: new CancelToken(function executor(c) {\n cancel = c;\n }),\n params: {\n q: searchTerm\n }\n });\n\n const {\n campaigns = [],\n searches,\n shops = [],\n charities = []\n } = response.data;\n return {\n campaigns,\n searches: normalizeSearches(searches) || [],\n shops,\n charities\n };\n } catch (error) {\n if (!('response' in error) && !axios.isCancel(error)) {\n logger(error);\n }\n return { searches: [], shops: [] };\n }\n};\n\n// --------------------------------------------\n// previous searches\n// --------------------------------------------\n\n// function needed by state\nconst getPreviousSearches = (searchTerm, limit = 7) => {\n const previousResults =\n previousSearchService.fetch().orderByTimestamp() || [];\n let output =\n searchTerm.length === 0\n ? previousResults\n : previousResults.filter(item => item.key.includes(searchTerm));\n return output.splice(0, limit);\n};\n\nexport const addRecentSearch = searchTerm => {\n if (!searchTerm) {\n return;\n }\n const prettySearchTerm = searchTerm\n .toString()\n .replace(//g, ' ')\n .trim();\n if (prettySearchTerm.length > 2) {\n let recentCount = previousSearchService.get(prettySearchTerm) || 0;\n recentCount += 1;\n previousSearchService.set(prettySearchTerm, recentCount);\n }\n};\n\nexport const removeRecentSearch = searchTerm => {\n if (!searchTerm || searchTerm.length < 3) {\n return;\n }\n previousSearchService.remove(searchTerm);\n};\n","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 GeneralError = () => {\n const { t } = useTranslator();\n return (\n \n

    \n \n

    \n

    {t('error_somethingWentWrong')}

    \n

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

    \n
    \n );\n};\n\nexport default GeneralError;\n","import { useState, useEffect, useRef } from 'react';\n\nconst useDidMountEffect = (func, deps) => {\n const didMount = useRef(false);\n\n useEffect(() => {\n if (didMount.current) func();\n else didMount.current = true;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n};\n\n/**\n * Loads an image source and keep track of isLoaded and error states.\n *\n * @param {string} src\n * @returns {[boolean, boolean]}\n */\nfunction useImageLoader(src) {\n const [isLoaded, setIsLoaded] = useState(false);\n const [error, setError] = useState(false);\n\n useEffect(() => {\n if (!src) {\n return;\n }\n const image = new Image();\n image.onload = () => setIsLoaded(true);\n image.onerror = () => setError(true);\n image.src = src;\n return () => {\n image.onload = null;\n image.onerror = null;\n };\n }, [src]);\n\n return [isLoaded, error];\n}\n\nconst intervals = {};\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 {int} period - Milliseconds\n * @param {function} callback\n * @returns {function}\n */\nfunction useTicker(period, callback) {\n // Remove callback from interval and cancel interval if no callbacks remain\n const cleanup = () => {\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 };\n useEffect(() => {\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 // Return cancellation callback\n return cleanup;\n });\n\n return cleanup;\n}\n\nexport { useDidMountEffect, useImageLoader, useTicker };\n"],"sourceRoot":""}