{"version":3,"file":"CXf0im7S.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 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}\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\n/* Types */\nimport { Basket as BasketApi, DeliveryMethods } from '@/types/api/api-v3/basket'\nimport { Basket, BasketState } from '@/types/store/basket'\nimport { DateTimeChoices } from '@/store/basket/basket.types'\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 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\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 */\nexport const formatToFullVisibleAddress = (address: AddressClient): 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 // На /v3/ - apartment на /v4/ - flat\n const newFlat = apartment || flat\n\n if (newFlat) result = `${result}, кв ${newFlat}`\n\n return result\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 { 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 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 { $apiService } = useNuxtApp()\n const { isMobile } = useDevice()\n this.isLoading = true\n\n const result = await $apiService.basket.fetchBasket(this.$state, isMobile)\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(this.$state, isMobile)\n\n if (result instanceof Success) {\n this.setBasket({\n isLoaded: true,\n data: result?.data,\n error: null,\n })\n\n basketChangeStore.resetSelectedProducts()\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 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 setDeliveryMethodInState(deliveryMethod: DeliveryMethods) {\n this.data.delivery.method = deliveryMethod\n },\n\n async setDeliveryMethod(bodyRequest: SetDeliveryMethodPayload) {\n const { $apiService } = useNuxtApp()\n const { isMobile } = useDevice()\n const result = await $apiService.basket.setDeliveryMethod(\n this.$state,\n bodyRequest,\n isMobile,\n )\n\n if (result instanceof Success) {\n // @ts-ignore\n this.setBasket({\n isLoaded: true,\n ...result,\n error: null,\n })\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 setNumberOfPersons(numberOfPersons: { number: number }) {\n const { $apiService } = useNuxtApp()\n const { isMobile } = useDevice()\n\n const result = await $apiService.basket.setNumberOfPersons(\n this.$state,\n numberOfPersons,\n isMobile,\n )\n\n if (result instanceof Success) {\n // @ts-ignore\n this.setBasket({\n isLoaded: true,\n ...result,\n error: null,\n })\n\n return\n }\n\n // @ts-ignore\n this.setBasket({ error: result })\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","useBasketChangeStore","quantitySelectedProducts","productId","data","id","amount","changeList","useBasketPointStore","points","point","formatToFullVisibleAddress","address","street","locality","house","apartment","flat","loverLocality","newFlat","useBasketStore","isMobile","useDevice","error","product","UnprocessableEntityError","basketChangeStore","payment_method","PaymentMethodType","formData","gift","time","paymentMethod","change","note","deliveryMethod","type","numberOfPersons","propositionItem","doNotCallMeBack","addressesStore","pointStore","selectedAddressId","selectedAddress","selectedPointId","ServerError","sum","item","GiftTypes","filteredGifts","giftsOfChoice","firstGiftList","selectedProduct","selected","accumulator","additive","methods","acc","selectedPaymentMethod","delivery","persistedState"],"mappings":";;6gBAOO,MAAMA,EACXC,GACyB,CAAC,CAACA,GAAWA,EAAQ,OAAS,OCJ5CC,EAAmB,CAACC,EAAoBC,IACnDD,EAAW,MAAM,CAACC,CAAQ,ECItBC,EAA+B,CACnC,UAAW,CACT,SAAU,GACV,UAAW,GACX,KAAM,CAAC,EACP,MAAO,IAAA,CAEX,EAEaC,EAAoBC,EAAY,CAC3C,GAAIC,EAAQ,UACZ,MAAO,IAAsBH,EAC7B,QAAS,CACP,MAAM,cAAe,CACb,KAAA,CAAE,sBAAAI,CAAsB,EAAIC,EAAe,EAEjD,KAAK,aAAa,CAAE,UAAW,EAAA,CAAM,EAE/B,KAAA,CAAE,YAAAC,CAAY,EAAIC,EAAW,EAC7BC,EAASJ,EACX,MAAME,EAAY,UAAU,oBAC5B,MAAMA,EAAY,UAAU,eAAe,EAE/C,OAAIE,aAAkBC,EACpB,KAAK,aAAa,CAAE,KAAMD,EAAO,KAAM,MAAO,KAAM,EAEpD,KAAK,aAAa,CAAE,MAAOA,CAAA,CAAQ,EAGrC,KAAK,aAAa,CAAE,UAAW,GAAO,SAAU,GAAM,EAC/CA,CACT,EAEA,aAAaE,EAA0C,CACrD,OAAO,OAAO,KAAK,OAAO,UAAWA,CAAS,CAChD,EAEA,MAAM,gBAAgBC,EAQnB,CACK,KAAA,CAAE,YAAAL,CAAY,EAAIC,EAAW,EAC7BC,EAAS,MAAMF,EAAY,UAAU,gBAAgBK,CAAW,EAEtE,GAAIH,aAAkBC,EACpB,OAAOD,EAAO,IAElB,EAEA,MAAM,eAAeG,EAQlB,CACK,KAAA,CAAE,YAAAL,CAAY,EAAIC,EAAW,EAC7BC,EAAS,MAAMF,EAAY,UAAU,eAAeK,CAAW,EAErE,GAAIH,aAAkBC,EACpB,OAAOD,EAAO,IAElB,EAEA,MAAM,gBAAgBI,EAAqB,CACnC,KAAA,CAAE,YAAAN,CAAY,EAAIC,EAAW,EACnC,OAAO,MAAMD,EAAY,UAAU,gBAAgBM,CAAU,CAC/D,EAEA,MAAM,kBAAkBC,EAA6B,CAC7C,KAAA,CAAE,YAAAP,CAAY,EAAIC,EAAW,EAEnC,OAAO,MAAMD,EAAY,UAAU,kBAAkBO,CAAc,CACrE,EAEA,MAAM,gBAAgBC,EAAmB,CACjC,KAAA,CAAE,YAAAR,CAAY,EAAIC,EAAW,EACnC,OAAO,MAAMD,EAAY,UAAU,cAAcQ,CAAS,CAAA,CAE9D,EACA,QAAS,CAAA,CACX,CAAC,ECzDW,IAAAC,GAAAA,IACVA,EAAA,cAAgB,gBAChBA,EAAA,cAAgB,gBAChBA,EAAA,iBAAmB,mBACnBA,EAAA,sBAAwB,wBAJdA,IAAAA,GAAA,CAAA,CAAA,EAMAC,GAAAA,IACVA,EAAA,QAAU,UACVA,EAAA,OAAS,SACTA,EAAA,KAAO,OAHGA,IAAAA,GAAA,CAAA,CAAA,EAyGAC,GAAAA,IACVA,EAAA,kBAAoB,qBADVA,IAAAA,GAAA,CAAA,CAAA,EC5IL,MAAMC,GAAiB,IAAM,CAC5B,MAAAC,MAAgB,KAChBC,EAAYC,EAAY,IAAA,KAAQ,EAAE,EAElCC,EAAcC,EAAW,IAAA,KAAQ,YAAY,EAC7Cf,EAA4B,CAChC,CACE,MAAOc,EACP,KAAMA,CAAA,CAEV,EAGA,KAAOH,EAAYC,GAAW,CAC5B,MAAMI,EAAOD,EACXJ,EAAU,QAAQA,EAAU,QAAA,EAAY,CAAC,EACzC,YACF,EACAX,EAAO,KAAK,CACV,MAAOgB,EACP,KAAMA,CAAA,CACP,CAAA,CAGI,OAAAhB,CACT,EASaiB,EAAiB,CAC5BC,EACAC,EACA3B,IACG,mDACH,MAAM4B,EAAsB,CAC1B,WAAYF,EAAO,aAAe1B,EAAa,KAAK,WACpD,YAAa0B,EAAO,cAAgB1B,EAAa,KAAK,YACtD,YAAa0B,EAAO,eAAiB1B,EAAa,KAAK,YACvD,WAAY0B,EAAO,aAAe1B,EAAa,KAAK,WACpD,MAAO0B,EAAO,OAAS1B,EAAa,KAAK,MACzC,mBACE0B,EAAO,uBAAyB1B,EAAa,KAAK,mBACpD,QAAS0B,EAAO,QACZ,CACE,aACEA,EAAO,QAAQ,eACf1B,EAAa,KAAK,QAAQ,aAC5B,YACE0B,EAAO,QAAQ,cACf1B,EAAa,KAAK,QAAQ,YAC5B,QAAS0B,EAAO,QAAQ,SAAW1B,EAAa,KAAK,QAAQ,QAC7D,UACE0B,EAAO,QAAQ,YAAc1B,EAAa,KAAK,QAAQ,UACzD,OAAQ0B,EAAO,QAAQ,QAAU1B,EAAa,KAAK,QAAQ,MAE7D,EAAA,OACJ,UAAW,CACT,iBACE6B,EAAAH,EAAO,aAAP,YAAAG,EAAmB,kBACnB7B,EAAa,KAAK,UAAU,eAC9B,QAAO8B,EAAAJ,EAAO,aAAP,YAAAI,EAAmB,QAAS9B,EAAa,KAAK,UAAU,MAC/D,QAAO+B,EAAAL,EAAO,aAAP,YAAAK,EAAmB,QAAS/B,EAAa,KAAK,UAAU,MAC/D,QAAOgC,EAAAN,EAAO,aAAP,YAAAM,EAAmB,QAAShC,EAAa,KAAK,UAAU,MAC/D,OAAMiC,EAAAP,EAAO,aAAP,YAAAO,EAAmB,OAAQjC,EAAa,KAAK,UAAU,KAC7D,QAAOkC,EAAAR,EAAO,aAAP,YAAAQ,EAAmB,QAASlC,EAAa,KAAK,UAAU,KACjE,EACA,YAAa0B,EAAO,cAAgB1B,EAAa,KAAK,YACtD,UAAW0B,EAAO,WAAa1B,EAAa,KAAK,UACjD,MAAO0B,EAAO,OAAS1B,EAAa,KAAK,MACzC,SAAU,CACR,OAAMmC,EAAAT,EAAO,WAAP,YAAAS,EAAiB,OAAQnC,EAAa,KAAK,SAAS,KAC1D,SAAQoC,EAAAV,EAAO,WAAP,YAAAU,EAAiB,SAAUpC,EAAa,KAAK,SAAS,OAC9D,UAAW,CACT,CAACgB,EAAgB,OAAO,IACtBqB,EAAAX,EAAO,WAAP,YAAAW,EAAiB,UAAWrB,EAAgB,SACxCsB,EAAAZ,EAAO,WAAP,YAAAY,EAAiB,WACjBtC,EAAa,KAAK,SAAS,UAAU,QAC3C,CAACgB,EAAgB,IAAI,IACnBuB,EAAAb,EAAO,WAAP,YAAAa,EAAiB,UAAWvB,EAAgB,MACxCwB,EAAAd,EAAO,WAAP,YAAAc,EAAiB,SACjBxC,EAAa,KAAK,SAAS,UAAU,KAC3C,CAACgB,EAAgB,MAAM,IACrByB,EAAAf,EAAO,WAAP,YAAAe,EAAiB,UAAWzB,EAAgB,QACxC0B,EAAAhB,EAAO,WAAP,YAAAgB,EAAiB,SACjB1C,EAAa,KAAK,SAAS,UAAU,MAAA,CAE/C,EACA,QAAS,CACP,iBACE2C,EAAAjB,EAAO,UAAP,YAAAiB,EAAgB,mBAChB3C,EAAa,KAAK,QAAQ,eAC5B,eACE4C,EAAAlB,EAAO,UAAP,YAAAkB,EAAgB,gBAAiB5C,EAAa,KAAK,QAAQ,aAC7D,iBACE6C,EAAAnB,EAAO,UAAP,YAAAmB,EAAgB,mBAChB7C,EAAa,KAAK,QAAQ,eAC5B,UAAS8C,EAAApB,EAAO,UAAP,YAAAoB,EAAgB,UAAW9C,EAAa,KAAK,QAAQ,QAC9D,gBACE+C,EAAArB,EAAO,UAAP,YAAAqB,EAAgB,kBAChB/C,EAAa,KAAK,QAAQ,cAC5B,cACEgD,EAAAtB,EAAO,UAAP,YAAAsB,EAAgB,eAAgBhD,EAAa,KAAK,QAAQ,WAC9D,EACA,sBAAuB2B,EAAM,KAAK,sBAClC,KAAMA,EAAM,KAAK,KACjB,OAAQA,EAAM,KAAK,OACnB,cAAeA,EAAM,KAAK,cAC1B,YAAa,CACX,aACEsB,EAAAvB,EAAO,cAAP,YAAAuB,EAAoB,eACpBjD,EAAa,KAAK,YAAY,WAChC,YACEkD,EAAAxB,EAAO,cAAP,YAAAwB,EAAoB,aACpBlD,EAAa,KAAK,YAAY,UAChC,QAAOmD,EAAAzB,EAAO,cAAP,YAAAyB,EAAoB,QAASnD,EAAa,KAAK,YAAY,KACpE,EACA,gBAAiB2B,EAAM,KAAK,gBAC5B,QAASD,EAAO,UAAY1B,EAAa,KAAK,OAChD,EAEI,OAAA0B,EAAO,cAAgB,IACbE,EAAA,sBAAwB5B,EAAa,KAAK,sBAC1C4B,EAAA,KAAO5B,EAAa,KAAK,MAGhC4B,CACT,ECzIawB,EAAuBlD,EAAY,CAC9C,GAAIC,EAAQ,cACZ,MAAO,KACE,CACL,QAAS,CAAC,EACV,yBAA0B,CAAA,CAC5B,GAEF,QAAS,CACP,4BACE,CAAC,CAAE,yBAAAkD,CAAyB,IAC3BC,GACQ,CAACD,EAAyBC,CAAS,GAAK,CAErD,EACA,QAAS,CACP,4BAA4BC,EAAwC,CAC9D,GAAAA,EAAK,QAAU,EAAG,CACb,OAAA,KAAK,yBAAyBA,EAAK,KAAK,EAC/C,MAAA,CAGF,KAAK,yBAAyBA,EAAK,KAAK,EAAIA,EAAK,KACnD,EAEA,uBAAwB,CACX,UAAAC,KAAM,KAAK,yBACb,OAAA,KAAK,yBAAyBA,CAAE,CAE3C,EAEA,MAAM,YAAYC,EAAgB,CAC1B,KAAA,CAAE,YAAAnD,CAAY,EAAIC,EAAW,EAC7BC,EAAS,MAAMF,EAAY,OAAO,YAAYmD,CAAM,EAE1D,GAAIjD,aAAkBC,EACpB,YAAK,UAAUD,EAAO,MAAQ,CAAA,CAAE,EAEzBA,CAEX,EAEA,UAAUkD,EAA6B,CACrC,KAAK,QAAUA,CAAA,CACjB,CAEJ,CAAC,EC1CK1D,EAA2B,CAC/B,KAAM,CAAC,EACP,UAAW,GACX,SAAU,GACV,MAAO,IACT,EAEa2D,EAAsBzD,EAAY,CAC7C,GAAIC,EAAQ,MACZ,MAAO,IAAkBH,EACzB,QAAS,CACP,MAAM,WAAY,CAChB,KAAK,UAAU,CAAE,UAAW,GAAM,SAAU,GAAO,EAE7C,KAAA,CAAE,YAAAM,CAAY,EAAIC,EAAW,EAC7BC,EAAS,MAAMF,EAAY,OAAO,UAAU,EAElD,GAAIE,aAAkBC,EAAS,CAC7B,KAAK,UAAU,CACb,UAAW,GACX,SAAU,GACV,GAAGD,EACH,MAAO,IAAA,CACR,EAED,MAAA,CAGF,KAAK,UAAU,CAAE,MAAOA,CAAA,CAAQ,CAClC,EAEA,UAAUoD,EAA2C,CAC5C,OAAA,OAAO,KAAK,OAAQA,CAAM,CAAA,CAErC,EACA,QAAS,CACP,aAAajC,EAAO,CACX,OAAAA,EAAM,KAAK,OAAQkC,GAAUA,EAAM7C,EAAgB,MAAM,CAAC,CACnE,EAEA,WAAWW,EAAO,CACT,OAAAA,EAAM,KAAK,OAAQkC,GAAUA,EAAM7C,EAAgB,IAAI,CAAC,CAAA,CACjE,CAEJ,CAAC,EChDY8C,EAA8BC,GAAmC,CAC5E,KAAM,CAAE,OAAAC,EAAQ,SAAAC,EAAU,MAAAC,EAAO,UAAAC,EAAW,KAAAC,GAASL,EAErD,IAAIvD,EAAS,GAGb,MAAM6D,EAAgBJ,EAAWA,EAAS,kBAAsB,EAAA,KAGpDI,GAAkBA,IAAkBL,EAAO,kBAAkB,IACvExD,EAAS,GAAGyD,CAAQ,IAGlBzD,IAAkBA,GAAA,MAKZA,GAAA,GAHqBwD,CAGI,OAAOE,CAAK,GAG/C,MAAMI,EAAUH,GAAaC,EAE7B,OAAIE,IAAS9D,EAAS,GAAGA,CAAM,QAAQ8D,CAAO,IAEvC9D,CACT,ECLMR,EAA4B,CAChC,SAAU,GACV,UAAW,GACX,MAAO,KACP,KAAM,CACJ,WAAY,EACZ,YAAa,EACb,YAAa,EACb,WAAY,EACZ,MAAO,CAAC,EACR,UAAW,CAAC,EACZ,mBAAoB,EACpB,QAAS,CACP,aAAc,GACd,YAAa,GACb,UAAW,EACX,QAAS,GACT,OAAQ,CACV,EACA,UAAW,CACT,eAAgB,EAChB,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,KAAM,IACR,EACA,QAAS,CACP,cAAe,EACf,eAAgB,EAChB,eAAgB,EAChB,YAAa,EACb,aAAc,GACd,QAAS,EACX,EACA,SAAU,CACR,KAAM,KACN,OAAQgB,EAAgB,QACxB,UAAW,CACT,CAACA,EAAgB,OAAO,EAAG,KAC3B,CAACA,EAAgB,IAAI,EAAG,KACxB,CAACA,EAAgB,MAAM,EAAG,IAAA,CAE9B,EACA,MAAO,CAAC,EACR,sBAAuB,KACvB,KAAM,GACN,OAAQ,EACR,QAAS,GACT,YAAa,CACX,WAAY,EACZ,UAAW,GACX,MAAO,CAAA,CACT,EACA,YAAa,CAAC,EACd,gBAAiB,EAAA,CAErB,EAEauD,GAAiBrE,EAAY,CACxC,GAAIC,EAAQ,OACZ,MAAO,IAAmBH,EAC1B,QAAS,CACP,MAAM,aAAc,CACZ,KAAA,CAAE,YAAAM,CAAY,EAAIC,EAAW,EAC7B,CAAE,SAAAiE,CAAS,EAAIC,EAAU,EAC/B,KAAK,UAAY,GAEjB,MAAMjE,EAAS,MAAMF,EAAY,OAAO,YAAY,KAAK,OAAQkE,CAAQ,EAEzE,GAAIhE,aAAkBC,EAAS,CAC7B,KAAK,UAAY,GACjB,KAAK,SAAW,GAEhB,KAAK,KAAOD,EAAO,KAEnB,MAAA,CAGF,KAAK,UAAY,GACjB,KAAK,SAAW,GAEhB,KAAK,MAAQA,CACf,EAEA,MAAM,WAAW8C,EAAmB,CAC9B,GAAA,CACI,KAAA,CAAE,YAAAhD,CAAY,EAAIC,EAAW,EAC7B,CAAE,SAAAiE,CAAS,EAAIC,EAAU,EACzBjE,EAAS,MAAMF,EAAY,OAAO,WACtC,CACE,WAAYgD,EACZ,SAAU,CACZ,EACA,CACE,QAAS,CACP,oBAAqBkB,EAAW,kBAAoB,UAAA,CACtD,CAEJ,EAEA,GAAIhE,aAAkBC,EAAS,CAC7B,MAAM8C,EAAO/C,EAAO,KAEpB,GAAI,CAAC+C,EACH,OAGF,KAAK,UAAU,CACb,SAAU,GACV,UAAW,GACX,KAAM9B,EAAe8B,EAAM,KAAK,OAAQvD,CAAY,EACpD,MAAO,IAAA,CACR,CAAA,QAEI0E,EAAO,CACd,KAAK,UAAU,CACb,MAAAA,CAAA,CACD,CAAA,CAEL,EAEA,MAAM,WAAWC,EAAmD,CAC5D,KAAA,CAAE,YAAArE,CAAY,EAAIC,EAAW,EAC7B,CAAE,SAAAiE,CAAS,EAAIC,EAAU,EACzBjE,EAAS,MAAMF,EAAY,OAAO,WACtC,KAAK,OACLqE,EACAH,CACF,EAEA,GAAIhE,aAAkBC,EAAS,CAC7B,KAAK,UAAU,CACb,UAAW,GACX,SAAU,GAEV,KAAMD,EAAO,KACb,MAAO,IAAA,CACR,EAED,MAAA,CAGF,GAAIA,aAAkBoE,EAA0B,CAE9C,KAAK,UAAU,CACb,UAAW,GACX,SAAU,GACV,MAAOpE,EAAO,IAAA,CACf,EAED,MAAA,CAGF,KAAK,UAAU,CAEb,MAAOA,CAAA,CACR,CACH,EAEA,MAAM,aAAc,CACZ,KAAA,CAAE,YAAAF,CAAY,EAAIC,EAAW,EAC7B,CAAE,SAAAiE,CAAS,EAAIC,EAAU,EACzBI,EAAoBzB,EAAqB,EAEzC5C,EAAS,MAAMF,EAAY,OAAO,MAAM,KAAK,OAAQkE,CAAQ,EAEnE,GAAIhE,aAAkBC,EAAS,CAC7B,KAAK,UAAU,CACb,SAAU,GACV,KAAMD,GAAA,YAAAA,EAAQ,KACd,MAAO,IAAA,CACR,EAEDqE,EAAkB,sBAAsB,EAExC,MAAA,CAGF,KAAK,UAAU,CACb,MAAOrE,CAAA,CACR,CACH,EAEA,MAAM,eAAgB,OACd,MAAAsE,EAAiBnF,EAAe,KAAK,KAAK,qBAAqB,EACjEoF,EAAkB,oBAClBlD,EAAA,KAAK,KAAK,wBAAV,YAAAA,EAAiC,KAE/BmD,EAMF,CACF,kBAAmB,KAAK,KAAK,QAAQ,OACrC,eAAAF,EACA,MAAO,KAAK,KAAK,KACjB,OAAQ,KAAK,KAAK,OAClB,oBAAqB,KAAK,KAAK,eACjC,EAEI,KAAK,KAAK,QAAQ,YAAc,GAClC,OAAOE,EAAS,kBAGZ,KAAA,CAAE,YAAA1E,CAAY,EAAIC,EAAW,EAC7B,CAAE,SAAAiE,CAAS,EAAIC,EAAU,EACzBI,EAAoBzB,EAAqB,EACzC5C,EAAS,MAAMF,EAAY,OAAO,cAAc0E,EAAUR,CAAQ,EAExE,GAAIhE,aAAkBC,EACpB,OAAAoE,EAAkB,sBAAsB,EAEjCrE,EAAO,KAGhB,GAAIA,aAAkBoE,EAEpB,YAAK,UAAU,CAAE,MAAOpE,CAAA,CAAQ,EACzBA,EAGT,KAAK,UAAU,CAAE,MAAOA,CAAA,CAAQ,CAClC,EAEA,UAAUkB,EAA8B,CAC/B,OAAA,OAAO,KAAK,OAAQA,CAAM,CACnC,EAEA,MAAM,gBAAiB,CACf,KAAA,CAAE,YAAApB,CAAY,EAAIC,EAAW,EAC7B,CAAE,SAAAiE,CAAS,EAAIC,EAAU,EAEzBjE,EAAS,MAAMF,EAAY,OAAO,eACtC,KAAK,OACLkE,CACF,EAEA,GAAIhE,aAAkBC,EACpB,YAAK,UAAU,CACb,SAAU,GACV,KAAMD,EAAO,KACb,MAAO,IAAA,CACR,EAEMA,EAGT,KAAK,UAAU,CACb,MAAOA,CAAA,CACR,CACH,EAEA,MAAM,eAAeG,EAAgC,CAC7C,KAAA,CAAE,YAAAL,CAAY,EAAIC,EAAW,EAC7B,CAAE,SAAAiE,CAAS,EAAIC,EAAU,EAEzBjE,EAAS,MAAMF,EAAY,OAAO,eACtC,KAAK,OACLK,EACA6D,CACF,EAEA,OAAIhE,aAAkBC,GACpB,KAAK,UAAU,CACb,SAAU,GACV,KAAMD,EAAO,KACb,MAAO,IAAA,CACR,EAEMA,CAIX,EACA,MAAM,QAAQyE,EAAmB,CAC/B,GAAI,CAACA,EAAM,OAEL,KAAA,CAAE,YAAA3E,CAAY,EAAIC,EAAW,EAE7BC,EAAS,MAAMF,EAAY,OAAO,QAAQ,KAAK,OAAQ2E,CAAI,EAEjE,OAAIzE,aAAkBC,GACpB,KAAK,UAAU,CACb,KAAMD,EAAO,IAAA,CACd,EAGIA,CACT,EACA,MAAM,WAAWyE,EAAyB,CACxC,GAAI,CAACA,EAAM,OAEL,KAAA,CAAE,YAAA3E,CAAY,EAAIC,EAAW,EAE7BC,EAAS,MAAMF,EAAY,OAAO,WAAW,KAAK,OAAQ2E,CAAI,EAEpE,OAAIzE,aAAkBC,GACpB,KAAK,UAAU,CACb,KAAMD,EAAO,IAAA,CACd,EAGIA,CACT,EACA,MAAM,QAAQ0E,EAA4D,CAClE,KAAA,CAAE,YAAA5E,CAAY,EAAIC,EAAW,EAC7B,CAAE,SAAAiE,CAAS,EAAIC,EAAU,EAEzBjE,EAAS,MAAMF,EAAY,OAAO,QACtC,KAAK,OACL4E,EACAV,CACF,EAEIhE,aAAkBC,GACpB,KAAK,UAAU,CACb,SAAU,GACV,KAAMD,GAAA,YAAAA,EAAQ,KACd,MAAO,IAAA,CACR,CAEL,EAEA,iBAAkB,CAChB,KAAK,UAAU,CACb,KAAMR,EAAa,KACnB,MAAOA,EAAa,MACpB,UAAWA,EAAa,SAAA,CACzB,CACH,EAEA,yBAAyBmF,EAAqC,CAC5D,KAAK,KAAK,sBAAwBA,CACpC,EAEA,UAAUC,EAAgB,CACxB,KAAK,KAAK,OAASA,CACrB,EAEA,MAAM,aAAazE,EAA0C,CACrD,KAAA,CAAE,YAAAL,CAAY,EAAIC,EAAW,EAC7B,CAAE,SAAAiE,CAAS,EAAIC,EAAU,EACzBjE,EAAS,MAAMF,EAAY,OAAO,aACtC,KAAK,OACLK,EACA6D,CACF,EAEA,OAAIhE,aAAkBC,GACpB,KAAK,UAAU,CACb,SAAU,GACV,KAAMD,EAAO,KACb,MAAO,IAAA,CACR,EAEMA,IAIP,EAAEA,aAAkBC,IACpB,EAAED,aAAkBoE,KAEf,KAAA,KAAK,QAAQ,aAAe,+BAG5BpE,EACT,EACA,QAAQ6E,EAAc,CACpB,KAAK,KAAK,KAAOA,CACnB,EAEA,yBAAyBC,EAAiC,CACnD,KAAA,KAAK,SAAS,OAASA,CAC9B,EAEA,MAAM,kBAAkB3E,EAAuC,CACvD,KAAA,CAAE,YAAAL,CAAY,EAAIC,EAAW,EAC7B,CAAE,SAAAiE,CAAS,EAAIC,EAAU,EACzBjE,EAAS,MAAMF,EAAY,OAAO,kBACtC,KAAK,OACLK,EACA6D,CACF,EAEA,GAAIhE,aAAkBC,EAAS,CAE7B,KAAK,UAAU,CACb,SAAU,GACV,GAAGD,EACH,MAAO,IAAA,CACR,EAED,MAAA,CAIF,KAAK,UAAU,CAAE,MAAOA,CAAA,CAAQ,CAClC,EAEA,WAAW,CAAE,KAAA+E,EAAM,GAAA/B,GAA6C,CAC9D,KAAK,KAAK,SAAS,UAAU+B,CAAI,EAAI/B,CACvC,EAEA,MAAM,mBAAmBgC,EAAqC,CACtD,KAAA,CAAE,YAAAlF,CAAY,EAAIC,EAAW,EAC7B,CAAE,SAAAiE,CAAS,EAAIC,EAAU,EAEzBjE,EAAS,MAAMF,EAAY,OAAO,mBACtC,KAAK,OACLkF,EACAhB,CACF,EAEA,GAAIhE,aAAkBC,EAAS,CAE7B,KAAK,UAAU,CACb,SAAU,GACV,GAAGD,EACH,MAAO,IAAA,CACR,EAED,MAAA,CAIF,KAAK,UAAU,CAAE,MAAOA,CAAA,CAAQ,CAClC,EAEA,MAAM,eAAeiF,EAGlB,CACK,KAAA,CAAE,YAAAnF,CAAY,EAAIC,EAAW,EAC7B,CAAE,SAAAiE,CAAS,EAAIC,EAAU,EAEzBjE,EAAS,MAAMF,EAAY,OAAO,eACtC,KAAK,OACLmF,EACAjB,CACF,EAEIhE,aAAkBC,GAEpB,KAAK,UAAU,CACb,SAAU,GACV,GAAGD,CAAA,CACJ,CAEL,EAEA,mBAAmBkF,EAA0B,CAC3C,KAAK,KAAK,gBAAkBA,CAAA,CAEhC,EACA,QAAS,CACP,gBAAkB/D,GAAU,SAC1B,MAAMgE,EAAiB1F,EAAkB,EACnC2F,EAAajC,EAAoB,EAE/B,OAAAhC,EAAM,KAAK,SAAS,OAAQ,CAClC,KAAKX,EAAgB,QAAS,CAC5B,MAAM6E,EACJlE,EAAM,KAAK,SAAS,UAAUX,EAAgB,OAAO,EAEjD8E,EAAkBH,EAAe,UAAU,KAAK,KACnD5B,GAAYA,EAAQ,KAAO8B,CAC9B,EAEI,OAACC,EAEEhC,EAA2BgC,CAAe,EAFpB,EAEoB,CAEnD,KAAK9E,EAAgB,KAAM,CACzB,MAAM+E,EACJpE,EAAM,KAAK,SAAS,UAAUX,EAAgB,IAAI,EAE7C,OAAAa,EAAA+D,EAAW,KAAK,KAAM/B,GAAUA,EAAM,KAAOkC,CAAe,IAA5D,YAAAlE,EACH,OAAA,CAEN,KAAKb,EAAgB,OAAQ,CAC3B,MAAM+E,EACJpE,EAAM,KAAK,SAAS,UAAUX,EAAgB,MAAM,EAE/C,OAAAc,EAAA8D,EAAW,KAAK,KAAM/B,GAAUA,EAAM,KAAOkC,CAAe,IAA5D,YAAAjE,EACH,OAAA,CAEN,QACS,MAAA,CAEb,EACA,cAAe,CAAC,CAAE,KAAAyB,EAAM,MAAAmB,KAAY,WAEhC,OAAAnB,EAAK,aAAe,KACpBxB,GAAAD,GAAAD,EAAA6C,GAAA,YAAAA,EAAO,WAAP,YAAA7C,EAAiB,OAAjB,YAAAC,EAAuB,SAAvB,YAAAC,EAA+B,SAAS,iBAE5C,EACA,iBAAkB,CAAC,CAAE,MAAA2C,CACnB,IAAA,WAAA,OAAAA,aAAiBsB,KACjBjE,GAAAD,GAAAD,EAAA6C,GAAA,YAAAA,EAAO,WAAP,YAAA7C,EAAiB,OAAjB,YAAAC,EAAuB,SAAvB,YAAAC,EAA+B,SAAS,iCAC1C,kBACE,CAAC,CAAE,KAAAwB,CAAK,IACPD,GACQC,EAAK,MAAM,KAAMoB,GAAYA,EAAQ,aAAerB,CAAS,EAExE,iBAAkB,CAAC,CAAE,KAAAC,KAAW,CAC9B,IAAI0C,EAAM,EAEN,OAAC1C,EAAK,aAEVA,EAAK,YAAY,QAAS2C,GAAUD,EAAMA,EAAMC,EAAK,cAAe,EAE7DD,GAJuB,CAKhC,EACA,cAAgBtE,GACdA,EAAM,KAAK,MAAM,OAAQsD,GAASA,EAAK,OAASkB,EAAU,MAAM,EAClE,cAAgBxE,GAAkB,CAC1B,MAAAyE,EAAgBzE,EAAM,KAAK,MAAM,OACpCsD,GAASA,EAAK,aACjB,EAEA,MAAI,CAACmB,GAAiBA,EAAc,SAAW,EAAU,CAAC,EAInD,CAFoBA,EAAc,MAAM,CAErB,CAC5B,EACA,gBAAkBzE,GAAmC,CAGnD,MAAM0E,EAAwB1E,EAAM,cAEhC,GAAA0E,EAAc,SAAW,EAAG,OAE1B,MAAAC,EAAgBD,EAAc,GAAG,CAAC,EAEpC,GAAA,EAACC,GAAA,MAAAA,EAAe,SAAS,OAEvB,MAAAC,EAAkBD,GAAA,YAAAA,EAAe,SAAS,KAC9C,CAAC,CAAE,SAAAE,CAAA,IAAeA,GAGpB,GAAKD,EAEE,MAAA,CACL,QAASD,EAAc,QACvB,WAAYC,EAAgB,UAC9B,CACF,EACA,qBAAuB5E,GACjBA,EAAM,KAAK,cAAgB,OAAkB,EAE1CA,EAAM,KAAK,UAAU,OAC1B,CAAC8E,EAAaC,IACXD,EAAcA,EAAcC,EAAS,eACxC,CACF,EAGF,iBAAmB/E,GAAU,OAAA,OAAAE,EAAAF,EAAM,KAAK,YAAX,YAAAE,EAAsB,OAEnD,sBAAwBF,GACtB,OAAO,OAAOA,EAAM,KAAK,SAAS,SAAS,EAAE,KAAMoC,GAAYA,CAAO,EACxE,sBAAwBpC,GACf,CAAC,CAACA,EAAM,KAAK,QAAQ,cAE9B,iBAAmBA,GAAUA,EAAM,KAAK,QAAQ,gBAAkB,EAClE,6BAA+BA,GAAU,CACvC,MAAMgF,EAAU,CACd,QAAS,iBACT,OAAQ,YACR,KAAM,aACR,EAEI,OAAAhF,EAAM,KAAK,SAAS,OACfgF,EAAQhF,EAAM,KAAK,SAAS,MAAM,EAGpC,EACT,EACA,eAAiBA,GACf,OAAA,OAAAE,EAAAF,EAAM,KAAK,YAAX,YAAAE,EAAsB,OACpB,CAAC+E,EAAKF,IACJA,EAAS,iBAAmB,EAAIE,EAAM,CAAC,GAAGA,EAAKF,CAAQ,EACzD,CAAA,IAEJ,4BAA8B/E,GAAU,CACtC,KAAM,CAAE,sBAAAkF,EAAuB,SAAAC,CAAS,EAAInF,EAAM,KAG9C,OAACkF,EAGDlH,EAAekH,CAAqB,EAC/B,iBAAiBhH,EACtBgH,GAAA,YAAAA,EAAuB,YACvB,CAAA,CACD,GAIDC,EAAS,SAAW9F,EAAgB,SACpC6F,EAAsB,OAAS9B,EAAkB,KAE1C,iBAEO,CACd,KAAM,WACN,KAAM,qBACN,SAAU,SACV,eAAgB,SAChB,cAAe,SACf,aAAc,kBAChB,EAEe8B,EAAsB,IAAI,EAzBN,YA0BrC,EACA,uBAAyBlF,GAAU,CAC3B,KAAA,CAAE,sBAAAkF,GAA0BlF,EAAM,KAExC,MAAO,CAAC,CAACkF,GAAyBlH,EAAekH,CAAqB,CACxE,EAEA,cAAe,CAAC,CAAE,KAAAtD,KAAWA,EAAK,QAGlC,uBAAyB5B,GAAU,CACjC,MAAMnB,EAAiC,CAAC,EAE7B,UAAAmE,KAAWhD,EAAM,KAAK,MACxBnB,EAAAmE,EAAQ,UAAU,EAAIA,EAAQ,SAGhC,OAAAnE,CAAA,CAEX,EAEA,QAAS,CACP,QAASuG,EAAe,aACxB,MAAO,CAAC,WAAW,CAAA,CAEvB,CAAC","debug_id":"0f232119-ade4-5b58-8aa5-1d356e5ca1ad"}