{"version":3,"file":"IWOOP5IV.js","sources":["../../../../utils/checkSavedCard.ts","../../../../utils/cropNumberOfCard.ts","../../../../store/addresses/addresses.ts","../../../../types/api/api-v3/basket.ts","../../../../store/basket/basket.utils.ts","../../../../store/basket/basket-change.ts","../../../../store/basket/basket-point.ts","../../../../utils/formatToFullVisibleAddress.ts","../../../../store/basket/basket.ts"],"sourcesContent":["/* Types */\nimport { BasketPayment, SavedCard } from '@/types/api/api-v3/paymentMethods'\n\n/**\n * Проверка на то, что это сохраненная карта, у сохраненной карты нет поля [type]\n * @param payment - тип оплаты\n */\nexport const checkSavedCard = (\n payment: BasketPayment | null,\n): payment is SavedCard => !!payment && payment.type === undefined\n","/**\n * Обрезаем количество цифр c начала строки номера карты\n * @param cardNumber - номер карты\n * @param quantity - количество символов\n */\nexport const cropNumberOfCard = (cardNumber: string, quantity: number) =>\n cardNumber.slice(-quantity)\n","import { defineStore } from 'pinia'\n\nimport { StoreId } from '@/store'\nimport { useToggleStore } from '@/store/toggle/toggle'\n\nimport { Success } from '@/api/results'\nimport type { Address, AddressNote } from '@/types/api/api-v3/addresses'\nimport type { LoadState } from '@/types/main'\nimport type { AddressesState } from '@/types/store/addresses'\n\nconst defaultState: AddressesState = {\n addresses: {\n isLoaded: false,\n isLoading: false,\n data: [],\n error: null,\n },\n}\n\nexport const useAddressesStore = defineStore({\n id: StoreId.ADDRESSES,\n state: (): AddressesState => defaultState,\n actions: {\n async getAddresses() {\n const { newFetchingApiEnabled } = useToggleStore()\n\n this.setAddresses({ isLoading: true })\n\n const { $apiService } = useNuxtApp()\n const result = newFetchingApiEnabled\n ? await $apiService.addresses.fetchNewAddresses()\n : await $apiService.addresses.fetchAddresses()\n\n if (result instanceof Success) {\n this.setAddresses({ data: result.data, error: null })\n } else {\n this.setAddresses({ error: result })\n }\n\n this.setAddresses({ isLoading: false, isLoaded: true })\n\n return result\n },\n\n setAddresses(addresses: Partial>) {\n Object.assign(this.$state.addresses, addresses)\n },\n\n async createAddresses(bodyRequest: {\n street: string\n house: string\n apartment: string\n porch: string\n floor: string\n intercom: string\n notes: string\n }) {\n const { $apiService } = useNuxtApp()\n const result = await $apiService.addresses.createAddresses(bodyRequest)\n\n if (result instanceof Success) {\n return result.data\n }\n },\n\n async getSuggestions(bodyRequest: {\n provider: string | undefined\n state: string | undefined\n city: string\n alias: string\n search_term: string | null\n longitude: object | undefined\n latitude: object | undefined\n }) {\n const { $apiService } = useNuxtApp()\n const result = await $apiService.addresses.getSuggestions(bodyRequest)\n\n if (result instanceof Success) {\n return result.data\n }\n },\n\n async updateAddresses(newAddress: Address) {\n const { $apiService } = useNuxtApp()\n return await $apiService.addresses.updateAddresses(newAddress)\n },\n\n async updateAddressNote(newAddressNote: AddressNote) {\n const { $apiService } = useNuxtApp()\n\n return await $apiService.addresses.updateAddressNote(newAddressNote)\n },\n\n async deleteAddresses(addressId: number) {\n const { $apiService } = useNuxtApp()\n return await $apiService.addresses.deleteAddress(addressId)\n },\n },\n getters: {},\n})\n","import { PropositionItem } from '@/api/modules/basket/types'\n\nexport interface Basket {\n items: Item[]\n persons: Persons\n additives: AdditiveItem[]\n total_price: number\n total_amount: number\n amount_to_pay: number\n promo_code: Promocode | null\n bonuses: Bonuses | null\n max_number_of_persons: number\n items_count: number\n delivery: Delivery | null\n gifts: Gift[]\n proposition: Proposition\n client_packs: ClientPack[]\n is_extra: boolean\n}\nexport interface Bonuses {\n to_spend_amount: number\n max_spend_amount: number\n to_accrue_amount: number\n total_amount: number\n error_message: string\n message: string\n}\nexport interface Delivery {\n point_id: number | null\n cost: Cost | null\n method: DeliveryMethods\n address_id: number | null\n order_address: string | null\n}\nexport interface Cost {\n status: CostStatuses\n message?: string\n help_message?: string\n error_message?: string\n value?: number\n}\n\nexport enum CostStatuses {\n FREE_DELIVERY = 'FREE_DELIVERY',\n PAID_DELIVERY = 'PAID_DELIVERY',\n UNDER_MIN_AMOUNT = 'UNDER_MIN_AMOUNT',\n OUTSIDE_DELIVERY_AREA = 'OUTSIDE_DELIVERY_AREA',\n}\nexport enum DeliveryMethods {\n COURIER = 'courier',\n PICKUP = 'pickup',\n HALL = 'hall',\n}\nexport enum GiftTypes {\n BIRTHDAY = 'birthday',\n PROMOCODE = 'promo_code',\n CHOICE = 'with_choice',\n}\nexport interface Gift {\n title: string\n rule_id: number\n should_choose: false\n type: GiftTypes\n products: GiftProduct[]\n}\n\nexport interface GiftProduct {\n product_id: number\n image: string\n title: string\n quantity: number\n weight: number\n measure: string\n volume_in_liters: number\n selected: boolean\n}\nexport interface Item {\n price: number\n composition: string\n proposition_item_id: number | null\n is_proposition: boolean\n max_quantity: number | null\n total_price: number | null\n total_weight: string\n weight: string\n title: string\n quantity: number\n image_url: string\n url: string\n product_id: number\n measure: string\n volume_in_liters: number\n}\n\nexport interface Persons {\n error_message: string\n help_message: string\n max_number: number | null\n message: string\n number: number | null\n}\n\nexport interface AdditiveItem {\n price: number\n total_price: number\n title: string\n total_quantity: number\n image_url: string\n product_id: number\n}\n\nexport interface Promocode {\n discount_amount: number\n title: string\n valid: boolean\n value: string\n error?: string\n type: PromocodeType\n}\n\nexport interface Proposition {\n time_to_live: number\n popup_text: string\n items: PropositionItem[]\n}\n\nexport interface ClientPack {\n image_url: string\n product_id: number\n title: string\n total_price: number\n total_quantity: number\n}\n\nexport enum PromocodeType {\n GIFT = 'gift',\n RELATIVE = 'relative',\n ABSOLUTE = 'absolute',\n}\nexport interface Additive {\n type: string\n quota: number\n product_id: number\n}\nexport interface ErrorData {\n [K: string]: string[]\n}\n\nexport interface ChangeChoices {\n text: string\n value: number\n}\n\nexport enum BasketAddressMessages {\n NOT_DELIVERY_AREA = 'Сюда не доставляем',\n}\n","/* Package */\nimport { addDays, format } from 'date-fns'\n\nimport { DateTimeChoices } from '@/store/basket/basket.types'\n\n/* Types */\nimport { Basket as BasketApi, DeliveryMethods } from '@/types/api/api-v3/basket'\nimport { Basket, BasketState } from '@/types/store/basket'\n\n// TODO: Переработать неработающий функционал\n/**\n * Получаем список дней текущего месяца с date-fns\n */\nexport const getListOfMonth = () => {\n const todayDate = new Date()\n const finalDate = addDays(new Date(), 30)\n\n const currentDate = format(new Date(), 'yyyy-MM-dd')\n const result: DateTimeChoices[] = [\n {\n value: currentDate,\n text: currentDate,\n },\n ]\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (todayDate < finalDate) {\n const date = format(\n todayDate.setDate(todayDate.getDate() + 1),\n 'yyyy-MM-dd',\n )\n result.push({\n value: date,\n text: date,\n })\n }\n\n return result\n}\n\n// TODO: Разобраться с типизацией\n/**\n * Формируем state корзины\n * @param basket - данные корзины с api\n * @param state - текущий state корзины\n * @param defaultState - default состояние корзины\n */\nexport const getBasketState = (\n basket: BasketApi,\n state: BasketState,\n defaultState: BasketState,\n) => {\n const basketState: Basket = {\n totalPrice: basket.total_price || defaultState.data.totalPrice,\n totalAmount: basket.total_amount || defaultState.data.totalAmount,\n amountToPay: basket.amount_to_pay || defaultState.data.amountToPay,\n itemsCount: basket.items_count || defaultState.data.itemsCount,\n items: basket.items || defaultState.data.items,\n maxNumberOfPersons:\n basket.max_number_of_persons || defaultState.data.maxNumberOfPersons,\n persons: basket.persons\n ? {\n errorMessage:\n basket.persons.error_message ||\n defaultState.data.persons.errorMessage,\n helpMessage:\n basket.persons.help_message ||\n defaultState.data.persons.helpMessage,\n message: basket.persons.message || defaultState.data.persons.message,\n maxNumber:\n basket.persons.max_number || defaultState.data.persons.maxNumber,\n number: basket.persons.number || defaultState.data.persons.number,\n }\n : undefined,\n promocode: {\n discountAmount:\n basket.promo_code?.discount_amount ||\n defaultState.data.promocode.discountAmount,\n title: basket.promo_code?.title || defaultState.data.promocode.title,\n valid: basket.promo_code?.valid ?? defaultState.data.promocode.valid,\n error: basket.promo_code?.error || defaultState.data.promocode.error,\n type: basket.promo_code?.type || defaultState.data.promocode.type,\n value: basket.promo_code?.value || defaultState.data.promocode.value,\n },\n clientPacks: basket.client_packs || defaultState.data.clientPacks,\n additives: basket.additives || defaultState.data.additives,\n gifts: basket.gifts || defaultState.data.gifts,\n delivery: {\n cost: basket.delivery?.cost || defaultState.data.delivery.cost,\n method: basket.delivery?.method || defaultState.data.delivery.method,\n order_address:\n basket.delivery?.order_address ||\n defaultState.data.delivery.order_address,\n addresses: {\n [DeliveryMethods.COURIER]:\n basket.delivery?.method === DeliveryMethods.COURIER\n ? basket.delivery?.address_id\n : defaultState.data.delivery.addresses.courier,\n [DeliveryMethods.HALL]:\n basket.delivery?.method === DeliveryMethods.HALL\n ? basket.delivery?.point_id\n : defaultState.data.delivery.addresses.hall,\n [DeliveryMethods.PICKUP]:\n basket.delivery?.method === DeliveryMethods.PICKUP\n ? basket.delivery?.point_id\n : defaultState.data.delivery.addresses.pickup,\n },\n },\n bonuses: {\n toAccrueAmount:\n basket.bonuses?.to_accrue_amount ||\n defaultState.data.bonuses.toAccrueAmount,\n errorMessage:\n basket.bonuses?.error_message || defaultState.data.bonuses.errorMessage,\n maxSpendAmount:\n basket.bonuses?.max_spend_amount ||\n defaultState.data.bonuses.maxSpendAmount,\n message: basket.bonuses?.message || defaultState.data.bonuses.message,\n toSpendAmount:\n basket.bonuses?.to_spend_amount ||\n defaultState.data.bonuses.toSpendAmount,\n totalAmount:\n basket.bonuses?.total_amount || defaultState.data.bonuses.totalAmount,\n },\n selectedPaymentMethod: state.data.selectedPaymentMethod,\n note: state.data.note,\n change: state.data.change,\n selectedGifts: state.data.selectedGifts,\n proposition: {\n timeToLive:\n basket.proposition?.time_to_live ||\n defaultState.data.proposition.timeToLive,\n popupText:\n basket.proposition?.popup_text ||\n defaultState.data.proposition.popupText,\n items: basket.proposition?.items || defaultState.data.proposition.items,\n },\n doNotCallMeBack: state.data.doNotCallMeBack,\n isExtra: basket.is_extra || defaultState.data.isExtra,\n }\n\n if (basket.items_count === 0) {\n basketState.selectedPaymentMethod = defaultState.data.selectedPaymentMethod\n basketState.note = defaultState.data.note\n }\n\n return basketState\n}\n","import { defineStore } from 'pinia'\nimport { StoreId } from '@/store'\nimport { ChangeState } from '@/store/basket/basket.types'\nimport { Success } from '@/api/results'\nimport { ChangeChoices } from '@/types/api/api-v3/basket'\n\nexport const useBasketChangeStore = defineStore({\n id: StoreId.BASKET_CHANGE,\n state: (): ChangeState => {\n return {\n choices: [],\n quantitySelectedProducts: {},\n }\n },\n getters: {\n getQuantitySelectedProducts:\n ({ quantitySelectedProducts }) =>\n (productId: number) => {\n return +quantitySelectedProducts[productId] || 0\n },\n },\n actions: {\n setQuantitySelectedProducts(data: { index: number; value: number }) {\n if (data.value === 0) {\n delete this.quantitySelectedProducts[data.index]\n return\n }\n\n this.quantitySelectedProducts[data.index] = data.value\n },\n\n resetSelectedProducts() {\n for (const id in this.quantitySelectedProducts) {\n delete this.quantitySelectedProducts[id]\n }\n },\n\n async fetchChange(amount: number) {\n const { $apiService } = useNuxtApp()\n const result = await $apiService.basket.fetchChange(amount)\n\n if (result instanceof Success) {\n this.setChange(result.data || [])\n\n return result\n }\n },\n\n setChange(changeList: ChangeChoices[]) {\n this.choices = changeList\n },\n },\n})\n","import { defineStore } from 'pinia'\n\nimport { StoreId } from '@/store'\n\nimport { Success } from '@/api/results'\nimport { DeliveryMethods } from '@/types/api/api-v3/basket'\nimport { BasketPoint } from '@/types/api/api-v3/basket-points'\nimport { LoadState } from '@/types/main'\nimport { PointState } from '@/types/store/basket/points'\n\nconst defaultState: PointState = {\n data: [],\n isLoading: false,\n isLoaded: false,\n error: null,\n}\n\nexport const useBasketPointStore = defineStore({\n id: StoreId.POINT,\n state: (): PointState => defaultState,\n actions: {\n async getPoints() {\n this.setPoints({ isLoading: true, isLoaded: false })\n\n const { $apiService } = useNuxtApp()\n const result = await $apiService.basket.getPoints()\n\n if (result instanceof Success) {\n this.setPoints({\n isLoading: false,\n isLoaded: true,\n ...result,\n error: null,\n })\n\n return\n }\n\n this.setPoints({ error: result })\n },\n // Метод проверки актуальности работы точки по установленному способу hall/pickup\n checkRelevanceOfPoint(\n currentPoint: BasketPoint,\n currentMethod: DeliveryMethods.PICKUP | DeliveryMethods.HALL,\n ) {\n const matchedPoint = this.$state.data.find(\n ({ id }) => id === currentPoint.id,\n )\n\n if (!matchedPoint) return !matchedPoint\n\n return matchedPoint[currentMethod] !== currentPoint[currentMethod]\n },\n\n setPoints(points: Partial>) {\n Object.assign(this.$state, points)\n },\n },\n getters: {\n pickupPoints(state) {\n return state.data.filter((point) => point[DeliveryMethods.PICKUP])\n },\n\n hallPoints(state) {\n return state.data.filter((point) => point[DeliveryMethods.HALL])\n },\n },\n})\n","import type { AddressClient } from '@/api/modules/addresses/addresses.types'\n\n/**\n * Формирование полной строки адреса\n * @param address - поля адреса\n * @param borderHouse - граница формата адреса до номера дома\n */\nexport const formatToFullVisibleAddress = (\n address: AddressClient,\n borderHouse: boolean = false,\n): string => {\n const { street, locality, house, apartment, flat } = address\n\n let result = ''\n\n // Приводим к нижнему регистру\n const loverLocality = locality ? locality.toLocaleLowerCase() : null\n\n // Если locality существует и не равен улице\n if (Boolean(loverLocality) && loverLocality !== street.toLocaleLowerCase())\n result = `${locality}`\n\n // Если locality есть\n if (result) result += `, `\n\n const streetFirstSymbolUpper = street\n\n // Улица с домом всегда будет, конкатенируем значения\n result += `${streetFirstSymbolUpper} д. ${house}`\n\n // Флаг определяющий литерал адреса до номера дома\n if (borderHouse) return result\n\n // На /v3/ - apartment на /v4/ - flat\n const newFlat = apartment || flat\n\n if (newFlat) result = `${result}, кв ${newFlat}`\n\n return result\n}\n\n/**\n * Формирование адреса в формате 'Город, Улица, Дом'\n */\nexport const formatToAddressSystem = (\n city: string,\n street: string,\n house: string,\n) => {\n // Массив для хранения компонентов адреса\n const addressParts = []\n\n // Добавляем компоненты, если они существуют\n if (city) addressParts.push(city)\n if (street) addressParts.push(street)\n if (house) addressParts.push(house)\n\n // Собираем строку, разделяя компоненты запятой\n return addressParts.join(', ')\n}\n","import { defineStore } from 'pinia'\n\nimport { checkSavedCard } from '@/utils/checkSavedCard'\nimport { cropNumberOfCard } from '@/utils/cropNumberOfCard'\n\nimport { StoreId } from '@/store'\nimport { useAddressesStore } from '@/store/addresses/addresses'\nimport { useAddressSystem } from '@/store/addressSystem/address-system'\nimport { BasketState } from '@/store/basket/basket.types'\nimport { getBasketState } from '@/store/basket/basket.utils'\nimport { useBasketChangeStore } from '@/store/basket/basket-change'\nimport { useBasketPointStore } from '@/store/basket/basket-point'\n\nimport {\n DeleteGiftPayload,\n DeliveryMethods,\n Gift,\n GiftPayload,\n GiftTypes,\n SetDeliveryMethodPayload,\n} from '@/api/modules/basket/types'\nimport { ServerError, Success, UnprocessableEntityError } from '@/api/results'\nimport { AdditiveItem } from '@/types/api/api-v3/basket'\nimport {\n BasketPayment,\n PaymentMethodType,\n} from '@/types/api/api-v3/paymentMethods'\n\nconst defaultState: BasketState = {\n isLoaded: false,\n isLoading: false,\n error: null,\n data: {\n totalPrice: 0,\n totalAmount: 0,\n amountToPay: 0,\n itemsCount: 0,\n items: [],\n additives: [],\n maxNumberOfPersons: 0,\n persons: {\n errorMessage: '',\n helpMessage: '',\n maxNumber: 0,\n message: '',\n number: 0,\n },\n promocode: {\n discountAmount: 0,\n title: '',\n value: '',\n valid: true,\n error: '',\n type: null,\n },\n bonuses: {\n toSpendAmount: 0,\n maxSpendAmount: 0,\n toAccrueAmount: 0,\n totalAmount: 0,\n errorMessage: '',\n message: '',\n },\n delivery: {\n cost: null,\n method: DeliveryMethods.COURIER,\n order_address: null,\n addresses: {\n [DeliveryMethods.COURIER]: null,\n [DeliveryMethods.HALL]: null,\n [DeliveryMethods.PICKUP]: null,\n },\n },\n gifts: [],\n selectedPaymentMethod: null,\n note: '',\n change: 0,\n isExtra: false,\n proposition: {\n timeToLive: 0,\n popupText: '',\n items: [],\n },\n clientPacks: [],\n doNotCallMeBack: false, // По дефолту нужно перезвонить\n },\n}\n\nexport const useBasketStore = defineStore({\n id: StoreId.BASKET,\n state: (): BasketState => defaultState,\n actions: {\n async fetchBasket() {\n const { setLoadingWidget } = useAddressSystem()\n const { $apiService } = useNuxtApp()\n const { isMobile } = useDevice()\n\n this.isLoading = true\n\n setLoadingWidget(true)\n\n const result = await $apiService.basket.fetchBasket(this.$state, isMobile)\n\n setLoadingWidget(false)\n\n if (result instanceof Success) {\n this.isLoading = false\n this.isLoaded = true\n // @ts-ignore\n this.data = result.data\n\n return\n }\n\n this.isLoading = false\n this.isLoaded = true\n // @ts-ignore\n this.error = result\n },\n\n async addProduct(productId: number) {\n try {\n const { $apiService } = useNuxtApp()\n const { isMobile } = useDevice()\n const result = await $apiService.basket.addProduct(\n {\n product_id: productId,\n quantity: 1,\n },\n {\n headers: {\n 'Marketing-Section': isMobile ? 'new_site_mobile' : 'new_site',\n },\n },\n )\n\n if (result instanceof Success) {\n const data = result.data\n\n if (!data) {\n return\n }\n\n this.setBasket({\n isLoaded: true,\n isLoading: false,\n data: getBasketState(data, this.$state, defaultState),\n error: null,\n })\n }\n } catch (error) {\n this.setBasket({\n error,\n })\n }\n },\n\n async setProduct(product: { product_id: number; quantity: number }) {\n const { $apiService } = useNuxtApp()\n const { isMobile } = useDevice()\n const result = await $apiService.basket.setProduct(\n this.$state,\n product,\n isMobile,\n )\n\n if (result instanceof Success) {\n this.setBasket({\n isLoading: false,\n isLoaded: true,\n // @ts-ignore\n data: result.data,\n error: null,\n })\n\n return\n }\n\n if (result instanceof UnprocessableEntityError) {\n // @ts-ignore\n this.setBasket({\n isLoading: false,\n isLoaded: true,\n error: result.data,\n })\n\n return\n }\n\n this.setBasket({\n // @ts-ignore\n error: result,\n })\n },\n\n async clearBasket() {\n const { $apiService } = useNuxtApp()\n const { isMobile } = useDevice()\n const basketChangeStore = useBasketChangeStore()\n\n const result = await $apiService.basket.clear(isMobile)\n\n if (result instanceof Success) {\n this.clearBasketData()\n\n basketChangeStore.resetSelectedProducts()\n\n // Перезапрашиваем корзину, чтобы получить delivery, который может поменяться\n await this.fetchBasket()\n\n return\n }\n\n this.setBasket({\n error: result,\n })\n },\n\n async orderCheckout() {\n const payment_method = checkSavedCard(this.data.selectedPaymentMethod)\n ? PaymentMethodType.FEATURE_SAVED_CARD\n : this.data.selectedPaymentMethod?.type\n\n const formData: {\n number_of_persons?: number | null\n payment_method: string | null | undefined\n notes: string\n change: number\n do_not_call_me_back: boolean\n } = {\n number_of_persons: this.data.persons.number,\n payment_method,\n notes: this.data.note,\n change: this.data.change,\n do_not_call_me_back: this.data.doNotCallMeBack,\n }\n\n if (this.data.persons.maxNumber === 0) {\n delete formData.number_of_persons\n }\n\n const { $apiService } = useNuxtApp()\n const { isMobile } = useDevice()\n const basketChangeStore = useBasketChangeStore()\n const result = await $apiService.basket.orderCheckout(formData, isMobile)\n\n if (result instanceof Success) {\n basketChangeStore.resetSelectedProducts()\n\n return result.data\n }\n\n if (result instanceof UnprocessableEntityError) {\n // @ts-ignore\n this.setBasket({ error: result })\n return result\n }\n // @ts-ignore\n this.setBasket({ error: result })\n },\n\n setBasket(basket: Partial) {\n Object.assign(this.$state, basket)\n\n // Если очистили корзину, то очищаем и кол-во выбранных товаров\n if (!this.$state.data?.items.length) {\n const basketChangeStore = useBasketChangeStore()\n basketChangeStore.resetSelectedProducts()\n }\n },\n\n async promocodeReset() {\n const { $apiService } = useNuxtApp()\n const { isMobile } = useDevice()\n\n const result = await $apiService.basket.resetPromocode(\n this.$state,\n isMobile,\n )\n\n if (result instanceof Success) {\n this.setBasket({\n isLoaded: true,\n data: result.data,\n error: null,\n })\n\n return result\n }\n\n this.setBasket({\n error: result,\n })\n },\n\n async promocodeApply(bodyRequest: { value: string }) {\n const { $apiService } = useNuxtApp()\n const { isMobile } = useDevice()\n\n const result = await $apiService.basket.applyPromocode(\n this.$state,\n bodyRequest,\n isMobile,\n )\n\n if (result instanceof Success) {\n this.setBasket({\n isLoaded: true,\n data: result.data,\n error: null,\n })\n\n return result\n }\n\n return result\n },\n async setGift(gift: GiftPayload) {\n if (!gift) return\n\n const { $apiService } = useNuxtApp()\n\n const result = await $apiService.basket.setGift(this.$state, gift)\n\n if (result instanceof Success) {\n this.setBasket({\n data: result.data,\n })\n }\n\n return result\n },\n async deleteGift(gift: DeleteGiftPayload) {\n if (!gift) return\n\n const { $apiService } = useNuxtApp()\n\n const result = await $apiService.basket.deleteGift(this.$state, gift)\n\n if (result instanceof Success) {\n this.setBasket({\n data: result.data,\n })\n }\n\n return result\n },\n async setTime(time: { delivery_at_client: boolean; delivery_at: string }) {\n const { $apiService } = useNuxtApp()\n const { isMobile } = useDevice()\n\n const result = await $apiService.basket.setTime(\n this.$state,\n time,\n isMobile,\n )\n\n if (result instanceof Success) {\n this.setBasket({\n isLoaded: true,\n data: result?.data,\n error: null,\n })\n }\n },\n\n clearBasketData() {\n this.setBasket({\n data: defaultState.data,\n error: defaultState.error,\n isLoading: defaultState.isLoading,\n })\n },\n\n setSelectedPaymentMethod(paymentMethod: BasketPayment | null) {\n this.data.selectedPaymentMethod = paymentMethod\n },\n\n setChange(change: number) {\n this.data.change = change\n },\n\n async applyBonuses(bodyRequest: { amount: string | number }) {\n const { $apiService } = useNuxtApp()\n const { isMobile } = useDevice()\n const result = await $apiService.basket.applyBonuses(\n this.$state,\n bodyRequest,\n isMobile,\n )\n\n if (result instanceof Success) {\n this.setBasket({\n isLoaded: true,\n data: result.data,\n error: null,\n })\n\n return result\n }\n\n if (\n !(result instanceof Success) &&\n !(result instanceof UnprocessableEntityError)\n ) {\n this.data.bonuses.errorMessage = 'Не удалось загрузить бонусы'\n }\n\n return result\n },\n setNote(note: string) {\n this.data.note = note\n },\n\n setDeliveryOrderAddress(address: string) {\n this.data.delivery.order_address = address\n },\n\n setDeliveryMethodInState(deliveryMethod: DeliveryMethods) {\n this.data.delivery.method = deliveryMethod\n },\n\n async setDeliveryMethod(bodyRequest: SetDeliveryMethodPayload) {\n const { $apiService, $metrics } = useNuxtApp()\n const { isMobile } = useDevice()\n const { setLoadingWidget } = useAddressSystem()\n\n setLoadingWidget(true)\n\n const result = await $apiService.basket.setDeliveryMethod(\n this.$state,\n bodyRequest,\n isMobile,\n )\n\n setLoadingWidget(false)\n\n if (result instanceof Success) {\n // @ts-ignore\n this.setBasket({\n isLoaded: true,\n ...result,\n error: null,\n })\n\n $metrics?.eventSendGoal({ ym: 'address_save' })\n\n return\n }\n\n // @ts-ignore\n this.setBasket({ error: result })\n },\n\n setAddress({ type, id }: { type: DeliveryMethods; id: number }) {\n this.data.delivery.addresses[type] = id\n },\n\n async setProposition(propositionItem: {\n proposition_item_id: number\n quantity?: number\n }) {\n const { $apiService } = useNuxtApp()\n const { isMobile } = useDevice()\n\n const result = await $apiService.basket.setProposition(\n this.$state,\n propositionItem,\n isMobile,\n )\n\n if (result instanceof Success) {\n // @ts-ignore\n this.setBasket({\n isLoaded: true,\n ...result,\n })\n }\n },\n\n setDoNotCallMeBack(doNotCallMeBack: boolean) {\n this.data.doNotCallMeBack = doNotCallMeBack\n },\n },\n getters: {\n selectedAddress: (state) => {\n const addressesStore = useAddressesStore()\n const pointStore = useBasketPointStore()\n\n switch (state.data.delivery.method) {\n case DeliveryMethods.COURIER: {\n const selectedAddressId =\n state.data.delivery.addresses[DeliveryMethods.COURIER]\n\n const selectedAddress = addressesStore.addresses.data.find(\n (address) => address.id === selectedAddressId,\n )\n\n if (!selectedAddress) return ''\n\n return formatToFullVisibleAddress(selectedAddress)\n }\n case DeliveryMethods.HALL: {\n const selectedPointId =\n state.data.delivery.addresses[DeliveryMethods.HALL]\n\n return pointStore.data.find((point) => point.id === selectedPointId)\n ?.address\n }\n case DeliveryMethods.PICKUP: {\n const selectedPointId =\n state.data.delivery.addresses[DeliveryMethods.PICKUP]\n\n return pointStore.data.find((point) => point.id === selectedPointId)\n ?.address\n }\n default:\n return undefined\n }\n },\n basketIsEmpty: ({ data, error }) => {\n return (\n data.itemsCount === 0 ||\n error?.response?.data?.detail?.includes('Корзина пуста')\n )\n },\n basketIsDisabled: ({ error }) =>\n error instanceof ServerError ||\n error?.response?.data?.detail?.includes('Приём заказов приостановлен'),\n isProductInBasket:\n ({ data }) =>\n (productId: number) => {\n return data.items.find((product) => product.product_id === productId)\n },\n clientPacksCount: ({ data }) => {\n let sum = 0\n\n if (!data.clientPacks) return 0\n\n data.clientPacks.forEach((item) => (sum = sum + item.total_quantity))\n\n return sum\n },\n giftsNoChoice: (state): Gift[] =>\n state.data.gifts.filter((gift) => gift.type !== GiftTypes.CHOICE),\n giftsOfChoice: (state): Gift[] => {\n const filteredGifts = state.data.gifts.filter(\n (gift) => gift.should_choose,\n )\n\n if (!filteredGifts || filteredGifts.length === 0) return []\n\n const firstGiftsOfChoice = filteredGifts.shift()\n\n return [firstGiftsOfChoice]\n },\n getSelectedGift: (state): GiftPayload | undefined => {\n // из-за BasketState не может определить геттер giftsOfChoice\n // @ts-ignore\n const giftsOfChoice: Gift[] = state.giftsOfChoice\n\n if (giftsOfChoice.length === 0) return\n\n const firstGiftList = giftsOfChoice.at(0)\n\n if (!firstGiftList?.rule_id) return\n\n const selectedProduct = firstGiftList?.products.find(\n ({ selected }) => selected,\n )\n\n if (!selectedProduct) return\n\n return {\n rule_id: firstGiftList.rule_id,\n product_id: selectedProduct.product_id,\n }\n },\n clientAdditivesCount: (state) => {\n if (state.data.clientPacks === undefined) return 0\n\n return state.data.additives.reduce(\n (accumulator, additive) =>\n (accumulator = accumulator + additive.total_quantity),\n 0,\n )\n },\n\n promocodeIsValid: (state) => state.data.promocode?.valid,\n\n basketAddressSelected: (state) =>\n Object.values(state.data.delivery.addresses).some((address) => address),\n checkAccessEnterPromo: (state) => {\n return !!state.data.bonuses.toSpendAmount\n },\n bonusesIsApplied: (state) => state.data.bonuses.toSpendAmount !== 0,\n basketSelectedDeliveryMethod: (state) => {\n const methods = {\n courier: 'Адрес доставки',\n pickup: 'Самовывоз',\n hall: 'В ресторане',\n }\n\n if (state.data.delivery.method) {\n return methods[state.data.delivery.method]\n }\n\n return ''\n },\n addedAdditives: (state) =>\n state.data.additives?.reduce(\n (acc, additive) =>\n additive.total_quantity === 0 ? acc : [...acc, additive],\n [],\n ),\n basketSelectedPaymentMethod: (state) => {\n const { selectedPaymentMethod, delivery } = state.data\n\n // Если способ оплаты не выбран\n if (!selectedPaymentMethod) return 'Не выбрано'\n\n // Если это карта, то возвращаем карту\n if (checkSavedCard(selectedPaymentMethod)) {\n return `Картой онлайн ${cropNumberOfCard(\n selectedPaymentMethod?.card_number,\n 8,\n )}`\n }\n // Исключение для оплаты картой курьеру\n if (\n delivery.method === DeliveryMethods.COURIER &&\n selectedPaymentMethod.type === PaymentMethodType.CARD\n )\n return 'Картой курьеру'\n\n const methods = {\n cash: 'Наличные',\n card: 'Картой в ресторане',\n sberbank: 'Онлайн',\n cloud_payments: 'Онлайн',\n pay_selection: 'Онлайн',\n sbp_sberbank: 'Оплата через СБП',\n }\n\n return methods[selectedPaymentMethod.type]\n },\n checkSelectedSavedCard: (state) => {\n const { selectedPaymentMethod } = state.data\n\n return !!selectedPaymentMethod && checkSavedCard(selectedPaymentMethod)\n },\n\n isExtraBasket: ({ data }) => data.isExtra,\n\n // Количество товаров в корзине по каждому из id модификаций\n basketSelectedProducts: (state) => {\n const result: Record = {}\n\n for (const product of state.data.items) {\n result[product.product_id] = product.quantity\n }\n\n return result\n },\n },\n // Сохраняем note в localStorage для сохранения после обновления\n persist: {\n storage: persistedState.localStorage,\n paths: ['data.note'],\n },\n})\n"],"names":["checkSavedCard","payment","cropNumberOfCard","cardNumber","quantity","defaultState","useAddressesStore","defineStore","StoreId","newFetchingApiEnabled","useToggleStore","$apiService","useNuxtApp","result","Success","addresses","bodyRequest","newAddress","newAddressNote","addressId","CostStatuses","DeliveryMethods","BasketAddressMessages","getListOfMonth","todayDate","finalDate","addDays","currentDate","format","date","getBasketState","basket","state","basketState","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","useBasketChangeStore","quantitySelectedProducts","productId","data","id","amount","changeList","useBasketPointStore","currentPoint","currentMethod","matchedPoint","points","point","formatToFullVisibleAddress","address","borderHouse","street","locality","house","apartment","flat","loverLocality","newFlat","formatToAddressSystem","city","addressParts","useBasketStore","setLoadingWidget","useAddressSystem","isMobile","useDevice","error","product","UnprocessableEntityError","basketChangeStore","payment_method","PaymentMethodType","formData","gift","time","paymentMethod","change","note","deliveryMethod","$metrics","type","propositionItem","doNotCallMeBack","addressesStore","pointStore","selectedAddressId","selectedAddress","selectedPointId","ServerError","sum","item","GiftTypes","filteredGifts","giftsOfChoice","firstGiftList","selectedProduct","selected","accumulator","additive","methods","acc","selectedPaymentMethod","delivery","persistedState"],"mappings":"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","debug_id":"46b568d3-e82a-5458-b3a4-3528aea2de0a"}