{"version":3,"sources":["webpack:///../jarvis/app/assets/javascripts/site/VControllers/components/Checkout/store.ts","webpack:///../jarvis/app/assets/javascripts/site/VControllers/components/Checkout/factories/PromoCodeFactory.ts","webpack:///../jarvis/app/assets/javascripts/site/VControllers/components/Checkout/services/TotalPriceCalculator.ts","webpack:///../jarvis/app/assets/javascripts/site/VControllers/components/Checkout/context.ts","webpack:///../jarvis/app/assets/javascripts/site/VControllers/components/Checkout/commits/productsSet.ts","webpack:///../jarvis/app/assets/javascripts/site/VControllers/components/Checkout/commits/steps.ts"],"names":["COMMIT_EVENT_MAP","Map","COMMIT_CHANGE_ITEM_QUANTITY","_ref","state","_ref2","_slicedToArray","productId","quantity","modal","documentDispatch","concat","type","dispatchEvent","payload","COMMIT_REMOVE_ITEM","_ref3","COMMIT_ADD_ITEM","_ref5","_ref6","item","fromTarget","dispatchCustomEvent","COMMIT_BULK_REMOVE","_ref7","forEach","COMMIT_BULK_ADD_PRODUCTS_SET_ITEMS","_ref9","_ref10","items","COMMIT_BULK_REMOVE_PRODUCTS_SET_ITEMS","_ref11","productsSetId","COMMIT_SET_STEP","_ref13","Step","Cart","Checkout","ThankYou","Env","version","document","body","scrollTo","onChangeState","initialState","loading","deliveryChanging","formAddressMd5","buildMd5","formFields","isReachedLimitWarningOpened","notices","store","Store","props","callbacks","CALLBACK_AFTER_COMMIT","on","catchCommitEvent","commitFn","args","handleFunc","get","eventName","detail","DEFAULT_PAYLOAD","name","discount","fixed","PromoCodeFactory","arguments","length","undefined","_classCallCheck","Object","assign","this","key","truncateString","humanDiscount","formatPrice","MSK_OBL_REGION_ID","MSK_REGION_ID","TotalPriceCalculator","deliveryState","totalPriceState","promoCode","promoCodeInstance","selectedItems","filter","selected","buildDeliveries","productsSetsGroup","buildProductsSetsGroup","productsSets","keys","map","id","_objectSpread","Number","value","deliveries","find","fixPrice","minFreePrice","requested","baseDelivery","availableDeliveries","nextFreeDelivery","getNextFreeDelivery","currentDelivery","getCurrentDelivery","_this","reduce","acc","currentSet","buildEmptySet","push","oldPriceSum","oldPrice","currentPriceSum","price","discountPriceSum","_a","sum","_ref4","services","Boolean","isFreeDelivery","abTesting","splitDeliveryByDatesTest","includes","regionId","some","availability","_nextFreeDelivery$min","totalPriceWithoutDelivery","_this$currentDelivery","title","DeliveryMessageType","Undefined","deliveryInternalType","RecoverableError","showDeliveryPrice","Defined","isPossibleFreeDelivery","lackDeliveryPrice","Free","delivery","sort","_ref8","_ref8$minFreePrice","price1","_ref9$minFreePrice","buildCalculator","promocode","totalPriceInfo","totalCalculator","subscribers","loadCartDataPromise","handleChangeState","refreshStore","init","statelessSubscribe","context","currentState","onUpdate","_asyncToGenerator","_regeneratorRuntime","mark","_callee","initState","wrap","_context","prev","next","commit","abrupt","sent","stop","_x","apply","_callee2","newState","_context2","t0","loadCartData","then","res","_b","data","Error","createStore","_x2","uuid","uuidV4","subscribe","_callee3","_context3","_x3","_x4","unsubscribe","removedUuid","getContext","newItems","COMMIT_REFRESH_CHECKOUT","_toConsumableArray","step"],"mappings":"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","file":"chunk.47.69ca43a545762aba80e5.2409dfd5.js","sourcesContent":["import Store from 'core/services/Store';\nimport { COMMIT_CHANGE_ITEM_QUANTITY, COMMIT_REMOVE_ITEM, COMMIT_ADD_ITEM, COMMIT_BULK_REMOVE } from './commits/cartItems';\nimport { COMMIT_BULK_ADD_PRODUCTS_SET_ITEMS, COMMIT_BULK_REMOVE_PRODUCTS_SET_ITEMS } from './commits/productsSet';\nimport { documentDispatch, dispatchCustomEvent } from 'core/utils/events';\nimport { buildMd5 } from './factories/AddressFactory';\nimport { COMMIT_SET_STEP } from './commits/steps';\nimport { Step } from './constants';\nconst COMMIT_EVENT_MAP = new Map([\n [\n COMMIT_CHANGE_ITEM_QUANTITY,\n function ([productId, quantity, _, modal], state) {\n if (modal) {\n documentDispatch(`show${modal.type}Modal`, { modal });\n }\n dispatchEvent('changeItemQuantity', { payload: { productId, quantity }, state });\n }\n ],\n [\n COMMIT_REMOVE_ITEM,\n function ([productId], state) {\n dispatchEvent('removeItem', { payload: { productId }, state });\n }\n ],\n [\n COMMIT_ADD_ITEM,\n function ([item, _, fromTarget, modal], state) {\n if (modal) {\n documentDispatch(`show${modal.type}Modal`, { modal });\n }\n if (fromTarget) {\n dispatchCustomEvent(fromTarget, 'c-Checkout:addItemFromRecent', { item });\n return;\n }\n dispatchEvent('addItemFromRecent', { payload: { item }, state });\n }\n ],\n [\n COMMIT_BULK_REMOVE,\n function ([productIds], state) {\n productIds.forEach(productId => dispatchEvent('removeItem', { payload: { productId }, state }));\n }\n ],\n [\n COMMIT_BULK_ADD_PRODUCTS_SET_ITEMS,\n function ([items, _, fromTarget], state) {\n if (fromTarget) {\n dispatchCustomEvent(fromTarget, 'c-Checkout:addProductsSet', { payload: { items } });\n return;\n }\n dispatchEvent('addProductsSet', { payload: { items }, state });\n }\n ],\n [\n COMMIT_BULK_REMOVE_PRODUCTS_SET_ITEMS,\n function ([productsSetId], state) {\n dispatchEvent('removeProductsSet', { payload: { productsSetId }, state });\n }\n ],\n [\n COMMIT_SET_STEP,\n function ([step], state) {\n switch (step) {\n case Step.Cart:\n dispatchEvent('cartView', { payload: {}, state });\n break;\n case Step.Checkout:\n dispatchEvent('checkout', { payload: {}, state });\n break;\n case Step.ThankYou:\n if (Env.version === 'mobile')\n document.body.scrollTo(0, 0);\n break;\n }\n }\n ]\n]);\nexport default function (onChangeState, initialState) {\n initialState.loading = false;\n initialState.deliveryChanging = false;\n initialState.formAddressMd5 = buildMd5(initialState.formFields);\n initialState.isReachedLimitWarningOpened = false;\n initialState.notices = {};\n const store = Store({\n props: { initialState },\n callbacks: {\n CALLBACK_AFTER_COMMIT: onChangeState\n }\n });\n store.on('beforeCommit', catchCommitEvent);\n return store;\n}\nfunction catchCommitEvent(state, commitFn, args) {\n const handleFunc = COMMIT_EVENT_MAP.get(commitFn);\n if (handleFunc)\n handleFunc(args, state);\n}\nfunction dispatchEvent(eventName, detail) {\n documentDispatch(`c-Checkout:${eventName}`, detail);\n}\n","import { formatPrice, truncateString } from '../services/humanize';\nconst DEFAULT_PAYLOAD = {\n name: '',\n discount: 0,\n fixed: false,\n items: {}\n};\nexport class PromoCodeFactory {\n constructor(payload = DEFAULT_PAYLOAD) {\n Object.assign(this, payload);\n }\n get isPersisted() {\n return !!this.name;\n }\n get displayName() {\n const name = truncateString(this.name, this.fixed ? 10 : 5);\n return this.fixed ? name : name + ` - ${this.humanDiscount}`;\n }\n get humanDiscount() {\n if (this.fixed)\n return formatPrice(this.discount);\n return `${this.discount} %`;\n }\n}\n","import { DeliveryMessageType } from '../constants';\nimport { PromoCodeFactory } from '../factories/PromoCodeFactory';\nconst MSK_OBL_REGION_ID = '5000000000000';\nconst MSK_REGION_ID = '7700000000000';\nexport class TotalPriceCalculator {\n constructor(items, deliveryState, totalPriceState, promoCode) {\n this.deliveryState = deliveryState;\n this.promoCodeInstance = new PromoCodeFactory(promoCode || undefined);\n this.selectedItems = items.filter(({ selected }) => selected);\n Object.assign(this, totalPriceState);\n this.buildDeliveries();\n const productsSetsGroup = this.buildProductsSetsGroup(items);\n this.productsSets = Object.keys(productsSetsGroup).map(id => ({ ...productsSetsGroup[id], id: Number(id) }));\n }\n get isFreeDelivery() {\n var _a;\n return !!((_a = this.nextFreeDelivery) === null || _a === void 0 ? void 0 : _a.minFreePrice);\n }\n get isAnySelected() {\n return this.selectedItems.length > 0;\n }\n get totalAmount() {\n return this.selectedItems.reduce((sum, { quantity }) => sum + quantity, 0);\n }\n get baseDelivery() {\n const delivery = this.deliveryState.services.find(item => item.default);\n return delivery;\n }\n get isPossibleFreeDelivery() {\n var _a;\n return Boolean(this.isFreeDelivery || ((_a = this.currentDelivery) === null || _a === void 0 ? void 0 : _a.minFreePrice));\n }\n get isAvailableSplitDeliveryByDates() {\n var _a;\n if (!((_a = Env.abTesting) === null || _a === void 0 ? void 0 : _a.splitDeliveryByDatesTest))\n return false;\n if (this.selectedItems.length < 2)\n return false;\n if (this.isFreeDelivery)\n return false;\n //if (this.deliveryPrice == 0) return false\n if (![MSK_OBL_REGION_ID, MSK_REGION_ID].includes(this.deliveryState.regionId))\n return false;\n return this.selectedItems.some(({ availability }) => availability === 'ready_to_ship') &&\n this.selectedItems.some(({ availability }) => availability === 'preorder');\n }\n get lackDeliveryPrice() {\n const nextFreeDelivery = this.nextFreeDelivery;\n if (!nextFreeDelivery)\n return;\n const { minFreePrice = 0 } = nextFreeDelivery;\n return minFreePrice - this.totalPriceWithoutDelivery;\n }\n get deliveryGoalTitle() {\n const { nextFreeDelivery, currentDelivery = { title: '' } } = this;\n return nextFreeDelivery ? nextFreeDelivery.title : currentDelivery.title;\n }\n get deliveryMessageType() {\n let type = DeliveryMessageType.Undefined;\n if (this.deliveryInternalType === DeliveryMessageType.RecoverableError)\n type = DeliveryMessageType.RecoverableError;\n if (this.showDeliveryPrice)\n type = DeliveryMessageType.Defined;\n if (this.isPossibleFreeDelivery && !this.lackDeliveryPrice)\n type = DeliveryMessageType.Free;\n return type;\n }\n get availableDeliveries() {\n const { services } = this.deliveryState;\n return services\n .filter(({ delivery }) => delivery)\n .sort(({ minFreePrice: price1 = 0 }, { minFreePrice: price2 = 0 }) => price1 - price2);\n }\n getNextFreeDelivery(deliveries) {\n return deliveries.find(({ fixPrice, minFreePrice }) => fixPrice !== 0 && minFreePrice && minFreePrice !== 0);\n }\n getCurrentDelivery(deliveries) {\n return deliveries.find(({ requested }) => requested) || this.baseDelivery;\n }\n buildDeliveries() {\n const deliveries = this.availableDeliveries;\n this.nextFreeDelivery = this.getNextFreeDelivery(deliveries);\n this.currentDelivery = this.getCurrentDelivery(deliveries);\n }\n buildProductsSetsGroup(items) {\n return items.reduce((acc, item) => {\n if (!item.productsSetId)\n return acc;\n const currentSet = acc[item.productsSetId] || this.buildEmptySet();\n currentSet.items.push(item);\n currentSet.oldPriceSum += item.oldPrice;\n currentSet.currentPriceSum += item.price;\n currentSet.discountPriceSum = currentSet.oldPriceSum - currentSet.currentPriceSum;\n acc[item.productsSetId] = currentSet;\n return acc;\n }, {});\n }\n buildEmptySet() {\n return {\n items: [],\n oldPriceSum: 0,\n currentPriceSum: 0,\n discountPriceSum: 0\n };\n }\n}\n","import { uuidV4 } from 'core/utils/uuid';\nimport createStore from './store';\nimport { loadCartData } from './api/checkout';\nimport { TotalPriceCalculator } from './services/TotalPriceCalculator';\nexport function buildCalculator(state) {\n const { items, promocode, delivery, totalPriceInfo } = state;\n return new TotalPriceCalculator(items, delivery, totalPriceInfo, promocode);\n}\nconst context = (function () {\n let store;\n let totalCalculator;\n let subscribers = [];\n let loadCartDataPromise = null;\n const handleLoadCartData = () => {\n if (!loadCartDataPromise)\n loadCartDataPromise = loadCartData();\n return loadCartDataPromise.then((res) => {\n var _a, _b;\n return (_b = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.state) !== null && _b !== void 0 ? _b : null;\n });\n };\n const handleChangeState = (currentState) => {\n totalCalculator = buildCalculator(currentState);\n subscribers.forEach(({ onUpdate }) => { onUpdate(currentState); });\n };\n const refreshStore = async (initState) => {\n if (store) {\n if (initState)\n return await store.commit(() => initState);\n return;\n }\n await init(initState);\n };\n const init = async (initState) => {\n if (store)\n return;\n const newState = initState !== null && initState !== void 0 ? initState : await handleLoadCartData();\n if (!newState)\n throw new Error('Can\\'t get cart state');\n store = createStore(handleChangeState, newState);\n totalCalculator = buildCalculator(newState);\n };\n const unsubscribe = (removedUuid) => {\n subscribers = subscribers.filter(({ uuid }) => uuid !== removedUuid);\n };\n const statelessSubscribe = (onUpdate) => {\n const uuid = uuidV4();\n subscribers.push({ uuid, onUpdate });\n return uuid;\n };\n const subscribe = async (onUpdate, initState) => {\n await refreshStore(initState);\n return statelessSubscribe(onUpdate);\n };\n return { subscribe, unsubscribe, statelessSubscribe, getContext: () => ({ store, totalCalculator }), init };\n})();\nexport default context;\n","import { COMMIT_REFRESH_CHECKOUT } from './refreshCheckout';\nexport function COMMIT_BULK_ADD_PRODUCTS_SET_ITEMS(state, newItems, data) {\n return {\n ...COMMIT_REFRESH_CHECKOUT(state, data),\n items: [\n ...state.items,\n ...newItems\n ],\n loading: false\n };\n}\nexport function COMMIT_BULK_REMOVE_PRODUCTS_SET_ITEMS(state, productsSetId, data) {\n return { ...COMMIT_REFRESH_CHECKOUT(state, data),\n items: state.items.filter(item => item.productsSetId !== productsSetId),\n loading: false\n };\n}\n","export function COMMIT_SET_STEP(state, step) {\n return { ...state, step };\n}\n"],"sourceRoot":""}