{"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.b152225892ab28e2682d.1fe10d4d.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":""}