{"version":3,"file":"script/bundle-5.956bc80b90.js","mappings":"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","sources":["webpack://touchweb/./src/blueprint/theme/icons2/arrow-down.svg","webpack://touchweb/./src/blueprint/theme/icons2/back.svg","webpack://touchweb/./src/blueprint/theme/icons2/check.svg","webpack://touchweb/./src/blueprint/theme/icons2/close.svg","webpack://touchweb/./src/blueprint/theme/icons2/dropdown.svg","webpack://touchweb/./src/apps/syi/components/option-field.module.scss","webpack://touchweb/./src/blueprint/theme/scss/export/breakpoints.module.scss","webpack://touchweb/./src/components/atoms/heading/heading.module.scss","webpack://touchweb/./src/components/bottom-sheet/bottom-sheet.module.scss","webpack://touchweb/./src/components/dropdown-menu/dropdown-menu.module.scss","webpack://touchweb/./src/components/form-controls/toggle-switch/toggle-switch.module.scss","webpack://touchweb/./src/components/scrollable-modal/header-with-close-button.module.scss","webpack://touchweb/./src/components/scrollable-modal/scrollable-modal-content.module.scss","webpack://touchweb/./src/apps/login/state/reducer.ts","webpack://touchweb/./src/apps/my-tradera/app/components/listing/item/info-item-components.ts","webpack://touchweb/./src/apps/my-tradera/app/components/settings/components/settings-row/settings-row.module.scss","webpack://touchweb/./src/apps/my-tradera/app/components/settings/components/settings-row/settings-row.tsx","webpack://touchweb/./src/apps/my-tradera/app/constants/column-definitions.ts","webpack://touchweb/./src/apps/my-tradera/app/constants/page.ts","webpack://touchweb/./src/apps/my-tradera/app/constants/urls.ts","webpack://touchweb/./src/apps/my-tradera/app/helpers/commands-helper.js","webpack://touchweb/./src/apps/my-tradera/app/helpers/formats.js","webpack://touchweb/./src/apps/my-tradera/app/helpers/messaging-helpers.ts","webpack://touchweb/./src/apps/my-tradera/app/state/actions/scroll-to-initial-scroll.js","webpack://touchweb/./src/apps/my-tradera/app/state/payout/initial-state.ts","webpack://touchweb/./src/apps/my-tradera/app/state/selectors/filters.js","webpack://touchweb/./src/apps/my-tradera/app/state/selectors/router.js","webpack://touchweb/./src/apps/my-tradera/app/utils/init-data.js","webpack://touchweb/./src/apps/my-tradera/app/utils/fetch.js","webpack://touchweb/./src/apps/my-tradera/pick-list2/services/pick-list-item-updater.ts","webpack://touchweb/./src/apps/my-tradera/purchases/purchases-api.ts","webpack://touchweb/./src/apps/my-tradera/settings/password/password-api.ts","webpack://touchweb/./src/apps/my-tradera/sold/sold-api.ts","webpack://touchweb/./src/apps/syi/services/campaign-service.ts","webpack://touchweb/./src/apps/syi/services/config.ts","webpack://touchweb/./src/apps/syi/services/syi-ga4-service.ts","webpack://touchweb/./src/apps/syi/state/reducers/attributes-helpers.js","webpack://touchweb/./src/apps/syi/state/reducers/campaign-code.ts","webpack://touchweb/./src/apps/syi/state/reducers/charity-campaign.ts","webpack://touchweb/./src/apps/syi/state/reducers/fees.js","webpack://touchweb/./src/apps/syi/state/reducers/helpers/shipping-reducer-helpers.ts","webpack://touchweb/./src/apps/syi/state/selectors/category-selectors.ts","webpack://touchweb/./src/apps/syi/state/selectors/item-condition-selectors.ts","webpack://touchweb/./src/apps/syi/utils/throttled-action.js","webpack://touchweb/./src/apps/tradera/components/top-lists/top-lists-api.ts","webpack://touchweb/./src/apps/tradera/resolution/feedback-removal/feedback-removal-api.ts","webpack://touchweb/./src/apps/tradera/start-page/components/resell-suggestions/resell-suggestions-api.ts","webpack://touchweb/./src/apps/tradera/start-page/components/wardrobe-news-for-you/wardrobe-news-for-you-api.ts","webpack://touchweb/./src/components/atoms/button/button.module.scss","webpack://touchweb/./src/components/atoms/button/button.tsx","webpack://touchweb/./src/components/atoms/text/text.module.scss","webpack://touchweb/./src/components/atoms/text/text.tsx","webpack://touchweb/./src/components/bank-id/state/bank-id/modal-state.ts","webpack://touchweb/./src/components/divider/divider.module.scss","webpack://touchweb/./src/components/divider/divider.tsx","webpack://touchweb/./src/components/dropdown-button/dropdown-button.module.scss","webpack://touchweb/./src/components/dropdown-button/dropdown-button.tsx","webpack://touchweb/./src/components/flag/flag.tsx","webpack://touchweb/./src/components/payout-destination-modal/state/initial-state.ts","webpack://touchweb/./src/components/scrollable-modal/overlay.module.scss","webpack://touchweb/./src/components/scrollable-modal/overlay.tsx","webpack://touchweb/./src/components/transitions/transitions.jsx","webpack://touchweb/./src/constants/page-types.ts","webpack://touchweb/./src/constants/paid-statuses.ts","webpack://touchweb/./src/hooks/use-click-outside.ts","webpack://touchweb/./src/hooks/use-cookie-util.js","webpack://touchweb/./src/hooks/use-event-listener.js","webpack://touchweb/./src/hooks/use-is-tablet.js","webpack://touchweb/./src/hooks/use-qualtive.tsx","webpack://touchweb/./src/services/storage-service.ts","webpack://touchweb/./src/state/ads/reducer.ts","webpack://touchweb/./src/state/auth/reducer.ts","webpack://touchweb/./src/apps/tradera/components/discover/constants/constants.ts","webpack://touchweb/./src/apps/tradera/components/discover/helpers/filter-states.ts","webpack://touchweb/./src/state/discover/helpers.ts","webpack://touchweb/./src/state/discover/initial-state.ts","webpack://touchweb/./src/state/init-data/action-types.js","webpack://touchweb/./src/state/items/initial-state.ts","webpack://touchweb/./src/state/language/initial-state.ts","webpack://touchweb/./src/state/language/reducer.ts","webpack://touchweb/./src/state/member/get-initial-state.ts","webpack://touchweb/./src/state/outage/reducer.ts","webpack://touchweb/./src/state/push-notifications/helpers.js","webpack://touchweb/./src/state/random/reducer.js","webpack://touchweb/./src/state/request/selectors.ts","webpack://touchweb/./src/state/init-data/reducer.js","webpack://touchweb/./src/state/views/profile/reducer.js","webpack://touchweb/./src/state/views/profile/initial-state.ts","webpack://touchweb/./src/apps/syi/state/reducers/errors.js","webpack://touchweb/./src/apps/syi/state/reducers/item-condition.js","webpack://touchweb/./src/apps/syi/state/reducers/extra-features.js","webpack://touchweb/./src/apps/syi/state/reducers/scroll.js","webpack://touchweb/./src/apps/syi/state/reducers/preview.js","webpack://touchweb/./src/apps/syi/state/reducer.ts","webpack://touchweb/./src/apps/syi/state/reducers/language.js","webpack://touchweb/./src/state/views/my-tradera/reducer.js","webpack://touchweb/./src/apps/my-tradera/refund-checkout/state/types.ts","webpack://touchweb/./src/apps/my-tradera/refund-checkout/state/reducer.ts","webpack://touchweb/./src/apps/my-tradera/sold/state/reducer.ts","webpack://touchweb/./src/state/views/reducer.ts","webpack://touchweb/./src/state/request/reducer.ts","webpack://touchweb/./src/apps/login/login-api.ts","webpack://touchweb/./src/apps/tradera/components/discover/state/reducer.ts","webpack://touchweb/./src/state/root-reducer.ts","webpack://touchweb/./src/utils/logging/isomorphic-logger.ts","webpack://touchweb/./src/utils/environment.ts","webpack://touchweb/./src/state/services/independent-search-api.ts","webpack://touchweb/./src/state/services/others-also-looked-at-api.ts","webpack://touchweb/./src/state/services/shipping-complaint-api.ts","webpack://touchweb/./src/state/services/similar-items-v2-api.ts","webpack://touchweb/./src/state/services/types/webapi-selling-generated.ts","webpack://touchweb/./src/state/services/utils/http-client-base-query.ts","webpack://touchweb/./src/backend/http/webapi-rtk.ts","webpack://touchweb/./src/state/services/utils/webapi-frontend-base-query.ts","webpack://touchweb/./src/state/services/utils/webapi-base-query.ts","webpack://touchweb/./src/state/shipping-region/initial-state.ts","webpack://touchweb/./src/state/ads/actions.ts","webpack://touchweb/./src/state/state-initializer.ts","webpack://touchweb/./src/state/init-data/actions.js","webpack://touchweb/./src/state/discover/actions.js","webpack://touchweb/./src/apps/login/state/actions.ts","webpack://touchweb/./src/state/ui/initial-state.ts","webpack://touchweb/./src/state/views/cart/initial-state.js","webpack://touchweb/./src/state/views/invoice-checkout/api.js","webpack://touchweb/./src/state/views/shipping-checkout/api.js","webpack://touchweb/./src/apps/tradera/start-page/content-types.ts","webpack://touchweb/./src/state/views/start-page/constants.ts","webpack://touchweb/./src/state/views/start-page/configuration-mapper.ts","webpack://touchweb/./src/state/views/start-page/types.ts","webpack://touchweb/./src/state/views/start-page/initial-state.ts","webpack://touchweb/./src/state/views/start-page/reducer.js","webpack://touchweb/./src/state/views/view-item/item-state-helper.ts","webpack://touchweb/./src/utils/assert.ts","webpack://touchweb/./src/utils/class-names.ts","webpack://touchweb/./src/utils/compose-event-handler.ts","webpack://touchweb/./src/utils/history.ts","webpack://touchweb/./src/utils/merge-refs.ts","webpack://touchweb/./src/utils/set-nested-object-value.js","webpack://touchweb/./src/constants/sentry-redux-filters.ts","webpack://touchweb/./src/utils/sentry/redux.js","webpack://touchweb/./src/utils/storage.js"],"sourcesContent":["function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 9.2l4.9-5 1.4 1.4L8 12 1.7 5.6l1.4-1.4z\"\n})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M5.3 8L12 1.3c.2-.2.2-.5 0-.7s-.5-.2-.7 0L3.9 8l7.4 7.4c.2.2.5.2.7 0s.2-.5 0-.7z\",\n fillRule: \"evenodd\"\n})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M14.4 3.4c.2.2.2.5 0 .7l-8.2 8.4c-.1.1-.3.1-.4.1s-.3-.1-.4-.1L1.6 8.6c-.2-.2-.2-.5 0-.7s.5-.2.7 0l3.4 3.5 7.9-8c.2-.1.6-.1.8 0z\",\n fillRule: \"evenodd\"\n})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.58 1.58a.6.6 0 01.84 0l5.59 5.58 5.58-5.58a.6.6 0 11.84.84L8.85 8l5.58 5.59a.6.6 0 01-.84.84L8 8.85l-5.59 5.58a.6.6 0 01-.84-.84L7.16 8 1.58 2.42a.6.6 0 010-.84z\"\n})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2.65 5.15a.5.5 0 01.7 0L8 9.79l4.65-4.64a.5.5 0 01.7.7l-5 5a.5.5 0 01-.7 0l-5-5a.5.5 0 010-.7z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12.54 5.04a.65.65 0 01.92.92l-5 5a.65.65 0 01-.92 0l-5-5a.65.65 0 11.92-.92L8 9.58l4.54-4.54z\"\n})));","// extracted by mini-css-extract-plugin\nexport default {\"value\":\"value--ZOpjd\",\"truncateLeft\":\"truncateLeft--AiCjm\"};","// extracted by mini-css-extract-plugin\nexport default {\"XS\":\"0\",\"xs\":\"0\",\"SM\":\"450px\",\"sm\":\"450px\",\"MD\":\"768px\",\"md\":\"768px\",\"LG\":\"1024px\",\"lg\":\"1024px\",\"XL\":\"1250px\",\"xl\":\"1250px\"};","// extracted by mini-css-extract-plugin\nexport default {\"reset\":\"reset--dyv3A\"};","// extracted by mini-css-extract-plugin\nexport default {\"bottom-sheet\":\"bottom-sheet--T8ySt\",\"bottomSheet\":\"bottom-sheet--T8ySt\",\"sheet-container\":\"sheet-container--EDmi2\",\"sheetContainer\":\"sheet-container--EDmi2\",\"onTop\":\"onTop--LH1pc\"};","// extracted by mini-css-extract-plugin\nexport default {\"content\":\"content--KhXhw\",\"right\":\"right--gp_Ti\",\"scrollable\":\"scrollable--oUdHn\",\"item\":\"item--urC4R\",\"separator\":\"separator--KbkgX\",\"dropdownIconOpen\":\"dropdownIconOpen--k7DoD\"};","// extracted by mini-css-extract-plugin\nexport default {\"label\":\"label--EJL1P\",\"disabled\":\"disabled--vr10p\",\"wrapper\":\"wrapper--SjwGo\",\"small\":\"small--onoqt\",\"xsmall\":\"xsmall--hkTNR\",\"input\":\"input--h83XI\",\"switch\":\"switch--I4Zsx\"};","// extracted by mini-css-extract-plugin\nexport default {\"header\":\"header--dRmsc\"};","// extracted by mini-css-extract-plugin\nexport default {\"footer\":\"footer--Ntrwy\",\"close-button\":\"close-button--k3Qep\",\"closeButton\":\"close-button--k3Qep\",\"shadow\":\"shadow--J8WIz\",\"small-scrollbar\":\"small-scrollbar--Fytfe\",\"smallScrollbar\":\"small-scrollbar--Fytfe\"};","/* eslint-disable better-mutation/no-mutation */\n\nimport { type PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nexport type LoginSlice = {\n /**\n * This Kount Session ID is for login only!\n * If you need a Kount Session ID for other pages, you need to create a new one.\n *\n * \"The Kount Session ID must be unique for every RIS post, even when multiple transactions occur in the same Web Session.\n * This means that the SDK setup must be re-invoked with a new Kount Session ID for every transaction.\n *\n * The Kount Session ID can be repeated within the same Web Session.\n * For example, multiple login attempts in a short time window (less than 15 minutes) can use the same Kount Session ID.\n * In this case, the DDC does not need to be restarted every time.\"\n * Source: https://developer.kount.com/hc/en-us/p/integration-builder?labels=WEB\n */\n kountSessionId: string;\n isKountDataCollected: boolean;\n};\n\nconst initialState: LoginSlice = {\n kountSessionId: '',\n isKountDataCollected: false\n};\n\nexport const loginSlice = createSlice({\n name: 'login',\n initialState,\n reducers: {\n setIsKountSessionId: (state, action: PayloadAction) => {\n state.kountSessionId = action.payload;\n },\n setIsKountDataCollected: (state, action: PayloadAction) => {\n state.isKountDataCollected = action.payload;\n }\n }\n});\n\nexport const { setIsKountSessionId, setIsKountDataCollected } =\n loginSlice.actions;\n\nexport default loginSlice.reducer;\n","export enum infoItemComponents {\n BIDS = 'BIDS',\n TIME_LEFT = 'TIME_LEFT',\n ITEM_PRICE = 'ITEM_PRICE',\n PRICE_LABEL = 'PRICE_LABEL',\n MANDATORY_BUYER_PROTECTION = 'MANDATORY_BUYER_PROTECTION'\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"settingsRow\":\"settingsRow--QXqxG\",\"subLabel\":\"subLabel--QvxJz\"};","import { forwardRef } from 'react';\nimport { classNames } from 'tradera/utils/class-names';\nimport styles from './settings-row.module.scss';\n\ntype Props = {\n subLabel?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n};\n\nexport const SettingsRow = forwardRef(\n ({ subLabel, children, className }, ref) => {\n return (\n \n
\n {children}\n
\n {subLabel && (\n \n {subLabel}\n \n )}\n \n );\n }\n);\n\nSettingsRow.displayName = 'SettingsRow';\n","/**\n * @returns {object} - list of available columns in MyTradera.\n */\nexport enum 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 MandatoryBuyerProtection = 'MandatoryBuyerProtection'\n}\n\ntype ColumnGroup = {\n Basic: columns[];\n Normal?: columns[];\n};\n\nexport const buyerActiveItemsColumns: ColumnGroup = {\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: ColumnGroup = {\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: ColumnGroup = {\n Basic: [\n columns.CurrentPrice,\n columns.Bids,\n columns.EndDate,\n columns.ItemId,\n columns.ReservePrice,\n columns.OwnReference\n ]\n};\n\nexport const sellerUnsoldColumns: ColumnGroup = {\n Basic: [\n columns.CurrentPrice,\n columns.Bids,\n columns.ShippingCost,\n columns.EndDate,\n columns.ItemId,\n columns.OwnReference\n ]\n};\n","export const PAGE_NAMES = {\n Bidding: 'MyTradera_Bidding',\n Overview: 'MyTradera',\n BuyerActiveItems: 'MyTradera_ActiveBids',\n BuyerItemsLost: 'MyTradera_LostBids',\n MyTraderaLeaveFeedback: 'MyTradera_LeaveFeedback',\n MyTraderaMyFeedback: 'MyTradera_MyFeedback',\n SellerActive: 'MyTradera_ActiveItems',\n SellerList: 'MyTradera_SellerList',\n SellerSold: 'MyTradera_SoldItems',\n SellerUnsold: 'MyTradera_UnsoldItems',\n SellerListings: 'MyTradera_Listings',\n BuyerPurchases: 'MyTradera_Purchases',\n SavedSearches: 'MyTradera_SavedSearches',\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 SettingsPayouts: 'MyTradera_SettingsPayouts',\n Payouts: 'MyTradera_Payouts',\n Accounting: 'MyTradera_Accounting',\n Invoices: 'MyTradera_Invoices',\n WishList: 'MyTradera_WishList',\n Picklist: 'MyTradera_PickList'\n} as const;\n","import initData from 'tradera/legacy/static/packages/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 UNSOLDHIDE: initData.pageSpecificData?.UNSOLDHIDE,\n UNSOLDSHOW: initData.pageSpecificData?.UNSOLDSHOW,\n ACTIVE_END_ITEMS: initData.pageSpecificData?.ACTIVE_END_ITEMS,\n UNSOLD_RESTART_ITEMS: initData.pageSpecificData?.UNSOLD_RESTART_ITEMS\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 findKeysByItemId = (items) => (itemId) => {\n return Object.keys(items).filter((key) => items[key].itemId === itemId);\n};\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 qs from 'qs';\nimport type { MyTraderaPurchaseOrderApiDto } from 'tradera/state/services/types/webapi-mytradera-generated';\n\ntype MessagingThreadLinkOptions = {\n /**\n * Open in single thread mode\n */\n singleThread?: boolean;\n /**\n * Open message form right away\n */\n openForm?: boolean;\n /**\n * Message source info for tracking\n */\n source?: string;\n traderaUserId?: number;\n};\n\n/**\n * Returns base path for a thread\n */\nexport const getMessagingThreadLink = (\n u1: number,\n u2: number,\n l: number,\n options?: MessagingThreadLinkOptions\n): string => {\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 */\nexport const getMessagingPageLink = (\n u1: number,\n u2: number,\n l: number,\n options?: MessagingThreadLinkOptions\n) =>\n 'messaging' +\n (u1 && u2 && l ? getMessagingThreadLink(u1, u2, l, options) : '');\n\n/**\n * Returns base path for a thread for a purchase order\n */\nconst getCsMessagingPageThreadLinkForPurchaseOrder = (\n purchaseOrder: MyTraderaPurchaseOrderApiDto,\n memberId?: number,\n options?: MessagingThreadLinkOptions\n): string | null => {\n const optionsWithDefaults = {\n singleThread: false,\n openForm: false,\n ...options\n };\n const { singleThread, ...queryParams } = optionsWithDefaults;\n\n const itemIds = purchaseOrder.rows\n ?.map((po) => po.listing?.itemId)\n .filter((id) => id !== undefined);\n\n if (!memberId || !itemIds || itemIds.length === 0) {\n return null;\n }\n\n const itemId = Math.min(...itemIds);\n\n return (\n (singleThread ? '/thread/' : '/threads/') +\n 'xcs_u' +\n memberId +\n '_l' +\n itemId +\n qs.stringify(queryParams, { addQueryPrefix: true })\n );\n};\n\nconst getCsMessagingPageThreadLinkForPurchaseOrderForBuyer = (\n purchaseOrder: MyTraderaPurchaseOrderApiDto,\n options?: MessagingThreadLinkOptions\n) =>\n getCsMessagingPageThreadLinkForPurchaseOrder(\n purchaseOrder,\n purchaseOrder.buyerMember?.memberId,\n options\n );\n\nexport const getCsMessagingPageThreadLinkForPurchaseOrderForSeller = (\n purchaseOrder: MyTraderaPurchaseOrderApiDto,\n options?: MessagingThreadLinkOptions\n) =>\n getCsMessagingPageThreadLinkForPurchaseOrder(\n purchaseOrder,\n purchaseOrder.sellerMember?.memberId,\n options\n );\n\nexport const getCsMessagingPageLinkForPurchaseOrderForBuyer = (\n purchaseOrder: MyTraderaPurchaseOrderApiDto,\n options?: MessagingThreadLinkOptions\n) => {\n const threadLink = getCsMessagingPageThreadLinkForPurchaseOrderForBuyer(\n purchaseOrder,\n options\n );\n return threadLink ? 'messaging' + threadLink : null;\n};\n\nexport const getCsMessagingPageLinkForPurchaseOrderForSeller = (\n purchaseOrder: MyTraderaPurchaseOrderApiDto,\n options?: MessagingThreadLinkOptions\n) => {\n const threadLink = getCsMessagingPageThreadLinkForPurchaseOrderForSeller(\n purchaseOrder,\n options\n );\n return threadLink ? 'messaging' + threadLink : null;\n};\n","export const 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","import { type PayoutState } from 'tradera/apps/my-tradera/app/state/payout/types';\n\nexport default (): PayoutState => {\n return {\n isFetching: false\n };\n};\n","export const selectFiltersState = (state) => state.views.myTradera.filters;\n","export const selectRouterState = (state) => state.router;\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/logger';\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 window.document.location = window.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 logger(error, {\n contexts: {\n response\n }\n });\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 type {\n MarkAsPaidBySellerApiRequest,\n PickListBuyerV2ApiDto,\n SetItemShippedApiRequest,\n SetTransactionVisibilityApiRequest\n} from 'tradera/state/services/types/webapi-member-generated';\n\ntype FieldUpdate =\n | {\n isMarkedAsShipped: boolean;\n }\n | {\n isMarkedAsPaidBySeller: boolean;\n }\n | {\n hiddenBySeller: boolean;\n };\n\nconst setBuyerItemProperty = (\n items: PickListBuyerV2ApiDto[],\n purchaseOrderId: string,\n update: FieldUpdate\n) => {\n return items.map((buyer) => ({\n ...buyer,\n items: buyer.items?.map((item) => {\n return purchaseOrderId === item.purchaseOrderId\n ? {\n ...item,\n ...update\n }\n : item;\n })\n }));\n};\n\nexport const updateShippingStatusForBuyerItems = (\n patch: SetItemShippedApiRequest,\n buyers?: PickListBuyerV2ApiDto[] | null\n) => {\n return setBuyerItemProperty(buyers ?? [], patch.purchaseOrderId, {\n isMarkedAsShipped: patch.shipped\n });\n};\n\nexport const updatePaidStatusForBuyerItems = (\n patch: MarkAsPaidBySellerApiRequest,\n buyers?: PickListBuyerV2ApiDto[] | null\n) => {\n return setBuyerItemProperty(buyers ?? [], patch.purchaseOrderId, {\n isMarkedAsPaidBySeller: patch.paidConfirmed\n });\n};\n\nexport const updateVisibilityStatusForBuyerItems = (\n patch: SetTransactionVisibilityApiRequest,\n buyers?: PickListBuyerV2ApiDto[] | null\n) => {\n return setBuyerItemProperty(buyers ?? [], patch.purchaseOrderId, {\n hiddenBySeller: patch.hidden\n })\n .map((buyer) => ({\n ...buyer,\n items: buyer.items?.filter(\n (item) => item.hiddenBySeller !== patch.hidden\n )\n }))\n .filter((buyer) => buyer.items?.length ?? 0 > 0);\n};\n","/* eslint-disable better-mutation/no-mutation */\nimport { createApi } from '@reduxjs/toolkit/query/react';\nimport { isomorphicWebApiBaseQuery } from 'tradera/state/services/utils/webapi-base-query';\n\nimport type {\n BuyerBoughtPurchaseOrdersIncludingExtendedLifeApiResponse,\n BuyerBoughtPurchaseOrdersIncludingExtendedLifeApiRequest,\n BoughtPageApiRequest\n} from 'tradera/state/services/types/webapi-mytradera-generated';\nimport type {\n MarkAsPaidByBuyerApiRequest,\n MarkAsPaidByBuyerApiResponse,\n UnmarkAsPaidByBuyerApiRequest,\n UnmarkAsPaidByBuyerApiResponse\n} from 'tradera/state/services/types/webapi-shopping-generated';\nimport type {\n SetTransactionVisibilityApiRequest,\n SetTransactionVisibilityApiResponse,\n WebMemberSoldItemBuyerInfoApiResponse\n} from 'tradera/state/services/types/webapi-member-generated';\nimport { PaidStatuses } from 'tradera/constants/paid-statuses';\n\nexport const MyBoughtTagTypes = {\n BoughtPurchaseOrders: 'BoughtPurchaseOrders'\n} as const;\n\nexport const getMyBoughtItemsCacheKeys: Set =\n new Set();\n\nexport const myPurchasesApi = createApi({\n reducerPath: 'myPurchasesApi',\n baseQuery: isomorphicWebApiBaseQuery,\n tagTypes: Object.values(MyBoughtTagTypes),\n endpoints: (builder) => ({\n getSoldItemBuyerInfo: builder.query<\n WebMemberSoldItemBuyerInfoApiResponse,\n string\n >({\n query: (purchaseOrderId) =>\n `/api/webapi/member/web/selling/solditem/buyer-info/${purchaseOrderId}`\n }),\n getMyBoughtItems: builder.query<\n BuyerBoughtPurchaseOrdersIncludingExtendedLifeApiResponse,\n BoughtPageApiRequest\n >({\n query: (query) => {\n getMyBoughtItemsCacheKeys.add(query);\n return {\n url: '/api/webapi/mytradera/web/bought-page',\n method: 'POST',\n body: query\n };\n },\n providesTags: (_response, _error, request) => [\n {\n type: MyBoughtTagTypes.BoughtPurchaseOrders,\n id: JSON.stringify(request.buyerFilters)\n }\n ]\n }),\n markAsPaidByBuyer: builder.mutation<\n MarkAsPaidByBuyerApiResponse,\n MarkAsPaidByBuyerApiRequest\n >({\n query: (payload) => ({\n url: '/api/webapi/shopping/payment/markaspaid',\n method: 'POST',\n body: payload\n }),\n async onQueryStarted(\n { purchaseOrderId, ...patch },\n { dispatch, queryFulfilled }\n ) {\n const patchResults = [];\n for (const cacheKey of getMyBoughtItemsCacheKeys) {\n const patchResult = dispatch(\n myPurchasesApi.util.updateQueryData(\n 'getMyBoughtItems',\n cacheKey,\n (draft) => {\n const purchaseOrder =\n draft.purchaseOrdersOneOf?.find(\n ({ purchaseOrder }) =>\n purchaseOrder?.purchaseOrderId ===\n purchaseOrderId\n )?.purchaseOrder;\n if (purchaseOrder?.state) {\n purchaseOrder.state.paidStatus =\n PaidStatuses.MARKED_AS_PAID_BY_BUYER;\n }\n Object.assign(draft, patch);\n }\n )\n );\n patchResults.push(patchResult);\n }\n try {\n await queryFulfilled;\n } catch {\n for (const patch of patchResults) {\n patch.undo();\n }\n }\n }\n }),\n unmarkAsPaidByBuyer: builder.mutation<\n UnmarkAsPaidByBuyerApiResponse,\n UnmarkAsPaidByBuyerApiRequest\n >({\n query: (payload) => ({\n url: '/api/webapi/shopping/payment/unmarkaspaid',\n method: 'POST',\n body: payload\n }),\n async onQueryStarted(\n { purchaseOrderId, ...patch },\n { dispatch, queryFulfilled }\n ) {\n const patchResults = [];\n for (const cacheKey of getMyBoughtItemsCacheKeys) {\n const patchResult = dispatch(\n myPurchasesApi.util.updateQueryData(\n 'getMyBoughtItems',\n cacheKey,\n (draft) => {\n const purchaseOrder =\n draft.purchaseOrdersOneOf?.find(\n ({ purchaseOrder }) =>\n purchaseOrder?.purchaseOrderId ===\n purchaseOrderId\n )?.purchaseOrder;\n if (purchaseOrder?.state) {\n purchaseOrder.state.paidStatus =\n PaidStatuses.UNPAID;\n }\n Object.assign(draft, patch);\n }\n )\n );\n patchResults.push(patchResult);\n }\n try {\n await queryFulfilled;\n } catch {\n for (const patch of patchResults) {\n patch.undo();\n }\n }\n }\n }),\n setIsHidden: builder.mutation<\n SetTransactionVisibilityApiResponse,\n SetTransactionVisibilityApiRequest\n >({\n query: (payload) => ({\n url: '/api/webapi/member/transaction-visibility',\n method: 'POST',\n body: payload\n }),\n invalidatesTags: (_response, _error, request) =>\n request.hidden\n ? // request.hidden here means that we have hidden an item\n // from a list where we do not show hidden items.\n // Only invalidate requests that are hidden=\"True\".\n // This is because the updated visibility might not have\n // propageted all the way to Elastic yet, so if we invalidate\n // the request where we show non-hidden items we request an\n // updated list which still contains the item that the user\n // just hid. Hiding it in the client is handled by the\n // onQueryStarted optimistic update\n [...getMyBoughtItemsCacheKeys.values()]\n .filter(\n (cacheKey) =>\n cacheKey.buyerFilters?.hidden === 'True'\n )\n .map((cacheEntry) => ({\n type: MyBoughtTagTypes.BoughtPurchaseOrders,\n id: JSON.stringify(cacheEntry.buyerFilters)\n }))\n : // and reversed for lists with hidden items, if we have\n // un-hidden an item, we should update all lists where it might\n // show up, i.e lists that contains items that aren't hidden\n [...getMyBoughtItemsCacheKeys.values()]\n .filter(\n (cacheKey) =>\n cacheKey.buyerFilters?.hidden === 'False'\n )\n .map((cacheEntry) => ({\n type: MyBoughtTagTypes.BoughtPurchaseOrders,\n id: JSON.stringify(cacheEntry.buyerFilters)\n })),\n async onQueryStarted(patch, { dispatch, queryFulfilled }) {\n const patchResults = [];\n for (const cacheKey of getMyBoughtItemsCacheKeys) {\n if (\n // When on the hidden tab\n (cacheKey.buyerFilters?.hidden === 'True' &&\n !patch.hidden) || // When not on the hidden tab\n (cacheKey.buyerFilters?.hidden === 'False' &&\n patch.hidden)\n ) {\n const patchResult = dispatch(\n myPurchasesApi.util.updateQueryData(\n 'getMyBoughtItems',\n cacheKey,\n (draft) => {\n const updatedItems =\n draft.purchaseOrdersOneOf?.filter(\n ({\n purchaseOrder,\n extendedLifePurchaseOrder\n }) =>\n purchaseOrder?.purchaseOrderId !==\n patch.purchaseOrderId &&\n extendedLifePurchaseOrder?.purchaseOrderId !==\n patch.purchaseOrderId\n );\n\n Object.assign(draft, {\n purchaseOrdersOneOf: updatedItems\n });\n }\n )\n );\n patchResults.push(patchResult);\n }\n }\n\n try {\n await queryFulfilled;\n } catch {\n for (const patch of patchResults) {\n patch.undo();\n }\n }\n }\n })\n })\n});\n\nexport const {\n useGetMyBoughtItemsQuery,\n useMarkAsPaidByBuyerMutation,\n useUnmarkAsPaidByBuyerMutation,\n useSetIsHiddenMutation,\n useGetSoldItemBuyerInfoQuery\n} = myPurchasesApi;\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport { isomorphicWebApiBaseQuery } from 'tradera/state/services/utils/webapi-base-query';\nimport type { StrictType } from 'tradera/utils/strict-type';\n\nimport type {\n WebChangePasswordApiRequest,\n WebChangePasswordApiResponse,\n WebChangePasswordSendVerificationSmsApiRequest,\n WebChangePasswordSendVerificationSmsApiResponse\n} from 'tradera/state/services/types/webapi-auth-generated';\n\nexport type StrictWebChangePasswordApiRequest =\n StrictType;\n\nexport const StrictWebChangePasswordApiRequestTemplate: StrictWebChangePasswordApiRequest =\n {\n currentPassword: '',\n newPassword: '',\n confirmPassword: '',\n pinCode: ''\n };\n\nexport type StrictWebChangePasswordSendVerificationSmsApiRequest =\n StrictType;\n\nexport const StrictWebChangePasswordSendVerificationSmsApiRequestTemplate: StrictWebChangePasswordSendVerificationSmsApiRequest =\n {\n currentPassword: '',\n newPassword: '',\n confirmPassword: '',\n phoneNumber: ''\n };\n\nexport const changePasswordApi = createApi({\n reducerPath: 'changePasswordApi',\n baseQuery: isomorphicWebApiBaseQuery,\n endpoints: (builder) => ({\n changePassword: builder.mutation<\n WebChangePasswordApiResponse,\n StrictWebChangePasswordApiRequest\n >({\n query: (params) => ({\n url: '/api/webapi/auth/web/member/change-password/new-password',\n method: 'POST',\n body: params\n })\n }),\n sendSmsVerificationCode: builder.mutation<\n WebChangePasswordSendVerificationSmsApiResponse,\n StrictWebChangePasswordSendVerificationSmsApiRequest\n >({\n query: (params) => ({\n url: '/api/webapi/auth/web/member/change-password/send-sms-verification',\n method: 'POST',\n body: params\n })\n })\n })\n});\n\nexport const { useChangePasswordMutation, useSendSmsVerificationCodeMutation } =\n changePasswordApi;\n","/* eslint-disable better-mutation/no-mutation */\nimport { createApi } from '@reduxjs/toolkit/query/react';\nimport { isomorphicWebApiBaseQuery } from 'tradera/state/services/utils/webapi-base-query';\nimport { PaidStatuses } from 'tradera/constants/paid-statuses';\n\nimport type {\n SellerSoldPurchaseOrdersIncludingExtendedLifeApiResponse,\n CancelShipmentApiRequest,\n CancelShipmentApiResponse,\n UpdateShippingPriceApiRequest,\n UpdateShippingPriceApiResponse,\n SoldPageApiRequest,\n DeleteShipmentApiResponse,\n DeleteShipmentApiRequest\n} from 'tradera/state/services/types/webapi-mytradera-generated';\n\nimport type {\n SetItemShippingBookedApiRequest,\n SetItemShippingBookedApiResponse,\n MarkAsPaidBySellerApiRequest,\n MarkAsPaidBySellerApiResponse,\n SetItemShippedApiRequest,\n SetItemShippedApiResponse,\n SetTransactionVisibilityApiRequest,\n SetTransactionVisibilityApiResponse\n} from 'tradera/state/services/types/webapi-member-generated';\nimport qs from 'qs';\nimport type {\n ChangeItemsShippingRequest,\n GetChangeItemsShippingViewModelApiResponse\n} from 'tradera/state/services/types/webapi-selling-generated';\n\nexport const MySoldTagTypes = {\n SoldPurchaseOrders: 'SoldPurchaseOrders'\n} as const;\n\nexport const getMySoldItemsCacheKeys: Set = new Set();\n\nexport const mySoldApi = createApi({\n reducerPath: 'mytSoldApi',\n baseQuery: isomorphicWebApiBaseQuery,\n tagTypes: Object.values(MySoldTagTypes),\n endpoints: (builder) => ({\n getMySoldItems: builder.query<\n SellerSoldPurchaseOrdersIncludingExtendedLifeApiResponse,\n SoldPageApiRequest\n >({\n query: (query) => {\n getMySoldItemsCacheKeys.add(query);\n return {\n url: '/api/webapi/mytradera/web/sold-page',\n method: 'POST',\n body: query\n };\n },\n providesTags: (_response, _error, request) => [\n {\n type: MySoldTagTypes.SoldPurchaseOrders,\n id: JSON.stringify(request.sellerFilters)\n }\n ]\n }),\n markAsPaidBySeller: builder.mutation<\n MarkAsPaidBySellerApiResponse,\n MarkAsPaidBySellerApiRequest\n >({\n query: (payload) => ({\n url: '/api/webapi/member/selling/marked-as-paid-by-seller',\n method: 'POST',\n body: payload\n }),\n async onQueryStarted(\n { purchaseOrderId, paidConfirmed, ...patch },\n { dispatch, queryFulfilled }\n ) {\n const patchResults = [];\n for (const cacheKey of getMySoldItemsCacheKeys) {\n const patchResult = dispatch(\n mySoldApi.util.updateQueryData(\n 'getMySoldItems',\n cacheKey,\n (draft) => {\n const purchaseOrder =\n draft.purchaseOrdersOneOf?.find(\n ({ purchaseOrder }) =>\n purchaseOrder?.purchaseOrderId ===\n purchaseOrderId\n )?.purchaseOrder;\n if (purchaseOrder?.state) {\n purchaseOrder.state.isPaid = paidConfirmed;\n purchaseOrder.state.paidStatus =\n paidConfirmed\n ? PaidStatuses.MARKED_AS_PAID_BY_SELLER\n : PaidStatuses.UNPAID;\n }\n Object.assign(draft, patch);\n }\n )\n );\n patchResults.push(patchResult);\n }\n try {\n await queryFulfilled;\n } catch {\n for (const patch of patchResults) {\n patch.undo();\n }\n }\n }\n }),\n markAsShippedBySeller: builder.mutation<\n SetItemShippedApiResponse,\n SetItemShippedApiRequest\n >({\n query: (payload) => ({\n url: '/api/webapi/member/selling/item-shipped',\n method: 'POST',\n body: payload\n }),\n async onQueryStarted(\n { purchaseOrderId, shipped, ...patch },\n { dispatch, queryFulfilled }\n ) {\n const patchResults = [];\n for (const cacheKey of getMySoldItemsCacheKeys) {\n const patchResult = dispatch(\n mySoldApi.util.updateQueryData(\n 'getMySoldItems',\n cacheKey,\n (draft) => {\n const purchaseOrder =\n draft.purchaseOrdersOneOf?.find(\n ({ purchaseOrder }) =>\n purchaseOrder?.purchaseOrderId ===\n purchaseOrderId\n )?.purchaseOrder;\n if (purchaseOrder?.state) {\n purchaseOrder.state.isShipped = shipped;\n }\n Object.assign(draft, patch);\n }\n )\n );\n patchResults.push(patchResult);\n }\n try {\n await queryFulfilled;\n } catch {\n for (const patch of patchResults) {\n patch.undo();\n }\n }\n }\n }),\n cancelShipping: builder.mutation<\n CancelShipmentApiResponse,\n CancelShipmentApiRequest\n >({\n query: (payload) => ({\n url: '/api/webapi/mytradera/shipping/cancelshipment',\n method: 'POST',\n body: payload\n }),\n async onQueryStarted({ shipmentId }, { dispatch, queryFulfilled }) {\n const patchResults = [];\n for (const cacheKey of getMySoldItemsCacheKeys) {\n const patchResult = dispatch(\n mySoldApi.util.updateQueryData(\n 'getMySoldItems',\n cacheKey,\n (draft) => {\n const purchaseOrder =\n draft.purchaseOrdersOneOf?.find(\n ({ purchaseOrder }) =>\n purchaseOrder?.shipping?.shipping\n ?.shipmentId === shipmentId\n )?.purchaseOrder;\n if (\n purchaseOrder?.state &&\n purchaseOrder.shipping?.shipping\n ) {\n purchaseOrder.state.isShippingBooked =\n false;\n purchaseOrder.shipping.shipping = {\n ...purchaseOrder.shipping.shipping,\n isCancelled: true,\n isCancellable: false,\n url: null\n };\n }\n Object.assign(draft, {\n ...draft,\n purchaseOrdersOneOf: [\n ...(draft.purchaseOrdersOneOf?.filter(\n (p) =>\n p.purchaseOrder\n ?.purchaseOrderId !==\n purchaseOrder?.purchaseOrderId\n ) ?? []),\n purchaseOrder\n ]\n });\n }\n )\n );\n patchResults.push(patchResult);\n }\n try {\n await queryFulfilled;\n } catch {\n for (const patch of patchResults) {\n patch.undo();\n }\n }\n }\n }),\n deleteShipping: builder.mutation<\n DeleteShipmentApiResponse,\n DeleteShipmentApiRequest\n >({\n query: (payload) => ({\n url: '/api/webapi/mytradera/shipping/deleteshipment',\n method: 'POST',\n body: payload\n }),\n async onQueryStarted(\n { shipmentId, ...patch },\n { dispatch, queryFulfilled }\n ) {\n const patchResults = [];\n for (const cacheKey of getMySoldItemsCacheKeys) {\n const patchResult = dispatch(\n mySoldApi.util.updateQueryData(\n 'getMySoldItems',\n cacheKey,\n (draft) => {\n const purchaseOrder =\n draft.purchaseOrdersOneOf?.find(\n ({ purchaseOrder }) =>\n purchaseOrder?.shipping?.shipping\n ?.shipmentId === shipmentId\n )?.purchaseOrder;\n if (\n purchaseOrder?.state &&\n purchaseOrder.shipping?.unpaidShipping\n ) {\n purchaseOrder.state.hasUnpaidShipping =\n false;\n purchaseOrder.shipping.unpaidShipping =\n null;\n }\n Object.assign(draft, patch);\n }\n )\n );\n patchResults.push(patchResult);\n }\n try {\n await queryFulfilled;\n } catch {\n for (const patch of patchResults) {\n patch.undo();\n }\n }\n }\n }),\n setIsHidden: builder.mutation<\n SetTransactionVisibilityApiResponse,\n SetTransactionVisibilityApiRequest\n >({\n query: (payload) => ({\n url: '/api/webapi/member/transaction-visibility',\n method: 'POST',\n body: payload\n }),\n invalidatesTags: (_response, _error, request) =>\n request.hidden\n ? // request.hidden here means that we have hidden an item\n // from a list where we do not show hidden items.\n // Only invalidate requests that are hidden=\"True\".\n // This is because the updated visibility might not have\n // propageted all the way to Elastic yet, so if we invalidate\n // the request where we show non-hidden items we request an\n // updated list which still contains the item that the user\n // just hid. Hiding it in the client is handled by the\n // onQueryStarted optimistic update\n [...getMySoldItemsCacheKeys.values()]\n .filter(\n (cacheKey) =>\n cacheKey.sellerFilters?.hidden === 'True'\n )\n .map((cacheEntry) => ({\n type: MySoldTagTypes.SoldPurchaseOrders,\n id: JSON.stringify(cacheEntry.sellerFilters)\n }))\n : // and reversed for lists with hidden items, if we have\n // un-hidden an item, we should update all lists where it might\n // show up, i.e lists that contains items that aren't hidden\n [...getMySoldItemsCacheKeys.values()]\n .filter(\n (cacheKey) =>\n cacheKey.sellerFilters?.hidden === 'False'\n )\n .map((cacheEntry) => ({\n type: MySoldTagTypes.SoldPurchaseOrders,\n id: JSON.stringify(cacheEntry.sellerFilters)\n })),\n async onQueryStarted(patch, { dispatch, queryFulfilled }) {\n const patchResults = [];\n for (const cacheKey of getMySoldItemsCacheKeys) {\n if (\n // When on the hidden tab\n (cacheKey.sellerFilters?.hidden === 'True' &&\n !patch.hidden) || // When not on the hidden tab\n (cacheKey.sellerFilters?.hidden === 'False' &&\n patch.hidden)\n ) {\n const patchResult = dispatch(\n mySoldApi.util.updateQueryData(\n 'getMySoldItems',\n cacheKey,\n (draft) => {\n const updatedItems =\n draft.purchaseOrdersOneOf?.filter(\n ({\n purchaseOrder,\n extendedLifePurchaseOrder\n }) =>\n purchaseOrder?.purchaseOrderId !==\n patch.purchaseOrderId &&\n extendedLifePurchaseOrder?.purchaseOrderId !==\n patch.purchaseOrderId\n );\n\n Object.assign(draft, {\n purchaseOrdersOneOf: updatedItems\n });\n }\n )\n );\n patchResults.push(patchResult);\n }\n }\n\n try {\n await queryFulfilled;\n } catch {\n for (const patch of patchResults) {\n patch.undo();\n }\n }\n }\n }),\n getChangeItemsShipping: builder.query<\n GetChangeItemsShippingViewModelApiResponse,\n ChangeItemsShippingRequest\n >({\n query: ({ purchaseOrderId, fromCountry, toCountry }) =>\n `/api/webapi/selling/shipping/change-items-shipping?${qs.stringify(\n {\n purchaseOrderId,\n fromCountry,\n toCountry\n }\n )}`\n }),\n updateShippingPrice: builder.mutation<\n UpdateShippingPriceApiResponse,\n UpdateShippingPriceApiRequest\n >({\n query: (payload) => ({\n url: '/api/webapi/mytradera/shipping/update-shipping-price',\n method: 'POST',\n body: payload\n }),\n async onQueryStarted(\n {\n purchaseOrderId,\n price,\n shippingProvider,\n shippingProductId,\n ...patch\n },\n { dispatch, queryFulfilled }\n ) {\n const patchResults = [];\n for (const cacheKey of getMySoldItemsCacheKeys) {\n const patchResult = dispatch(\n mySoldApi.util.updateQueryData(\n 'getMySoldItems',\n cacheKey,\n (draft) => {\n const purchaseOrder =\n draft.purchaseOrdersOneOf?.find(\n ({ purchaseOrder }) =>\n purchaseOrder?.purchaseOrderId ===\n purchaseOrderId\n )?.purchaseOrder;\n if (purchaseOrder) {\n purchaseOrder.shippingAmount = price;\n purchaseOrder.shipping = {};\n purchaseOrder.shipping.selectedShipping = {\n shippingProductId:\n shippingProductId ?? 0,\n shippingCost: price.toString(),\n shippingType: shippingProvider\n };\n if (\n purchaseOrder.totalAmount != null &&\n purchaseOrder.totalItemAmount != null\n ) {\n purchaseOrder.totalAmount =\n purchaseOrder.totalItemAmount +\n price;\n }\n }\n Object.assign(draft, patch);\n }\n )\n );\n patchResults.push(patchResult);\n }\n try {\n await queryFulfilled;\n } catch {\n for (const patch of patchResults) {\n patch.undo();\n }\n }\n }\n }),\n markAsBooked: builder.mutation<\n SetItemShippingBookedApiResponse,\n SetItemShippingBookedApiRequest\n >({\n query: (payload) => ({\n url: '/api/webapi/member/selling/item-shipping-booked',\n method: 'POST',\n body: payload\n }),\n async onQueryStarted(\n { purchaseOrderId, booked, ...patch },\n { dispatch, queryFulfilled }\n ) {\n const patchResults = [];\n for (const cacheKey of getMySoldItemsCacheKeys) {\n const patchResult = dispatch(\n mySoldApi.util.updateQueryData(\n 'getMySoldItems',\n cacheKey,\n (draft) => {\n const purchaseOrder =\n draft.purchaseOrdersOneOf?.find(\n ({ purchaseOrder }) =>\n purchaseOrder?.purchaseOrderId ===\n purchaseOrderId\n )?.purchaseOrder;\n if (purchaseOrder?.state) {\n purchaseOrder.state.isShippingBooked =\n booked;\n }\n Object.assign(draft, patch);\n }\n )\n );\n patchResults.push(patchResult);\n }\n try {\n await queryFulfilled;\n } catch {\n for (const patch of patchResults) {\n patch.undo();\n }\n }\n }\n })\n })\n});\n\nexport const {\n useGetMySoldItemsQuery,\n useMarkAsPaidBySellerMutation,\n useMarkAsShippedBySellerMutation,\n useCancelShippingMutation,\n useDeleteShippingMutation,\n useSetIsHiddenMutation,\n useGetChangeItemsShippingQuery,\n useMarkAsBookedMutation,\n useUpdateShippingPriceMutation\n} = mySoldApi;\n","import axios from 'axios';\nimport { touchWebClient } from 'tradera/utils/http';\nimport { axiosConfigs } from 'tradera/utils/api';\nimport type {\n CampaignRequest,\n CampaignResponse,\n CampaignValidationResult\n} from './types';\n\nconst getCampaignCode = async (\n campaignCode: string,\n categoryId: string,\n brandAttributeValues: string[]\n) => {\n const requestData = {\n code: campaignCode,\n selectedCategories: categoryId ? [categoryId] : [],\n selectedBrandAttributes: brandAttributeValues\n };\n try {\n const response = await touchWebClient.post<\n CampaignResponse,\n CampaignRequest\n >('/selling/api/campaign', requestData, {\n cancelTokenId: 'SELLING_CAMPAIGN_CODE',\n ...axiosConfigs.authenticated\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 (\n campaignCode: string,\n categoryId: string,\n brandAttributeValues: string[]\n): Promise => {\n try {\n const data = await getCampaignCode(\n campaignCode,\n categoryId,\n brandAttributeValues\n );\n\n const result: CampaignValidationResult = {\n campaignCodeValid: data.validation.isValid,\n validationDisplayMessage: data.validation.message,\n hasEnded: data.validation.hasEnded\n };\n // KATS: this mapping serves no real purpose other adding another layer of abstraction, should probably be removed\n // when the campaign code is refactored to TS so that it's simple to rename the fields and catch any errors in code-time\n // instead of run-time.\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","import { isServer } from 'tradera/utils/nextjs';\n\n// expect sellingGlobalConfig to exist on global window type\ndeclare global {\n interface Window {\n sellingGlobalConfig?: SellingJsConfig;\n }\n}\ntype SellingJsConfig = {\n draftImagesUrl: string;\n templateImagesUrl: string;\n myTraderaUrl: string;\n isVatRequired: boolean;\n selectableVatValues: number[];\n isHybridAppContext: boolean;\n isHybridAppWithHtmlUploadSupport: boolean;\n isHtmlEnabled: boolean;\n commissionMinimum: number;\n commissionCap: number;\n highlightFeaturePrice: number;\n rankUpFeaturePrice: number;\n isAddonsEnabled: boolean;\n isSyiAddPhotoNativeAppEnabled: boolean;\n isSyiMemberConsentEnabled: boolean;\n isSyiTenImagesEnabled: boolean;\n};\n\nconst config = {\n ...((!isServer && window.sellingGlobalConfig) || {\n draftImagesUrl: '',\n templateImagesUrl: '',\n myTraderaUrl: '',\n isVatRequired: false,\n selectableVatValues: [],\n isHybridAppContext: false,\n isHybridAppWithHtmlUploadSupport: false,\n isHtmlEnabled: false,\n commissionMinimum: 0,\n commissionCap: 0,\n highlightFeaturePrice: 0,\n rankUpFeaturePrice: 0,\n isAddonsEnabled: false,\n isSyiAddPhotoNativeAppEnabled: false,\n isSyiMemberConsentEnabled: false,\n isSyiTenImagesEnabled: false\n }),\n maxTemplates: 100,\n domainNameCategoryId: 344477\n};\n\nconfig.maxTemplates = 100;\nconfig.domainNameCategoryId = 344477;\n\nexport default config;\n","import {\n GtmService,\n FlowId,\n type EventParams\n} from 'tradera/services/google-tagmanager/google-tagmanager-service';\n\ntype trackSYIFormProps = {\n eventName: SyiEventName;\n parameters?: Omit;\n};\n\ntype SyiEventName =\n | 'syi_start'\n | 'syi_form_start'\n | 'syi_title_input'\n | 'syi_shipped'\n | 'syi_image_input'\n | 'syi_description_input'\n | 'syi_category_input'\n | 'syi_attribute_input'\n | 'syi_price_input'\n | 'syi_pickup'\n | 'syi_confirmation'\n | 'syi_form_submit_success'\n | 'syi_form_submit_fail'\n | 'syi_photos_with_app'\n | 'syi_preview'\n | 'syi_listing_format'\n | 'syi_buy_now_price'\n | 'syi_ending_input'\n | 'syi_reserved_price'\n | 'syi_reference'\n | 'syi_donate'\n | 'syi_automatic_restart'\n | 'syi_image_drop'\n | 'syi_template_used'\n | 'syi_price_suggestion'\n | 'syi_publish_from_resell'\n | 'magical_api_call'\n | 'magical_classifier_call'\n | 'magical_api_trigger';\n\nlet syiSessionId: number | null = null;\nlet hasTrackedFormStart = false;\n\nconst createSessionId = () => {\n const randomDigits = Math.floor(Math.random() * 90000000) + 10000000;\n const timestamp = Math.floor(Date.now() / 1000); // UNIX timestamp in seconds\n return Number(`${randomDigits}${timestamp}`);\n};\n\nexport const trackSyiForm = ({\n eventName,\n parameters = {}\n}: trackSYIFormProps) => {\n // eslint-disable-next-line better-mutation/no-mutation\n syiSessionId = syiSessionId || createSessionId();\n\n if (eventName !== 'syi_start' && !hasTrackedFormStart) {\n GtmService.trackGA4('syi_form_start', {\n flow_id: FlowId.SYI,\n form_name: 'syi_draft',\n syi_session_id: syiSessionId.toString()\n });\n\n // eslint-disable-next-line better-mutation/no-mutation\n hasTrackedFormStart = true;\n }\n\n GtmService.trackGA4(eventName, {\n ...parameters,\n flow_id: FlowId.SYI,\n syi_session_id: syiSessionId.toString()\n });\n};\n","export const filterSelectableSuggestions = (\n incomingSuggestedAttributes,\n categoryAttributes\n) => {\n const selectableSuggestions = [];\n incomingSuggestedAttributes.forEach((sa) => {\n const categoryAttribute = categoryAttributes.find(\n (a) => a.id === sa.id\n );\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\nexport const filterCombinedSelectableSuggestions = (\n primarySuggestedAttributes,\n secondarySuggestedAttributes,\n categoryAttributes\n) => {\n const selectableSuggestions = [];\n categoryAttributes.forEach((categoryAttribute) => {\n const primarySuggestedAttribute = primarySuggestedAttributes.find(\n (psa) => psa.id == categoryAttribute.id\n );\n const secondarySuggestedAttribute = secondarySuggestedAttributes.find(\n (ssa) => ssa.id == categoryAttribute.id\n );\n const suggestedAttributeValues = [];\n if (primarySuggestedAttribute) {\n primarySuggestedAttribute.values.forEach((v) => {\n const isSelectableSuggestion = categoryAttribute.options.some(\n (o) => o.value === v\n );\n const isMaxReached =\n suggestedAttributeValues.length >=\n categoryAttribute.maxNumberOfValues;\n if (isSelectableSuggestion && !isMaxReached) {\n suggestedAttributeValues.push(v);\n }\n });\n }\n if (secondarySuggestedAttribute) {\n secondarySuggestedAttribute.values.forEach((v) => {\n const isSelectableSuggestion = categoryAttribute.options.some(\n (o) => o.value === v\n );\n const isAlreadySuggested = suggestedAttributeValues.some(\n (o) => o === v\n );\n const isMaxReached =\n suggestedAttributeValues.length >=\n categoryAttribute.maxNumberOfValues;\n if (\n isSelectableSuggestion &&\n !isMaxReached &&\n !isAlreadySuggested\n ) {\n suggestedAttributeValues.push(v);\n }\n });\n }\n if (suggestedAttributeValues.length > 0) {\n selectableSuggestions.push({\n id: categoryAttribute.id,\n values: suggestedAttributeValues\n });\n }\n });\n return selectableSuggestions;\n};\n","import { type PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nconst defaultCampaignProperties = {\n campaignCode: '',\n campaignCodeId: null,\n campaignCodeDescription: null,\n maxFeeCap: null,\n commissionPercent: null\n};\n\ntype CampaignCodeState = {\n campaignCode: string | null;\n campaignCodeId: number | null;\n campaignCodeDescription: string | null;\n campaignCodeChecked: boolean;\n firstTimeSubscribe: boolean;\n validCampaign: boolean;\n timeoutId: number | null;\n loading: boolean;\n searching: boolean;\n campaignCodeValid: boolean;\n searchingDelayed: boolean;\n validationError: string | null;\n searchingDelayedTimeoutId: number | null;\n isReadOnly: boolean;\n bannerMobileImageUrl: string | null;\n bannerTabletImageUrl: string | null;\n bannerDesktopImageUrl: string | null;\n hasEnded: boolean;\n maxFeeCap?: number | null;\n commissionPercent: string | null;\n};\n\nconst initialState: CampaignCodeState = {\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 ensureValidCampaignCodeId(\n campaignCodeId?: T\n): T | null {\n // Cannot publish when campaignCodeId is zero.\n // Fix server side when Riot SYI is used by 100% of members.\n return campaignCodeId || null;\n}\n\nfunction validate(state: CampaignCodeState) {\n if (state.campaignCodeChecked) {\n return {\n ...state,\n validationError: state.campaignCodeValid\n ? null\n : 'syi_campaign_code_invalid'\n };\n }\n\n return { ...state, validationError: null };\n}\n\nconst campaignCodeSlice = createSlice({\n name: 'campaignCode',\n initialState,\n reducers: {\n initializeCampaignCodeState: (\n state,\n action: PayloadAction<{\n campaignCode: string | null;\n campaignCodeId: number | undefined;\n campaignCodeDescription?: string;\n isReadOnly?: boolean;\n }>\n ) => {\n return validate({\n ...state,\n ...defaultCampaignProperties,\n campaignCode: action.payload.campaignCode,\n campaignCodeId: ensureValidCampaignCodeId(\n action.payload.campaignCodeId\n ),\n campaignCodeDescription:\n action.payload.campaignCodeDescription || null,\n campaignCodeValid:\n !!action.payload.campaignCodeId ||\n !action.payload.campaignCode,\n campaignCodeChecked: !!action.payload.campaignCode,\n isReadOnly: !!action.payload.isReadOnly\n });\n },\n setUnverifiedCampaignCode: (\n state,\n action: PayloadAction\n ) => {\n return validate({\n ...state,\n ...defaultCampaignProperties,\n campaignCode: action.payload,\n campaignCodeId: null,\n campaignCodeDescription: null,\n campaignCodeValid: !action.payload,\n bannerMobileImageUrl: null,\n bannerTabletImageUrl: null,\n bannerDesktopImageUrl: null\n });\n },\n setCampaignValidationResult: (\n state,\n action: PayloadAction<{\n campaignCode: string;\n campaignCodeId?: number | null;\n campaignCodeDescription?: string | null;\n campaignCodeValid: boolean;\n maxFeeCap?: number;\n bannerMobileImageUrl?: string | null;\n bannerTabletImageUrl?: string | null;\n bannerDesktopImageUrl?: string | null;\n hasEnded?: boolean;\n commissionPercent: string | null;\n }>\n ) => {\n if (state.campaignCode === action.payload.campaignCode) {\n return validate({\n ...state,\n ...defaultCampaignProperties,\n campaignCode: action.payload.campaignCode,\n campaignCodeId: ensureValidCampaignCodeId(\n action.payload.campaignCodeId\n ),\n campaignCodeDescription:\n action.payload.campaignCodeDescription || null,\n campaignCodeValid: action.payload.campaignCodeValid,\n maxFeeCap: action.payload.maxFeeCap,\n bannerMobileImageUrl:\n action.payload.bannerMobileImageUrl ?? null,\n bannerTabletImageUrl:\n action.payload.bannerTabletImageUrl ?? null,\n bannerDesktopImageUrl:\n action.payload.bannerDesktopImageUrl ?? null,\n hasEnded: !!action.payload.hasEnded,\n searching: false,\n searchingDelayed: false,\n commissionPercent: action.payload.commissionPercent\n });\n }\n },\n resetFees: (state) => {\n return validate({\n ...state,\n maxFeeCap: initialState.maxFeeCap,\n commissionPercent: initialState.commissionPercent\n });\n },\n resetCampaignBanner: (state) => {\n return validate({\n ...state,\n bannerMobileImageUrl: initialState.bannerMobileImageUrl,\n bannerTabletImageUrl: initialState.bannerTabletImageUrl,\n bannerDesktopImageUrl: initialState.bannerDesktopImageUrl\n });\n },\n toggleCampaignCodeCheckbox: (state, action: PayloadAction) => {\n if (action.payload) {\n return validate({\n ...state,\n campaignCodeChecked: true,\n searching: false,\n searchingDelayed: false\n });\n } else {\n return validate({\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 },\n validatingCampaignCodeBySearching: (state) => {\n return validate({ ...state, searching: true });\n },\n searchingForCampaignCodeIsDelayed: (state) => {\n return validate({ ...state, searchingDelayed: true });\n }\n }\n});\n\nexport const {\n initializeCampaignCodeState,\n setUnverifiedCampaignCode,\n setCampaignValidationResult,\n resetFees,\n resetCampaignBanner,\n toggleCampaignCodeCheckbox,\n validatingCampaignCodeBySearching,\n searchingForCampaignCodeIsDelayed\n} = campaignCodeSlice.actions;\n\nexport default campaignCodeSlice.reducer;\n","/* eslint-disable better-mutation/no-mutation */\nimport { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport type { Charity } from 'tradera/state/services/types/webapi-selling-generated';\n\ntype CharityCampaignSlice = Partial & {\n isSchenkerPaidBySchenker: boolean;\n};\n\nconst initialState: CharityCampaignSlice = {\n charityId: undefined,\n forceFreeShipping: false,\n name: null,\n description: null,\n isSchenkerPaidBySchenker: false\n};\n\nfunction isSchenkerPaying(campaignCode: string) {\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\nconst charityCampaignSlice = createSlice({\n name: 'charityCampaign',\n initialState,\n reducers: {\n resetCharityCampaign: () => initialState,\n setCharityCampaign: (\n state,\n action: PayloadAction<{\n charityCampaign: Charity;\n campaignCode: string;\n }>\n ) => {\n const { charityCampaign, campaignCode } = action.payload;\n state.charityId = charityCampaign.charityId;\n state.forceFreeShipping = charityCampaign.forceFreeShipping;\n state.name = charityCampaign.name ?? null;\n state.description = charityCampaign.description ?? null;\n state.isSchenkerPaidBySchenker = isSchenkerPaying(campaignCode);\n state.allowZeroDayAuctions = charityCampaign.allowZeroDayAuctions;\n }\n }\n});\n\nexport const { resetCharityCampaign, setCharityCampaign } =\n charityCampaignSlice.actions;\nexport default charityCampaignSlice.reducer;\n","const initialState = {\n chosenExtraFeatures: [],\n hasChosenExtraFeatures: false\n};\n\nexport const PossibleFeatures = {\n reservePrice: 'reservePrice',\n highlight: 'highlight',\n rankUp: 'rankUp'\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'SET_CHOSEN_EXTRA_FEATURES': {\n const hasChosenExtraFeatures =\n action.payload && action.payload.length > 0;\n return {\n ...state,\n chosenExtraFeatures: action.payload,\n hasChosenExtraFeatures\n };\n }\n }\n\n return state;\n};\n","import type {\n ShippingOption,\n ShippingProduct\n} from 'tradera/state/services/types/webapi-selling-generated';\nimport {\n mapToDecoratedShippingProduct,\n type DecoratedShippingProduct\n} from '../shipping-reducer';\n\nconst getTakeawayOption = (isTakeawayOnly: boolean) => {\n return isTakeawayOnly\n ? {\n type: 'TakeawayOnly',\n providerId: 'TakeawayOnly',\n name: 'Endast avhämtning'\n }\n : {\n type: 'Takeaway',\n providerId: 'Takeaway',\n name: 'Avhämtning'\n };\n};\n\nexport const getSelectedShippingProducts = (\n shippingProducts: DecoratedShippingProduct[],\n selectedShippingOptions: DecoratedShippingProduct[],\n offerTakeaway: boolean\n): DecoratedShippingProduct[] => {\n const result: DecoratedShippingProduct[] = selectedShippingOptions\n .map((selected) => {\n const shippingOption = shippingProducts.find((product) => {\n if (!selected.providerId || !selected.weight) {\n return product?.providerId === selected.providerId;\n }\n\n return (\n product?.providerId === selected.providerId &&\n product?.weight === selected.weight &&\n product?.id === selected.id\n );\n });\n\n if (!shippingOption) return null;\n\n return !!selected.isShippingFreeBasedOnCharity ===\n !!shippingOption.isShippingFreeBasedOnCharity\n ? {\n ...shippingOption,\n cost: selected.cost\n }\n : {\n ...shippingOption,\n cost: selected.cost\n };\n })\n .filter((x) => x !== null);\n if (offerTakeaway) {\n const takeAwayOption = getTakeawayOption(result.length === 0);\n result.push(\n mapToDecoratedShippingProduct(\n takeAwayOption as unknown as ShippingProduct\n )\n );\n }\n\n return result;\n};\n\nexport const getSelectedShippingOptions = (\n shippingProducts: DecoratedShippingProduct[],\n selectedShippingOptions: ShippingOption[],\n offerTakeaway: boolean\n) => {\n const result: DecoratedShippingProduct[] = selectedShippingOptions\n .map((selected) => {\n const shippingOption = shippingProducts.find((product) => {\n if (!selected.type || !selected.weight) {\n return product?.providerId === selected.type;\n }\n\n return (\n product?.providerId === selected.type &&\n product?.weight === selected.weight &&\n product?.id === selected.productId\n );\n });\n\n if (!shippingOption) return null;\n\n return {\n ...shippingOption,\n cost: selected.cost ?? null\n };\n })\n .filter((x) => x !== null);\n\n if (offerTakeaway) {\n const takeAwayOption = getTakeawayOption(result.length === 0);\n result.push(\n mapToDecoratedShippingProduct(\n takeAwayOption as unknown as ShippingProduct\n )\n );\n }\n\n return result.filter((x) => x !== null);\n};\n","import type { RootState } from 'tradera/state/configure-store';\n\nexport const selectCategory = (state: RootState) => state.views.syi.category;\n","import { getSyiSlice } from 'tradera/apps/syi/state/selectors/syi';\nimport type { RootState } from 'tradera/state/configure-store';\n\nexport const selectIsItemConditionDirty = (state: RootState) =>\n getSyiSlice(state).itemCondition.isDirty;\n\nexport const selectItemCondition = (state: RootState) =>\n getSyiSlice(state).itemCondition.itemCondition;\n","/* eslint-disable better-mutation/no-mutation */\n\nexport 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 qs from 'qs';\nimport { createApi } from '@reduxjs/toolkit/query/react';\nimport { isServer } from 'tradera/utils/nextjs';\nimport { isomorphicWebApiBaseQuery } from 'tradera/state/services/utils/webapi-base-query';\nimport type {\n TopListsApiResponse,\n TopListsRequest\n} from 'tradera/state/services/types/webapi-discover-generated';\n\nexport const tagTypes = { TopLists: 'TopLists' } as const;\n\nexport const topListsApi = createApi({\n reducerPath: 'topListsApi',\n baseQuery: isomorphicWebApiBaseQuery,\n tagTypes: Object.values(tagTypes),\n endpoints: (builder) => ({\n getTopLists: builder.query({\n providesTags: [tagTypes.TopLists],\n query: ({ languageCodeIso2, automaticTranslationPreferred }) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/top-lists?${qs.stringify({\n languageCodeIso2,\n automaticTranslationPreferred\n })}`;\n },\n extraOptions: {\n getWishListableItems: (\n topListsResponse: TopListsApiResponse\n ) => {\n const items = [\n ...(topListsResponse?.mostBiddedItems || []),\n ...(topListsResponse?.mostExpensiveItems || []),\n ...(topListsResponse?.mostWishListedItems || []),\n ...(topListsResponse?.mostExpensiveSold || [])\n ];\n return items;\n }\n }\n })\n })\n});\n\nexport const { useGetTopListsQuery, endpoints } = topListsApi;\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport type {\n ConfirmMutualFeedbackRemovalApiResponse,\n ConfirmMutualFeedbackRemovalApiRequest,\n TransactionFeedbackRemovalRequest,\n ValidateCreationApiResponse,\n CreateFeedbackRemovalApiResponse,\n CreateFeedbackRemovalApiRequest,\n ValidateConfirmationApiResponse,\n ConfirmationValidationRequest,\n DenyMututalFeedbackRemovalApiResponse,\n DenyMutualFeedbackRemovalApiRequest,\n FeedbackRemovalDetailsRequest,\n FeedbackRemovalApiResponse\n} from 'tradera/state/services/types/webapi-member-generated';\nimport { isomorphicWebApiBaseQuery } from 'tradera/state/services/utils/webapi-base-query';\nimport { isServer } from 'tradera/utils/nextjs';\nimport qs from 'qs';\n\nexport const feedbackRemovalApi = createApi({\n reducerPath: 'feedbackRemovalApi',\n baseQuery: isomorphicWebApiBaseQuery,\n tagTypes: ['FeedbackRemoval'],\n endpoints: (builder) => ({\n getFeedbackRemovalCreation: builder.query<\n ValidateCreationApiResponse,\n TransactionFeedbackRemovalRequest\n >({\n query: ({ transactionId }) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/member/feedback-removal/creation/validation?transactionId=${transactionId}`;\n },\n providesTags: ['FeedbackRemoval']\n }),\n getFeedbackRemovalConfirmationValidation: builder.query<\n ValidateConfirmationApiResponse,\n ConfirmationValidationRequest\n >({\n query: ({ id }) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/member/feedback-removal/confirmation/validation?id=${id}`;\n }\n }),\n createFeedbackRemoval: builder.mutation<\n CreateFeedbackRemovalApiResponse,\n CreateFeedbackRemovalApiRequest\n >({\n query: ({ comment, transactionId }) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n const query = qs.stringify({ comment, transactionId });\n return {\n url: `${baseUrl}/member/feedback-removal/create?${query}`,\n method: 'POST'\n };\n }\n }),\n getFeedbackRemovalDetails: builder.query<\n FeedbackRemovalApiResponse,\n FeedbackRemovalDetailsRequest\n >({\n query: ({ feedbackRemovalRequestId }) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return {\n url: `${baseUrl}/member/feedback-removal-details?feedbackRemovalRequestId=${feedbackRemovalRequestId}`,\n method: 'GET'\n };\n }\n }),\n confirmFeedbackRemoval: builder.mutation<\n ConfirmMutualFeedbackRemovalApiResponse,\n ConfirmMutualFeedbackRemovalApiRequest\n >({\n query: ({ feedbackRemovalRequestId }) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return {\n url: `${baseUrl}/member/feedback-removal/confirm`,\n method: 'POST',\n body: { feedbackRemovalRequestId }\n };\n }\n }),\n denyFeedbackRemoval: builder.mutation<\n DenyMututalFeedbackRemovalApiResponse,\n DenyMutualFeedbackRemovalApiRequest\n >({\n query: ({ feedbackRemovalRequestId }) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return {\n url: `${baseUrl}/member/feedback-removal/deny`,\n method: 'POST',\n body: { feedbackRemovalRequestId }\n };\n }\n }),\n getFeedbackRemovalTransaction: builder.query<\n FeedbackRemovalApiResponse,\n TransactionFeedbackRemovalRequest & { showDeleted?: boolean }\n >({\n query: ({ transactionId, showDeleted }) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return {\n url: `${baseUrl}/member/feedbacks?transactionId=${transactionId}${\n showDeleted ? '&showDeleted=true' : ''\n }`,\n method: 'GET'\n };\n }\n })\n })\n});\n\nexport const {\n useGetFeedbackRemovalCreationQuery,\n useGetFeedbackRemovalConfirmationValidationQuery,\n useGetFeedbackRemovalDetailsQuery,\n useGetFeedbackRemovalTransactionQuery,\n useConfirmFeedbackRemovalMutation,\n useDenyFeedbackRemovalMutation,\n useCreateFeedbackRemovalMutation,\n util: feedbackRemovalApiUtil\n} = feedbackRemovalApi;\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport { isomorphicWebApiBaseQuery } from 'tradera/state/services/utils/webapi-base-query';\nimport { isServer } from 'tradera/utils/nextjs';\nimport {\n type ResellSuggestionsApiResponse,\n type ResellSuggestionsRequest\n} from 'tradera/state/services/types/webapi-mytradera-generated';\nimport qs from 'qs';\n\nconst baseUrl = isServer ? '' : '/api/webapi';\n\nexport const resellSuggestionsApi = createApi({\n reducerPath: 'resellSuggestionsApi',\n baseQuery: isomorphicWebApiBaseQuery,\n endpoints: (builder) => ({\n getResellSuggestions: builder.query<\n ResellSuggestionsApiResponse,\n ResellSuggestionsRequest\n >({\n query: (params) =>\n `${baseUrl}/mytradera/web/resell-suggestions?${qs.stringify(params)}`\n })\n })\n});\n\nexport const { useGetResellSuggestionsQuery } = resellSuggestionsApi;\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport type {\n StartPageNewsForYouRequest,\n NewsForYouApiResponse\n} from 'tradera/state/services/types/webapi-discover-generated';\nimport { isomorphicWebApiBaseQuery } from 'tradera/state/services/utils/webapi-base-query';\nimport { isServer } from 'tradera/utils/nextjs';\nimport qs from 'qs';\n\nconst baseUrl = isServer ? '' : '/api/webapi';\n\nexport const wardrobeNewsForYouApi = createApi({\n reducerPath: 'wardrobeNewsForYouApi',\n baseQuery: isomorphicWebApiBaseQuery,\n endpoints: (builder) => ({\n getWardrobeNewsForYou: builder.query<\n NewsForYouApiResponse,\n StartPageNewsForYouRequest\n >({\n query: (params) =>\n `${baseUrl}/discover/web/start-page/news-for-you?${qs.stringify(params)}`\n })\n })\n});\n\nexport const { useGetWardrobeNewsForYouQuery } = wardrobeNewsForYouApi;\n","// extracted by mini-css-extract-plugin\nexport default {\"theme\":\"theme--Y9l8S\",\"theme-highlight\":\"theme-highlight--dKtk0\",\"themeHighlight\":\"theme-highlight--dKtk0\",\"theme-primary\":\"theme-primary--DWt5R\",\"themePrimary\":\"theme-primary--DWt5R\",\"outline\":\"outline--Crcw4\",\"theme-search\":\"theme-search--QIyB_\",\"themeSearch\":\"theme-search--QIyB_\",\"theme-danger\":\"theme-danger--uPRmR\",\"themeDanger\":\"theme-danger--uPRmR\",\"theme-action\":\"theme-action--k5uG4\",\"themeAction\":\"theme-action--k5uG4\",\"inverted\":\"inverted--xLsIm\",\"theme-tag\":\"theme-tag--KqzIi\",\"themeTag\":\"theme-tag--KqzIi\",\"theme-dropdown\":\"theme-dropdown--KNk_1\",\"themeDropdown\":\"theme-dropdown--KNk_1\",\"theme-light\":\"theme-light--YePr2\",\"themeLight\":\"theme-light--YePr2\",\"theme-translucent\":\"theme-translucent--fVQh_\",\"themeTranslucent\":\"theme-translucent--fVQh_\",\"theme-text\":\"theme-text--DSxVo\",\"themeText\":\"theme-text--DSxVo\",\"theme-link\":\"theme-link--jHKLG\",\"themeLink\":\"theme-link--jHKLG\",\"theme-unbutton\":\"theme-unbutton--HeCIj\",\"themeUnbutton\":\"theme-unbutton--HeCIj\",\"theme-mainMenu\":\"theme-mainMenu--gX8me\",\"themeMainMenu\":\"theme-mainMenu--gX8me\",\"size-xxs\":\"size-xxs--yyTNF\",\"sizeXxs\":\"size-xxs--yyTNF\",\"size-xs\":\"size-xs--M13ia\",\"sizeXs\":\"size-xs--M13ia\",\"size-md\":\"size-md--tApvZ\",\"sizeMd\":\"size-md--tApvZ\",\"fluidFixedIcon\":\"fluidFixedIcon--DceqG\",\"size-lg\":\"size-lg--maEEt\",\"sizeLg\":\"size-lg--maEEt\",\"no-transform\":\"no-transform--Gmb8z\",\"noTransform\":\"no-transform--Gmb8z\",\"button\":\"button--POL2z\",\"disabled\":\"disabled--djg5x\",\"loading\":\"loading--cVW4M\",\"ghost\":\"ghost--vfeHj\",\"branded-text\":\"branded-text--X7Adm\",\"brandedText\":\"branded-text--X7Adm\",\"non-branded-text\":\"non-branded-text--eDuoI\",\"nonBrandedText\":\"non-branded-text--eDuoI\",\"wide\":\"wide--Lac58\",\"fluid\":\"fluid--Toysd\",\"round\":\"round--Nfnyt\",\"linkReverted\":\"linkReverted--GyuS6\",\"loadingIcon\":\"loadingIcon--qJBoc\"};","import type { AriaAttributes } from 'react';\nimport { useCallback, cloneElement, forwardRef, isValidElement } from 'react';\nimport ALink, { type ALinkProps } from 'tradera/components/alink/alink';\nimport LoadingIcon from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\n\nimport styles from './button.module.scss';\nimport { classNames } from 'tradera/utils/class-names';\nimport type { OnlyAs, PolyRefFunction } from 'react-polymorphed';\n\nexport type ButtonTheme =\n | 'primary'\n | 'highlight'\n | 'action'\n | 'search'\n | 'warning'\n | 'danger'\n | 'light'\n | 'link'\n | 'translucent'\n | 'unbutton'\n | 'text'\n | 'tag'\n | 'mainMenu'\n | 'dropdown';\n\nexport type ButtonVariant = 'filled' | 'outline' | 'ghost';\n\nexport type ButtonSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg';\n\nexport type ButtonProps = AriaAttributes &\n Pick &\n React.PropsWithChildren<{\n theme?: ButtonTheme;\n variant?: ButtonVariant;\n /**\n * This is supported by some themes and is useful for buttons on dark backgrounds.\n * Supported themes: `action`.\n */\n inverted?: boolean;\n /**\n * Default is 'sm'\n */\n size?: ButtonSize;\n disabled?: boolean;\n className?: string;\n wide?: boolean;\n round?: boolean;\n brandedText?: boolean;\n nonBrandedText?: boolean;\n fluid?: boolean;\n linkReverted?: boolean;\n onClick?: (event: React.MouseEvent) => void;\n onKeyDown?: (event: React.KeyboardEvent) => void;\n /**\n * NOTE: If not passing any `className` to the icon it will be set automatically depending on button size and color.\n */\n icon?: React.ReactNode;\n /**\n * Place an icon on the left side of the button. Same as using `icon`.\n */\n iconLeft?: React.ReactNode;\n /**\n * Place an icon on the right side of the button.\n */\n iconRight?: React.ReactNode;\n /**\n * Place an icon to the outer left or right of the button\n */\n fixedIcon?: boolean;\n loading?: boolean;\n input?: boolean;\n nowrap?: boolean;\n /**\n * Default is 'center'\n */\n align?: 'left' | 'center' | 'right';\n type?: 'submit' | 'button' | 'reset';\n title?: string;\n alt?: string;\n /**\n * By default buttons will shrink when clicked. This disables that behaviour.\n */\n noTransform?: boolean;\n }>;\n\nconst polyRef = forwardRef as PolyRefFunction;\n\nconst getClassNameFromReactElement = (element: React.ReactNode) => {\n const props = isValidElement(element) ? element?.props : undefined;\n return typeof props === 'object' &&\n props &&\n 'className' in props &&\n props.className\n ? (props?.className as string)\n : '';\n};\n\nconst ButtonIcon = ({\n icon: IconComponent,\n size,\n round,\n className\n}: {\n icon?: React.ReactNode;\n size: ButtonProps['size'];\n round: ButtonProps['round'];\n className?: string;\n}) => {\n if (!IconComponent) return null;\n if (!isValidElement(IconComponent)) return null;\n\n const iconClasses = getClassNameFromReactElement(IconComponent);\n\n return (\n <>\n {cloneElement(IconComponent, {\n ...IconComponent?.props,\n // Set default classes if none are provided\n className: iconClasses\n ? iconClasses\n : classNames(\n 'icon',\n {\n 'icon-xs': size === 'xs',\n 'icon-sm': size === 'sm',\n 'icon-md': size === 'md' || size === 'lg',\n 'icon-lg': round && size === 'lg'\n },\n className\n )\n })}\n \n );\n};\n\nexport const Button = polyRef<\n 'button',\n ButtonProps,\n OnlyAs<'button' | 'input' | 'a'>\n>(\n (\n {\n theme = 'primary',\n variant = 'filled',\n inverted,\n size = 'sm',\n children,\n disabled,\n wide,\n round,\n className,\n brandedText,\n nonBrandedText,\n fluid,\n linkReverted,\n onClick,\n icon,\n iconLeft: iconLeftProp,\n iconRight,\n href,\n loading,\n input,\n align = 'center',\n nowrap,\n fixedIcon,\n noTransform,\n ...otherProps\n },\n forwardedRef\n ) => {\n const iconLeft = iconLeftProp ?? icon ?? null;\n\n const ariaDisabled = otherProps['aria-disabled'];\n\n const buttonClasses = classNames(\n styles.button,\n styles.theme,\n styles[`theme-${theme}`],\n {\n [styles.filled]: variant === 'filled',\n [styles.outline]: variant === 'outline',\n [styles.ghost]: variant === 'ghost',\n [styles.inverted]: inverted,\n [styles.brandedText]: brandedText,\n [styles.nonBrandedText]: nonBrandedText,\n [styles[`size-${size}`]]: !!size && size !== 'sm',\n [styles.wide]: wide,\n [styles.round]: round,\n [styles.fluid]: fluid,\n [styles.loading]: loading,\n [styles.linkReverted]: linkReverted && theme === 'link',\n 'text-nowrap text-truncate': nowrap,\n ['text-left']: align === 'left',\n ['text-right']: align === 'right',\n // otherwise icons won't be out to the edge on larger sizes when using fixed icons since we pad them a lot.\n [styles.fluidFixedIcon]:\n fluid && fixedIcon && theme !== 'unbutton',\n [styles.noTransform]: noTransform\n },\n className\n );\n\n const onBtnClick = useCallback(\n (\n event: React.MouseEvent<\n HTMLAnchorElement | HTMLButtonElement,\n MouseEvent\n >\n ) => {\n if (ariaDisabled === true || ariaDisabled === 'true') return;\n\n if (typeof onClick === 'function' && !loading) {\n onClick(event);\n }\n },\n [onClick, loading, ariaDisabled]\n );\n\n if (input) {\n return ;\n }\n\n const loadingContent = loading ? (\n \n \n \n Loading\n \n \n ) : null;\n\n /**\n * Queue some complexity for handling all different positionings of icons.\n *\n * Since we want to be able to both have icons on the left and right side of\n * the inner content, AND be able to align the text to the left, center or\n * right, AND be able to have icons fixed, we need to do some codez to make\n * things predictable. Sure, we could absolutely position the icons, but\n * that could bring some unexpected behaviour, so let's use flexbox instead.\n *\n * We solve this by having a wrapper around the icon(s) and the content. And\n * then we place elements on both sides of the content, no matter where\n * the icon(s) are. We then flex-grow each element to be able to center the\n * content if we want to.\n */\n const fixedToLeft = fixedIcon && align !== 'left';\n const fixedToRight = fixedIcon && align !== 'right';\n const content =\n !!iconLeft || !!iconRight ? (\n \n {!!iconLeft && (\n \n \n \n )}\n {/* Weird hack: If we do not have an icon on the left but on the right, and want to center we have to add an empty element here which takes up space.\n And if we do not add some content inside it, it will take up more height than the other elements, hence the dot. */}\n {!iconLeft && align === 'center' && fixedIcon ? (\n \n .\n \n ) : null}\n {children}\n {loadingContent}\n {/* Weird hack: If we do not have an icon on the right but on the left, and want to center when have to add an empty element here which takes up space.\n And if we do not add some content inside it, it will take up more height than the other elements, hence the dot. */}\n {!iconRight && align === 'center' && fixedIcon ? (\n \n .\n \n ) : null}\n {!!iconRight && (\n \n \n \n )}\n \n ) : (\n <>\n {children}\n {loadingContent}\n \n );\n\n // An element cannot be disabled, therefore we cannot easily get a disabled behavior for it without modifying a lot of props,\n // so easiest way to solve this is perhaps to just render a disabled \n );\n }\n);\n\nButton.displayName = 'Button';\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"wrapper--rW0Wr\",\"reset\":\"reset--iZW0G\"};","import { classNames } from 'tradera/utils/class-names';\nimport type React from 'react';\nimport { forwardRef } from 'react';\nimport type { PolyRefFunction, OnlyAs } from 'react-polymorphed';\n\nimport styles from './text.module.scss';\n\nconst polyRef = forwardRef as PolyRefFunction;\n\nexport type FontWeight = 'light' | 'medium' | 'heavy';\n\n// This can probably be used by more components\nexport type FontColor =\n | 'branded'\n | 'danger'\n | 'dark'\n | 'function'\n | 'info'\n | 'light'\n | 'primary'\n | 'secondary'\n | 'success'\n | 'warning'\n | 'white'\n | 'gray-100'\n | 'gray-200'\n | 'gray-300'\n | 'gray-400'\n | 'gray-500'\n | 'gray-600'\n | 'gray-700'\n | 'gray-800'\n | 'gray-900';\n\nexport type FontFamily = 'inter' | 'hansen';\n\nexport type TextProps = {\n size?:\n | 'london'\n | 'amsterdam'\n | 'paris'\n | 'dublin'\n | 'oslo'\n | 'madrid'\n | 'berlin';\n className?: string;\n align?: 'left' | 'center' | 'right';\n color?: FontColor;\n children?: React.ReactNode;\n fontWeight?: FontWeight;\n fontStyle?: 'italic';\n font?: FontFamily;\n nowrap?: boolean;\n};\n\n/**\n * Text component\n *\n * Defaults to paragraph, but can be used as \"span\", \"strong\", \"code\" or \"em\" also with `as=\"span\"` etc.\n *\n * Font sizes (default is \"paris\"):\n * - london: 16px\n * - amsterdam: small screen: 14px, large screen: 16\n * - paris: small screen: 14px, large screen: 14px\n * - dublin: small screen: 12px, large screen: 14px\n * - oslo: small screen: 12px, large screen: 12px;\n *\n * @example\n * Some text\n *\n * @example\n * Some text\n *\n * @example\n * Some text\n */\nexport const Text = polyRef<\n 'p',\n TextProps,\n OnlyAs<'p' | 'span' | 'strong' | 'em' | 'code' | 'b' | 'label'>\n>(\n (\n {\n as: Component = 'p',\n size = 'paris',\n children,\n align,\n className,\n color,\n fontWeight,\n fontStyle,\n font,\n nowrap,\n ...props\n },\n ref\n ) => {\n return (\n \n {children}\n \n );\n }\n);\n","export enum ModalState {\n CLOSED = 'CLOSED',\n COMPLETED = 'COMPLETED',\n ERROR = 'ERROR',\n IN_PROGRESS = 'IN_PROGRESS'\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"component--m2LEX\",\"dark\":\"dark--gxthh\",\"thick\":\"thick--P7KwG\",\"hideLast\":\"hideLast--l5l9k\"};","import type React from 'react';\nimport { forwardRef } from 'react';\nimport { classNames } from 'tradera/utils/class-names';\n\nimport styles from './divider.module.scss';\n\nimport type { PolyRefFunction } from 'react-polymorphed';\n\nconst polyRef = forwardRef as PolyRefFunction;\n\nexport type DividerProps = React.PropsWithChildren<{\n dark?: boolean;\n className?: string;\n thick?: boolean;\n /**\n * Will hide `last-of-type` via CSS\n */\n hideLast?: boolean;\n}>;\n\nexport const Divider = polyRef<'hr', DividerProps>(\n (\n { as, children, className, dark, thick, hideLast, ...props },\n forwardRef\n ) => {\n const Component = as ?? (children ? 'div' : 'hr');\n const role = Component !== 'hr' ? 'separator' : undefined;\n\n return (\n \n {children ? (\n {children}\n ) : null}\n \n );\n }\n);\n","// extracted by mini-css-extract-plugin\nexport default {\"iconOpen\":\"iconOpen--6DMj5\"};","import { forwardRef } from 'react';\nimport { classNames } from 'tradera/utils/class-names';\n\nimport type { ButtonProps } from '../atoms/button/button';\nimport { Button } from '../atoms/button/button';\nimport ArrowDownIcon from '@tradera/blueprint/theme/icons2/arrow-down.svg?jsx';\nimport DropdownIconSvg from '@tradera/blueprint/theme/icons2/dropdown.svg?jsx';\n\nimport styles from './dropdown-button.module.scss';\n\n// trying to make this a bit restrictive...since if you want a Button, use that instead\nexport type DropdownButtonProps = Omit & {\n isOpen?: boolean;\n iconClassName?: string;\n theme?: 'dropdown' | 'unbutton';\n id?: string;\n /**\n * This will use the thinner DropdownIcon SVG instead of the heavier ArrowDownIcon SVG\n */\n thinIcon?: boolean;\n};\n\n/**\n * Just a button with a specific look and feel used for dropdowns.\n *\n * Pass `isOpen` to change the icon to an open state.\n */\nexport const DropdownButton = forwardRef<\n React.ElementRef,\n DropdownButtonProps\n>(function DropdownButton(\n {\n children,\n className,\n fluid,\n isOpen,\n iconClassName,\n theme = 'dropdown',\n nonBrandedText,\n brandedText,\n thinIcon,\n ...props\n },\n forwardedRef\n) {\n return (\n \n ) : (\n \n )\n }\n // If we would always use `fixed` here, the icon would be on top of the text since it's absolutely positioned when fixed\n fixedIcon={fluid}\n align=\"left\"\n fluid={fluid}\n nonBrandedText={nonBrandedText}\n brandedText={brandedText}\n {...props}>\n {children}\n \n );\n});\n\ntype DropdownIconProps = { isOpen?: boolean; className?: string };\nexport const DropdownIcon = ({ isOpen, className }: DropdownIconProps) => (\n \n);\n","import type React from 'react';\n\ntype FlagProps = {\n countryCodeIso2?: string;\n} & React.ImgHTMLAttributes;\n\nconst Flag = ({ countryCodeIso2, ...otherProps }: FlagProps) => {\n return countryCodeIso2 ? (\n \n ) : null;\n};\n\nexport default Flag;\n","import { PayoutDestinationModalView, type PayoutState } from './types';\n\nexport default (): PayoutState => {\n return {\n hyperwallet: {},\n updateStatus: {\n isUpdating: false\n },\n modalState: { currentView: PayoutDestinationModalView.SelectOption },\n payoutFrequencyOption: undefined,\n availablePayoutOptions: [],\n displayedPayoutOptions: [],\n requireBankIdVerification: true,\n isFetching: false,\n showSettingsModal: false,\n tink: {\n tinkLinkUrl: '',\n accounts: undefined,\n errorMessage: '',\n isFetching: false\n },\n bankAccount: { clearingNumber: '', accountNumber: '' },\n paypal: { emailAddress: '' },\n swish: { swishNumber: '', verificationCode: '' }\n };\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"overlay\":\"overlay--JbHYZ\"};","import type React from 'react';\nimport { useCallback, useEffect } from 'react';\nimport styles from './overlay.module.scss';\nimport { classNames } from 'tradera/utils/class-names';\n\ntype OverlayProps = {\n children?: React.ReactChild;\n closeModalCallback?: () => void;\n className?: string;\n style?: React.CSSProperties;\n};\n\nexport const Overlay = ({\n closeModalCallback,\n children,\n className,\n style\n}: OverlayProps) => {\n const closeOnEscape = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n closeModalCallback?.();\n }\n },\n [closeModalCallback]\n );\n\n useEffect(() => {\n window.addEventListener('keydown', closeOnEscape);\n\n return () => {\n window.removeEventListener('keydown', closeOnEscape);\n };\n }, [closeOnEscape]);\n\n return (\n closeModalCallback?.()}>\n {children}\n \n );\n};\n","import { CSSTransition } from 'react-transition-group';\n\nexport const Expand = ({ children, ...props }) => (\n \n {children}\n \n);\n\nexport const EnterFrom = ({\n children,\n from,\n unmountOnExit = true,\n ...props\n}) => (\n \n {children}\n \n);\n\nexport const EnterFade = ({ children, unmountOnExit = true, ...props }) => (\n \n {children}\n \n);\n","export default {\n ACCOUNT_LOCKED_PAGE: 'AccountLocked',\n BRAND_PAGE: 'Brand',\n BRAND_LIST_PAGE: 'BrandList',\n CATEGORY_LIST: 'CategoryList',\n CATEGORY_RESULT_PAGE: 'Category',\n CHANGE_FORGOTTEN_PASSWORD_PAGE: 'ChangeForgottenPassword',\n CHANGE_PASSWORD_SUCCESS_PAGE: 'ChangePasswordSuccess',\n CUSTOM_RESULT_PAGE: 'CustomResults',\n DEFAULT: 'default',\n DETAILED_SEARCH: 'DetailedSearch',\n MEMBER_SEARCH: 'MemberSearch',\n ENDLESS_RECOMMENDATIONS_PAGE: 'EndlessRecommendation',\n ENTER_CELLPHONE_NUMBER_PAGE: 'EnterCellphoneNumber',\n ENTER_CELLPHONE_VERIFICATION_CODE_PAGE: 'EnterCellphoneVerificationCode',\n ENTER_USER_DETAILS_PAGE: 'EnterUserDetails',\n ERROR_PAGE: 'ErrorPage',\n FAVOURITE_SELLERS_PAGE: 'FavouriteSellers',\n FEEDBACK_REMOVAL_PAGE: 'FeedbackRemoval',\n FORGOT_PASSWORD_OPTIONS_PAGE: 'ForgotPasswordOptions',\n HOW_TO_BUY: 'HowToBuy',\n HOW_TO_SELL: 'HowToSell',\n IDENTIFICATION: 'Identification',\n INVALID_KEY_PAGE: 'InvalidKey',\n MY_TRADERA_PAGE: 'MyTradera',\n MY_TRADERA_PICKLIST_PRINT_VIEW: 'MyTradera_PickListPrintView',\n MY_TRADERA_ORDER_PRINT_VIEW: 'MyTradera_OrderPrintView',\n MY_SHIPPING_COMPLAINT: 'MyShippingComplaint',\n PROFILE_PAGE: 'ProfilePage',\n REPORT_ITEM_PAGE: 'ReportItem',\n RESET_EMAIL_PAGE: 'ResetEmail',\n SEARCH_RESULT_PAGE: 'SearchResults',\n SENT_EMAIL_CONFIRMATION_PAGE: 'SentEmailConfirmation',\n CAMPAIGN_PARTNER_PAGE: 'CampaignPartner',\n START_PAGE: 'StartPage',\n SYI_PAGE: 'SellItem',\n TOP_LISTS_PAGE: 'TopLists',\n TRADERA_SHOP_PAGE: 'TraderaShop',\n VALUATION: 'Valuation',\n VIEW_ITEM_PAGE: 'VIP',\n MY_MESSAGES_PAGE: 'MyMessages',\n LOGIN_PAGE: 'Login',\n MULTIFACTOR_AUTH_OPTIONS_LIST_PAGE: 'MultiFactorAuthenticationOptions',\n MULTIFACTOR_AUTH_VERIFY_CODE_PAGE: 'MultiFactorAuthenticationVerifyMFaCode',\n NEAR_YOU_PAGE: 'NearYou',\n DISPUTE_PAGE: 'Dispute',\n PAYOUT_REVIEW_PAGE: 'PayoutReview'\n};\n","export enum PaidStatuses {\n UNCOMMITTED = 'Uncommitted',\n UNPAID = 'Unpaid',\n MARKED_AS_PAID_BY_BUYER = 'MarkedAsPaidByBuyer',\n MARKED_AS_PAID_BY_SELLER = 'MarkedAsPaidBySeller',\n PAYMENT_PENDING = 'PaymentPending',\n PAID = 'Paid',\n EXPIRED = 'Expired'\n}\n","import { useEffect } from 'react';\n\nexport const useClickOutside = (\n ref: React.RefObject,\n handler: (e: KeyboardEvent | MouseEvent | TouchEvent) => void,\n exceptionRef: React.RefObject | null = null\n) => {\n useEffect(() => {\n const listener = (event: KeyboardEvent | MouseEvent | TouchEvent) => {\n const el = ref?.current;\n const exceptionEl = exceptionRef?.current;\n\n const isElClicked = el?.contains(\n event.target instanceof Element ? event.target : null\n );\n const isExceptionClicked = exceptionEl?.contains(\n event.target instanceof Element ? event.target : null\n );\n const isKey = event.type === 'keydown';\n const isEscapeKey =\n isKey && 'key' in event && event.key === 'Escape';\n\n if (isEscapeKey) {\n handler(event);\n } else if (!el || isElClicked || isExceptionClicked || isKey) {\n // Do nothing if ref's element, its children, the (optional) exceptionRef's element or any key but ESC is clicked\n return;\n }\n\n handler(event);\n };\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n document.addEventListener('keydown', listener);\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n document.removeEventListener('keydown', listener);\n };\n }, [ref, handler, exceptionRef]);\n};\n","import { useCallback, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { isServer } from 'tradera/utils/nextjs';\nimport { CookieUtil } from 'tradera/utils/cookie';\nimport {\n getCookieFromBrowser,\n setCookieToBrowser\n} from 'tradera/utils/cookie-helpers';\nimport { createSelector } from '@reduxjs/toolkit';\n\nexport const useCookieUtil = () => {\n const serverCookies = useSelector(\n createSelector(\n (state) => state.request?.cookies,\n (cookies) => cookies ?? {}\n )\n );\n\n const getCookie = useCallback(\n (key) => {\n if (isServer) {\n return serverCookies[key] || null;\n }\n return getCookieFromBrowser(key);\n },\n [serverCookies]\n );\n\n const setCookie = useCallback((cookie) => {\n if (isServer) {\n throw new Error('Cannot set cookie on server using this hook');\n } else {\n setCookieToBrowser(cookie);\n }\n }, []);\n\n const cookieUtil = useMemo(\n () => new CookieUtil(getCookie, setCookie),\n [getCookie, setCookie]\n );\n\n return cookieUtil;\n};\n","import { useEffect, useRef } from 'react';\n\nexport const useEventListener = (eventName, handler, element) => {\n // Create a ref that stores handler\n const savedHandler = useRef();\n // Update ref.current value if handler changes.\n // This allows our effect below to always get latest handler ...\n // ... without us needing to pass it in effect deps array ...\n // ... and potentially cause effect to re-run every render.\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(\n () => {\n const elem = element || window;\n // Make sure element supports addEventListener\n // On\n const isSupported = elem && elem.addEventListener;\n if (!isSupported) return;\n // Create event listener that calls handler function stored in ref\n const eventListener = (event) => savedHandler.current(event);\n // Add event listener\n elem.addEventListener(eventName, eventListener);\n // Remove event listener on cleanup\n return () => {\n elem.removeEventListener(eventName, eventListener);\n };\n },\n [eventName, element] // Re-run if eventName or element changes\n );\n};\n","import { useMediaQuery } from 'react-responsive';\nimport { BREAKPOINT_SIZES } from 'tradera/constants/breakpoints';\n\nexport const useIsTablet = () =>\n useMediaQuery({\n minWidth: BREAKPOINT_SIZES.MD.min,\n maxWidth: BREAKPOINT_SIZES.MD.max\n });\n","import type { Survey } from 'tradera/constants/surveys';\nimport { loadScript } from 'tradera/utils/script';\nimport { useCookieUtil } from 'tradera/hooks/use-cookie-util';\nimport { useAppSelector } from 'tradera/state/hooks';\nimport { selectMember } from 'tradera/state/member/selectors';\nimport { useIsFeatureEnabled } from 'tradera/hooks/use-is-feature-enabled';\n\ndeclare global {\n interface Window {\n qualtive?: {\n present: (survey: string, options?: QualtiveOptions) => void;\n post: (survey: string, options?: QualtiveOptions) => void;\n };\n }\n}\n\n// Types derived from Qualtive\n// https://github.com/nightshift-habits/qualtive-client-web/blob/main/src/form/types.ts#L43\ntype QualtiveOptions = {\n locale?: string;\n user?: {\n id?: string | number | null;\n name?: string;\n email?: string;\n };\n supportURL?: string;\n customAttributes?: {\n [key: string]: string | number | boolean | null;\n } | null;\n darkMode?: 'auto' | 'never' | 'always';\n};\n\nconst LOCALES: Record = {\n sv: 'sv-se',\n en: 'en-us',\n da: 'da-dk',\n de: 'de-de'\n};\n\nconst mapLocale = (languageCodeIso2: string) =>\n languageCodeIso2 in LOCALES ? LOCALES[languageCodeIso2] : LOCALES['sv'];\n\nconst openModal = async (survey: string, options: QualtiveOptions) => {\n const surveyOptions = {\n darkMode: 'never' as const,\n ...options\n };\n\n if (!window.qualtive) {\n await loadScript('https://static.qualtive.io/client/web.v1.js');\n }\n window.qualtive?.present(survey, surveyOptions);\n};\n\nconst postEvent = async (survey: string) => {\n if (!window.qualtive) {\n await loadScript('https://static.qualtive.io/client/web.v1.js');\n }\n window.qualtive?.post(survey);\n};\n\nexport const useQualtive = () => {\n const isQualtiveFeatureToggleEnabled =\n useIsFeatureEnabled('qualtive-feedback');\n\n const member = useAppSelector(selectMember);\n\n const languageCodeIso2 = useAppSelector(\n (state) => state.language?.preferred?.languageCodeIso2\n );\n const cookieUtil = useCookieUtil();\n const isQualtiveEnabled =\n isQualtiveFeatureToggleEnabled && cookieUtil.gdpr.isFunctionalEnabled();\n const options = {\n locale: mapLocale(languageCodeIso2 || 'sv'),\n user: member?.memberId\n ? {\n id: member.memberId,\n name: member.memberAlias ?? undefined,\n email: member.memberEmail ?? undefined\n }\n : undefined\n };\n\n return {\n isQualtiveEnabled,\n openQualtiveModal: (\n survey: Survey,\n customAttributes?: QualtiveOptions['customAttributes']\n ) => {\n if (isQualtiveEnabled) {\n openModal(survey.survey, {\n ...options,\n supportURL: survey.supportURL ?? '',\n customAttributes\n });\n }\n },\n postQualtiveEvent: (survey: string) => {\n if (isQualtiveEnabled) {\n postEvent(survey);\n }\n }\n };\n};\n","import type { Storage } from 'tradera/utils/storage';\nimport { localStore } from 'tradera/utils/storage';\n\ntype ResultSetRow = {\n key: string;\n value: T;\n timestamp: string;\n expires: string;\n};\n\ntype ResultSetResult = ResultSetRow[] & {\n orderByTimestamp?: () => ResultSetResult;\n orderByValue?: () => ResultSetResult;\n orderByExpire?: () => ResultSetResult;\n};\n\nclass ResultSet {\n private _result: ResultSetResult;\n constructor(result: ResultSetRow[]) {\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: keyof ResultSetRow) {\n function orderByProp(a: ResultSetRow, b: ResultSetRow) {\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\ntype StorageServiceOptions = {\n datastore?: Storage;\n};\n\n// KATS: since this is TS now we can likely make a couple of internal functions etc \"private\"...that will make it more useful from a TS perspective (public api etc) and something that C# devs can relate to I guess ;)\nclass StorageService {\n namespace: string;\n datastore: Storage;\n constructor(namespace = 'default', options: StorageServiceOptions = {}) {\n this.namespace = namespace;\n this.datastore = options.datastore || localStore;\n }\n\n getDataSafe() {\n return this.datastore.getItem(this.namespace) || {};\n }\n\n store(data: unknown) {\n this.datastore.setItem(this.namespace, data);\n return true;\n }\n\n remove(key: string) {\n const data = this.getDataSafe();\n const encodedKey = encodeURI(key).toLowerCase();\n\n this.purge(encodedKey, data);\n }\n\n purge(key: string, data: Record) {\n delete data[key];\n this.store(data);\n return true;\n }\n\n get(key: string) {\n const data = this.getDataSafe();\n const 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) as TValue) ?? null;\n }\n\n set(key: string, value: unknown, expires?: Date, timestamp?: Date) {\n const data = this.getDataSafe();\n const encodedKey = encodeURI(key).toLowerCase();\n\n const newData = {\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, {\n ...data,\n [encodedKey]: newData\n });\n\n return newData || null;\n }\n\n // KATS: can this removed?\n removeExpired() {\n const data = this.getDataSafe();\n\n for (const 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(): ResultSetResult {\n const data = this.getDataSafe();\n const rows: ResultSetRow[] = [];\n\n for (const prop in data) {\n if (data.hasOwnProperty(prop)) {\n rows.push({\n key: decodeURI(prop),\n value: data[prop].value,\n timestamp: data[prop].timestamp,\n expires: data[prop].expires\n });\n }\n }\n\n return new ResultSet(rows).get();\n }\n\n flush() {\n return this.datastore.clearByPrefix(this.namespace);\n }\n}\n\nexport default StorageService;\n","import { createSlice } from '@reduxjs/toolkit';\n\ntype AdsSlice = {\n isTcfLoaded: boolean;\n};\n\nexport const initialState: AdsSlice = {\n isTcfLoaded: false\n};\n\nconst adsSlice = createSlice({\n name: 'ads',\n initialState,\n reducers: {\n setTcfLoaded: (state) => {\n return { ...state, isTcfLoaded: true };\n }\n }\n});\n\nexport const { setTcfLoaded } = adsSlice.actions;\nexport const reducer = adsSlice.reducer;\n","/* eslint-disable better-mutation/no-mutation */\nimport { createSlice } from '@reduxjs/toolkit';\nimport type { FirebaseIdToken } from 'tradera/components/messaging/firebase.types';\n\ntype AuthState = {\n firebaseIdToken?: FirebaseIdToken;\n};\n\nconst initialState: AuthState = {};\n\nconst authSlice = createSlice({\n name: 'auth',\n initialState,\n reducers: {\n receivedFirebaseIdToken: (state, { payload }) => {\n state.firebaseIdToken = payload;\n }\n }\n});\n\nexport const { receivedFirebaseIdToken } = authSlice.actions;\n\nexport default authSlice.reducer;\n","const constants = {\n ACTIVE_FILTER_STATES_COUNTY: [\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 ],\n ACTIVE_FILTER_STATES_ITEM_CONDITION: ['New', 'Used'],\n ACTIVE_FILTER_STATES_ITEM_STATUS: ['Sold', 'Ended', 'Unsold'],\n ACTIVE_FILTER_STATES_ITEM_TYPE: ['Auction', 'FixedPrice'],\n ACTIVE_FILTER_STATES_SELLER_TYPE: ['Private', 'Company'],\n FILTER_STATES_ALLOWED_BUYER_REGIONS: {\n SWEDEN: 'sweden;eu;international',\n EU: 'eu;international',\n INTERNATIONAL: 'international',\n NORDIC: 'nordic;international'\n },\n MODALS: {\n FILTER_MODAL: 'filterModal',\n CATEGORY_MODAL: 'categoryModal'\n }\n} as const;\n\nexport default constants;\n\nexport type PossibleFilterStates =\n | (typeof constants.ACTIVE_FILTER_STATES_ITEM_CONDITION)[number]\n | (typeof constants.ACTIVE_FILTER_STATES_SELLER_TYPE)[number]\n | (typeof constants.ACTIVE_FILTER_STATES_ITEM_STATUS)[number]\n | (typeof constants.ACTIVE_FILTER_STATES_ITEM_TYPE)[number];\n\nexport enum FilterNames {\n BRAND = 'brand',\n CLOTHES_SIZE = 'clothes_size',\n CLOTHES_SIZE_CHILDREN = 'clothes_size_children',\n SHOE_SIZE = 'shoe_size'\n}\n","import {\n isEuCountryCode,\n isSwedenCountryCode\n} from 'tradera/utils/allowed-buyer-region';\nimport constants from '../constants/constants';\n\nconst getDefaultAllowedBuyerRegionsFilter = (countryCodeIso2: string) =>\n isSwedenCountryCode(countryCodeIso2)\n ? constants.FILTER_STATES_ALLOWED_BUYER_REGIONS.SWEDEN\n : isEuCountryCode(countryCodeIso2)\n ? constants.FILTER_STATES_ALLOWED_BUYER_REGIONS.EU\n : constants.FILTER_STATES_ALLOWED_BUYER_REGIONS.INTERNATIONAL;\n\nexport const getActiveFilterStatesAllowedBuyerRegions = (\n countryCodeIso2: string\n) =>\n Object.values(constants.FILTER_STATES_ALLOWED_BUYER_REGIONS).filter(\n (x) => x !== getDefaultAllowedBuyerRegionsFilter(countryCodeIso2)\n );\n\nexport const getActiveFilterStates = (countryCodeIso2: string) => {\n return [\n ...constants.ACTIVE_FILTER_STATES_ITEM_CONDITION,\n ...constants.ACTIVE_FILTER_STATES_SELLER_TYPE,\n ...constants.ACTIVE_FILTER_STATES_ITEM_STATUS,\n ...constants.ACTIVE_FILTER_STATES_ITEM_TYPE,\n ...constants.ACTIVE_FILTER_STATES_COUNTY,\n ...getActiveFilterStatesAllowedBuyerRegions(countryCodeIso2)\n ];\n};\n","import type {\n CompressedMultipleOptionsFilterViewModel,\n CompressedAttributeOption,\n PossibleFiltersObject\n} from 'tradera/apps/tradera/components/discover/components/filters/types';\nimport type { PossibleFilterStates } from 'tradera/apps/tradera/components/discover/constants/constants';\nimport { getActiveFilterStates } from 'tradera/apps/tradera/components/discover/helpers/filter-states';\nimport type { DiscoverState } from 'tradera/state/discover/initial-state';\nimport type { CustomResultPageDto } from 'tradera/state/services/types/webapi-browse-generated';\nimport type {\n CampaignPageApiResponse,\n CategoryLinkViewModel,\n CategoryPageApiResponse,\n FilterOptionViewModel,\n MultipleOptionsFilterViewModel,\n SearchPageApiResponse,\n SingleOptionFilterViewModel\n} from 'tradera/state/services/types/webapi-discover-generated';\n\nconst normalizeFilters: (\n filters: SingleOptionFilterViewModel[] | undefined | null\n) => Partial | undefined = (filters) => {\n if (filters) {\n const normalized = filters.reduce((aggregated, filter) => {\n if (filter.parameter) {\n return {\n ...aggregated,\n [filter.parameter]: {\n ...filter\n }\n };\n }\n return aggregated;\n }, {});\n return normalized;\n }\n};\n\nconst activeFilters = (\n filters: SingleOptionFilterViewModel[] | undefined | null,\n shippingRegionCountryCodeIso2: string\n) => {\n if (filters) {\n const normalized: SingleOptionFilterViewModel[] = [];\n filters.map((filter) => {\n const { selectedValue } = filter;\n if (\n getActiveFilterStates(shippingRegionCountryCodeIso2).includes(\n selectedValue as PossibleFilterStates\n )\n ) {\n normalized.push(filter);\n }\n });\n return normalized;\n }\n};\n\n// This prevents a huge SSR HTML payload in categories with many attributes, such as brands\n// For brands it decreases the __NEXT_DATA__ payload from ~100 kB to ~20 kB\nconst compressAttributeFilterOptions = (\n attributeFilter: FilterOptionViewModel[] | null | undefined\n) =>\n attributeFilter?.map(\n (attributeFilter) =>\n [\n attributeFilter.value,\n attributeFilter.sortOrder,\n attributeFilter.appliedFromWardrobeProfile\n ] as CompressedAttributeOption\n );\n\nconst compressAttributeFilters = (\n attributeFilters: MultipleOptionsFilterViewModel[]\n): CompressedMultipleOptionsFilterViewModel[] | undefined => {\n if (!attributeFilters) return;\n\n return attributeFilters.map((attributeFilter) => ({\n ...attributeFilter,\n options: compressAttributeFilterOptions(attributeFilter.options) || null\n }));\n};\n\nexport const normalize = (\n responseData:\n | CampaignPageApiResponse\n | (Partial & {\n categoryPath?: CategoryLinkViewModel[];\n })\n | (CategoryPageApiResponse & {\n internalSearchBar: CustomResultPageDto['searchBar'];\n isSavedSearchEmailEnabled: CategoryPageApiResponse['enableSavedSearch'];\n itemsOnDisplay: {\n isShopOwnedByCurrentMember: boolean;\n };\n }),\n shippingRegionCountryCodeIso2 = 'se'\n) => {\n const normalized: Partial = {\n isCsaSearchQuery:\n 'isCsaSearchQuery' in responseData\n ? responseData.isCsaSearchQuery || false\n : false,\n attributeFilters: [],\n categoryPath:\n 'categoryPath' in responseData\n ? responseData.categoryPath || []\n : [],\n currentCategoryId:\n 'categoryPath' in responseData\n ? responseData.categoryPath?.[0]?.id || 0\n : 0,\n filterCategories: {},\n filterPrice: {},\n filters: {},\n headerText:\n 'headerText' in responseData\n ? responseData.headerText || null\n : null,\n internalSearch:\n 'internalSearchBar' in responseData\n ? responseData.internalSearchBar || {}\n : {},\n introText:\n 'introText' in responseData ? responseData.introText || null : null,\n isSavedSearchEmailEnabled:\n 'isSavedSearchEmailEnabled' in responseData\n ? responseData.isSavedSearchEmailEnabled || false\n : false,\n isShopOwnedByCurrentMember:\n 'itemsOnDisplay' in responseData\n ? responseData.itemsOnDisplay?.isShopOwnedByCurrentMember ||\n false\n : false,\n items: [],\n relatedItems: [],\n itemsOnDisplay: [],\n mainText:\n 'mainText' in responseData ? responseData.mainText || null : null,\n pagination:\n 'pagination' in responseData\n ? responseData.pagination || null\n : null,\n totalItems:\n 'totalItems' in responseData ? responseData.totalItems || 0 : 0,\n searchLanguages:\n 'searchLanguages' in responseData\n ? responseData.searchLanguages || []\n : []\n };\n\n if ('filters' in responseData && responseData.filters) {\n const {\n categoryFilter,\n singleOptionFilters,\n priceRangeFilter,\n attributeFilters,\n wardrobeProfile\n } = responseData.filters;\n\n normalized.filterCategories = categoryFilter || {};\n normalized.filters = normalizeFilters(singleOptionFilters);\n normalized.activeFilters = activeFilters(\n singleOptionFilters,\n shippingRegionCountryCodeIso2\n );\n normalized.filterPrice = priceRangeFilter;\n normalized.wardrobeProfile = wardrobeProfile || null;\n\n // responseData.filters.attributeFilters does not exist in response from\n // [touchwebUrl]/campaign/sista-chansen.json?sortBy=TimeLeft\n // and undefined properties is not allowed in NextWeb\n if (attributeFilters) {\n normalized.attributeFilters =\n compressAttributeFilters(attributeFilters);\n }\n }\n\n if ('items' in responseData && responseData.items) {\n if (!normalized.items) {\n normalized.items = [];\n }\n normalized.items.push(...responseData.items);\n }\n\n if ('relatedItems' in responseData && responseData.relatedItems) {\n if (!normalized.relatedItems) {\n normalized.relatedItems = [];\n }\n normalized.relatedItems.push(...responseData.relatedItems);\n }\n\n if (\n 'itemsOnDisplay' in responseData &&\n responseData.itemsOnDisplay &&\n 'items' in responseData.itemsOnDisplay &&\n Array.isArray(responseData.itemsOnDisplay.items)\n ) {\n if (!normalized.itemsOnDisplay) {\n normalized.itemsOnDisplay = [];\n }\n normalized.itemsOnDisplay.push(...responseData.itemsOnDisplay.items);\n }\n\n return normalized;\n};\n","import type {\n CompressedMultipleOptionsFilterViewModel,\n PossibleFiltersObject,\n QueryParams\n} from 'tradera/apps/tradera/components/discover/components/filters/types';\nimport type {\n CategoryFilterViewModel,\n CategoryLinkViewModel,\n ItemCardViewModel,\n PaginationViewModel,\n PriceRangeFilterViewModel,\n SingleOptionFilterViewModel,\n WardrobeProfileViewModel\n} from 'tradera/state/services/types/webapi-discover-generated';\n\nexport type InternalSearch = {\n showSearchBar?: boolean;\n placeholder?: string;\n};\n\nexport type DiscoverState = {\n activeFilters: SingleOptionFilterViewModel[];\n attributeFilters: CompressedMultipleOptionsFilterViewModel[];\n categoryPath: CategoryLinkViewModel[];\n currentCategoryId: number;\n endpoint: string | null;\n error: string | null;\n filterCategories: CategoryFilterViewModel;\n filterPrice: PriceRangeFilterViewModel | null;\n filters: Partial; // converted by normalizeFilters() in src/state/discover/helpers.ts\n wardrobeProfile: WardrobeProfileViewModel | null;\n hasResult: boolean;\n headerText: string | null;\n internalSearch: InternalSearch;\n introText: string | null;\n isCsaSearchQuery: boolean;\n isFetchingGeolocation: boolean;\n isFilterOpen: boolean;\n isSavedSearchEmailEnabled: boolean;\n isShopOwnedByCurrentMember: boolean;\n items: ItemCardViewModel[];\n relatedItems: ItemCardViewModel[];\n itemsOnDisplay: ItemCardViewModel[];\n mainText: string | null;\n pagination: PaginationViewModel | null;\n queryParams: QueryParams | null;\n totalItems: number;\n searchLanguages: string[] | undefined | null;\n};\n\nexport const initialState: DiscoverState = {\n activeFilters: [],\n attributeFilters: [],\n categoryPath: [],\n currentCategoryId: 0,\n endpoint: null,\n error: null,\n filterCategories: {},\n filterPrice: {},\n filters: {},\n wardrobeProfile: null,\n hasResult: false,\n headerText: null,\n internalSearch: {},\n introText: null,\n isCsaSearchQuery: false,\n isFetchingGeolocation: false,\n isFilterOpen: false,\n isSavedSearchEmailEnabled: false,\n isShopOwnedByCurrentMember: false,\n items: [],\n relatedItems: [],\n itemsOnDisplay: [],\n mainText: null,\n pagination: null,\n queryParams: {},\n totalItems: 0,\n searchLanguages: []\n};\n","export default {\n DEFAULT_ACTION: 'initData/default',\n INITIALIZE: 'initData/INITIALIZE'\n};\n","import { RECENTLY_VIEWED_ITEM_IDS } from 'tradera/constants/cookies';\nimport cookieUtil from 'tradera/utils/cookie';\nimport type { InitData } from '../init-data/types';\n\nexport const getInitialState = (initData: InitData) => {\n const wishListItemIds = new Set(initData.wishListItemIds || []);\n const recentItemIds =\n cookieUtil\n .readCookie(RECENTLY_VIEWED_ITEM_IDS)\n ?.split(';')\n .filter(Boolean)\n .map(Number) ?? [];\n\n return {\n recentItemIds,\n wishListItemIds: Array.from(wishListItemIds),\n wishListAddedCount: 0\n };\n};\n","import { capitalize } from 'tradera/utils/string';\nimport {\n SUPPORTED_LANGUAGES,\n DEFAULT_LANGUAGE\n} from 'tradera/lang/constants.mjs';\nimport type { Language, LanguageState } from './types';\n\nconst getInitialPreferredLanguage = (\n languageCodeIso2: string,\n availableLanguages: Language[]\n): Language | undefined => {\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 return undefined;\n};\n\nconst getLanguageDisplayName = (languageCodeIso2: string) =>\n capitalize(\n // Only works on server side, lacks good browser support\n new Intl.DisplayNames([languageCodeIso2], { type: 'language' }).of(\n languageCodeIso2\n ) ?? ''\n );\n\nexport const getInitialServerLanguage = ({\n preferredLanguage = DEFAULT_LANGUAGE,\n memberCountryCodeIso2 = null,\n automaticTranslationPreferred = false\n}): LanguageState => {\n const isSupportedLanguage = SUPPORTED_LANGUAGES.includes(preferredLanguage);\n const preferredSupportedLanguage = isSupportedLanguage\n ? preferredLanguage\n : DEFAULT_LANGUAGE;\n const defaultLanguage = {\n languageCodeIso2: preferredSupportedLanguage,\n displayName: getLanguageDisplayName(preferredSupportedLanguage)\n };\n const availableLanguages = SUPPORTED_LANGUAGES.map((languageCodeIso2) => ({\n languageCodeIso2,\n displayName: getLanguageDisplayName(languageCodeIso2)\n }));\n\n return {\n preferred:\n getInitialPreferredLanguage(\n preferredSupportedLanguage,\n availableLanguages\n ) || defaultLanguage,\n available: availableLanguages,\n memberCountryCodeIso2,\n automaticTranslationPreferred\n };\n};\n\n// KATS: this should probably be in a large \"InitData\" type\ntype InitDataSubSetForLanguage = {\n defaultLanguage: Language;\n availableLanguages: Language[];\n languageCodeIso2: string;\n memberCountryCodeIso2: string;\n automaticTranslationPreferred: boolean;\n};\n\nexport default (initData: InitDataSubSetForLanguage) => {\n const result = {\n preferred:\n getInitialPreferredLanguage(\n initData.languageCodeIso2,\n initData.availableLanguages || []\n ) || null,\n memberCountryCodeIso2: initData.memberCountryCodeIso2 || null,\n available: initData.availableLanguages || [],\n automaticTranslationPreferred:\n initData.automaticTranslationPreferred || false\n };\n return result;\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport getInitialState, { getInitialServerLanguage } from './initial-state';\nimport type { LanguageState } from 'tradera/state/language/types';\nimport { DEFAULT_LANGUAGE } from 'tradera/lang/constants.mjs';\n\nconst initialState: LanguageState = {\n preferred: {\n languageCodeIso2: DEFAULT_LANGUAGE,\n displayName: 'Svenska'\n },\n available: [],\n automaticTranslationPreferred: false,\n memberCountryCodeIso2: null\n};\n\nconst languageSlice = createSlice({\n name: 'language',\n initialState,\n reducers: {\n initialize: (_state, { payload }) => {\n return getInitialState(payload);\n },\n initServerLanguage: (_state, { payload }) => {\n return getInitialServerLanguage(payload);\n },\n setAutomaticTranslationPreferred: (state, { payload }) => {\n state.automaticTranslationPreferred =\n payload.automaticTranslationPreferred;\n }\n }\n});\n\nexport const {\n initialize,\n initServerLanguage,\n setAutomaticTranslationPreferred\n} = languageSlice.actions;\nexport default languageSlice.reducer;\n","import type { InitData } from 'tradera/state/init-data/types';\nimport type { MemberState } from 'tradera/state/member/reducer';\n\nexport const getInitialState = (\n initData: InitData\n): Omit<\n MemberState,\n | 'hasLoggedIn'\n | 'previousLoginMethod'\n | 'registrationDate'\n | 'isFetchingGeolocation'\n | 'currencyCode'\n | 'blueshiftEventSignature'\n | 'memberIdHash'\n | 'automaticTranslationPreferred'\n> => {\n const {\n cleanedMemberAlias,\n facebookId,\n isLoggedIn,\n memberAlias,\n memberDetailedSellerRatingAverage,\n memberCountry,\n memberCountryCodeIso2,\n memberEmail,\n memberEmailMd5,\n memberEmailSha256,\n memberFirstName,\n memberId,\n memberHeroImage,\n memberLastName,\n memberBirthdate,\n memberTown,\n hasTraderaPay,\n isCompany,\n // Age and gender is named `age` and `gender` for the next redux state\n // when implementing this, these values are only used for holid_keyvalues\n // and because I want to keep `age` and `gender` with the same name as in next state\n // I am keeping these values as `age` and `gender` here as well\n memberAge: age,\n memberGender: gender,\n memberIsBuyer,\n memberIsSeller,\n permissions,\n memberState,\n isTrustedMember,\n isImpersonationSession\n } = initData;\n return {\n cleanedMemberAlias,\n facebookId,\n geolocation: null,\n isLoggedIn,\n memberAlias,\n memberDetailedSellerRatingAverage,\n memberCountry,\n memberCountryCodeIso2,\n memberEmail,\n memberEmailMd5,\n memberEmailSha256,\n memberFirstName,\n memberId,\n memberHeroImage,\n memberLastName,\n memberBirthdate,\n memberTown,\n hasTraderaPay,\n isCompany,\n age,\n gender,\n memberIsBuyer,\n memberIsSeller,\n permissions,\n memberState,\n isTrustedMember,\n isImpersonationSession\n };\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\n\nexport type OutageMessages = {\n heading: Record;\n text: Record;\n type: Record;\n webpageURL: Record;\n};\n\ntype OutageState = {\n messages: OutageMessages[];\n};\n\nexport const initialState: OutageState = {\n messages: []\n};\n\nconst slice = createSlice({\n name: 'outage',\n initialState,\n reducers: {\n setMessages: (state, { payload }) => {\n state.messages = payload ?? [];\n }\n }\n});\n\nexport const { setMessages } = slice.actions;\nexport const reducer = slice.reducer;\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 // eslint-disable-next-line better-mutation/no-mutation\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 const 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 { member } = getState();\n\n // something blocking notifications modal from being shown?\n if (!GdprSettings.isFunctionalEnabled() || !member.isLoggedIn) {\n return false;\n }\n return true;\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\n\nconst slice = createSlice({\n name: 'random',\n initialState: {\n randomNumber: 0\n },\n reducers: {\n setRandomNumber: (state) => {\n state.randomNumber = Math.random();\n }\n }\n});\n\nexport const { setRandomNumber } = slice.actions;\nexport const reducer = slice.reducer;\n","import type { RootState } from '../configure-store';\n\nexport const selectIsBot = (state: RootState) => state.request.isBot;\n","import actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case actionTypes.INITIALIZE:\n return {\n ...action.payload\n };\n case actionTypes.DEFAULT_ACTION:\n return {\n ...state,\n default: action.payload\n };\n default:\n return state;\n }\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport Analytics from 'packages/analytics';\nimport getInitialState from './initial-state';\n\nconst profileSlice = createSlice({\n name: 'profile',\n initialState: getInitialState(),\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 state.translatedReviewsProviderName = payload.providerName;\n },\n resetTranslatedReview: (state, { payload }) => {\n state.translatedReviews = state.translatedReviews.filter(\n (review) => review.gradeId !== payload.gradeId\n );\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 setFeedbackComment: (state, { payload }) => {\n const { feedbackId, comment } = payload;\n const newFeedbackItems = state.model.feedbackItems.map((item) =>\n item.gradeId === feedbackId\n ? {\n ...item,\n hasReply: true,\n isReplyAllowed: false,\n reply: comment\n }\n : { ...item }\n );\n state.model.feedbackItems = newFeedbackItems;\n }\n }\n});\n\nexport const {\n setTranslatedReviews,\n showTranslatedReviews,\n beginLoadingModel,\n beginLoadingTranslatedReviews,\n failedLoadingTranslatedReviews,\n setModel,\n setTranslationOnDemandIsDisabled,\n setFeedbackComment,\n resetTranslatedReview\n} = profileSlice.actions;\n\nexport default profileSlice.reducer;\n","import type { ProfilePageResponse } from 'tradera/backend/features/discover/profile-page-data';\n\nexport type ProfileState = {\n isTranslationOnDemandDisabled: boolean;\n loadingModel: boolean;\n model: Model | null;\n showTranslatedReviews: boolean;\n translatedReviews: [];\n translatedReviewsLoading: boolean;\n translatedReviewsLoadingError: boolean;\n};\n\nexport type MutualFeedbackRemovalItem = {\n transactionId: number;\n transactionIdUrl: string;\n feedbackRemovalRequestId: number;\n feedbackRemovalRequestIdUrl: string;\n mutualFeedbackRemovalStatus: string;\n status: string;\n statusText: string;\n};\n\nexport type FeedbackItem = {\n feedbackMemberId: number;\n feedbackMemberAlias: string;\n slugifiedFeedbackMemberAlias: string;\n feedbackMemberTotalRating: number;\n feedbackMemberRole: string;\n rating: string;\n hasText: boolean;\n text: string;\n hasReply: boolean;\n reply: string;\n created: string;\n createdDateTime: string;\n createdString: string;\n createdAgo: string;\n hasItemDescription: boolean;\n itemDescription: string;\n itemId: number;\n currentMemberId: number;\n isReplyAllowed: boolean;\n gradeId: number;\n categoryId: number;\n endDate: string;\n hasPassed120Days: boolean;\n canonicalUrl: string;\n mutualFeedbackRemovalItem?: MutualFeedbackRemovalItem;\n feedBackMemberRoleDescription: string;\n feedbackMemberCountryCodeIso2: string;\n};\n\ntype FeedbackSummaryForPeriod = {\n totalNegative: number;\n totalPositive: number;\n};\n\nexport type TotalFeedbackSummaryForMember = {\n memberId: number;\n lastMonth: FeedbackSummaryForPeriod;\n lastSixMonths: FeedbackSummaryForPeriod;\n lastTwelveMonths: FeedbackSummaryForPeriod;\n sinceRegistration: FeedbackSummaryForPeriod;\n unique: FeedbackSummaryForPeriod;\n};\n\ntype DetailedSellerRatingSummaryForMember = {\n itemDescriptionCategoryCount: number;\n communicationCategoryCount: number;\n deliveryTimeCategoryCount: number;\n shippingCostCategoryCount: number;\n itemDescriptionAverageRating: number;\n itemDescriptionAverageRatingInPercent: string;\n communicationAverageRating: number;\n communicationAverageRatingInPercent: string;\n deliveryTimeAverageRating: number;\n deliveryTimeAverageRatingInPercent: string;\n shippingCostAverageRating: number;\n shippingCostAverageRatingInPercent: string;\n totalAverageRating: number;\n totalAverageRatingInPercent: number;\n totalAverageCategoryCount: number;\n itemDescriptionAverageRatingClass: string;\n communicationAverageRatingClass: string;\n deliveryTimeAverageRatingClass: string;\n shippingCostAverageRatingClass: string;\n totalAverageRatingClass: string;\n};\n\ntype TouchwebProfilePaginationLink = {\n href: string;\n textString: string;\n cssClass: string;\n rel: string;\n};\n\nexport type TouchwebProfilePagination = {\n pageLinks: TouchwebProfilePaginationLink[];\n prev: TouchwebProfilePaginationLink;\n next: TouchwebProfilePaginationLink;\n};\n\nexport type Model = {\n publicProfile: ProfilePageResponse;\n feedbackItems: FeedbackItem[];\n detailedSellerRatingSummaryForMember?: DetailedSellerRatingSummaryForMember;\n hasFeedbackItems: boolean;\n totalFeedbackSummaryForMember: TotalFeedbackSummaryForMember;\n memberSince: string;\n accountState: string;\n currentRoleFilter: string;\n currentRatingFilter: string;\n existsInFavouriteSellers: boolean;\n pagination: TouchwebProfilePagination;\n feedbackItemsTotalCount: number;\n};\n\nexport default (): ProfileState => {\n return {\n isTranslationOnDemandDisabled: false,\n loadingModel: false,\n model: null,\n showTranslatedReviews: false,\n translatedReviews: [],\n translatedReviewsLoading: false,\n translatedReviewsLoadingError: false\n };\n};\n","const 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 itemCondition: null,\n memberConsent: null,\n step1: true,\n step2: true,\n step3: true,\n step4: true\n};\n\nexport default (state = initialState, action) => {\n const step1Errors = function (state) {\n return (\n !!state.shortDescription ||\n !!state.categoryId ||\n !!state.images ||\n !!state.longDescription ||\n !!state.itemCondition\n );\n };\n\n const step2Errors = function (state) {\n return (\n !!state.openingBid ||\n !!state.reservePrice ||\n !!state.fixedPrice ||\n !!state.durationDays ||\n !!state.customEndTime\n );\n };\n\n const step3Errors = function (state) {\n return !!state.shippingOptions;\n };\n\n const step4Errors = function (state) {\n return !!state.memberConsent;\n };\n\n switch (action.type) {\n case 'SET_ERROR':\n // eslint-disable-next-line better-mutation/no-mutation\n state = { ...state };\n // eslint-disable-next-line better-mutation/no-mutation\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 // eslint-disable-next-line better-mutation/no-mutation\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","var initialState = {\n itemCondition: null,\n validationError: null,\n selectionError: null,\n isDirty: false\n};\n\nfunction validate(newState) {\n return {\n ...newState,\n validationError:\n newState.itemCondition == null ||\n newState.itemCondition.trim() == '' ||\n newState.itemCondition === 'Undefined'\n ? 'syi_validation_missing_condition'\n : newState.selectionError\n };\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'SET_ITEM_CONDITION_FROM_USER':\n return validate({\n ...state,\n isDirty: action.payload !== initialState.itemCondition,\n itemCondition: action.payload\n });\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 initialState = {\n displayPromoted: false,\n displayHighlighted: false\n};\n\nexport default (state = initialState, action) => {\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","var initialState = {\n scrollY: {}\n};\n\nexport default (state = initialState, action) => {\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","import { mapItemDetails } from 'tradera/state/views/view-item/reducer';\n\nvar initialState = {\n itemDetails: null,\n bidInfo: null,\n isLoading: false,\n errorLoading: false,\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 serverSecondsLeft: null\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'SET_PREVIEW_ITEM_DETAILS': {\n return {\n ...state,\n itemDetails: mapItemDetails(action.payload),\n errorLoading: false\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, isLoading: action.payload };\n case 'SET_PREVIEW_ERROR':\n return { ...state, errorLoading: 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 syi from './reducers/syi';\nimport errors from './reducers/errors';\nimport shipping from './reducers/shipping-reducer';\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 attributes from './reducers/attributes';\nimport language from './reducers/language';\nimport traderaStateBankId from 'tradera/components/bank-id/state/bank-id/reducer';\nimport memberConsent from './reducers/member-consent';\nimport preview from './reducers/preview';\nimport charity from './reducers/charity';\nimport predictions from './reducers/predictions-reducer';\n\nconst combinedReducers = combineReducers({\n attributes,\n bankId: traderaStateBankId,\n buyerRegion,\n campaignCode,\n category,\n charity,\n charityCampaign,\n draft,\n edit,\n errors,\n extraFeatures,\n fees,\n images,\n itemCondition,\n itemDuration,\n language,\n longDescription,\n memberConsent,\n preview,\n price,\n scroll,\n shipping,\n shortDescription,\n syi,\n predictions,\n template\n});\n\nexport type SyiState = ReturnType;\n\nexport default combinedReducers;\n","import { getLanguage } from 'tradera/utils/language';\n\nexport default (state) =>\n state\n ? state\n : {\n preferredLanguage: getLanguage()\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 payout from 'tradera/apps/my-tradera/app/state/payout/reducer';\n\nexport default combineReducers({\n cookies,\n filters,\n myTradera,\n myTraderaItems,\n payout\n});\n","import type {\n DiscountPaymentOptionApiDto,\n GetDiscountItemApiDto,\n GetDiscountPurchaseOrderApiDto\n} from 'tradera/state/services/types/webapi-mytradera-generated';\n\nexport enum REFUND_STEP {\n LOADING = 'LOADING',\n ERROR_LOADING = 'ERROR_LOADING',\n START = 'START',\n DONE = 'DONE',\n SLOW = 'SLOW'\n}\n\nexport enum REFUNDED_PART {\n ITEM = 'Item',\n SHIPPING = 'Shipping',\n FULL = 'Full'\n}\n\nexport const MODAL_TYPE = {\n BANK_ID: 'BANK_ID',\n SWISH_HANDEL: 'SWISH_HANDEL'\n};\n\nexport const PAYMENT_OPTIONS = {\n VISA_MASTERCARD: 'VisaMasterCard',\n CARD: 'Card',\n SWISH_HANDEL: 'SwishHandel',\n WALLET: 'Wallet'\n};\n\nexport const PAYMENT_OPTION_STATUS = {\n AVAILABLE: 'Available',\n UNAVAILABLE_DUE_TO_AMOUNT: 'UnavailableDueToAmount',\n AVAILABLE_WITH_DISTURBANCE: 'AvailableWithDisturbance'\n};\n\nexport type RefundCheckoutSlice = {\n purchaseOrder?: RefundCheckoutPurchaseOrder;\n currentStep: REFUND_STEP;\n refund: RefundRefundState;\n payment: RefundPaymentState;\n ongoingDiscount?: RefundOngoingDiscount;\n};\n\nexport type RefundCheckoutPurchaseOrder = GetDiscountPurchaseOrderApiDto & {\n isRefund?: boolean;\n purchaseOrderId?: string;\n};\n\nexport type RefundRefundState = {\n amount: number | null;\n part?: REFUNDED_PART;\n item?: GetDiscountItemApiDto;\n canContinue: boolean;\n canEdit: boolean;\n\n isSaving: boolean;\n discountAttemptId?: string;\n discountId?: number;\n error?: string | null;\n};\n\nexport type RefundPaymentState = {\n selectedPayment?: string | null;\n paymentOptions: DiscountPaymentOptionApiDto[];\n modal: { open: string };\n paymentMethodData: RefundPaymentMethodData;\n isValidPaymentMethod: boolean;\n\n isPaying: boolean;\n discountPaymentAttemptId?: string;\n error?: string | null;\n isCancelling: boolean;\n};\n\nexport type RefundPaymentMethodData = {\n swishNumber?: string | null;\n};\n\nexport type RefundOngoingDiscount = {\n discountId?: number;\n discountPaymentAttemptId?: string;\n paymentMethod?: string;\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\nimport type {\n RefundCheckoutPurchaseOrder,\n RefundCheckoutSlice,\n RefundOngoingDiscount,\n RefundRefundState\n} from 'tradera/apps/my-tradera/refund-checkout/state/types';\nimport { REFUND_STEP } from 'tradera/apps/my-tradera/refund-checkout/state/types';\nimport type { DiscountPaymentOptionApiDto } from 'tradera/state/services/types/webapi-mytradera-generated';\n\nconst refundCheckoutSlice = createSlice({\n name: 'refundCheckout',\n initialState: {\n currentStep: REFUND_STEP.LOADING,\n refund: { canEdit: true },\n payment: { modal: {} }\n } as RefundCheckoutSlice,\n reducers: {\n setPurchaseOrder: (\n state,\n { payload }: PayloadAction\n ) => {\n state.purchaseOrder = payload;\n state.currentStep = REFUND_STEP.START;\n },\n setPaymentOptions: (\n state,\n { payload }: PayloadAction>\n ) => {\n state.payment.paymentOptions = payload;\n },\n setSelectedPayment: (state, { payload }) => {\n state.payment.selectedPayment = payload;\n },\n setPaymentMethodData: (state, { payload }) => {\n state.payment.paymentMethodData = payload;\n },\n setPaymentMethodValid: (state, { payload }: PayloadAction) => {\n state.payment.isValidPaymentMethod = payload;\n },\n setRefundIsSaving: (state, { payload }: PayloadAction) => {\n state.refund.isSaving = payload;\n state.refund.canEdit = !payload;\n },\n setRefundError: (\n state,\n { payload }: PayloadAction\n ) => {\n state.refund = {\n ...state.refund,\n ...{\n error: payload,\n isSaving: false,\n canEdit: true,\n discountId: undefined,\n discountAttemptId: undefined\n }\n };\n state.ongoingDiscount = undefined;\n },\n setPaymentError: (\n state,\n { payload }: PayloadAction\n ) => {\n state.payment.error = payload;\n },\n openPaymentModal: (state, { payload }: PayloadAction) => {\n state.payment.modal = {\n open: payload\n };\n },\n closePaymentModal: (state) => {\n state.payment.modal = {\n open: ''\n };\n },\n setDiscountId: (\n state,\n { payload }: PayloadAction\n ) => {\n state.refund.discountId = payload;\n },\n setCanEdit: (state, { payload }: PayloadAction) => {\n state.refund.canEdit = payload;\n },\n setDiscountPaymentAttemptId: (\n state,\n { payload }: PayloadAction\n ) => {\n state.payment.discountPaymentAttemptId = payload;\n },\n setDiscountAttemptId: (\n state,\n { payload }: PayloadAction\n ) => {\n state.refund.discountAttemptId = payload;\n },\n setOngoingDiscount: (\n state,\n { payload }: PayloadAction\n ) => {\n state.ongoingDiscount = payload;\n },\n setCheckoutStep: (state, { payload }: PayloadAction) => {\n state.currentStep = payload;\n },\n setRefundState: (\n state,\n { payload }: PayloadAction>\n ) => {\n state.refund = { ...state.refund, ...payload };\n },\n setIsPaying: (state, { payload }: PayloadAction) => {\n state.payment.isPaying = payload;\n },\n setIsCancelling: (state, { payload }: PayloadAction) => {\n state.payment.isCancelling = payload;\n }\n }\n});\n\nexport const {\n setPurchaseOrder,\n setPaymentOptions,\n setSelectedPayment,\n setPaymentMethodData,\n setPaymentMethodValid,\n setRefundIsSaving,\n setRefundError,\n setPaymentError,\n openPaymentModal,\n closePaymentModal,\n setDiscountId,\n setCanEdit,\n setDiscountPaymentAttemptId,\n setDiscountAttemptId,\n setOngoingDiscount,\n setCheckoutStep,\n setRefundState,\n setIsPaying,\n setIsCancelling\n} = refundCheckoutSlice.actions;\n\nexport default refundCheckoutSlice.reducer;\n","/* eslint-disable better-mutation/no-mutation */\nimport { type PayloadAction, createSlice } from '@reduxjs/toolkit';\n\ntype MyTraderaNextJsState = {\n changeShippingModalData?: {\n purchaseOrderId: string;\n receiverCountry: string;\n isChangeShippingModalOpen: boolean;\n };\n cancelShippingModalData?: {\n purchaseOrderId: string;\n shippingId: string;\n isCancelShippingModalOpen: boolean;\n };\n shippingQrCodeModalData?: {\n purchaseOrderId: string;\n isShippingQrCodeModalOpen: boolean;\n };\n};\n\nconst mySoldSlice = createSlice({\n name: 'mySold',\n initialState: {} as MyTraderaNextJsState,\n reducers: {\n openChangeShipping: (\n state,\n action: PayloadAction<{\n purchaseOrderId: string;\n receiverCountry: string;\n }>\n ) => {\n state.changeShippingModalData = {\n ...action.payload,\n isChangeShippingModalOpen: !!action.payload.purchaseOrderId\n };\n },\n closeChangeShipping: (state) => {\n state.changeShippingModalData = undefined;\n },\n openCancelShipping: (\n state,\n action: PayloadAction<{\n purchaseOrderId: string;\n shippingId: string;\n }>\n ) => {\n state.cancelShippingModalData = {\n ...action.payload,\n isCancelShippingModalOpen: true\n };\n },\n closeCancelShipping: (state) => {\n state.cancelShippingModalData = undefined;\n },\n openShippingQrCode: (\n state,\n action: PayloadAction<{ purchaseOrderId: string }>\n ) => {\n state.shippingQrCodeModalData = {\n ...action.payload,\n isShippingQrCodeModalOpen: true\n };\n },\n closeShippingQrCode: (state) => {\n state.shippingQrCodeModalData = undefined;\n }\n }\n});\nexport const {\n openChangeShipping,\n closeChangeShipping,\n openCancelShipping,\n closeCancelShipping,\n openShippingQrCode,\n closeShippingQrCode\n} = mySoldSlice.actions;\nexport default mySoldSlice.reducer;\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 '../../apps/syi/state/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 shippingCheckout from './shipping-checkout/reducer';\nimport invoiceCheckout from './invoice-checkout/reducer';\nimport refundCheckout from 'tradera/apps/my-tradera/refund-checkout/state/reducer';\nimport payouts from './payouts/reducer';\nimport payoutDestinationModal from 'tradera/components/payout-destination-modal/state/reducer';\nimport mySold from 'tradera/apps/my-tradera/sold/state/reducer';\n\nconst reducers = {\n checkout,\n myTradera,\n profile,\n cart,\n reportItem,\n shippingCalculator,\n startPage,\n viewItem,\n traderaShop,\n shippingCheckout,\n invoiceCheckout,\n refundCheckout,\n payouts,\n payoutDestinationModal,\n mySold,\n syi\n};\n\nexport default combineReducers(reducers);\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { type PayloadAction, createSlice } from '@reduxjs/toolkit';\nimport { isNextJs, isServer } from 'tradera/utils/nextjs';\n\ntype RequestState = {\n cookies: NodeJS.Dict | null;\n isBot: boolean;\n location: string | null;\n userAgent: string | null;\n request?: unknown;\n response?: unknown;\n requestId: number;\n pageTrackedRequestId: number;\n isClientApiRequest: boolean;\n};\n\nexport const initialState: RequestState = {\n cookies: null,\n isBot: false,\n isClientApiRequest: false,\n location: null,\n userAgent: null,\n requestId: 0,\n pageTrackedRequestId: -1 // Must initially not match requestId\n};\n\nconst slice = createSlice({\n name: 'request',\n initialState,\n reducers: {\n setCookies: (state, { payload }) => {\n state.cookies = payload;\n },\n setIsBot: (state, { payload }) => {\n state.isBot = payload;\n },\n setIsClientApiRequest: (state, { payload }) => {\n state.isClientApiRequest = payload;\n },\n setLocation: (state, { payload }) => {\n state.location = payload;\n },\n setUserAgent: (state, { payload }) => {\n state.userAgent = payload;\n },\n setPageTrackedRequestId: (\n state,\n { payload }: PayloadAction\n ) => {\n state.pageTrackedRequestId = payload;\n },\n setRequestAndResponse: (state, { payload }) => {\n state.request = payload.request;\n state.response = payload.response;\n },\n setRequestId: (state) => {\n if (isNextJs && !isServer) {\n throw new Error(\n 'setRequestId should only be called on the server'\n );\n }\n state.requestId = Math.random();\n }\n }\n});\n\nexport const {\n setCookies,\n setIsBot,\n setLocation,\n setUserAgent,\n setPageTrackedRequestId,\n setRequestAndResponse,\n setRequestId,\n setIsClientApiRequest\n} = slice.actions;\nexport const reducer = slice.reducer;\n","import type {\n WebAppleLoginApiRequest,\n WebFacebookLoginApiRequest,\n WebGoogleLoginApiRequest,\n WebKlarnaLoginApiRequest,\n WebMemberTokenApiRequest,\n WebMemberTokenApiResponse,\n WebMemberTokenByMfaApiResponse\n} from 'tradera/state/services/types/webapi-auth-generated';\nimport {\n type FetchBaseQueryError,\n createApi\n} from '@reduxjs/toolkit/query/react';\nimport type { SerializedError } from '@reduxjs/toolkit';\nimport {\n type WebApiError,\n isomorphicWebApiBaseQuery\n} from 'tradera/state/services/utils/webapi-base-query';\n\ntype LoginResponse =\n | {\n data: WebMemberTokenApiResponse;\n }\n | {\n error: FetchBaseQueryError | SerializedError | WebApiError;\n };\n\nexport const getMemberId = (\n response: LoginResponse | WebMemberTokenByMfaApiResponse\n) => {\n if ('data' in response) {\n return response.data.memberId;\n }\n return 0;\n};\n\nexport const loginApi = createApi({\n reducerPath: 'loginApi',\n baseQuery: isomorphicWebApiBaseQuery,\n endpoints: (builder) => ({\n login: builder.mutation<\n WebMemberTokenApiResponse,\n WebMemberTokenApiRequest\n >({\n query: (params) => ({\n url: '/api/webapi/auth/web/member/token',\n method: 'POST',\n body: params\n })\n }),\n loginWithGoogle: builder.mutation<\n WebMemberTokenApiResponse,\n WebGoogleLoginApiRequest\n >({\n query: (params) => ({\n url: '/api/webapi/auth/web/member/login/google',\n method: 'POST',\n body: params\n })\n }),\n loginWithKlarna: builder.mutation<\n WebMemberTokenApiResponse,\n WebKlarnaLoginApiRequest\n >({\n query: (params) => ({\n url: '/api/webapi/auth/web/member/login/klarna',\n method: 'POST',\n body: params\n })\n }),\n loginWithFacebook: builder.mutation<\n WebMemberTokenApiResponse,\n WebFacebookLoginApiRequest\n >({\n query: (params) => ({\n url: '/api/webapi/auth/web/member/login/facebook',\n method: 'POST',\n body: params\n })\n }),\n loginWithApple: builder.mutation<\n WebMemberTokenApiResponse,\n WebAppleLoginApiRequest\n >({\n query: (params) => ({\n url: '/api/webapi/auth/web/member/login/apple',\n method: 'POST',\n body: params\n })\n })\n })\n});\n\nexport const {\n useLoginMutation,\n useLoginWithAppleMutation,\n useLoginWithFacebookMutation,\n useLoginWithGoogleMutation,\n useLoginWithKlarnaMutation\n} = loginApi;\n","/* eslint-disable better-mutation/no-mutation */\nimport { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport type { FilterNames } from 'tradera/apps/tradera/components/discover/constants/constants';\n\ntype DiscoverViewState = {\n openModalId: string | null;\n openSubMenu: FilterNames | null;\n isWardrobeProfileOpen: boolean;\n};\n\nconst initialState: DiscoverViewState = {\n openModalId: null,\n openSubMenu: null,\n isWardrobeProfileOpen: false\n};\n\nconst discoverViewSlice = createSlice({\n name: 'discoverView',\n initialState,\n reducers: {\n setOpenSubMenu: (state, action: PayloadAction) => {\n state.openSubMenu = action.payload;\n },\n closeSubMenu: (state, action: PayloadAction) => {\n if (state.openSubMenu === action.payload) {\n state.openSubMenu = null;\n }\n },\n openWardrobeProfile: (state) => {\n state.isWardrobeProfileOpen = true;\n },\n closeWardrobeProfile: (state) => {\n state.isWardrobeProfileOpen = false;\n },\n setOpenModalId: (state, { payload }: PayloadAction) => {\n state.openModalId = payload;\n },\n closeAllModals: (state) => {\n state.openModalId = null;\n state.openSubMenu = null;\n state.isWardrobeProfileOpen = false;\n }\n }\n});\n\nexport const {\n setOpenSubMenu,\n closeSubMenu,\n setOpenModalId,\n closeAllModals,\n openWardrobeProfile,\n closeWardrobeProfile\n} = discoverViewSlice.actions;\n\nexport default discoverViewSlice.reducer;\n","import { combineReducers } from 'redux';\n\nimport { reducer as ads } from './ads/reducer';\nimport bankId from '../components/bank-id/state/bank-id/reducer';\nimport auth from './auth/reducer';\nimport { reducer as discover } from './discover/reducer';\nimport { reducer as environment } from './environment/reducer';\nimport initData from './init-data/reducer';\nimport items from './items/reducer';\nimport language from './language/reducer';\nimport member from './member/reducer';\nimport memberStorage from './member-storage/reducer';\nimport multiCurrency from './multi-currency/reducer';\nimport { reducer as page } from './page/reducer';\nimport { reducer as personalisation } from './personalisation/reducer';\nimport pushNotifications from './push-notifications/push-notifications-slice';\nimport shippingRegion from './shipping-region/reducer';\nimport { reducer as ui } from './ui/reducer';\nimport views from './views/reducer';\nimport { connectRouter } from 'connected-react-router';\nimport { reducer as status } from './status/reducer';\nimport { discoverApi } from './services/discover-api';\nimport { independentSearchApi } from './services/independent-search-api';\nimport { feesApi } from './services/fees-api';\nimport { touchwebSearchApi } from './services/touchweb-search-api';\nimport { touchwebSyiApi } from './services/touchweb-syi-api';\nimport { wishListNudge } from 'tradera/apps/tradera/state/wish-list-nudge/reducer';\nimport type { History } from 'history';\nimport { bidHistoryApi } from 'tradera/components/bid-history/bid-history-api';\nimport { cartApi } from './services/cart-api';\nimport { messagingStatsApi } from './services/messaging-stats-api';\nimport { categoriesApi } from 'tradera/state/services/categories-api';\nimport { draftsApi } from 'tradera/apps/syi/state/drafts-api';\nimport { templatesApi } from 'tradera/apps/syi/state/templates-api';\nimport { shippingComplaintApi } from './services/shipping-complaint-api';\nimport { savedSearchesApi } from 'tradera/apps/my-tradera/saved-searches/saved-searches-api';\nimport { pickListApi } from 'tradera/apps/my-tradera/pick-list2/services/pick-list-api';\nimport { reducer as request } from './request/reducer';\nimport { reducer as random } from './random/reducer';\nimport { referralModalApi } from 'tradera/components/referral-modal/services/referral-modal-api';\nimport { wishListApi } from './services/wish-list-api';\nimport quickView from 'tradera/components/quick-view/quick-view-reducer';\nimport { ajaxItemApi } from 'tradera/components/quick-view/ajax-item-api';\nimport { firebaseApi } from 'tradera/components/messaging/firebase-api';\nimport { webApi } from 'tradera/state/services/webapi-api';\nimport { topListsApi } from 'tradera/apps/tradera/components/top-lists/top-lists-api';\nimport { sellerListApi } from 'tradera/apps/my-tradera/app/components/seller-list/seller-list-api';\nimport { bookedShipmentsApi } from 'tradera/apps/my-tradera/app/containers/booked-shipment-api';\nimport { loginApi } from 'tradera/apps/login/login-api';\nimport { loginSlice } from 'tradera/apps/login/state/reducer';\nimport { feedbackRemovalApi } from 'tradera/apps/tradera/resolution/feedback-removal/feedback-removal-api';\nimport { startPageThemeApi } from 'tradera/state/services/start-page-theme-api';\nimport { preferredShippingProvidersApi } from 'tradera/components/shipping/preferred-shipping-providers/preferred-shipping-providers-api';\nimport { memberPrefilledPackagingCostApi } from 'tradera/apps/my-tradera/app/components/settings/selling/member-prefilled-packaging-cost-api';\nimport { memberLatestPublishedListingApi } from './services/member-latest-published-listing-api';\nimport { changePasswordApi } from 'tradera/apps/my-tradera/settings/password/password-api';\nimport { mySoldApi } from 'tradera/apps/my-tradera/sold/sold-api';\nimport { myPurchasesApi } from 'tradera/apps/my-tradera/purchases/purchases-api';\nimport { wardrobeNewsForYouApi } from 'tradera/apps/tradera/start-page/components/wardrobe-news-for-you/wardrobe-news-for-you-api';\nimport discoverView from 'tradera/apps/tradera/components/discover/state/reducer';\nimport { othersAlsoLookedAtApi } from './services/others-also-looked-at-api';\nimport { checkoutUpsellApi } from 'tradera/apps/tradera/components/checkout-upsell/checkout-upsell-api';\nimport { valuationApi } from './services/valuation-api';\nimport { syiShippingApi } from 'tradera/apps/syi/state/actions/shipping-api';\nimport { resellSuggestionsApi } from 'tradera/apps/tradera/start-page/components/resell-suggestions/resell-suggestions-api';\nimport { similarItemsV2Api } from './services/similar-items-v2-api';\nimport { reducer as outage } from './outage/reducer';\nimport leaveFeedbackApi from 'tradera/apps/my-tradera/app/components/leave-feedback/leave-feedback-api';\n\nconst rootReducer = (history: History) =>\n combineReducers({\n ads,\n bankId,\n auth,\n discover,\n environment,\n initData,\n items,\n language,\n member,\n memberStorage,\n multiCurrency,\n outage,\n page,\n personalisation,\n pushNotifications,\n random,\n request,\n shippingRegion,\n ui,\n views,\n wishListNudge,\n router: connectRouter(history),\n status,\n [sellerListApi.reducerPath]: sellerListApi.reducer,\n [discoverApi.reducerPath]: discoverApi.reducer,\n [categoriesApi.reducerPath]: categoriesApi.reducer,\n [changePasswordApi.reducerPath]: changePasswordApi.reducer,\n [independentSearchApi.reducerPath]: independentSearchApi.reducer,\n [feesApi.reducerPath]: feesApi.reducer,\n [pickListApi.reducerPath]: pickListApi.reducer,\n [touchwebSearchApi.reducerPath]: touchwebSearchApi.reducer,\n [touchwebSyiApi.reducerPath]: touchwebSyiApi.reducer,\n [bidHistoryApi.reducerPath]: bidHistoryApi.reducer,\n [cartApi.reducerPath]: cartApi.reducer,\n [draftsApi.reducerPath]: draftsApi.reducer,\n [templatesApi.reducerPath]: templatesApi.reducer,\n [shippingComplaintApi.reducerPath]: shippingComplaintApi.reducer,\n [savedSearchesApi.reducerPath]: savedSearchesApi.reducer,\n [referralModalApi.reducerPath]: referralModalApi.reducer,\n [wishListApi.reducerPath]: wishListApi.reducer,\n [messagingStatsApi.reducerPath]: messagingStatsApi.reducer,\n [firebaseApi.reducerPath]: firebaseApi.reducer,\n quickView,\n [ajaxItemApi.reducerPath]: ajaxItemApi.reducer,\n [webApi.reducerPath]: webApi.reducer,\n [topListsApi.reducerPath]: topListsApi.reducer,\n [bookedShipmentsApi.reducerPath]: bookedShipmentsApi.reducer,\n login: loginSlice.reducer,\n [loginApi.reducerPath]: loginApi.reducer,\n [feedbackRemovalApi.reducerPath]: feedbackRemovalApi.reducer,\n [startPageThemeApi.reducerPath]: startPageThemeApi.reducer,\n [memberLatestPublishedListingApi.reducerPath]:\n memberLatestPublishedListingApi.reducer,\n [preferredShippingProvidersApi.reducerPath]:\n preferredShippingProvidersApi.reducer,\n [memberPrefilledPackagingCostApi.reducerPath]:\n memberPrefilledPackagingCostApi.reducer,\n [mySoldApi.reducerPath]: mySoldApi.reducer,\n [myPurchasesApi.reducerPath]: myPurchasesApi.reducer,\n [wardrobeNewsForYouApi.reducerPath]: wardrobeNewsForYouApi.reducer,\n discoverView: discoverView,\n [othersAlsoLookedAtApi.reducerPath]: othersAlsoLookedAtApi.reducer,\n [checkoutUpsellApi.reducerPath]: checkoutUpsellApi.reducer,\n [valuationApi.reducerPath]: valuationApi.reducer,\n [syiShippingApi.reducerPath]: syiShippingApi.reducer,\n [resellSuggestionsApi.reducerPath]: resellSuggestionsApi.reducer,\n [similarItemsV2Api.reducerPath]: similarItemsV2Api.reducer,\n [leaveFeedbackApi.reducerPath]: leaveFeedbackApi.reducer\n });\n\nexport default rootReducer;\n","import type { ErrorLogger } from 'tradera/utils/logger-type';\nimport { isServer } from 'tradera/utils/nextjs';\nimport { logger } from 'tradera/legacy/static/packages/logger';\nimport { isDev } from 'tradera/utils/environment';\n\nconst backendLoggerPromise = (async () => {\n if (isServer) {\n return await import('@tradera-internal/infrastructure-logging');\n }\n return null;\n})();\n\nexport const createLogger = (name: string): ErrorLogger => {\n const loggerPromise = (async (): Promise => {\n if (isServer) {\n const { Logger } = (await backendLoggerPromise) as {\n Logger: new (name: string) => ErrorLogger;\n };\n return Logger\n ? new Logger(name)\n : {\n error: (message, context, error) => {\n console.error(error, message, context);\n if (isDev()) {\n throw new Error(\n 'Infrastructure logger not found'\n );\n }\n }\n };\n }\n return {\n error: async (message, context, error) => {\n return logger(error || message, {\n contexts: {\n isomorphicLogger: {\n errorMessage: message,\n ...(context || {})\n }\n }\n });\n }\n };\n })();\n\n return {\n error: async (message, context, error) => {\n const logger = await loggerPromise;\n return logger.error(message, context, error);\n }\n };\n};\n","export function isDev() {\n return (\n typeof process === 'object' && process?.env?.NODE_ENV !== 'production'\n );\n}\n","import { createApi, skipToken } from '@reduxjs/toolkit/query/react';\nimport {\n SearchSortOrderApiDto,\n type IndependentSearchApiRequest,\n type IndependentSearchApiResponse\n} from './types/webapi-discover-generated';\nimport { isServer } from 'tradera/utils/nextjs';\nimport { isomorphicBaseQueryForWishListableItems } from './utils/webapi-base-query';\nimport { createLogger } from 'tradera/utils/logging/isomorphic-logger';\nimport { DEFAULT_LANGUAGE, URL_LANGUAGES } from 'tradera/lang/constants.mjs';\n\nconst log = createLogger('state/services/independent-search-api');\n\n/**\n * Creates a query params object for RTK Query.\n * The query parameters for RTK Query is used as key for caching hence\n * must always be the same for the same query on server and client.\n */\nexport const getLastSearchQueryParams = (\n queryParams: Record | undefined\n) => {\n const modifiedParams = {\n ...queryParams,\n // We always want to sort on newest added to get a more \"alive\" feeling on the start page.\n // And it would be confusing for the user if they clicked the link to get to all search\n // results if they didn't see the same items on top as they did on the start page.\n sortBy: SearchSortOrderApiDto.AddedOn\n };\n return modifiedParams;\n};\n\nexport const independentSearchApi = createApi({\n reducerPath: 'independentSearchApi',\n baseQuery: isomorphicBaseQueryForWishListableItems,\n endpoints: (builder) => ({\n getIndependentSearchResult: builder.query<\n IndependentSearchApiResponse,\n IndependentSearchApiRequest\n >({\n query: (parameters) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n\n return {\n url: `${baseUrl}/discover/web/independent-search`,\n method: 'POST',\n body: parameters\n };\n },\n extraOptions: {\n getWishListableItems: (\n response: IndependentSearchApiResponse\n ) => response.items\n }\n })\n })\n});\n\nexport const isValidIndependentSearchParameters = (\n parameters: IndependentSearchApiRequest\n) => {\n const hasSellerLocation =\n !!parameters.sellerLocationLat && !!parameters.sellerLocationLong;\n\n if (!parameters.query && !hasSellerLocation) {\n return false;\n }\n\n if (parameters.shippingCountryCodeIso2?.length !== 2) {\n return false;\n }\n\n if (\n parameters.languageCodeIso2 !== DEFAULT_LANGUAGE &&\n !URL_LANGUAGES.includes(parameters.languageCodeIso2 || '')\n ) {\n return false;\n }\n\n return true;\n};\n\nexport const useGetIndependentSearchResultQuery = (\n ...args: Parameters<\n typeof independentSearchApi.useGetIndependentSearchResultQuery\n >\n) => {\n const params = args[0];\n const options = args[1];\n const skip = params === skipToken || options?.skip === true;\n\n if (!skip && !isValidIndependentSearchParameters(params)) {\n log.error('useGetIndependentSearchResultQuery has invalid parameters', {\n ...params,\n attributes: Object.keys(params.attributes ?? {})\n });\n }\n return independentSearchApi.useGetIndependentSearchResultQuery(...args);\n};\n\nexport const { endpoints } = independentSearchApi;\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport { isomorphicBaseQueryForWishListableItems } from './utils/webapi-base-query';\nimport { isServer } from 'tradera/utils/nextjs';\nimport type { IndependentSearchApiResponse } from './types/webapi-discover-generated';\nimport qs from 'qs';\n\ntype OthersAlsoLookedAtRequest = {\n itemId: number;\n shippingCountryCode: string;\n userLanguage: string;\n automaticTranslationPreferred: boolean;\n};\n\nexport const othersAlsoLookedAtApi = createApi({\n reducerPath: 'othersAlsoLookedAtApi',\n baseQuery: isomorphicBaseQueryForWishListableItems,\n endpoints: (builder) => ({\n getOthersAlsoLookedAt: builder.query<\n IndependentSearchApiResponse,\n OthersAlsoLookedAtRequest\n >({\n query: ({\n itemId,\n shippingCountryCode,\n userLanguage,\n automaticTranslationPreferred\n }) => {\n const query = qs.stringify({\n shippingCountryCode,\n userLanguage,\n automaticTranslationPreferred\n });\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/others-also-looked-at/${itemId}?${query}`;\n },\n extraOptions: {\n getWishListableItems: (\n response: IndependentSearchApiResponse\n ) => response.items\n }\n })\n })\n});\n\nexport const { useGetOthersAlsoLookedAtQuery } = othersAlsoLookedAtApi;\n","import type {\n GetShippingComplaintDataApiResponse,\n SaveShippingComplaintDataApiRequest,\n SaveShippingComplaintDataApiResponse\n} from './types/webapi-mytradera-generated';\nimport { isServer } from 'tradera/utils/nextjs';\nimport { createApi } from '@reduxjs/toolkit/query/react';\nimport { isomorphicWebApiBaseQuery } from './utils/webapi-base-query';\n\nexport const shippingComplaintApi = createApi({\n reducerPath: 'shippingComplaintApi',\n baseQuery: isomorphicWebApiBaseQuery,\n endpoints: (builder) => ({\n getShippingComplaintData: builder.query<\n GetShippingComplaintDataApiResponse,\n string\n >({\n query: (shipmentId) => {\n const urlParameters = new URLSearchParams({\n shipmentId\n });\n\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/mytradera/shipping/get-shipping-complaint-data?${urlParameters}`;\n }\n }),\n saveShippingComplaintData: builder.mutation<\n SaveShippingComplaintDataApiResponse,\n SaveShippingComplaintDataApiRequest\n >({\n query: (request) => ({\n url: '/api/webapi/mytradera/shipping/save-shipping-complaint-data',\n method: 'POST',\n body: request\n }),\n onQueryStarted: async (request, { dispatch, queryFulfilled }) => {\n const patchResult = dispatch(\n shippingComplaintApi.util.updateQueryData(\n 'getShippingComplaintData',\n request.shipmentId,\n (cache) => {\n // eslint-disable-next-line better-mutation/no-mutation\n cache.formData = request.formData;\n }\n )\n );\n try {\n const response = await queryFulfilled;\n dispatch(\n shippingComplaintApi.util.updateQueryData(\n 'getShippingComplaintData',\n request.shipmentId,\n (cache) => {\n if (!cache.formData) return;\n // eslint-disable-next-line better-mutation/no-mutation\n cache.submittedDate =\n response.data.submittedDate;\n }\n )\n );\n } catch {\n patchResult.undo();\n }\n }\n })\n })\n});\n\nexport const {\n useGetShippingComplaintDataQuery,\n useSaveShippingComplaintDataMutation,\n endpoints\n} = shippingComplaintApi;\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport { isomorphicBaseQueryForWishListableItems } from './utils/webapi-base-query';\nimport { isServer } from 'tradera/utils/nextjs';\nimport type {\n SimilarItemsV2DetailParams,\n SimilarItemsV2ApiResponse\n} from './types/webapi-discover-generated';\nimport qs from 'qs';\n\nexport const similarItemsV2Api = createApi({\n reducerPath: 'similarItemsV2Api',\n baseQuery: isomorphicBaseQueryForWishListableItems,\n endpoints: (builder) => ({\n getSimilarItemsV2: builder.query<\n SimilarItemsV2ApiResponse,\n SimilarItemsV2DetailParams\n >({\n query: ({\n itemId,\n shippingCountryCodeIso2,\n userLanguage,\n automaticTranslationPreferred\n }) => {\n const query = qs.stringify({\n shippingCountryCodeIso2,\n userLanguage,\n automaticTranslationPreferred\n });\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/similar-items-v2/${itemId}?${query}`;\n },\n extraOptions: {\n getWishListableItems: (response: SimilarItemsV2ApiResponse) =>\n response.items\n }\n })\n })\n});\n\nexport const { useGetSimilarItemsV2Query } = similarItemsV2Api;\n","/* eslint-disable */\n/* tslint:disable */\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nexport interface AiShippingRecommendationRequest {\n title?: string;\n categoryId?: string;\n draftId?: string;\n}\n\nexport interface AttributesCreateParams {\n request?: CreateSuggestAttributesApiRequest;\n}\n\nexport interface AttributesRequest {\n /** @format int32 */\n categoryId?: number;\n locale?: string;\n}\n\nexport interface CampaignCreateParams {\n request?: ValidateCampaignCodeApiRequest;\n}\n\nexport interface CampaignsCreateParams {\n request?: ValidateItemsCampaignCodeApiRequest;\n}\n\nexport interface CategoryRestrictionDetailParams {\n locale?: string;\n /** @format int32 */\n categoryId: number;\n}\n\nexport interface ChangeItemsShippingRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n fromCountry?: string;\n toCountry?: string;\n}\n\nexport interface CharitiesRequest {\n request?: GetCharitiesApiRequest;\n}\n\nexport interface ClassifyFromImageRequest {\n draftId?: string;\n imageId?: string;\n}\n\nexport interface ClosestCollectionPointRequest {\n countryCodeIso2?: string;\n shippingProvider?: string;\n streetName?: string;\n zipCode?: string;\n collectionPointId?: string;\n includeParcelBoxes?: boolean;\n}\n\nexport interface CollectionPointsUnifaunRequest {\n countryCodeIso2?: string;\n shippingProvider?: string;\n streetName?: string;\n town?: string;\n zipCode?: string;\n}\n\nexport interface CommissionfeeRequest {\n /** @format int32 */\n categoryId?: number;\n itemType?: string;\n /** @format int32 */\n price?: number;\n /** @format int32 */\n charityId?: number;\n}\n\nexport interface CompleteApplePurchaseCreateParams {\n request?: CompleteAppleItemFeaturePurchaseApiRequest;\n}\n\nexport interface CompleteGooglePurchaseCreateParams {\n request?: CompleteGoogleItemFeaturePurchaseApiRequest;\n}\n\nexport interface ConditionListingTypeFromCategoryRequest {\n isCompany?: boolean;\n /** @format int32 */\n categoryId?: number;\n}\n\nexport interface DefaultRequest {\n htmlEnabled?: boolean;\n}\n\nexport interface DraftsCreateParams {\n request?: SaveDraftApiRequest;\n}\n\nexport interface DraftsDeleteParams {\n request?: DeleteDraftsApiRequest;\n}\n\nexport interface DraftsDetailParams {\n languageCodeIso2?: string;\n countryCodeIso2?: string;\n draftId: string;\n}\n\nexport interface DraftsRequest {\n /** @format int32 */\n take?: number;\n /** @format int32 */\n skip?: number;\n}\n\nexport interface EndItemCreateParams {\n request?: EndItemApiRequest;\n}\n\nexport interface EndItemsCreateParams {\n request?: EndItemsApiRequest;\n}\n\nexport interface EndNonShopItemCreateParams {\n request?: EndNonShopItemApiRequest;\n}\n\nexport interface FeaturefeeRequest {\n request?: GetFeatureFeeApiRequest;\n}\n\nexport interface ForItemChangeCreateParams {\n request?: CreateDraftForItemChangeApiRequest;\n}\n\nexport interface FromExtendedLifeTransactionCreateParams {\n request?: CreateDraftFromExtendedLifeTransactionApiRequest;\n}\n\nexport interface FromItemCreateParams {\n request?: CreateDraftFromItemApiRequest;\n}\n\nexport interface FromParametersCreateParams {\n request?: CreateDraftFromParametersApiRequest;\n}\n\nexport interface FromResellCreateParams {\n request?: CreateDraftFromResellApiRequest;\n}\n\nexport interface FromTemplateCreateParams {\n request?: CreateDraftFromTemplateApiRequest;\n}\n\nexport interface ImageColorsRequest {\n imageIds?: string[];\n}\n\nexport interface InitializePurchaseCreateParams {\n request?: InitializeItemFeaturePurchaseApiRequest;\n}\n\nexport interface ItemDiscountCreateParams {\n request?: UpdateItemDiscountApiRequest;\n}\n\nexport interface ItemOndisplayCreateParams {\n request?: UpdateOnDisplayApiRequest;\n}\n\nexport interface ItemsCreateParams {\n request?: PublishDraftApiRequest;\n}\n\nexport interface ItemsRestartsCreateParams {\n request?: RestartItemsApiRequest;\n}\n\nexport interface MemberPrefilledPackagingCostCreateParams {\n request?: UpdateMemberPrefilledPackagingCostApiRequest;\n}\n\nexport interface MemberPrefilledPackagingCostRequest {\n request?: GetMemberPrefilledPackagingCostApiRequest;\n}\n\nexport interface MemberSelectedShippingProvidersCreateParams {\n request?: UpdateMemberSelectedShippingProvidersApiRequest;\n}\n\nexport interface MemberSelectedShippingProvidersRequest {\n request?: GetMemberSelectedShippingProvidersApiRequest;\n}\n\nexport interface MemberpaymentoptionsRequest {\n /** @format int32 */\n categoryId?: number;\n shippingType?: string[];\n itemType?: string;\n}\n\nexport interface MemberstateRequest {\n request?: GetMemberStateApiRequest;\n}\n\nexport interface OffsitePaymentDetectionCreateParams {\n request?: OffsitePaymentDetectionApiRequest;\n}\n\nexport interface OpenCameraCreateParams {\n request?: OpenCameraApiRequest;\n}\n\nexport interface PredictFromImagesRequest {\n imageIds?: string[];\n languageCodeIso2?: string;\n draftId?: string;\n itemClassification?: string;\n}\n\nexport interface ResellCreateParams {\n request?: CreateResellDraftFromItemApiRequest;\n}\n\nexport interface ReservePriceCreateParams {\n request?: SetItemReservePriceApiRequest;\n itemId: string;\n}\n\nexport interface ShippingProductsForCountryByWeightSpanAndSizeRequest {\n fromCountryCode?: string;\n /** @format int32 */\n charityId?: number;\n /** @format int32 */\n itemId?: number;\n shortDescription?: string;\n categoryId?: string;\n}\n\nexport interface ShippingProductsForCountryByWeightSpanRequest {\n fromCountryCode?: string;\n toCountryCode?: string;\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface ShippingproviderswithproductsRequest {\n request?: GetAvailableShippingProvidersWithProductsApiRequest;\n}\n\nexport interface ShopItemSettingsInfoRequest {\n request?: GetShopItemSettingsInfoApiRequest;\n}\n\nexport interface SplitPurchaseOrderCreateParams {\n request?: SplitPurchaseOrderApiRequest;\n}\n\nexport interface TemplatesCountRequest {\n request?: GetTemplatesCountApiRequest;\n}\n\nexport interface TemplatesCreateParams {\n request?: SaveTemplateApiRequest;\n}\n\nexport interface TemplatesDeleteParams {\n request?: DeleteTemplatesApiRequest;\n}\n\nexport interface TemplatesDetailParams {\n languageCodeIso2?: string;\n countryCodeIso2?: string;\n templateId: string;\n}\n\nexport interface TemplatesRequest {\n /** @format int32 */\n take?: number;\n /** @format int32 */\n skip?: number;\n}\n\nexport interface TitleToCategoryRequest {\n title?: string;\n searchLanguageCodeIso2?: string;\n draftId?: string;\n imageIds?: string[];\n}\n\nexport interface ResponseError {\n errorCode?: string | null;\n fieldName?: string | null;\n message?: string | null;\n}\n\nexport interface ResponseError1 {\n request?: WebSaveDraftApiRequest;\n}\n\nexport interface ResponseError2 {\n fromCountryCode?: string;\n /** @format int32 */\n charityId?: number;\n /** @format int32 */\n itemId?: number;\n}\n\nexport interface ResponseError5 {\n languageCodeIso2?: string;\n countryCodeIso2?: string;\n draftId: string;\n}\n\nexport interface ResponseError9 {\n request?: WebPublishDraftApiRequest;\n}\n\nexport interface ResponseStatus {\n errorCode?: string | null;\n errors?: ResponseError[] | null;\n message?: string | null;\n stackTrace?: string | null;\n}\n\nexport interface AttributeValues {\n numberAttributeValues?: NumberAttributeValue[] | null;\n termAttributeValues?: TermAttributeValue[] | null;\n}\n\nexport interface NumberAttributeValue {\n /** @format int32 */\n id: number;\n name?: string | null;\n values?: number[] | null;\n}\n\nexport interface TermAttributeValue {\n /** @format int32 */\n id: number;\n name?: string | null;\n values?: string[] | null;\n}\n\nexport interface AiShippingRecommendationApiResponse {\n autoSelect: boolean;\n recommendations?: ShippingRecommendationGroup[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface AiShippingRecommendationOption {\n /** @format double */\n confidence: number;\n isRecommended: boolean;\n name?: string | null;\n reasonCode?: string | null;\n}\n\nexport interface AttributeDefinition {\n backingField?: string | null;\n description?: string | null;\n displayName?: string | null;\n facetType?: string | null;\n /** @format int64 */\n id: number;\n /** @deprecated */\n isMultiSelect: boolean;\n /** @deprecated */\n isRequired: boolean;\n /** @format int32 */\n maxNumberOfValues: number;\n /** @format int32 */\n minNumberOfValues: number;\n possibleValues?: PossibleValue[] | null;\n shouldTranslateValues: boolean;\n /** @format int32 */\n sortOrder: number;\n type: InputType;\n}\n\nexport interface ChangeItemsShippingPurchaseOrderApiDto {\n isMarkedAsPaidByBuyer: boolean;\n isPaid: boolean;\n isPaidWithIntegratedPayment: boolean;\n items?: SoldItemApiDto[] | null;\n paidStatus?: string | null;\n}\n\nexport interface ClassifyFromDraftImageApiResponse {\n itemClassification?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CollectionPoint {\n countryCode?: string | null;\n displayName?: string | null;\n distance?: string | null;\n id?: string | null;\n isParcelBox: boolean;\n streetName?: string | null;\n town?: string | null;\n zipCode?: string | null;\n}\n\nexport interface ColorValue {\n color?: string | null;\n /** @format float */\n value: number;\n}\n\nexport interface CreateDraftForItemChangeApiRequest {\n /** @format int32 */\n itemId: number;\n}\n\nexport interface CreateDraftForItemChangeApiResponse {\n draftId?: string | null;\n draftReason?: string | null;\n /** @format int32 */\n itemId: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreateDraftFromExtendedLifeTransactionApiRequest {\n requestId?: string | null;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface CreateDraftFromExtendedLifeTransactionApiResponse {\n draftId?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreateDraftFromItemApiRequest {\n draftReason?: string | null;\n /** @format int32 */\n itemId: number;\n requestId?: string | null;\n}\n\nexport interface CreateDraftFromItemApiResponse {\n draftId?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreateDraftFromParametersApiRequest {\n /** @format int32 */\n categoryId?: number | null;\n /** @format int32 */\n openingBid?: number | null;\n shortDescription?: string | null;\n}\n\nexport interface CreateDraftFromParametersApiResponse {\n draftId?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreateDraftFromResellApiRequest {\n /** @format uuid */\n resellItemId: string;\n}\n\nexport interface CreateDraftFromResellApiResponse {\n couldNotDownloadAllImages: boolean;\n draftId?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreateDraftFromTemplateApiRequest {\n commandId?: string | null;\n templateId?: string | null;\n}\n\nexport interface CreateDraftFromTemplateApiResponse {\n draft?: ItemDraftResponse | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreateResellDraftFromItemApiRequest {\n /** @format int32 */\n itemId: number;\n requestId?: string | null;\n}\n\nexport interface CreateResellDraftFromItemApiResponse {\n draftId?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreateSuggestAttributesApiRequest {\n /** @format int32 */\n categoryId: number;\n extractorType: ExtractorType;\n shortDescription?: string | null;\n}\n\nexport interface CreateSuggestAttributesApiResponse {\n attributeValues?: AttributeValues | null;\n extractorType: ExtractorType;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface DeleteDraftsApiRequest {\n draftIds?: string[] | null;\n}\n\nexport interface DeleteDraftsApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface DeleteTemplatesApiRequest {\n templateIds?: string[] | null;\n}\n\nexport interface DeleteTemplatesApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface DraftImageColorsApiResponse {\n colorValues?: ColorValue[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CampaignInfo {\n bannerDesktopImageUrl?: string | null;\n bannerMobileImageUrl?: string | null;\n bannerTabletImageUrl?: string | null;\n description?: string | null;\n /** @format double */\n discountFactor?: number | null;\n /** @format int32 */\n id: number;\n isCustomLengthFeeFree: boolean;\n isUnsoldFeeFree: boolean;\n /** @format double */\n maxFeeCap?: number | null;\n /** @format double */\n provisionFactor?: number | null;\n}\n\nexport interface Category {\n /** @format int32 */\n categoryId: number;\n displayName?: string | null;\n name?: string | null;\n}\n\nexport interface Charity {\n allowZeroDayAuctions: boolean;\n campaignCode?: string | null;\n /** @format int32 */\n campaignCodeId: number;\n /** @format int32 */\n charityId: number;\n description?: string | null;\n /** @format date-time */\n endDate: string;\n forceFreeShipping: boolean;\n forcePaymentOption?: string | null;\n /** @format date-time */\n lastListingEndDate: string;\n logoUrl?: string | null;\n /** @format int32 */\n memberId: number;\n name?: string | null;\n ribbonUrl?: string | null;\n /** @format date-time */\n startDate: string;\n termsHtml?: string | null;\n termsSummary?: string | null;\n}\n\nexport interface DeliveryInformation {\n canChangeServicePoint: boolean;\n estimatedDeliveryTime?: EstimatedDeliveryTime | null;\n includeProviderNameForServicePoint: boolean;\n insurance?: Insurance | null;\n isTraceable: boolean;\n mailBoxWithServicePointBackup: boolean;\n servicePoint: boolean;\n}\n\nexport interface DraftImage {\n imageId?: string | null;\n isUploadedBySystem: boolean;\n /** @format int32 */\n rotationDegrees: number;\n}\n\nexport interface EstimatedDeliveryTime {\n /** @format int32 */\n maxWeekdays?: number | null;\n /** @format int32 */\n minWeekdays: number;\n}\n\nexport interface Insurance {\n /** @format double */\n amountPerKilogram?: number | null;\n hasReimbursementUpToPackageCost: boolean;\n /** @format double */\n totalAmount?: number | null;\n /** @format double */\n totalAmountUpToItemValue?: number | null;\n}\n\nexport interface ItemAdditionalDescription {\n /** @format date-time */\n addedOn: string;\n message?: string | null;\n}\n\nexport interface ItemDraft {\n descriptionLanguageCodeIso2?: string | null;\n additionalDescriptions?: ItemAdditionalDescription[] | null;\n allowZeroDayAuctions: boolean;\n allowedBuyerRegion?: string | null;\n attributeValues?: ItemDraftAttributeValues | null;\n campaignCode?: string | null;\n campaignCodeDescription?: string | null;\n /** @format int32 */\n campaignCodeId?: number | null;\n /** @format int32 */\n categoryId?: number | null;\n charity?: ItemDraftCharity | null;\n /** @format int32 */\n charityId?: number | null;\n /** @format date-time */\n createdDate: string;\n currency?: string | null;\n customEndTime?: string | null;\n displayHighlighted: boolean;\n displayPromoted: boolean;\n draftId?: string | null;\n draftReason?: string | null;\n /** @format int32 */\n durationDays?: number | null;\n /** @format int32 */\n externalId?: number | null;\n /** @format int32 */\n fixedPrice?: number | null;\n fromCountry?: string | null;\n images?: ItemDraftImage[] | null;\n itemCondition?: string | null;\n itemFeaturesNotOfferedToMember: boolean;\n /** @format int32 */\n itemId: number;\n /** @format date-time */\n lastModifiedDate: string;\n longDescription?: string | null;\n /** @format int32 */\n memberId: number;\n metadata?: ItemDraftMetadata | null;\n /** @format int32 */\n openingBid?: number | null;\n publishedHighlighted: boolean;\n publishedPromoted: boolean;\n /** @format int32 */\n quantity?: number | null;\n reference?: string | null;\n resellPartner?: string | null;\n /** @format int32 */\n reservePrice?: number | null;\n restart: boolean;\n selectedShippingSize?: string | null;\n sellerIpAddress?: string | null;\n shippingOptions?: ShippingOption[] | null;\n shortDescription?: string | null;\n templateId?: string | null;\n templateName?: string | null;\n /** @format int32 */\n vat?: number | null;\n /** @format int32 */\n version: number;\n}\n\nexport interface ItemDraftAttributeValues {\n numberAttributeValues?: ItemDraftNumberAttributeValue[] | null;\n termAttributeValues?: ItemDraftTermAttributeValue[] | null;\n}\n\nexport interface ItemDraftCharity {\n anonymous: boolean;\n /** @format int32 */\n charityId: number;\n /** @format int32 */\n percentageToDonate: number;\n}\n\nexport interface ItemDraftImage {\n draftImage?: DraftImage | null;\n imageUrl?: string | null;\n listingImage?: ListingImage | null;\n}\n\nexport interface ItemDraftMetadata {\n applicationId?: string | null;\n clientId?: string | null;\n}\n\nexport interface ItemDraftNumberAttributeValue {\n /** @format int32 */\n id: number;\n userGenerated: boolean;\n values?: number[] | null;\n}\n\nexport interface ItemDraftResponse {\n descriptionLanguageCodeIso2?: string | null;\n additionalDescriptions?: ItemAdditionalDescription[] | null;\n allowZeroDayAuctions: boolean;\n allowedBuyerRegion?: string | null;\n attributeValues?: ItemDraftAttributeValues | null;\n campaignCode?: string | null;\n campaignCodeDescription?: string | null;\n /** @format int32 */\n campaignCodeId?: number | null;\n /** @format int32 */\n categoryId?: number | null;\n categoryPath?: Category[] | null;\n charity?: ItemDraftCharity | null;\n /** @format int32 */\n charityId?: number | null;\n /** @format date-time */\n createdDate: string;\n currency?: string | null;\n customEndTime?: string | null;\n displayHighlighted: boolean;\n displayPromoted: boolean;\n draftId?: string | null;\n draftReason?: string | null;\n /** @format int32 */\n durationDays?: number | null;\n /** @format int32 */\n externalId?: number | null;\n /** @format int32 */\n fixedPrice?: number | null;\n fromCountry?: string | null;\n images?: ItemDraftImage[] | null;\n itemCondition?: string | null;\n itemFeaturesNotOfferedToMember: boolean;\n /** @format int32 */\n itemId: number;\n /** @format date-time */\n lastModifiedDate: string;\n longDescription?: string | null;\n /** @format int32 */\n memberId: number;\n metadata?: ItemDraftMetadata | null;\n /** @format int32 */\n openingBid?: number | null;\n publishedHighlighted: boolean;\n publishedPromoted: boolean;\n /** @format int32 */\n quantity?: number | null;\n reference?: string | null;\n resellPartner?: string | null;\n /** @format int32 */\n reservePrice?: number | null;\n restart: boolean;\n selectedShippingSize?: string | null;\n sellerIpAddress?: string | null;\n shippingOptions?: ShippingOption[] | null;\n shortDescription?: string | null;\n templateId?: string | null;\n templateName?: string | null;\n /** @format int32 */\n vat?: number | null;\n /** @format int32 */\n version: number;\n}\n\nexport interface ItemDraftTermAttributeValue {\n /** @format int32 */\n id: number;\n userGenerated: boolean;\n values?: string[] | null;\n}\n\nexport interface Link {\n title?: string | null;\n url?: string | null;\n}\n\nexport interface ListingImage {\n filename?: string | null;\n /** @format int32 */\n imageGroupId: number;\n /** @format int32 */\n imageId: number;\n isUploadedBySystem: boolean;\n /** @format int32 */\n rotationDegrees: number;\n}\n\nexport interface PackageRequirements {\n displaySize?: string | null;\n /** @format double */\n maxHeight?: number | null;\n /** @format double */\n maxLength?: number | null;\n /** @format double */\n maxLengthPlusCircumference?: number | null;\n /** @format double */\n maxSumOfAllSides?: number | null;\n /** @format double */\n maxSumOfLengthAndHeight?: number | null;\n /** @format double */\n maxVolume?: number | null;\n /** @format double */\n maxWeight?: number | null;\n /** @format double */\n maxWidth?: number | null;\n /** @format double */\n minHeight?: number | null;\n /** @format double */\n minLength?: number | null;\n /** @format double */\n minWeight?: number | null;\n /** @format double */\n minWidth?: number | null;\n restrictions?: string[] | null;\n satisfiesSizeCategories?: string[] | null;\n sizeCategory?: string | null;\n}\n\nexport interface ProductsPerWeightSpan {\n products?: ShippingProduct[] | null;\n /** @format double */\n weight: number;\n}\n\nexport interface ProductsPerWeightSpanAndSize {\n autoSelect: boolean;\n productsBySize?: ShippingProductsBySize[] | null;\n /** @format double */\n weight: number;\n}\n\nexport interface RestartUnpaidItemResult {\n /** @format int32 */\n oldItemId: number;\n /** @format int32 */\n reservedItemId: number;\n validationError?: string | null;\n}\n\nexport interface ShippingOption {\n /** @format int32 */\n cost?: number | null;\n /** @format int32 */\n productId?: number | null;\n sizeCategory?: string | null;\n type?: string | null;\n /** @format double */\n weight?: number | null;\n}\n\nexport interface ShippingProduct {\n deliveryInformation?: DeliveryInformation | null;\n fromCountry?: string | null;\n hasFullyIntegratedShipmentBooking: boolean;\n hideOnSyi: boolean;\n /** @format int32 */\n id: number;\n isSelectedInMemberSettings?: boolean | null;\n isShippingFreeBasedOnCharity: boolean;\n /** @format double */\n lowestRelevantMaxWeight?: number | null;\n name?: string | null;\n officialName?: string | null;\n packageRequirements?: PackageRequirements | null;\n preSelected: boolean;\n /** @format double */\n price: number;\n providerId?: string | null;\n toCountry?: string | null;\n /** @format double */\n weight: number;\n}\n\nexport interface ShippingProductsBySize {\n autoSelect: boolean;\n availableProviders?: string[] | null;\n /** @format double */\n lowestPrice?: number | null;\n measurements?: string | null;\n products?: ShippingProduct[] | null;\n sizeCategory?: string | null;\n}\n\nexport interface ShippingProvider {\n fromCountry?: string | null;\n id?: string | null;\n isObsolete: boolean;\n products?: ShippingProviderProduct[] | null;\n}\n\nexport interface ShippingProviderProduct {\n /** @deprecated */\n insured?: string | null;\n isAddressLabelAtAgent: boolean;\n logoImgUrl?: string | null;\n /** @format int32 */\n maxDiscountPercentage?: number | null;\n /** @format int32 */\n maxInsuredAmount?: number | null;\n name?: string | null;\n /** @deprecated */\n reducedPrice?: string | null;\n summaryDisplayName?: string | null;\n traceable: boolean;\n type?: string | null;\n variants?: ShippingProviderProductVariant[] | null;\n}\n\nexport interface ShippingProviderProductVariant {\n /** @format int32 */\n height: number;\n /** @format int32 */\n id: number;\n isNew: boolean;\n /** @format int32 */\n length: number;\n mailboxWithServicePointBackup: boolean;\n name?: string | null;\n /** @format int32 */\n price: number;\n restrictionTexts?: string[] | null;\n type?: string | null;\n /** @format double */\n weight: number;\n /** @format int32 */\n width: number;\n}\n\nexport interface TemplateFromDraft {\n descriptionLanguageCodeIso2?: string | null;\n allowedBuyerRegion?: string | null;\n attributeValues?: ItemDraftAttributeValues | null;\n campaignCode?: string | null;\n /** @format int32 */\n campaignCodeId?: number | null;\n /** @format int32 */\n categoryId?: number | null;\n charity?: ItemDraftCharity | null;\n /** @format int32 */\n charityId?: number | null;\n /** @format date-time */\n createdDate: string;\n currency?: string | null;\n customEndTime?: string | null;\n displayHighlighted: boolean;\n displayPromoted: boolean;\n draftReason?: string | null;\n /** @format int32 */\n durationDays?: number | null;\n /** @format int32 */\n externalId?: number | null;\n /** @format int32 */\n fixedPrice?: number | null;\n fromCountry?: string | null;\n imageContainers?: TemplateFromDraftImageContainer[] | null;\n images?: TemplateImage[] | null;\n itemCondition?: string | null;\n /** @format int32 */\n itemId: number;\n /** @format date-time */\n lastModifiedDate: string;\n longDescription?: string | null;\n /** @format int32 */\n memberId: number;\n name?: string | null;\n /** @format int32 */\n openingBid?: number | null;\n /** @format int32 */\n quantity?: number | null;\n reference?: string | null;\n /** @format int32 */\n reservePrice?: number | null;\n restart: boolean;\n selectedShippingSize?: string | null;\n sellerIpAddress?: string | null;\n shippingOptions?: ShippingOption[] | null;\n shortDescription?: string | null;\n templateId?: string | null;\n /** @format int32 */\n vat?: number | null;\n}\n\nexport interface TemplateFromDraftImageContainer {\n listingImage?: ListingImage | null;\n templateImage?: TemplateImage | null;\n}\n\nexport interface TemplateImage {\n /** @format int32 */\n height: number;\n imageId?: string | null;\n imageUrl?: string | null;\n path?: string | null;\n /** @format int32 */\n rotationDegrees: number;\n /** @format int32 */\n width: number;\n}\n\nexport interface TemplateResponse {\n descriptionLanguageCodeIso2?: string | null;\n allowedBuyerRegion?: string | null;\n attributeValues?: ItemDraftAttributeValues | null;\n campaignCode?: string | null;\n /** @format int32 */\n campaignCodeId?: number | null;\n /** @format int32 */\n categoryId?: number | null;\n categoryPath?: Category[] | null;\n charity?: ItemDraftCharity | null;\n /** @format int32 */\n charityId?: number | null;\n /** @format date-time */\n createdDate: string;\n currency?: string | null;\n customEndTime?: string | null;\n displayHighlighted: boolean;\n displayPromoted: boolean;\n draftReason?: string | null;\n /** @format int32 */\n durationDays?: number | null;\n /** @format int32 */\n externalId?: number | null;\n /** @format int32 */\n fixedPrice?: number | null;\n fromCountry?: string | null;\n images?: TemplateImage[] | null;\n itemCondition?: string | null;\n /** @format int32 */\n itemId: number;\n /** @format date-time */\n lastModifiedDate: string;\n longDescription?: string | null;\n /** @format int32 */\n memberId: number;\n name?: string | null;\n /** @format int32 */\n openingBid?: number | null;\n /** @format int32 */\n quantity?: number | null;\n reference?: string | null;\n /** @format int32 */\n reservePrice?: number | null;\n restart: boolean;\n selectedShippingSize?: string | null;\n sellerIpAddress?: string | null;\n shippingOptions?: ShippingOption[] | null;\n shortDescription?: string | null;\n templateId?: string | null;\n /** @format int32 */\n vat?: number | null;\n}\n\nexport interface WarningLabel {\n isDangerAlert: boolean;\n link?: Link | null;\n text?: string | null;\n title?: string | null;\n}\n\nexport interface EndItemApiRequest {\n /** @format int32 */\n itemId: number;\n}\n\nexport interface EndItemApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface EndItemError {\n /** @format int32 */\n itemId: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface EndItemsApiRequest {\n itemIds?: number[] | null;\n}\n\nexport interface EndItemsApiResponse {\n errors?: EndItemError[] | null;\n responseStatus?: ResponseStatus | null;\n results?: number[] | null;\n}\n\nexport interface EndNonShopItemApiRequest {\n /** @format int32 */\n itemId: number;\n}\n\nexport interface EndNonShopItemApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum ExtractorType {\n Code = 'Code',\n Tradera = 'Tradera',\n Google = 'Google'\n}\n\nexport interface GetAttributeDefinitionsApiResponse {\n attributeDefinitions?: AttributeDefinition[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetAvailableShippingProvidersWithProductsApiRequest = object;\n\nexport interface GetAvailableShippingProvidersWithProductsApiResponse {\n responseStatus?: ResponseStatus | null;\n shippingProviders?: ShippingProvider[] | null;\n}\n\nexport interface GetCategoryRestrictionApiResponse {\n allowUsed: boolean;\n /** @format int32 */\n categoryId: number;\n /** @format int32 */\n currentItemCount: number;\n hasMaxItemCount: boolean;\n hasReachedMaxItemCount: boolean;\n /** @format int32 */\n maxItemCount: number;\n responseStatus?: ResponseStatus | null;\n warningLabel?: WarningLabel | null;\n}\n\nexport interface GetChangeItemsShippingViewModelApiResponse {\n productsPerWeightSpan?: ProductsPerWeightSpan[] | null;\n purchaseOrder?: ChangeItemsShippingPurchaseOrderApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetCharitiesApiRequest = object;\n\nexport interface GetCharitiesApiResponse {\n activeCharities?: Charity[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetClosestCollectionPointApiResponse {\n collectionPoint?: CollectionPoint | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetCollectionPointsApiResponse {\n collectionPoints?: CollectionPoint[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetCommissionFeeApiResponse {\n /** @format double */\n commissionPercentage: number;\n /** @format double */\n feeIncludingVat: number;\n /** @format double */\n maxFeeIncludingVat: number;\n /** @format double */\n minFeeIncludingVat: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetConditionAndListingTypeFromCategoryApiResponse {\n condition?: string | null;\n itemType?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetDefaultDraftApiResponse {\n newItem?: ItemDraftResponse | null;\n newTemplate?: ItemDraftResponse | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetDraftApiResponse {\n draft?: ItemDraftResponse | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetDraftsPageApiResponse {\n items?: ItemDraftResponse[] | null;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport type GetFeatureFeeApiRequest = object;\n\nexport interface GetFeatureFeeApiResponse {\n /** @format double */\n customEndDateFee: number;\n /** @format double */\n highlightFee: number;\n /** @format double */\n promotedFee: number;\n /** @format double */\n reservePriceFee: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetMemberPaymentOptionsApiResponse {\n paymentOptions?: MemberPaymentOption[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberPrefilledPackagingCostApiRequest = object;\n\nexport interface GetMemberPrefilledPackagingCostApiResponse {\n isChangeAllowed: boolean;\n /** @format int32 */\n packagingCost: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberSelectedShippingProvidersApiRequest = object;\n\nexport interface GetMemberSelectedShippingProvidersApiResponse {\n availableShippingProviders?: ShippingProviderSetting[] | null;\n responseStatus?: ResponseStatus | null;\n selectedShippingProviders?: ShippingProviderSetting[] | null;\n}\n\nexport type GetMemberStateApiRequest = object;\n\nexport interface GetMemberStateApiResponse {\n /** @format int32 */\n memberId: number;\n /** @format int32 */\n memberState: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetShippingProductsForCountryByWeightSpanAndSizeApiResponse {\n productsPerWeightSpanAndSize?: ProductsPerWeightSpanAndSize[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetShippingProductsForCountryByWeightSpanApiResponse {\n productsPerWeightSpan?: ProductsPerWeightSpan[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetShippingProductsForShipmentCheckoutByCountryAndWeightSpanApiResponse {\n productsPerWeightSpan?: ProductsPerWeightSpan[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetShopItemSettingsInfoApiRequest = object;\n\nexport interface GetShopItemSettingsInfoApiResponse {\n /** @format int32 */\n itemsOnDisplayCount: number;\n /** @format int32 */\n itemsWithDiscountCount: number;\n /** @format int32 */\n maxAllowedItemsOnDisplay: number;\n /** @format int32 */\n maxAllowedItemsWithDiscount: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetSplitPurchaseOrderStatusApiResponse {\n responseStatus?: ResponseStatus | null;\n status?: string | null;\n}\n\nexport interface GetTemplateApiResponse {\n responseStatus?: ResponseStatus | null;\n template?: TemplateResponse | null;\n}\n\nexport interface GetTemplatesApiResponse {\n items?: TemplateResponse[] | null;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport type GetTemplatesCountApiRequest = object;\n\nexport interface GetTemplatesCountApiResponse {\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport type GetTraderaPackageMeasurementsApiRequest = object;\n\nexport interface GetTraderaPackageMeasurementsApiResponse {\n responseStatus?: ResponseStatus | null;\n traderaPackageMeasurements?: TraderaPackageMeasurement[] | null;\n}\n\nexport enum InputType {\n Unknown = 'Unknown',\n Button = 'Button',\n Color = 'Color'\n}\n\nexport interface CompleteAppleItemFeaturePurchaseApiRequest {\n /** @format uuid */\n itemFeaturePurchaseId: string;\n productId?: string | null;\n receiptData?: string | null;\n transactionId?: string | null;\n}\n\nexport interface CompleteGoogleItemFeaturePurchaseApiRequest {\n /** @format uuid */\n itemFeaturePurchaseId: string;\n orderId?: string | null;\n productId?: string | null;\n purchaseToken?: string | null;\n}\n\nexport interface CompleteItemFeaturePurchaseApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetItemFeaturePurchaseApiResponse {\n /** @format uuid */\n itemFeaturePurchaseId: string;\n /** @format int32 */\n itemId: number;\n /** @format int32 */\n memberId: number;\n paymentMethod?: string | null;\n responseStatus?: ResponseStatus | null;\n status?: string | null;\n}\n\nexport interface InitializeItemFeaturePurchaseApiRequest {\n /** @format date-time */\n customEndDate?: string | null;\n /** @format uuid */\n itemFeaturePurchaseId: string;\n /** @format int32 */\n itemId: number;\n /** @format int32 */\n reservePrice?: number | null;\n}\n\nexport interface InitializeItemFeaturePurchaseApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberPaymentOption {\n description?: string | null;\n displayName?: string | null;\n paymentType?: string | null;\n recommended: boolean;\n}\n\nexport interface OffsitePaymentDetectionApiRequest {\n longDescription?: string | null;\n}\n\nexport interface OffsitePaymentDetectionApiResponse {\n isOffsitePaymentDetected: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface OpenCameraApiRequest {\n draftId?: string | null;\n}\n\nexport interface OpenCameraApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface PossibleValue {\n /** @format int32 */\n sortOrder: number;\n value?: string | null;\n warningLabel?: WarningLabel | null;\n}\n\nexport interface PredictionCategoryGroup {\n leafCategories?: PredictionCategoryLevel[] | null;\n parentCategories?: PredictionCategoryLevel[] | null;\n}\n\nexport interface PredictionCategoryLevel {\n /** @format int32 */\n categoryId: number;\n isLeaf: boolean;\n /** @format int32 */\n level: number;\n name?: string | null;\n}\n\nexport interface PredictionsFromDraftImageApiResponse {\n /** @format double */\n aiProcessingTime: number;\n longDescription?: string | null;\n /** @format int32 */\n numProcessedImages: number;\n responseStatus?: ResponseStatus | null;\n shortDescription?: string | null;\n}\n\nexport interface PublishDraftApiRequest {\n draft?: ItemDraft | null;\n hasTraderaPayConsent: boolean;\n publishAsItemType?: string | null;\n requestId?: string | null;\n sellerIpAddress?: string | null;\n}\n\nexport interface PublishDraftApiResponse {\n /** @format int32 */\n itemId: number;\n publishedAsItemType?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface RestartItemsApiRequest {\n itemIds?: number[] | null;\n}\n\nexport interface RestartItemsApiResponse {\n responseStatus?: ResponseStatus | null;\n results?: RestartResult[] | null;\n}\n\nexport interface RestartResult {\n /** @format int32 */\n oldItemId: number;\n /** @format int32 */\n reservedItemId: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface RestartUnpaidItemsApiRequest {\n itemIds?: number[] | null;\n}\n\nexport interface RestartUnpaidItemsApiResponse {\n responseStatus?: ResponseStatus | null;\n results?: RestartUnpaidItemResult[] | null;\n}\n\nexport interface SaveDraftApiRequest {\n draft?: ItemDraft | null;\n}\n\nexport interface SaveDraftApiResponse {\n draft?: ItemDraft | null;\n draftId?: string | null;\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n version: number;\n}\n\nexport interface SaveTemplateApiRequest {\n requestId?: string | null;\n template?: TemplateFromDraft | null;\n}\n\nexport interface SaveTemplateApiResponse {\n responseStatus?: ResponseStatus | null;\n templateId?: string | null;\n}\n\nexport interface SetItemReservePriceApiRequest {\n /** @format int32 */\n itemId: number;\n /** @format int32 */\n reservePrice: number;\n}\n\nexport interface SetItemReservePriceApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetItemVisibilityApiRequest {\n displayHighlighted: boolean;\n displayPromoted: boolean;\n /** @format int32 */\n itemId: number;\n}\n\nexport interface SetItemVisibilityApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ShippingProviderSetting {\n insurance?: Insurance | null;\n providerId?: string | null;\n providerSettingId?: string | null;\n}\n\nexport interface ShippingRecommendationGroup {\n /** @format double */\n confidence: number;\n options?: AiShippingRecommendationOption[] | null;\n}\n\nexport interface SoldItemApiDto {\n /** @format int32 */\n id: number;\n shippingOptions?: SoldItemShippingOption[] | null;\n title?: string | null;\n}\n\nexport interface SoldItemShippingOption {\n /** @format double */\n price: number;\n shippingType?: string | null;\n /** @format double */\n weight?: number | null;\n}\n\nexport interface SplitPurchaseOrderApiRequest {\n /** @format uuid */\n newPurchaseOrderId: string;\n /** @format uuid */\n purchaseOrderId: string;\n transactionIds?: number[] | null;\n}\n\nexport interface SplitPurchaseOrderApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface TitleToCategoryApiResponse {\n autoSelect: boolean;\n categories?: PredictionCategoryGroup[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface TraderaPackageMeasurement {\n displaySize?: string | null;\n size?: string | null;\n}\n\nexport interface UpdateItemDiscountApiRequest {\n /** @format int32 */\n discountRate: number;\n /** @format int32 */\n itemId: number;\n}\n\nexport interface UpdateItemDiscountApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberPrefilledPackagingCostApiRequest {\n /** @format int32 */\n packagingCost: number;\n}\n\nexport interface UpdateMemberPrefilledPackagingCostApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberSelectedShippingProvidersApiRequest {\n selectedShippingProviders?: string[] | null;\n}\n\nexport interface UpdateMemberSelectedShippingProvidersApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateOnDisplayApiRequest {\n /** @format int32 */\n itemId: number;\n onDisplay: boolean;\n}\n\nexport interface UpdateOnDisplayApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ValidateCampaignCodeApiRequest {\n code?: string | null;\n selectedBrandAttributes?: string[] | null;\n selectedCategories?: number[] | null;\n}\n\nexport interface ValidateCampaignCodeApiResponse {\n campaign?: CampaignInfo | null;\n message?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ValidateItemsCampaignCodeApiRequest {\n itemIds?: number[] | null;\n}\n\nexport interface ValidateItemsCampaignCodeApiResponse {\n responseStatus?: ResponseStatus | null;\n results?: Record;\n}\n\nexport interface VipStatusApiResponse {\n /** @format int32 */\n bidCount: number;\n /** @format int32 */\n campaignCodeId?: number | null;\n categoryPath?: number[] | null;\n displayHighlighted: boolean;\n displayPromoted: boolean;\n /** @format date-time */\n endDate: string;\n /** @format int32 */\n fixedPrice?: number | null;\n hasCustomEndDate: boolean;\n images?: string[] | null;\n isActive: boolean;\n isPureBin: boolean;\n isVipReady: boolean;\n /** @format int32 */\n itemCategoryId: number;\n /** @format int32 */\n itemId: number;\n itemShortDescription?: string | null;\n /** @format int32 */\n openingBid?: number | null;\n /** @format int32 */\n reservePrice?: number | null;\n responseStatus?: ResponseStatus | null;\n /** @format date-time */\n startDate: string;\n}\n\nexport interface WebGetDraftApiResponse {\n draft?: ItemDraftResponse | null;\n /** @format int32 */\n publishedItemId?: number | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface WebPublishDraftApiRequest {\n draft?: ItemDraft | null;\n hasTraderaPayConsent: boolean;\n publishAsItemType?: string | null;\n requestId?: string | null;\n sellerIpAddress?: string | null;\n}\n\nexport interface WebPublishDraftApiResponse {\n /** @format int32 */\n itemId: number;\n publishedAsItemType?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface WebSaveDraftApiRequest {\n draft?: ItemDraft | null;\n}\n\nexport interface WebSaveDraftApiResponse {\n draft?: ItemDraft | null;\n draftId?: string | null;\n /** @format int32 */\n publishedItemId?: number | null;\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n version: number;\n}\n\nexport interface TraderaPackageMeasurementsRequest {\n request?: GetTraderaPackageMeasurementsApiRequest;\n}\n\nexport interface UnpaidItemsRestartsCreateParams {\n request?: RestartUnpaidItemsApiRequest;\n}\n\nexport interface VisibilityCreateParams {\n request?: SetItemVisibilityApiRequest;\n itemId: string;\n}\n","import type { AxiosRequestConfig } from 'axios';\nimport Axios from 'axios';\nimport type { BaseQueryFn } from '@reduxjs/toolkit/query/react';\nimport type { touchWebClient } from 'tradera/utils/http';\n\nconst getRequestConfig = (args: string | CustomAxiosRequestConfig) => {\n if (typeof args === 'string') {\n return { url: args };\n }\n\n const { body, ...config } = args;\n\n return {\n ...config,\n data: body ?? config.data\n };\n};\n\ntype HttpClientBaseQueryArgs = {\n client: typeof touchWebClient;\n};\n\ntype CustomAxiosRequestConfig = AxiosRequestConfig & {\n body?: AxiosRequestConfig['data'];\n};\n\n/**\n * A base query function for use with `createApi` that uses our own http client(s) to make requests.\n *\n * @example\n * create a new api with this base query\n *\n * import { createApi } from '@reduxjs/toolkit/query/react';\n * import { touchWebClient } from 'tradera/utils/http';\n * import { httpClientBaseQuery } from './utils/http-client-base-query';\n *\n * export const touchwebSyiApi = createApi({\n * baseQuery: httpClientBaseQuery({ client: touchWebClient }),\n * ...etc... *\n *\n * @example\n * using the api\n *\n * 1. either with just a string\n * query: (params) => `/search.json?${qs.stringify(params)}`\n *\n * 2. or with a full config (this is basically an axios config but with the added body property which you can use for convenience, data works the same way as axios does)\n * query: (parameters) => ({\n url: '/my/savedsearches/add',\n method: 'POST',\n body: parameters\n }),\n\n OR (these two will do the same thing)\n\n query: (parameters) => ({\n url: '/my/savedsearches/add',\n method: 'POST',\n data: parameters\n }),\n */\nexport function httpClientBaseQuery({\n client\n}: HttpClientBaseQueryArgs): BaseQueryFn<\n CustomAxiosRequestConfig | string,\n unknown,\n unknown\n> {\n return async (args, api) => {\n try {\n const requestConfig = getRequestConfig(args);\n\n const result = await client.request({\n ...requestConfig,\n signal: api.signal\n });\n\n return { data: result.data };\n } catch (error) {\n if (Axios.isAxiosError(error)) {\n return {\n error: {\n status: error.response?.status,\n data: error.response?.data || error.message\n }\n };\n }\n\n return {\n error\n };\n }\n };\n}\n","import type { Request, Response } from 'tradera-backend/http/types/http';\nimport { isServer } from 'tradera/utils/nextjs';\nimport type { QueryReturnValue } from '@reduxjs/toolkit/dist/query/baseQueryTypes';\nimport type { ErrorLogger } from 'tradera/utils/logger-type';\nimport type { WebApiClient } from 'tradera-backend/http/webapi-client-types';\nimport type { FetchArgs } from '@reduxjs/toolkit/query';\n\nconst createLoggerPromise = (async () => {\n if (!isServer) {\n return;\n }\n const { Logger } = await import('@tradera-internal/infrastructure-logging');\n return new Logger('backend/http/webapi-rtk');\n})();\n\nconst log: ErrorLogger = {\n error: async (message, context, error) => {\n const gcpLogger = (await createLoggerPromise) as ErrorLogger;\n return gcpLogger.error(message, context, error);\n }\n};\n\nconst getLoggingContextAsync = async (context: object) => {\n const { getLoggingContext } = await import('tradera/backend/utils/error');\n return getLoggingContext(context);\n};\n\n// Because @tradera-internal/infrastructure-logging\n// used in webapiClient does not work in frontend.\nconst webapiClientModulePromise = (async () =>\n isServer\n ? import('tradera-backend/http/webapi-client')\n : Promise.resolve({ webapiClient: null }))();\n\nconst getFetchFunction = (webapiClient: WebApiClient, method?: string) => {\n switch (method) {\n case 'GET':\n return webapiClient.get;\n case 'POST':\n return webapiClient.post;\n case 'PUT':\n return webapiClient.put;\n case 'DELETE':\n return webapiClient.del;\n default:\n return null;\n }\n};\n\nexport const serverWebApiBaseQuery = async (\n req: Request,\n res: Response,\n pathOrConfig: string | FetchArgs\n): Promise => {\n const loggingContext = await getLoggingContextAsync({ req });\n const webapiClientModule = await webapiClientModulePromise;\n const webapiClient = webapiClientModule.webapiClient as WebApiClient;\n\n const { url, method, body } =\n typeof pathOrConfig === 'string'\n ? { url: pathOrConfig, method: 'GET', body: undefined }\n : pathOrConfig;\n\n const fetch = getFetchFunction(webapiClient, method);\n\n if (!fetch) {\n log.error(`Missing fetchFunction ${pathOrConfig}`, loggingContext);\n return {\n error: 'Missing fetchFunction'\n };\n }\n\n try {\n const response = await fetch(req, res, url, body);\n const data = await response.json();\n return { data };\n } catch (error) {\n // Base query and query functions must always catch errors themselves, and return it in an object!\n // https://redux-toolkit.js.org/rtk-query/usage/customizing-queries#implementing-a-custom-basequery\n log.error(`${method} ${url} failed`, loggingContext, error);\n return { error: `Fetch error` };\n }\n};\n","import type {\n BaseQueryApi,\n FetchArgs,\n FetchBaseQueryError,\n FetchBaseQueryMeta\n} from '@reduxjs/toolkit/query/react';\nimport { fetchBaseQuery } from '@reduxjs/toolkit/query';\nimport { isServer } from 'tradera/utils/nextjs';\nimport type { QueryReturnValue } from '@reduxjs/toolkit/dist/query/baseQueryTypes';\nimport type { ResponseStatus } from 'tradera/state/services/types/webapi-auth-generated';\nimport { logger } from 'packages/logger';\nimport { refreshTokensOnce } from 'tradera/utils/http/api-renew-tokens';\n\nconst throwIfServer = () => {\n if (isServer) {\n throw new Error(\n 'There are module scope variables in this module and is for client side use only!!!'\n );\n }\n};\n\nconst jsonRequestHeaders: Record = {\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest'\n};\n\ntype ErrorResponseData = {\n responseStatus: ResponseStatus;\n};\n\ntype ResponseType = QueryReturnValue<\n unknown,\n FetchBaseQueryError,\n FetchBaseQueryMeta\n>;\n\nconst isMissingAuthToken = (response: ResponseType) => {\n const errorData = response.error?.data as ErrorResponseData | undefined;\n return (\n response.error &&\n response.error.status === 400 &&\n errorData?.responseStatus.errorCode === 'MissingAuthToken'\n );\n};\n\nconst isInvalidOrExpiredAuthToken = (response: ResponseType) => {\n const errorData = response.error?.data as ErrorResponseData | undefined;\n return (\n response.error &&\n response.error.status === 401 &&\n errorData?.responseStatus?.errorCode === 'InvalidOrExpiredAuthToken'\n );\n};\n\nconst baseQuery = fetchBaseQuery({\n baseUrl: '',\n prepareHeaders: (headers) => {\n Object.keys(jsonRequestHeaders).forEach((headerName) => {\n headers.set(headerName, jsonRequestHeaders[headerName]);\n });\n return headers;\n },\n credentials: 'include'\n});\n\nconst frontendBaseQueryWebApiReauth = async (\n args: string | FetchArgs,\n api: BaseQueryApi,\n extraOptions: object\n): Promise => {\n throwIfServer();\n\n const originalBaseQuery = () => baseQuery(args, api, extraOptions);\n let result = await originalBaseQuery();\n\n if (isMissingAuthToken(result) || isInvalidOrExpiredAuthToken(result)) {\n await refreshTokensOnce();\n // Re-run original query with fresh tokens\n result = await originalBaseQuery();\n }\n\n return result;\n};\n\nexport const frontendBaseQueryWithReauth = async (\n input: string | FetchArgs,\n api: BaseQueryApi,\n extraOptions: object\n): Promise => {\n throwIfServer();\n try {\n return frontendBaseQueryWebApiReauth(input, api, extraOptions);\n } catch (error) {\n logger(error);\n // Base query and query functions must always catch errors themselves, and return it in an object!\n // https://redux-toolkit.js.org/rtk-query/usage/customizing-queries#implementing-a-custom-basequery\n return {\n error\n };\n }\n};\n","import { serverWebApiBaseQuery } from 'tradera-backend/http/webapi-rtk';\nimport type { Request, Response } from 'tradera-backend/http/types/http';\nimport type {\n BaseQueryApi,\n BaseQueryFn,\n FetchArgs\n} from '@reduxjs/toolkit/dist/query';\nimport { isServer } from 'tradera/utils/nextjs';\nimport type {\n ItemCardViewModel,\n ResponseStatus\n} from '../types/webapi-discover-generated';\nimport { wishlistAddRange } from 'tradera/state/items/reducer';\nimport type { QueryReturnValue } from '@reduxjs/toolkit/dist/query/baseQueryTypes';\nimport { frontendBaseQueryWithReauth } from 'tradera/state/services/utils/webapi-frontend-base-query';\n\nexport type WithGetWishListableItems = {\n getWishListableItems: (data: unknown) => ItemCardViewModel[];\n};\n\nconst isWithGetWishListableItems = (\n item: unknown\n): item is WithGetWishListableItems =>\n (item as WithGetWishListableItems)?.getWishListableItems !== undefined;\n\nconst mustHandleWishListableItems = (input: string | object) =>\n typeof input === 'string';\n\nconst handleWishListableItems = async (\n input: unknown,\n api: BaseQueryApi,\n extraOptions: object,\n data: unknown\n) => {\n // All endpoints must handle possible wishlistable items.\n // If no wishlistable items can come from the endpoint the implementation\n // of getWishListableItems should return a falsy value.\n if (!isWithGetWishListableItems(extraOptions)) {\n throw new Error(\n `Must handle possible wishlistable items from ${input}`\n );\n }\n\n const items = extraOptions.getWishListableItems(data);\n\n if (!items) {\n return;\n }\n\n api.dispatch(\n wishlistAddRange(items.filter((x) => x.inWishList).map((x) => x.itemId))\n );\n};\n\ntype ServerState = {\n request: { request: Request; response: Response };\n};\n\nconst isServerState = (state: unknown): state is ServerState =>\n isServer &&\n state !== null &&\n typeof state === 'object' &&\n 'request' in state;\n\nexport type WebApiError = {\n data?: {\n responseStatus?: ResponseStatus;\n };\n};\n\nconst doServerWebApiBaseQuery = (\n input: string | FetchArgs,\n state: ServerState\n) => {\n const { request, response } = state.request;\n if (!request || !response) {\n // An error has occurred elsewhere and request and response\n // were reset. When this happens we don't want to cause more\n // errors which fills up logs by trying to make further requests.\n return Promise.resolve({\n error: { status: 400, data: 'No request or response in state' }\n });\n }\n return serverWebApiBaseQuery(request, response, input);\n};\n\nexport const isomorphicWebApiBaseQuery: BaseQueryFn<\n string | FetchArgs,\n unknown,\n WebApiError,\n object\n> = async (\n input: string | FetchArgs,\n api: BaseQueryApi,\n extraOptions: object\n): Promise> => {\n try {\n const state = api.getState();\n const result = isServerState(state)\n ? await doServerWebApiBaseQuery(input, state)\n : await frontendBaseQueryWithReauth(input, api, extraOptions);\n if ('data' in result) {\n return {\n data: result.data,\n error: undefined\n };\n } else {\n return {\n data: undefined,\n error: result.error || {}\n };\n }\n } catch (error) {\n // Base query and query functions must always catch errors themselves, and return it in an object!\n // https://redux-toolkit.js.org/rtk-query/usage/customizing-queries#implementing-a-custom-basequery\n return {\n error: error || {}\n };\n }\n};\n\nexport const isomorphicBaseQueryForWishListableItems = async (\n input: string | FetchArgs,\n api: BaseQueryApi,\n extraOptions: object\n) => {\n const result = await isomorphicWebApiBaseQuery(input, api, extraOptions);\n\n if (mustHandleWishListableItems(input)) {\n const data = (await result).data;\n // There will be no data if the request failed.\n if (data) {\n await handleWishListableItems(input, api, extraOptions, data);\n }\n }\n return result;\n};\n","type GetShippingRegionInitialState = {\n memberCountryCodeIso2: string;\n isFunctionalCookiesEnabled: boolean;\n hasRegionPickerDismissedCookie: boolean;\n shippingCountryCookieValue: string | null | undefined;\n fallbackShippingCountry: string;\n};\n\nexport const getInitialState = ({\n memberCountryCodeIso2,\n isFunctionalCookiesEnabled,\n hasRegionPickerDismissedCookie,\n shippingCountryCookieValue,\n fallbackShippingCountry\n}: GetShippingRegionInitialState) => {\n const regionPickerDismissed =\n isFunctionalCookiesEnabled && hasRegionPickerDismissedCookie;\n const preferredShippingCountry = memberCountryCodeIso2\n ? memberCountryCodeIso2\n : isFunctionalCookiesEnabled &&\n !!shippingCountryCookieValue &&\n shippingCountryCookieValue;\n return {\n availableShippingCountries: [],\n availableShippingCountryCodes: [],\n isLoadingAvailableShippingCountries: false,\n hasLoadedAvailableShippingCountries: false,\n shippingCountry: {\n countryCodeIso2:\n preferredShippingCountry ||\n fallbackShippingCountry.toUpperCase()\n },\n regionPickerDismissed,\n shippingCountryCookieValue:\n (isFunctionalCookiesEnabled && shippingCountryCookieValue) || null\n };\n};\n","import type { AppDispatch } from '../configure-store';\nimport { setTcfLoaded as setTcfLoadedAction } from './reducer';\n\n// TCF = https://iabeurope.eu/transparency-consent-framework/\nexport const setTcfLoaded = () => (dispatch: AppDispatch) =>\n dispatch(setTcfLoadedAction());\n","import {\n formatQueryParams,\n stripItmFromQueryParameters,\n toQueryParameters\n} from 'tradera/utils/url';\nimport cookieUtil from 'tradera/utils/cookie';\n\nimport { setTcfLoaded } from './ads/actions';\nimport { fetchSystemMessages, fetchSystemBadges } from './ui/actions';\nimport * as pushNotificationActions from './push-notifications/push-notifications-slice';\nimport { initializeFromInitData as initShippingRegion } from './shipping-region/actions';\nimport * as discoverActions from './discover/actions';\nimport { initEnvironment } from './environment/actions';\nimport { initialize as initLanguage } from './language/reducer';\nimport { initializeFromInitData as initMember } from './member/reducer';\nimport { initialize as initInitData } from './init-data/actions';\nimport {\n defaultCurrency,\n initialize as initMultiCurrency\n} from './multi-currency/reducer';\nimport { initialize as initPersonalisation } from './personalisation/reducer';\nimport { initialize as initializeItems } from './items/reducer';\nimport { initialize as initializePage } from './page/reducer';\n\n// Views\nimport { handleReportItemModel } from './views/report-item/actions';\nimport { initialize as initStartPage } from './views/start-page/reducer';\nimport { initializeFromInitData as initializeUiFromInitData } from './ui/initial-state';\nimport { receiveSearchResults } from './discover/reducer';\nimport { handleTraderaShopProduct } from './views/tradera-shop/actions';\nimport { setRandomNumber } from './random/reducer';\nimport type { AppDispatch } from 'tradera/state/configure-store';\nimport type { InitData } from 'tradera/state/init-data/types';\nimport { initKountSessionId } from 'tradera/apps/login/state/actions';\nimport { RECENT_SEARCHES } from 'tradera/constants/cookies';\nimport { setMessages as setOutageMessages } from 'tradera/state/outage/reducer';\n\nexport const initializeState =\n (initData: InitData) => (dispatch: AppDispatch) => {\n const { isLoggedIn, featureSwitches, currencies, currencyCode } =\n initData;\n\n const preferredCurrency = isLoggedIn\n ? currencyCode\n : cookieUtil.readCookie('preferred_currency') ||\n defaultCurrency.code;\n /**\n * handle tcf + gdpr loading\n */\n if (featureSwitches?.['quantcast-consent']) {\n window.addEventListener('tcfLoaded', function () {\n dispatch(setTcfLoaded());\n });\n } else {\n dispatch(setTcfLoaded());\n }\n dispatch(initializeUiFromInitData(initData));\n dispatch(pushNotificationActions.init());\n dispatch(initLanguage(initData));\n const recentSearchesCookies = cookieUtil.readCookie(RECENT_SEARCHES);\n dispatch(initPersonalisation(recentSearchesCookies || ''));\n dispatch(initShippingRegion(initData));\n dispatch(initEnvironment(initData));\n dispatch(initMember(initData));\n dispatch(initInitData(initData));\n dispatch(\n initMultiCurrency({\n currencies,\n enabled: true,\n preferredCurrency\n })\n );\n dispatch(initializeItems(initData));\n dispatch(initializePage(initData));\n dispatch(initStartPage(initData));\n dispatch(fetchSystemMessages());\n dispatch(fetchSystemBadges());\n dispatch(discoverActions.initialize());\n dispatch(setRandomNumber());\n dispatch(initKountSessionId());\n dispatch(setOutageMessages(initData.outageFields));\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 */\n if (initData?.discoverResponse) {\n dispatch(\n receiveSearchResults({\n endpoint: window.location.pathname,\n queryParams: stripItmFromQueryParameters(\n formatQueryParams(\n toQueryParameters(window.location.search)\n )\n ),\n result: initData.discoverResponse\n })\n );\n } else if (initData?.reportItem) {\n dispatch(handleReportItemModel(initData.reportItem));\n } else if (initData?.traderaShopProduct) {\n dispatch(handleTraderaShopProduct(initData.traderaShopProduct));\n }\n };\n","import actionTypes from './action-types';\n\nexport const initialize = (initData) => ({\n type: actionTypes.INITIALIZE,\n payload: initData\n});\n\nexport const defaultAction = (data) => ({\n type: actionTypes.DEFAULT_ACTION,\n payload: data\n});\n","import { initialState } from './initial-state';\nimport {\n initialize as initReducer,\n receiveSearchResults as receiveSearchResultsReducerAction\n} from './reducer';\nimport { wishlistAddRange } from 'tradera/state/items/reducer';\n\n/**\n *\n * @param {object} payload the normalized version of the response\n * @param {string} payload.endpoint\n * @param {object} payload.queryParams\n * @param {object} payload.result\n * @param {object} [?payload.result.categoryPath]\n * @param {object[]} [payload.result.items]\n * @param {object} [payload.result.itemsOnDisplay]\n * @param {object[]} [payload.result.itemsOnDisplay.items]\n */\nexport const receiveSearchResults =\n (payload, shippingRegionCountryCodeIso2) => (dispatch) => {\n dispatch(\n receiveSearchResultsReducerAction({\n ...payload,\n shippingRegionCountryCodeIso2\n })\n );\n const items = payload.result?.items || [];\n dispatch(\n wishlistAddRange(\n items\n .filter((item) => item.inWishList)\n .map((item) => item.itemId)\n )\n );\n };\n\nexport const initialize = () => (dispatch) => {\n dispatch(initReducer(initialState));\n};\n","import { setIsKountSessionId } from 'tradera/apps/login/state/reducer';\nimport type { AppDispatch } from 'tradera/state/configure-store';\nimport { v4 as uuidv4 } from 'uuid';\n\nexport const initKountSessionId = () => async (dispatch: AppDispatch) => {\n dispatch(setIsKountSessionId(uuidv4().replace(/-/g, '')));\n};\n","import { MODAL_STATE } from 'tradera/constants/ui';\nimport { nullifyUndefinedProperties } from 'tradera/utils/object';\nimport { cache, CACHE_KEYS } from 'tradera/utils/cache';\nimport { initialize } from './reducer';\nimport { type Dispatch } from 'redux';\nimport { type InitData } from '../init-data/types';\nimport type { QueryParams } from 'tradera/apps/tradera/components/discover/components/filters/types';\nimport type { SystemMessageType } from '../services/types/webapi-member-generated';\nimport type {\n MyTraderaPurchaseOrderApiDto,\n MyTraderaPurchaseOrderRowApiDto,\n SellerSoldExtendedLifePurchaseOrderRowApiDto,\n SystemBadge,\n SystemBadgeType\n} from '../services/types/webapi-mytradera-generated';\nimport type { TranslationKeys } from 'tradera/components/share-modals/share-modal';\nimport { type ProductCommunication } from 'tradera/apps/tradera/components/communication-banner/constant';\n\nexport type UiState = {\n categoryDropdownMenu: {\n open: MODAL_STATE;\n };\n badges: {\n messageNotificationCount: number;\n badgeNotificationCount: number;\n };\n itemSettings: {\n open: MODAL_STATE;\n item: unknown;\n };\n newMessageModal: {\n open: MODAL_STATE;\n title: string;\n senderId: number;\n recipientId: number;\n recipientAlias: string;\n itemId: number;\n itemTitle: string;\n itemImageUrl: string;\n itemSellerId: number;\n purchaseOrderId: string;\n };\n\n modals: {\n // currentModal: unknown;\n // currentModalData: { [key: string]: string } | null;\n\n currentModal: string | null;\n currentModalData:\n | ({ [key: string]: string } & {\n itemIds: number[];\n queryParams: QueryParams;\n purchaseOrder: MyTraderaPurchaseOrderApiDto;\n items: MyTraderaPurchaseOrderRowApiDto[];\n extendedLifeItems: SellerSoldExtendedLifePurchaseOrderRowApiDto[];\n })\n | null;\n };\n notificationOptinModal: {\n open: MODAL_STATE;\n modalType: string;\n gaLabel: string;\n title: string;\n description: string;\n tagGroups: unknown[];\n };\n profileMenu: {\n open: MODAL_STATE;\n redirectUrl: string | undefined;\n };\n siteLayout: string;\n showHeaderSearch: boolean;\n showSaveSearchBanner: boolean;\n showSearchForm: boolean;\n systemMessages: {\n messages: Record;\n count: number;\n };\n systemBadges: Record;\n videoModal: {\n open: MODAL_STATE;\n videoUrl: string;\n videoId: string;\n title: string;\n pageType: string;\n buttonLink: string;\n buttonText: string;\n };\n shareModal: {\n isOpen: boolean;\n settings:\n | ({ [key: string]: string } & {\n translationKeys: TranslationKeys;\n })\n | null;\n };\n wishListSideSheet: {\n isOpen: boolean;\n };\n notificationsSideSheet: {\n isOpen: boolean;\n };\n productCommunications: ProductCommunication[];\n collectSsnModal: {\n isOpen: boolean;\n };\n referralModal: {\n isOpen: boolean;\n };\n showCollectSsnModal: boolean;\n helpSection: {\n isOpen: boolean;\n settings: unknown;\n };\n};\n\nexport const getInitialBadges = (\n messageNotificationCount?: number,\n badgeNotificationCount?: number\n) => ({\n messageNotificationCount: messageNotificationCount || 0,\n badgeNotificationCount: badgeNotificationCount || 0\n});\n\nexport const getInitialState = ({\n showHeaderSearch,\n showSearchForm,\n systemMessages,\n systemBadges,\n productCommunications,\n showCollectSsnModal\n}: Partial> & {\n systemBadges?: {\n badges: Record;\n notificationCount: number;\n };\n}) => {\n return nullifyUndefinedProperties({\n categoryDropdownMenu: { open: MODAL_STATE.CLOSED },\n badges: getInitialBadges(\n systemMessages?.count,\n systemBadges?.notificationCount\n ),\n itemSettings: {\n open: MODAL_STATE.CLOSED,\n item: {}\n },\n newMessageModal: {\n open: MODAL_STATE.CLOSED,\n itemId: '',\n senderId: '',\n recipientId: '',\n recipientAlias: '',\n itemTitle: '',\n itemImageUrl: ''\n },\n modals: {\n currentModal: null\n },\n notificationOptinModal: {\n open: MODAL_STATE.CLOSED,\n modalType: null,\n gaLabel: null,\n title: null,\n description: null,\n tagGroups: []\n },\n profileMenu: { open: MODAL_STATE.CLOSED, redirectUrl: null },\n quickView: {\n open: MODAL_STATE.CLOSED,\n items: [],\n item: null,\n loading: false\n },\n showHeaderSearch,\n showSearchForm,\n systemMessages: {\n BankAccountMissing: false,\n InvoiceOverdue: false,\n InvoiceUnpaid: false,\n PayoutFailed: false,\n PayoutReadyBankAccountMissing: false,\n OutstandingTraderaPayLicense: false,\n PayoutReadyOutstandingTraderaPayLicense: false,\n ...systemMessages?.messages\n },\n systemBadges: systemBadges?.badges || {},\n videoModal: {\n open: MODAL_STATE.CLOSED,\n video: ''\n },\n shareModal: {\n isOpen: false,\n settings: null\n },\n wishListSideSheet: {\n isOpen: false\n },\n notificationsSideSheet: {\n isOpen: false\n },\n productCommunications,\n collectSsnModal: {\n isOpen: !!showCollectSsnModal\n },\n referralModal: {\n isOpen: false\n }\n });\n};\n\nexport const initializeFromInitData =\n (initData: Partial) => (dispatch: Dispatch) => {\n const state = getInitialState({\n // Header search should always be available unless startpage,\n // but next has separare state initializer so this should always be true\n showHeaderSearch: true,\n showSearchForm: !!initData.hasSearch,\n systemMessages: cache.read(CACHE_KEYS.SYSTEM_MESSAGES) || {},\n systemBadges: cache.read(CACHE_KEYS.SYSTEM_BADGES) || {},\n productCommunications: initData.productCommunications,\n showCollectSsnModal:\n initData.memberCountryCodeIso2 === 'SE' &&\n !initData.isCompany &&\n !initData.hasSsn\n });\n dispatch(initialize(state));\n };\n","export default () => {\n return {\n isFetching: false,\n loaded: false,\n confirmingId: null,\n merchantPreOrders: [],\n errors: {}\n };\n};\n","import { webApiClient } from 'tradera/utils/http';\n\nexport const getInvoice = (invoiceId) =>\n webApiClient.get('/mytradera/invoicecheckout', {\n params: {\n invoiceId\n },\n withCredentials: true\n });\n\nexport const getPaymentOptions = async (invoiceId) =>\n webApiClient.get(\n `/mytradera/invoicecheckout/invoicepaymentoptions/${invoiceId}`\n );\n\nexport const initializePayment = async (formData) =>\n webApiClient.post(\n '/mytradera/invoicecheckout/initializeinvoicepaymentattempt',\n formData\n );\n\nexport const getPaymentStatus = async (paymentAttemptId) =>\n webApiClient.get(\n `/mytradera/invoicecheckout/invoicepaymentattemptstatus/${paymentAttemptId}`\n );\n\nexport const cancelPayment = async (formData) =>\n webApiClient.post(\n '/mytradera/invoicecheckout/cancelinvoicepaymentattempt',\n formData\n );\n\nexport const getExternalAuthData = async (paymentAttemptId) =>\n webApiClient.get(\n `/mytradera/invoicecheckout/invoicepaymentattemptauthenticationdata/${paymentAttemptId}`\n );\n\nexport const getBraintreeToken = async ({ invoiceId, paymentOption }) =>\n webApiClient.get(\n `/mytradera/invoicecheckout/invoicebraintreeclienttoken/${invoiceId}`,\n {\n params: {\n paymentMethod: paymentOption\n },\n withCredentials: true\n }\n );\n\n// Export object for Sinon stubbing\nexport default {\n getInvoice,\n getPaymentOptions,\n initializePayment,\n getPaymentStatus,\n cancelPayment,\n getExternalAuthData,\n getBraintreeToken\n};\n","import qs from 'qs';\nimport { touchWebClient, webApiClient } from 'tradera/utils/http';\n\nexport const createShipmentCheckout = async () =>\n webApiClient.post('/mytradera/shipmentcheckout/createshipmentcheckout');\n\nexport const deleteShipment = async (shipmentId) =>\n webApiClient.post('/mytradera/shipping/deleteshipment', { shipmentId });\n\nexport const getShippingOptions = (\n fromCountryCode,\n toCountryCode,\n purchaseOrderId\n) => {\n const params = {\n fromCountryCode,\n toCountryCode,\n purchaseOrderId\n };\n\n return webApiClient.get(\n `/selling/shipmentcheckout/shipping-products-for-country-by-weight-span?${qs.stringify(\n params\n )}`\n );\n};\n\nexport const setShipmentDetails = async (payload) =>\n webApiClient.post('/mytradera/shipmentcheckout/shipment', {\n shippingDetails: payload\n });\n\nexport const setShippingAsBooked = async (purchaseOrderId) =>\n webApiClient.post('/member/selling/item-shipping-booked', {\n purchaseOrderId: purchaseOrderId,\n booked: true\n });\n\nexport const setShippingAsShipped = async (purchaseOrderId) =>\n webApiClient.post('/member/selling/item-shipped', {\n purchaseOrderId: purchaseOrderId,\n shipped: true\n });\n\nexport const getMemberSoldItemShippingInfo = (purchaseOrderId) =>\n webApiClient.get(\n `/member/selling/sold-item/shipping-info-v2/${purchaseOrderId}`\n );\n\nexport const getPaymentOptions = async (shipmentCheckoutId) =>\n webApiClient.get(\n `/mytradera/shipmentcheckout/shipmentpaymentoptions/${shipmentCheckoutId}`\n );\n\nexport const initializePayment = async (formData) =>\n webApiClient.post(\n '/mytradera/shipmentcheckout/initializeshipmentpaymentattempt',\n formData\n );\n\nexport const getPaymentStatus = async (paymentAttemptId) =>\n webApiClient.get(\n `/mytradera/shipmentcheckout/shipmentpaymentattemptstatus/${paymentAttemptId}`\n );\n\nexport const cancelPayment = async (formData) =>\n webApiClient.post(\n '/mytradera/shipmentcheckout/cancelshipmentpaymentattempt',\n formData\n );\n\nexport const getExternalAuthData = async (paymentAttemptId) =>\n webApiClient.get(\n `/mytradera/shipmentcheckout/shipmentpaymentattemptauthenticationdata/${paymentAttemptId}`\n );\n\nexport const getBraintreeToken = async ({\n shipmentCheckoutId,\n paymentOption\n}) =>\n webApiClient.get(\n `/mytradera/shipmentcheckout/shipmentbraintreeclienttoken/${shipmentCheckoutId}`,\n {\n params: {\n paymentMethod: paymentOption\n },\n withCredentials: true\n }\n );\n\nexport const getUnbookedShipments = async () =>\n webApiClient.get('/mytradera/shipping/unbooked-shipments');\n\nconst getShippingConfirmation = (shippingCheckoutId) =>\n touchWebClient.get(`/my/shipping/confirmation/${shippingCheckoutId}/data`);\n\nconst getIsBookingComplete = (shipmentCheckoutId) =>\n webApiClient.get(\n `/mytradera/shipmentcheckout/isbookingcomplete?shipmentCheckoutId=${shipmentCheckoutId}`\n );\n\n// Export object for Sinon stubbing\nexport default {\n createShipmentCheckout,\n deleteShipment,\n getShippingOptions,\n setShipmentDetails,\n setShippingAsBooked,\n setShippingAsShipped,\n getMemberSoldItemShippingInfo,\n getPaymentOptions,\n initializePayment,\n getPaymentStatus,\n cancelPayment,\n getExternalAuthData,\n getBraintreeToken,\n getShippingConfirmation,\n getIsBookingComplete,\n getUnbookedShipments\n};\n","export const HEADER = 'header';\nexport const LAST_CHANCE = 'lastChance';\nexport const PICKS_FOR_YOU = 'picksForYou';\nexport const POPULAR_CATEGORIES = 'popularCategories';\nexport const RECENTLY_VIEWED = 'recentlyViewed';\nexport const INSTAGRAM_FEED = 'instagramPosts';\nexport const WISH_LIST = 'wishList';\nexport const FAVOURITE_SELLERS = 'favouriteSellers';\nexport const CATEGORY_LINKS = 'categoryLinks';\nexport const SAVED_SEARCHES = 'savedSearches';\nexport const LAST_SEARCH = 'lastSearch';\nexport const LATEST_BRAND = 'latestBrand';\nexport const SECOND_LAST_SEARCH = 'secondLastSearch';\nexport const MUSIKHJALPEN_ITEMS = 'musikhjalpenItems';\nexport const DISCOVER_SUGGESTIONS = 'discoverSuggestions';\nexport const ITEM_LISTS = 'itemLists';\nexport const FAVOURITE_SELLERS_ITEMS = 'favouriteSellerItems';\nexport const NEAR_YOU = 'nearYou';\nexport const MORE_PICKS_FOR_YOU = 'morePicksForYou';\nexport const ITEM_SECTION_CUSTOM_URL = 'itemSectionCustomUrl';\nexport const WARDROBE_NEWS_FOR_YOU = 'wardrobeNewsForYou';\nexport const RESELL_SUGGESTIONS = 'resellSuggestions';\n","import {\n FAVOURITE_SELLERS,\n LAST_CHANCE,\n RECENTLY_VIEWED,\n SAVED_SEARCHES,\n WISH_LIST,\n RESELL_SUGGESTIONS\n} from 'tradera/apps/tradera/start-page/content-types';\n\nconst DEFAULT_START_PAGE_HEADER_CONFIG = {\n alternativeText: '',\n backgroundImage: null\n};\n\nexport const DEFAULT_LOGGED_IN_START_PAGE_CONFIG = {\n header: DEFAULT_START_PAGE_HEADER_CONFIG,\n content: [\n { type: RESELL_SUGGESTIONS },\n { type: WISH_LIST },\n { type: SAVED_SEARCHES },\n { type: FAVOURITE_SELLERS },\n { type: LAST_CHANCE },\n { type: RECENTLY_VIEWED }\n ]\n};\n\nexport const DEFAULT_LOGGED_OUT_START_PAGE_CONFIG = {\n header: DEFAULT_START_PAGE_HEADER_CONFIG,\n content: [{ type: LAST_CHANCE }, { type: RECENTLY_VIEWED }]\n};\n","import {\n DEFAULT_LOGGED_IN_START_PAGE_CONFIG,\n DEFAULT_LOGGED_OUT_START_PAGE_CONFIG\n} from './constants';\nimport type { StartPageConfigInitData } from './types';\n\nexport const mapConfig = (\n config: StartPageConfigInitData,\n isLoggedIn?: boolean\n) => {\n const { contentLoggedIn, contentLoggedOut, ...restOfConfig } = config || {};\n const content = isLoggedIn ? contentLoggedIn : contentLoggedOut;\n\n if (!config || !content) {\n if (isLoggedIn) {\n return DEFAULT_LOGGED_IN_START_PAGE_CONFIG;\n }\n return DEFAULT_LOGGED_OUT_START_PAGE_CONFIG;\n }\n\n return {\n ...restOfConfig,\n content\n };\n};\n","import type { CategoryLinksData } from 'tradera/apps/tradera/start-page/components/category-links/category-links';\nimport type { PopularCategoriesData } from 'tradera/apps/tradera/start-page/components/popular-categories/popular-categories';\nimport type { CustomUrlSectionData } from 'tradera/apps/tradera/start-page/components/item-list/item-section-custom-url';\n\nexport type StartPageInitData = {\n isLoggedIn?: boolean;\n startPageResponse?: { config: string };\n};\n\nexport enum STATUS {\n FETCH_FAILED = 'FETCH_FAILED',\n HAS_DATA = 'HAS_DATA',\n NOT_FETCHED = 'NOT_FETCHED'\n}\n\ntype StartpageContentDataHiddenOn = { hiddenOn: string[] };\n\nexport type StartPageContent = {\n type: string;\n id?: string;\n data?:\n | StartpageContentDataHiddenOn\n | CategoryLinksData\n | PopularCategoriesData\n | CustomUrlSectionData;\n};\n\nexport type BannerLinkIcon = {\n baseUrl: string;\n};\n\ntype BannerLink = {\n text: string;\n url: string;\n icon?: BannerLinkIcon;\n};\n\nexport type MediaItem = {\n smallUrl: string;\n mediumUrl: string;\n largeUrl: string;\n};\n\nexport type MediaItemWithBaseUrl = MediaItem & {\n baseUrl: string;\n};\n\ntype StartPageHeader = {\n displayRecentSearches?: boolean;\n displayTrendingSearches?: boolean;\n bannerLinks?: BannerLink[];\n backgroundVideo?: MediaItem;\n backgroundImage?: MediaItemWithBaseUrl | null;\n taglineDesktop?: string;\n taglineMobile?: string;\n};\n\ntype StartPageConfig = {\n content: StartPageContent[];\n header: StartPageHeader;\n};\n\nexport type StartPageConfigInitData = {\n contentLoggedIn: StartPageContent[];\n contentLoggedOut: StartPageContent[];\n header: StartPageHeader;\n};\n\nexport type StartPageInitialState = {\n itemQueryRandomNumber: number;\n status: STATUS;\n config: StartPageConfig;\n};\n","import { logger } from 'packages/logger';\nimport { nullifyUndefinedProperties } from 'tradera/utils/object';\nimport { mapConfig } from './configuration-mapper';\nimport type { StartPageInitData, StartPageInitialState } from './types';\nimport { STATUS } from './types';\n\nexport default (initData: StartPageInitData = {}) => {\n const { isLoggedIn, startPageResponse } = initData;\n\n let config;\n if (startPageResponse?.config) {\n try {\n config = JSON.parse(startPageResponse.config);\n } catch (error) {\n logger(error);\n }\n }\n\n const initialStateData: StartPageInitialState = {\n status: config ? STATUS.HAS_DATA : STATUS.NOT_FETCHED,\n config: mapConfig(config, isLoggedIn),\n itemQueryRandomNumber: Math.random()\n };\n\n return nullifyUndefinedProperties(initialStateData);\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport initialState from './initial-state';\n\nconst startPageSlice = createSlice({\n name: 'startPage',\n initialState: initialState(),\n reducers: {\n initialize: (_state, { payload }) => {\n return initialState(payload);\n },\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 }\n});\n\nexport const {\n initialize,\n setStartPageConfigAction,\n setStartPageConfigStatusAction\n} = startPageSlice.actions;\n\nexport default startPageSlice.reducer;\n","import { logger } from 'packages/logger';\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: ITEM_TYPES,\n bidCount: number,\n reservePriceReached: boolean,\n nextValidBidAmount: number,\n transactionType?: TRANSACTION_TYPES,\n leadingBidMemberId?: number,\n isCancelled?: boolean\n): ITEM_STATES => {\n if (isCancelled) {\n return ITEM_STATES.ENDED_CANCELLED;\n }\n\n const isAuction = itemType === ITEM_TYPES.AUCTION;\n const isAuctionBin = itemType === ITEM_TYPES.AUCTION_BIN;\n const isPureBin = 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 (isAuctionBin) {\n switch (transactionType) {\n case TRANSACTION_TYPES.AUCTION:\n return ITEM_STATES.ENDED_AUCTION_WITH_WINNING_BID;\n case TRANSACTION_TYPES.BIN:\n return ITEM_STATES.ENDED_AUCTION_BIN_BOUGHT_AS_BIN;\n case TRANSACTION_TYPES.PURCHASE_OFFER_ON_ENDED:\n return ITEM_STATES.ENDED_AUCTION_BIN_SOLD_THROUGH_PURCHASE_OFFER;\n }\n }\n if (isPureBin) {\n switch (transactionType) {\n case TRANSACTION_TYPES.PURCHASE_OFFER_ON_ACTIVE:\n return ITEM_STATES.ENDED_PURE_BIN_SOLD_THROUGH_PURCHASE_OFFER;\n case TRANSACTION_TYPES.PURCHASE_OFFER_ON_ENDED:\n return ITEM_STATES.ENDED_PURE_BIN_SOLD_THROUGH_PURCHASE_OFFER;\n }\n }\n if (isAuction) {\n switch (transactionType) {\n case TRANSACTION_TYPES.AUCTION:\n return ITEM_STATES.ENDED_AUCTION_WITH_WINNING_BID;\n case TRANSACTION_TYPES.PURCHASE_OFFER_ON_ENDED:\n return ITEM_STATES.ENDED_AUCTION_SOLD_THROUGH_PURCHASE_OFFER;\n }\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\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 (isPureBin || 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 nextValidBidAmount\n })}`\n );\n return ITEM_STATES.UNKNOWN;\n};\n\nconst getOngoingItemState = (itemType: ITEM_TYPES): ITEM_STATES => {\n if (itemType === ITEM_TYPES.AUCTION) {\n return ITEM_STATES.ONGOING_AUCTION;\n }\n if (itemType === 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\nconst getNotStartedItemState = (itemType: ITEM_TYPES): ITEM_STATES => {\n if (itemType === ITEM_TYPES.AUCTION) {\n return ITEM_STATES.NOT_STARTED_AUCTION;\n }\n if (itemType === ITEM_TYPES.AUCTION_BIN) {\n return ITEM_STATES.NOT_STARTED_AUCTION_BIN;\n }\n if (itemType === ITEM_TYPES.PURE_BIN || itemType === ITEM_TYPES.SHOP_ITEM) {\n return ITEM_STATES.NOT_STARTED_FIXED_PRICE;\n }\n logger(\n `Unknown not started state for parameters: ${JSON.stringify({\n itemType\n })}`\n );\n return ITEM_STATES.UNKNOWN;\n};\n\nexport const getItemState = (\n hasEnded: boolean,\n hasStarted: boolean,\n itemType: ITEM_TYPES,\n bidCount: number,\n reservePriceReached: boolean,\n nextValidBidAmount: number,\n transactionType?: TRANSACTION_TYPES,\n leadingBidMemberId?: number,\n isCancelled?: boolean\n) => {\n if (hasEnded) {\n return getEndedItemState(\n itemType,\n bidCount,\n reservePriceReached,\n nextValidBidAmount,\n transactionType,\n leadingBidMemberId,\n isCancelled\n );\n }\n\n if (!hasStarted) {\n return getNotStartedItemState(itemType);\n }\n\n return getOngoingItemState(itemType);\n};\n","const THROW_ERROR = false;\n\nexport const assertNoUndefinedProperties = (obj: Record) => {\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","// eslint-disable-next-line no-restricted-imports\nimport classnames from 'classnames';\n\nexport const classNames = classnames;\n","/**\n * Composes two event handlers together. The original event handler will be called first.\n * If the original event handler calls `event.preventDefault()`, our event handler will not be called.\n *\n * @example\n * onClick={(event) => composeEventHandlers(props.onClick, (e) => {\n * // Do something with `e`\n * })(event)}\n */\nexport function composeEventHandlers(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n /**\n * Options:\n * checkForDefaultPrevented - defaults to `true`: Do not execute our event handler if the original event handler calls `event.preventDefault()`\n */\n { checkForDefaultPrevented = true } = {}\n) {\n return function handleEvent(event: E) {\n originalEventHandler?.(event);\n\n if (\n checkForDefaultPrevented === false ||\n !(event as unknown as Event).defaultPrevented\n ) {\n return ourEventHandler?.(event);\n }\n };\n}\n","import { createBrowserHistory } from 'history';\nimport { isServer } from 'tradera/utils/nextjs';\nimport type { History } from 'history';\n\nconst history = isServer ? null : createBrowserHistory();\n\nexport const getHistory = () => {\n if (isServer) {\n throw new Error('Do not use history on server');\n }\n return history as History;\n};\n","/**\n * This is useful when you want to support consumers sending refs (forwardRef)\n * but you also need a ref for internal use.\n */\nexport function mergeRefs(\n ...args: Array | React.LegacyRef>\n): React.RefCallback {\n return (value) => {\n args.forEach((ref) => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref != null) {\n (ref as React.MutableRefObject).current = value;\n }\n });\n };\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","export const TRACK_REDUX_ACTIONS = [\n 'draft/setDraftId',\n 'draft/setDraftVersion'\n];\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 has from 'lodash/has';\nimport get from 'lodash/get';\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","import GdprSettings from 'tradera/utils/gdpr-settings';\nimport { STORAGE_KEYS } from 'tradera/constants/storage';\nimport { logger } from 'packages/logger';\nimport { isServer } from 'tradera/utils/nextjs';\n\n// KATS: this whole thing would be in better shape if we re-wrote it in TS instead with either inheritance or interfaces.\n\n/**\n * Storage wrapper/utility\n */\nexport class 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 hasValueForKey(key) {\n const value = this.storage.getItem(key);\n return value !== null;\n }\n\n enabledByGdprSettings() {\n return gdprSettings.isFunctionalEnabled();\n }\n\n getItemsByPrefix(prefix) {\n const items = {};\n // eslint-disable-next-line better-mutation/no-mutation\n for (let i = 0; i < this.storage.length; i++) {\n const 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 // eslint-disable-next-line better-mutation/no-mutation\n for (let i = this.storage.length - 1; i >= 0; --i) {\n const 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 */\nexport class 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\nlet localStorage;\ntry {\n if (!isServer) {\n // access to window.localStorage is forbidden when user blocks cookies or third party cookies so we safe-guard around this access\n localStorage = window?.localStorage;\n }\n} catch (e) {\n localStorage = null;\n}\n\n// Standard local store with GDPR cookie filter and in-memory storage fallback\nconst defaultStorage = testStorage(localStorage)\n ? localStorage\n : new MemoryStorage();\nconst gdprSettings = GdprSettings;\n\nexport const 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"],"names":["_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_ref","styles","props","_objectWithoutProperties","_excluded","React","viewBox","xmlns","d","clipRule","fillRule","loginSlice","createSlice","name","initialState","kountSessionId","isKountDataCollected","reducers","setIsKountSessionId","state","action","payload","setIsKountDataCollected","_loginSlice$actions","actions","infoItemComponents","SettingsRow","forwardRef","ref","subLabel","children","className","_jsxs","classNames","_jsx","displayName","columns","buyerActiveItemsColumns","Basic","CurrentPrice","MaxBid","Bids","ShippingCost","EndDate","TimeLeft","ItemId","buyerItemsLostColumns","sellerActiveColumns","ReservePrice","OwnReference","sellerUnsoldColumns","PAGE_NAMES","Bidding","Overview","BuyerActiveItems","BuyerItemsLost","MyTraderaLeaveFeedback","MyTraderaMyFeedback","SellerActive","SellerList","SellerSold","SellerUnsold","SellerListings","BuyerPurchases","SavedSearches","Settings","SettingsAccount","SettingsEmail","SettingsNotifications","SettingsSeller","SettingsSecurity","SettingsPayouts","Payouts","Accounting","Invoices","WishList","Picklist","BUYER_ACTIVE_ITEMS_HIDE","_initData$pageSpecifi","initData","pageSpecificData","BUYER_ACTIVE_ITEMS_SHOW","_initData$pageSpecifi2","ACTIVE_ITEMS_RESTART_SUMMARY","_initData$pageSpecifi3","UNSOLDHIDE","_initData$pageSpecifi4","UNSOLDSHOW","_initData$pageSpecifi5","ACTIVE_END_ITEMS","_initData$pageSpecifi6","UNSOLD_RESTART_ITEMS","_initData$pageSpecifi7","findKeysByPurchaseOrderId","items","purchaseOrderId","keys","filter","transaction","findKeysByItemId","itemId","formatPrice","price","format","formatMe","toLocaleString","symbol","symbolPosition","decimal","comma","parseInt","getMessagingPageLink","u1","u2","l","options","getMessagingThreadLink","optionsWithDefaults","_objectSpread","singleThread","openForm","queryParams","Math","min","max","qs","addQueryPrefix","scrollToInitialScroll","initialScrollEls","document","querySelectorAll","window","scrollTo","offsetTop","isFetching","selectFiltersState","views","myTradera","filters","selectRouterState","router","initDataEL","getElementById","data","getAttribute","JSON","parse","checkStatus","response","ID","getInitData","tradVersion","headers","get","version","reload","status","Promise","resolve","statusCode","location","pathname","reject","parseJSON","res","json","endPoint","params","fetch","method","dataType","credentials","then","setBuyerItemProperty","update","map","buyer","_buyer$items","item","updateShippingStatusForBuyerItems","patch","buyers","isMarkedAsShipped","shipped","updatePaidStatusForBuyerItems","isMarkedAsPaidBySeller","paidConfirmed","updateVisibilityStatusForBuyerItems","hiddenBySeller","hidden","_buyer$items2","_buyer$items$length","_buyer$items3","MyBoughtTagTypes","BoughtPurchaseOrders","getMyBoughtItemsCacheKeys","Set","myPurchasesApi","createApi","reducerPath","baseQuery","isomorphicWebApiBaseQuery","tagTypes","values","endpoints","builder","getSoldItemBuyerInfo","query","getMyBoughtItems","add","url","body","providesTags","_response","_error","request","type","id","stringify","buyerFilters","markAsPaidByBuyer","mutation","async","_ref2","dispatch","queryFulfilled","patchResults","cacheKey","patchResult","util","updateQueryData","draft","_draft$purchaseOrders","_draft$purchaseOrders2","purchaseOrder","purchaseOrdersOneOf","find","_ref3","paidStatus","PaidStatuses","MARKED_AS_PAID_BY_BUYER","push","undo","unmarkAsPaidByBuyer","_ref4","_ref5","_excluded2","_draft$purchaseOrders3","_draft$purchaseOrders4","_ref6","UNPAID","setIsHidden","invalidatesTags","_cacheKey$buyerFilter","cacheEntry","_cacheKey$buyerFilter2","_ref7","_cacheKey$buyerFilter3","_cacheKey$buyerFilter4","_draft$purchaseOrders5","updatedItems","_ref8","extendedLifePurchaseOrder","useGetMyBoughtItemsQuery","useMarkAsPaidByBuyerMutation","useUnmarkAsPaidByBuyerMutation","useSetIsHiddenMutation","useGetSoldItemBuyerInfoQuery","changePasswordApi","changePassword","sendSmsVerificationCode","useChangePasswordMutation","useSendSmsVerificationCodeMutation","MySoldTagTypes","SoldPurchaseOrders","getMySoldItemsCacheKeys","mySoldApi","getMySoldItems","sellerFilters","markAsPaidBySeller","isPaid","MARKED_AS_PAID_BY_SELLER","markAsShippedBySeller","isShipped","cancelShipping","shipmentId","_draft$purchaseOrders6","_purchaseOrder$shippi3","_draft$purchaseOrders7","_draft$purchaseOrders8","_ref9","_purchaseOrder$shippi","_purchaseOrder$shippi2","shipping","isShippingBooked","isCancelled","isCancellable","p","_p$purchaseOrder","deleteShipping","_ref10","_ref11","_excluded3","_draft$purchaseOrders9","_draft$purchaseOrders10","_purchaseOrder$shippi6","_ref12","_purchaseOrder$shippi4","_purchaseOrder$shippi5","unpaidShipping","hasUnpaidShipping","_cacheKey$sellerFilte","_cacheKey$sellerFilte2","_ref13","_cacheKey$sellerFilte3","_cacheKey$sellerFilte4","_draft$purchaseOrders11","_ref14","getChangeItemsShipping","_ref15","fromCountry","toCountry","updateShippingPrice","_ref16","_ref17","shippingProvider","shippingProductId","_excluded4","_draft$purchaseOrders12","_draft$purchaseOrders13","_ref18","shippingAmount","selectedShipping","shippingCost","toString","shippingType","totalAmount","totalItemAmount","markAsBooked","_ref19","_ref20","booked","_excluded5","_draft$purchaseOrders14","_draft$purchaseOrders15","_ref21","useGetMySoldItemsQuery","useMarkAsPaidBySellerMutation","useMarkAsShippedBySellerMutation","useCancelShippingMutation","useDeleteShippingMutation","useGetChangeItemsShippingQuery","useMarkAsBookedMutation","useUpdateShippingPriceMutation","getCampaignCode","campaignCode","categoryId","brandAttributeValues","requestData","code","selectedCategories","selectedBrandAttributes","touchWebClient","post","cancelTokenId","axiosConfigs","authenticated","error","axios","validate","result","campaignCodeValid","validation","isValid","validationDisplayMessage","message","hasEnded","campaign","campaignCodeId","campaignCodeMessage","description","isCustomLengthFeeFree","isUnsoldFeeFree","provisionFactor","discountFactor","maxFeeCap","bannerMobileImageUrl","bannerTabletImageUrl","bannerDesktopImageUrl","reason","config","isServer","sellingGlobalConfig","draftImagesUrl","templateImagesUrl","myTraderaUrl","isVatRequired","selectableVatValues","isHybridAppContext","isHybridAppWithHtmlUploadSupport","isHtmlEnabled","commissionMinimum","commissionCap","highlightFeaturePrice","rankUpFeaturePrice","isAddonsEnabled","isSyiAddPhotoNativeAppEnabled","isSyiMemberConsentEnabled","isSyiTenImagesEnabled","maxTemplates","domainNameCategoryId","syiSessionId","hasTrackedFormStart","trackSyiForm","eventName","_ref$parameters","parameters","createSessionId","randomDigits","floor","random","timestamp","Date","now","Number","GtmService","trackGA4","flow_id","FlowId","SYI","form_name","syi_session_id","filterSelectableSuggestions","incomingSuggestedAttributes","categoryAttributes","selectableSuggestions","forEach","sa","categoryAttribute","a","suggestedAttribute","v","isSelectableSuggestion","some","o","value","isMaxReached","maxNumberOfValues","filterCombinedSelectableSuggestions","primarySuggestedAttributes","secondarySuggestedAttributes","primarySuggestedAttribute","psa","secondarySuggestedAttribute","ssa","suggestedAttributeValues","isAlreadySuggested","defaultCampaignProperties","campaignCodeDescription","commissionPercent","campaignCodeChecked","firstTimeSubscribe","validCampaign","timeoutId","loading","searching","searchingDelayed","validationError","searchingDelayedTimeoutId","isReadOnly","ensureValidCampaignCodeId","campaignCodeSlice","initializeCampaignCodeState","setUnverifiedCampaignCode","setCampaignValidationResult","_action$payload$banne","_action$payload$banne2","_action$payload$banne3","resetFees","resetCampaignBanner","toggleCampaignCodeCheckbox","validatingCampaignCodeBySearching","searchingForCampaignCodeIsDelayed","_campaignCodeSlice$ac","charityId","undefined","forceFreeShipping","isSchenkerPaidBySchenker","charityCampaignSlice","resetCharityCampaign","setCharityCampaign","_charityCampaign$name","_charityCampaign$desc","_action$payload","charityCampaign","toUpperCase","isSchenkerPaying","allowZeroDayAuctions","_charityCampaignSlice","chosenExtraFeatures","hasChosenExtraFeatures","PossibleFeatures","reservePrice","highlight","rankUp","getTakeawayOption","isTakeawayOnly","providerId","getSelectedShippingProducts","shippingProducts","selectedShippingOptions","offerTakeaway","selected","shippingOption","product","weight","isShippingFreeBasedOnCharity","cost","x","takeAwayOption","mapToDecoratedShippingProduct","getSelectedShippingOptions","_selected$cost","productId","selectCategory","syi","category","selectIsItemConditionDirty","getSyiSlice","itemCondition","isDirty","selectItemCondition","ThrottledAction","minDelayInMs","alwaysDelay","lastActionTime","execute","wrappedAction","clearTimeout","timeNow","setTimeout","TopLists","topListsApi","getTopLists","languageCodeIso2","automaticTranslationPreferred","extraOptions","getWishListableItems","topListsResponse","mostBiddedItems","mostExpensiveItems","mostWishListedItems","mostExpensiveSold","useGetTopListsQuery","feedbackRemovalApi","getFeedbackRemovalCreation","transactionId","getFeedbackRemovalConfirmationValidation","createFeedbackRemoval","comment","getFeedbackRemovalDetails","feedbackRemovalRequestId","confirmFeedbackRemoval","denyFeedbackRemoval","getFeedbackRemovalTransaction","showDeleted","useGetFeedbackRemovalCreationQuery","useGetFeedbackRemovalConfirmationValidationQuery","useGetFeedbackRemovalDetailsQuery","useGetFeedbackRemovalTransactionQuery","useConfirmFeedbackRemovalMutation","useDenyFeedbackRemovalMutation","useCreateFeedbackRemovalMutation","baseUrl","resellSuggestionsApi","getResellSuggestions","useGetResellSuggestionsQuery","wardrobeNewsForYouApi","getWardrobeNewsForYou","useGetWardrobeNewsForYouQuery","polyRef","ButtonIcon","IconComponent","icon","size","round","isValidElement","iconClasses","element","getClassNameFromReactElement","_Fragment","cloneElement","Button","forwardedRef","_ref2$theme","theme","_ref2$variant","variant","inverted","_ref2$size","disabled","wide","brandedText","nonBrandedText","fluid","linkReverted","onClick","iconLeftProp","iconLeft","iconRight","href","input","_ref2$align","align","nowrap","fixedIcon","noTransform","otherProps","ariaDisabled","buttonClasses","button","filled","outline","ghost","fluidFixedIcon","onBtnClick","useCallback","event","loadingContent","loadingIcon","LoadingIcon","role","fixedToLeft","fixedToRight","content","style","flex","ALink","Text","_ref$as","as","Component","_ref$size","color","fontWeight","fontStyle","font","ModalState","Divider","dark","thick","hideLast","DropdownButton","isOpen","iconClassName","_ref$theme","thinIcon","DropdownIconSvg","DropdownIcon","ArrowDownIcon","countryCodeIso2","src","toLowerCase","alt","hyperwallet","updateStatus","isUpdating","modalState","currentView","PayoutDestinationModalView","SelectOption","payoutFrequencyOption","availablePayoutOptions","displayedPayoutOptions","requireBankIdVerification","showSettingsModal","tink","tinkLinkUrl","accounts","errorMessage","bankAccount","clearingNumber","accountNumber","paypal","emailAddress","swish","swishNumber","verificationCode","Overlay","closeModalCallback","closeOnEscape","e","useEffect","addEventListener","removeEventListener","EnterFrom","from","_ref2$unmountOnExit","unmountOnExit","CSSTransition","timeout","EnterFade","_ref3$unmountOnExit","ACCOUNT_LOCKED_PAGE","BRAND_PAGE","BRAND_LIST_PAGE","CATEGORY_LIST","CATEGORY_RESULT_PAGE","CHANGE_FORGOTTEN_PASSWORD_PAGE","CHANGE_PASSWORD_SUCCESS_PAGE","CUSTOM_RESULT_PAGE","DEFAULT","DETAILED_SEARCH","MEMBER_SEARCH","ENDLESS_RECOMMENDATIONS_PAGE","ENTER_CELLPHONE_NUMBER_PAGE","ENTER_CELLPHONE_VERIFICATION_CODE_PAGE","ENTER_USER_DETAILS_PAGE","ERROR_PAGE","FAVOURITE_SELLERS_PAGE","FEEDBACK_REMOVAL_PAGE","FORGOT_PASSWORD_OPTIONS_PAGE","HOW_TO_BUY","HOW_TO_SELL","IDENTIFICATION","INVALID_KEY_PAGE","MY_TRADERA_PAGE","MY_TRADERA_PICKLIST_PRINT_VIEW","MY_TRADERA_ORDER_PRINT_VIEW","MY_SHIPPING_COMPLAINT","PROFILE_PAGE","REPORT_ITEM_PAGE","RESET_EMAIL_PAGE","SEARCH_RESULT_PAGE","SENT_EMAIL_CONFIRMATION_PAGE","CAMPAIGN_PARTNER_PAGE","START_PAGE","SYI_PAGE","TOP_LISTS_PAGE","TRADERA_SHOP_PAGE","VALUATION","VIEW_ITEM_PAGE","MY_MESSAGES_PAGE","LOGIN_PAGE","MULTIFACTOR_AUTH_OPTIONS_LIST_PAGE","MULTIFACTOR_AUTH_VERIFY_CODE_PAGE","NEAR_YOU_PAGE","DISPUTE_PAGE","PAYOUT_REVIEW_PAGE","useClickOutside","handler","exceptionRef","listener","el","current","exceptionEl","isElClicked","contains","Element","isExceptionClicked","isKey","useCookieUtil","serverCookies","useSelector","createSelector","_state$request","cookies","getCookie","getCookieFromBrowser","setCookie","cookie","Error","setCookieToBrowser","useMemo","CookieUtil","useEventListener","savedHandler","useRef","elem","eventListener","useIsTablet","useMediaQuery","minWidth","BREAKPOINT_SIZES","MD","maxWidth","LOCALES","sv","en","da","de","mapLocale","useQualtive","_member$memberAlias","_member$memberEmail","isQualtiveFeatureToggleEnabled","useIsFeatureEnabled","member","useAppSelector","selectMember","_state$language","_state$language$prefe","language","preferred","cookieUtil","isQualtiveEnabled","gdpr","isFunctionalEnabled","locale","user","memberId","memberAlias","email","memberEmail","openQualtiveModal","survey","customAttributes","_survey$supportURL","_window$qualtive","surveyOptions","darkMode","qualtive","loadScript","present","openModal","supportURL","postQualtiveEvent","_window$qualtive2","postEvent","ResultSet","constructor","_result","orderByTimestamp","orderByValue","orderByExpire","_orderBy","orderProp","sort","b","namespace","datastore","localStore","getDataSafe","getItem","store","setItem","remove","encodedKey","encodeURI","purge","expires","getTime","set","newData","removeExpired","prop","rows","decodeURI","flush","clearByPrefix","adsSlice","isTcfLoaded","setTcfLoaded","reducer","authSlice","receivedFirebaseIdToken","firebaseIdToken","ACTIVE_FILTER_STATES_COUNTY","ACTIVE_FILTER_STATES_ITEM_CONDITION","ACTIVE_FILTER_STATES_ITEM_STATUS","ACTIVE_FILTER_STATES_ITEM_TYPE","ACTIVE_FILTER_STATES_SELLER_TYPE","FILTER_STATES_ALLOWED_BUYER_REGIONS","SWEDEN","EU","INTERNATIONAL","NORDIC","MODALS","FILTER_MODAL","CATEGORY_MODAL","getActiveFilterStatesAllowedBuyerRegions","constants","isSwedenCountryCode","isEuCountryCode","getDefaultAllowedBuyerRegionsFilter","activeFilters","shippingRegionCountryCodeIso2","normalized","selectedValue","includes","compressAttributeFilterOptions","attributeFilter","sortOrder","appliedFromWardrobeProfile","normalize","responseData","_responseData$categor","_responseData$categor2","_responseData$itemsOn","isCsaSearchQuery","attributeFilters","categoryPath","currentCategoryId","filterCategories","filterPrice","headerText","internalSearch","internalSearchBar","introText","isSavedSearchEmailEnabled","isShopOwnedByCurrentMember","itemsOnDisplay","relatedItems","mainText","pagination","totalItems","searchLanguages","_responseData$filters","categoryFilter","singleOptionFilters","priceRangeFilter","wardrobeProfile","reduce","aggregated","parameter","normalizeFilters","compressAttributeFilters","Array","isArray","endpoint","hasResult","isFetchingGeolocation","isFilterOpen","DEFAULT_ACTION","INITIALIZE","getInitialState","_cookieUtil$readCooki","_cookieUtil$readCooki2","wishListItemIds","recentItemIds","readCookie","RECENTLY_VIEWED_ITEM_IDS","split","Boolean","wishListAddedCount","getInitialPreferredLanguage","availableLanguages","availableIsoCodes","lang","indexOf","getLanguageDisplayName","_Intl$DisplayNames$of","capitalize","Intl","DisplayNames","of","DEFAULT_LANGUAGE","available","memberCountryCodeIso2","languageSlice","initialize","_state","initServerLanguage","_ref$preferredLanguag","preferredLanguage","_ref$memberCountryCod","_ref$automaticTransla","preferredSupportedLanguage","SUPPORTED_LANGUAGES","defaultLanguage","getInitialServerLanguage","setAutomaticTranslationPreferred","_languageSlice$action","cleanedMemberAlias","facebookId","geolocation","isLoggedIn","memberDetailedSellerRatingAverage","memberCountry","memberEmailMd5","memberEmailSha256","memberFirstName","memberHeroImage","memberLastName","memberBirthdate","memberTown","hasTraderaPay","isCompany","age","memberAge","gender","memberGender","memberIsBuyer","memberIsSeller","permissions","memberState","isTrustedMember","isImpersonationSession","slice","messages","setMessages","getUrbanSdk","UA","UACache","sdk","isSupported","catch","getTagGroupsFromUrbanAirship","channel","tagGroups","entries","CHANNEL_TAG_GROUPS","_slicedToArray","group","groupTags","tag","tags","has","logger","isPushEnabled","getState","GdprSettings","randomNumber","setRandomNumber","selectIsBot","isBot","actionTypes","default","profileSlice","isTranslationOnDemandDisabled","loadingModel","model","showTranslatedReviews","translatedReviews","translatedReviewsLoading","translatedReviewsLoadingError","setTranslatedReviews","translatedReviewsProviderName","providerName","resetTranslatedReview","review","gradeId","setTranslationOnDemandIsDisabled","show","prepare","Analytics","label","beginLoadingTranslatedReviews","failedLoadingTranslatedReviews","beginLoadingModel","setModel","feedbackItems","feedbackItem","setFeedbackComment","feedbackId","newFeedbackItems","hasReply","isReplyAllowed","reply","_profileSlice$actions","shortDescription","longDescription","images","openingBid","fixedPrice","durationDays","customEndTime","shippingOptions","memberConsent","step1","step2","step3","step4","selectionError","newState","trim","displayPromoted","displayHighlighted","scrollY","itemDetails","bidInfo","isLoading","errorLoading","viewItemState","isBidding","itemState","placeBidResponse","info","isSuccessful","validationResult","myMaxBidAmount","serverSecondsLeft","combineReducers","attributes","bankId","traderaStateBankId","buyerRegion","charity","edit","errors","propertyName","e1","step1Errors","e2","step2Errors","e3","step3Errors","e4","step4Errors","extraFeatures","fees","itemDuration","getLanguage","preview","mapItemDetails","bidId","leadingBidAmount","leadingBidderMemberId","leadingBidMemberAlias","nextValidBidAmount","transactionType","bidCount","reservePriceReached","hasLeadingBid","hasLostLeadingBid","scroll","predictions","template","myTraderaItems","payout","REFUND_STEP","refundCheckoutSlice","currentStep","LOADING","refund","canEdit","payment","modal","setPurchaseOrder","START","setPaymentOptions","paymentOptions","setSelectedPayment","selectedPayment","setPaymentMethodData","paymentMethodData","setPaymentMethodValid","isValidPaymentMethod","setRefundIsSaving","isSaving","setRefundError","discountId","discountAttemptId","ongoingDiscount","setPaymentError","openPaymentModal","open","closePaymentModal","setDiscountId","setCanEdit","setDiscountPaymentAttemptId","discountPaymentAttemptId","setDiscountAttemptId","setOngoingDiscount","setCheckoutStep","setRefundState","setIsPaying","isPaying","setIsCancelling","isCancelling","_refundCheckoutSlice$","mySoldSlice","openChangeShipping","changeShippingModalData","isChangeShippingModalOpen","closeChangeShipping","openCancelShipping","cancelShippingModalData","isCancelShippingModalOpen","closeCancelShipping","openShippingQrCode","shippingQrCodeModalData","isShippingQrCodeModalOpen","closeShippingQrCode","_mySoldSlice$actions","checkout","profile","cart","reportItem","shippingCalculator","startPage","viewItem","traderaShop","shippingCheckout","invoiceCheckout","refundCheckout","payouts","payoutDestinationModal","mySold","isClientApiRequest","userAgent","requestId","pageTrackedRequestId","setCookies","setIsBot","setIsClientApiRequest","setLocation","setUserAgent","setPageTrackedRequestId","setRequestAndResponse","setRequestId","isNextJs","_slice$actions","loginApi","login","loginWithGoogle","loginWithKlarna","loginWithFacebook","loginWithApple","useLoginMutation","useLoginWithAppleMutation","useLoginWithFacebookMutation","useLoginWithGoogleMutation","useLoginWithKlarnaMutation","discoverViewSlice","openModalId","openSubMenu","isWardrobeProfileOpen","setOpenSubMenu","closeSubMenu","openWardrobeProfile","closeWardrobeProfile","setOpenModalId","closeAllModals","_discoverViewSlice$ac","history","ads","auth","discover","environment","memberStorage","multiCurrency","outage","page","personalisation","pushNotifications","shippingRegion","ui","wishListNudge","connectRouter","sellerListApi","discoverApi","categoriesApi","independentSearchApi","feesApi","pickListApi","touchwebSearchApi","touchwebSyiApi","bidHistoryApi","cartApi","draftsApi","templatesApi","shippingComplaintApi","savedSearchesApi","referralModalApi","wishListApi","messagingStatsApi","firebaseApi","quickView","ajaxItemApi","webApi","bookedShipmentsApi","startPageThemeApi","memberLatestPublishedListingApi","preferredShippingProvidersApi","memberPrefilledPackagingCostApi","discoverView","othersAlsoLookedAtApi","checkoutUpsellApi","valuationApi","syiShippingApi","similarItemsV2Api","leaveFeedbackApi","backendLoggerPromise","loggerPromise","Logger","context","console","process","_process","_process$env","env","contexts","isomorphicLogger","createLogger","isomorphicBaseQueryForWishListableItems","getIndependentSearchResult","getOthersAlsoLookedAt","shippingCountryCode","userLanguage","useGetOthersAlsoLookedAtQuery","getShippingComplaintData","urlParameters","URLSearchParams","saveShippingComplaintData","onQueryStarted","cache","formData","submittedDate","useGetShippingComplaintDataQuery","useSaveShippingComplaintDataMutation","getSimilarItemsV2","shippingCountryCodeIso2","useGetSimilarItemsV2Query","ExtractorType","InputType","getRequestConfig","args","httpClientBaseQuery","client","api","requestConfig","signal","_error$response","_error$response2","Axios","createLoggerPromise","log","webapiClientModulePromise","webapiClient","serverWebApiBaseQuery","req","pathOrConfig","loggingContext","getLoggingContext","getLoggingContextAsync","getFetchFunction","put","del","throwIfServer","jsonRequestHeaders","Accept","fetchBaseQuery","prepareHeaders","headerName","frontendBaseQueryWithReauth","originalBaseQuery","_response$error","errorData","responseStatus","errorCode","isMissingAuthToken","_response$error2","_errorData$responseSt","isInvalidOrExpiredAuthToken","refreshTokensOnce","frontendBaseQueryWebApiReauth","isServerState","doServerWebApiBaseQuery","mustHandleWishListableItems","wishlistAddRange","inWishList","handleWishListableItems","isFunctionalCookiesEnabled","hasRegionPickerDismissedCookie","shippingCountryCookieValue","fallbackShippingCountry","regionPickerDismissed","availableShippingCountries","availableShippingCountryCodes","isLoadingAvailableShippingCountries","hasLoadedAvailableShippingCountries","shippingCountry","setTcfLoadedAction","initializeState","featureSwitches","currencies","currencyCode","preferredCurrency","defaultCurrency","initializeUiFromInitData","pushNotificationActions","initLanguage","recentSearchesCookies","RECENT_SEARCHES","initPersonalisation","initShippingRegion","initEnvironment","initMember","initInitData","initMultiCurrency","enabled","initializeItems","initializePage","initStartPage","fetchSystemMessages","fetchSystemBadges","initReducer","uuidv4","replace","setOutageMessages","outageFields","discoverResponse","receiveSearchResults","stripItmFromQueryParameters","formatQueryParams","toQueryParameters","search","handleReportItemModel","traderaShopProduct","handleTraderaShopProduct","getInitialBadges","messageNotificationCount","badgeNotificationCount","initializeFromInitData","showHeaderSearch","showSearchForm","systemMessages","systemBadges","productCommunications","showCollectSsnModal","nullifyUndefinedProperties","categoryDropdownMenu","MODAL_STATE","CLOSED","badges","count","notificationCount","itemSettings","newMessageModal","senderId","recipientId","recipientAlias","itemTitle","itemImageUrl","modals","currentModal","notificationOptinModal","modalType","gaLabel","title","profileMenu","redirectUrl","BankAccountMissing","InvoiceOverdue","InvoiceUnpaid","PayoutFailed","PayoutReadyBankAccountMissing","OutstandingTraderaPayLicense","PayoutReadyOutstandingTraderaPayLicense","videoModal","video","shareModal","settings","wishListSideSheet","notificationsSideSheet","collectSsnModal","referralModal","hasSearch","read","CACHE_KEYS","SYSTEM_MESSAGES","SYSTEM_BADGES","hasSsn","loaded","confirmingId","merchantPreOrders","getInvoice","invoiceId","webApiClient","withCredentials","getPaymentOptions","initializePayment","getPaymentStatus","paymentAttemptId","cancelPayment","getExternalAuthData","getBraintreeToken","paymentOption","paymentMethod","createShipmentCheckout","deleteShipment","getShippingOptions","fromCountryCode","toCountryCode","setShipmentDetails","shippingDetails","setShippingAsBooked","setShippingAsShipped","getMemberSoldItemShippingInfo","shipmentCheckoutId","getShippingConfirmation","shippingCheckoutId","getIsBookingComplete","getUnbookedShipments","LAST_CHANCE","RECENTLY_VIEWED","DEFAULT_START_PAGE_HEADER_CONFIG","alternativeText","backgroundImage","DEFAULT_LOGGED_IN_START_PAGE_CONFIG","header","DEFAULT_LOGGED_OUT_START_PAGE_CONFIG","mapConfig","contentLoggedIn","contentLoggedOut","restOfConfig","STATUS","startPageResponse","initialStateData","HAS_DATA","NOT_FETCHED","itemQueryRandomNumber","startPageSlice","setStartPageConfigAction","setStartPageConfigStatusAction","_startPageSlice$actio","getItemState","hasStarted","itemType","leadingBidMemberId","getEndedItemState","ITEM_STATES","ENDED_CANCELLED","isAuction","ITEM_TYPES","AUCTION","isAuctionBin","AUCTION_BIN","isPureBin","PURE_BIN","isShopItem","SHOP_ITEM","TRANSACTION_TYPES","ENDED_AUCTION_WITH_WINNING_BID","BIN","ENDED_AUCTION_BIN_BOUGHT_AS_BIN","PURCHASE_OFFER_ON_ENDED","ENDED_AUCTION_BIN_SOLD_THROUGH_PURCHASE_OFFER","PURCHASE_OFFER_ON_ACTIVE","ENDED_PURE_BIN_SOLD_THROUGH_PURCHASE_OFFER","ENDED_AUCTION_SOLD_THROUGH_PURCHASE_OFFER","ENDED_AUCTION_WITHOUT_BID","ENDED_AUCTION_WITHOUT_WINNING_BID","ENDED_FIXED_PRICE","UNKNOWN","ONGOING_AUCTION","ONGOING_AUCTION_BIN","ONGOING_FIXED_PRICE","getOngoingItemState","NOT_STARTED_AUCTION","NOT_STARTED_AUCTION_BIN","NOT_STARTED_FIXED_PRICE","getNotStartedItemState","assertNoUndefinedProperties","obj","classnames","composeEventHandlers","originalEventHandler","ourEventHandler","_ref$checkForDefaultP","checkForDefaultPrevented","defaultPrevented","createBrowserHistory","getHistory","mergeRefs","_len","_key","TRACK_REDUX_ACTIONS","SAVE_REDUX_STATE_PATHS","sentryReduxEnhancer","Sentry","actionTransformer","stateTransformer","sentryState","keyString","keyArray","setNestedObjectValue","object","keyPathArray","acc","index","array","localStorage","_window","defaultStorage","storage","TEST_KEY","removeItem","testStorage","Map","delete","clear","gdprSettings","setFilter","hasValueForKey","enabledByGdprSettings","getItemsByPrefix","prefix","startsWith","stringifiedLength","STORAGE_KEYS","warn"],"sourceRoot":""}