{"version":3,"sources":["webpack:///../jarvis/app/assets/javascripts/site/VControllers/Installments/App.tsx","webpack:///../jarvis/app/assets/javascripts/site/VControllers/Installments/utils/humanize.ts"],"names":["Modal","asyncComponent","App","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","apply","arguments","state","isModalOpen","loading","installmentChanged","selectedQuantity","cartTotalPrice","paymentMethod","invalidInstallment","handleLoading","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_yield$import","checkoutContext","wrap","_context","prev","next","sent","init","props","data","subscribe","handleUpdate","checkoutContextUuid","setState","currentPaymentMethod","stop","productInCart","getProductInCart","select","document","getElementById","addEventListener","handleSelectQuantityChange","value","quantity","toString","setTimeout","checkPaymentMethod","_callee2","validData","cartPaymentMethod","_context2","isOpenedCartForm","abrupt","notifyChangedInstallment","length","includes","resetPaymentMethod","find","installmentData","installment","inst","NoticeService","clear","type","bankProduct","info","concat","name","chosenInstallment","getContext","store","operate","OPERATION_CHANGE_PAYMENT_METHOD","then","e","target","Number","handleOpenModal","handleCloseModal","onChangeInstallment","buildModal","_this$state","installmentsData","h","Portal","into","productId","onClose","key","this","_this$state2","className","getInstallmentText","getInstallment","onClick","getOtherProgramsText","href","rel","isNotRendered","get","productPrice","_this$state3","currentProductPrice","cartTotalPriceWithProduct","resultPrice","filter","limitMin","limitMax","_this2","getState","items","item","getElementsByClassName","formFields","field","validInsallment","defaultPaymentMethod","totalPriceInfo","totalPrice","Component","undefined","price","paymentsPeriod","paymentsNumber","currentPrice","toLocaleString","replace","formatAmount","Error","amount","humanizedAmount"],"mappings":"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","file":"chunk.98.b1f13a8ca504aa74f020.ec3f9ada.js","sourcesContent":["import { Component } from 'preact';\nimport Portal from 'preact-portal';\nimport { asyncComponent } from 'core/components/Hoc/asyncComponent';\nimport NoticeService from 'core/services/NoticeService';\nimport { OPERATION_CHANGE_PAYMENT_METHOD } from 'site/VControllers/components/Checkout/operations/form';\nimport h from './cssScope';\nimport { getInstallmentText, getOtherProgramsText } from './utils/humanize';\nconst Modal = asyncComponent(() => import(\n/* webpackChunkName: \"site_c-TotalBlockInstallmentsModal\" */\n'./components/Modal'), 'Modal');\nexport class App extends Component {\n constructor() {\n super(...arguments);\n this.state = {\n isModalOpen: false,\n loading: true,\n installmentChanged: false,\n selectedQuantity: 1,\n cartTotalPrice: 0,\n paymentMethod: 'online',\n invalidInstallment: null\n };\n this.handleLoading = async () => {\n const { default: checkoutContext } = await import(\n /* webpackChunkName: 'common__c-checkoutContext' */\n 'site/VControllers/components/Checkout/context');\n this.checkoutContext = checkoutContext;\n await this.checkoutContext.init();\n if (this.props.data) {\n this.checkoutContextUuid = await this.checkoutContext.subscribe(this.handleUpdate);\n this.handleUpdate();\n }\n this.setState({\n loading: false,\n cartTotalPrice: this.cartTotalPrice,\n paymentMethod: this.currentPaymentMethod\n });\n };\n this.handleUpdate = () => {\n const productInCart = this.getProductInCart;\n const select = document.getElementById('quantity');\n if (!productInCart) {\n select.addEventListener('change', this.handleSelectQuantityChange);\n this.setState({\n cartTotalPrice: this.cartTotalPrice,\n paymentMethod: this.currentPaymentMethod\n });\n return;\n }\n select.value = productInCart.quantity.toString();\n this.setState({\n selectedQuantity: productInCart.quantity,\n cartTotalPrice: this.cartTotalPrice,\n paymentMethod: this.currentPaymentMethod\n });\n setTimeout(() => {\n if (!this.state.loading)\n this.checkPaymentMethod();\n }, 300);\n };\n this.checkPaymentMethod = async () => {\n if (this.isOpenedCartForm)\n return null;\n this.notifyChangedInstallment();\n const { paymentMethod } = this.state;\n const validData = this.validData;\n const cartPaymentMethod = this.cartPaymentMethod;\n if (!validData.length && cartPaymentMethod && cartPaymentMethod.value.toString().includes('installment')) {\n this.resetPaymentMethod();\n return;\n }\n else if (!validData.length)\n return;\n const installment = validData.find((installmentData) => installmentData.paymentMethod === paymentMethod);\n if (installment)\n return;\n this.resetPaymentMethod();\n };\n this.notifyChangedInstallment = () => {\n if (!this.state.installmentChanged)\n return;\n const cartPaymentMethod = this.cartPaymentMethod.value.toString();\n const installment = this.props.data.find(inst => inst.paymentMethod === cartPaymentMethod);\n if (!installment)\n return;\n NoticeService.clear();\n const type = installment.bankProduct ? 'рассрочку' : 'оплату частями';\n NoticeService.info(`Способ оплаты изменен на ${type} от ${installment.name}`);\n this.setState({ installmentChanged: false });\n };\n this.resetPaymentMethod = () => {\n const { paymentMethod } = this.state;\n const { data } = this.props;\n const chosenInstallment = data.find((installmentData) => installmentData.paymentMethod === paymentMethod);\n if (!chosenInstallment)\n return null;\n this.setState({ loading: true });\n try {\n this.checkoutContext.getContext().store\n .operate(OPERATION_CHANGE_PAYMENT_METHOD, 'online')\n .then(() => {\n setTimeout(() => {\n NoticeService.clear();\n this.setState({ isModalOpen: true, invalidInstallment: chosenInstallment });\n }, 300);\n });\n }\n finally {\n this.setState({ loading: false, paymentMethod: data[0].paymentMethod });\n }\n };\n this.handleSelectQuantityChange = (e) => {\n const target = e.target;\n const value = target.value;\n this.setState({\n selectedQuantity: Number(value),\n cartTotalPrice: this.cartTotalPrice,\n paymentMethod: this.currentPaymentMethod,\n invalidInstallment: null\n });\n };\n this.handleOpenModal = () => this.setState({ isModalOpen: true });\n this.handleCloseModal = () => this.setState({ isModalOpen: false, cartTotalPrice: this.cartTotalPrice, invalidInstallment: null });\n this.onChangeInstallment = () => this.setState({ installmentChanged: true, invalidInstallment: null });\n this.buildModal = () => {\n const { selectedQuantity, paymentMethod, invalidInstallment } = this.state;\n const installmentsData = this.validData;\n const checkInvalid = installmentsData.find(inst => inst === invalidInstallment);\n if (checkInvalid)\n return;\n return (h(Portal, { into: 'body' },\n h(Modal, { data: installmentsData, quantity: selectedQuantity, productId: this.props.productId, paymentMethod: paymentMethod, checkoutContext: this.checkoutContext, onClose: this.handleCloseModal, onChangeInstallment: this.onChangeInstallment, invalidInstallment: this.state.invalidInstallment })));\n };\n }\n componentWillMount() {\n this.handleLoading();\n }\n get validData() {\n const { productPrice } = this.props;\n const { selectedQuantity, cartTotalPrice } = this.state;\n const currentProductPrice = productPrice * selectedQuantity;\n const cartTotalPriceWithProduct = this.state.invalidInstallment ? cartTotalPrice : cartTotalPrice + currentProductPrice;\n const resultPrice = this.getProductInCart ? cartTotalPrice : cartTotalPriceWithProduct;\n return this.props.data.filter(installment => (resultPrice >= installment.limitMin &&\n resultPrice <= installment.limitMax));\n }\n get getProductInCart() {\n return this.checkoutContext.getContext().store.getState().items.find(item => item.productId === this.props.productId);\n }\n get isNotRendered() {\n return !document.getElementsByClassName('b-FrameModal').length;\n }\n get isOpenedCartForm() {\n return !!document.getElementsByClassName('s-Checkout __fullScreen').length;\n }\n get cartPaymentMethod() {\n return this.checkoutContext.getContext().store.getState().formFields.find((field) => field.key === 'payment_method');\n }\n get currentPaymentMethod() {\n const validInsallment = this.validData[0];\n const defaultPaymentMethod = validInsallment ? validInsallment.paymentMethod : 'online';\n const paymentMethod = this.cartPaymentMethod ? this.cartPaymentMethod.value.toString() : defaultPaymentMethod;\n return paymentMethod.includes('installment') ? paymentMethod : defaultPaymentMethod;\n }\n get cartTotalPrice() {\n return this.checkoutContext.getContext().store.getState().totalPriceInfo.totalPrice;\n }\n getInstallment(paymentMethod) {\n const data = this.validData;\n const installment = data.find((installmentData) => installmentData.paymentMethod === paymentMethod);\n return installment ? installment : data[0];\n }\n render() {\n const { loading, isModalOpen, invalidInstallment } = this.state;\n const { data } = this.props;\n if (loading || !data.length)\n return null;\n if (!this.validData.length) {\n return (h(\"div\", { className: 'sb-Content' }, isModalOpen && this.isNotRendered && invalidInstallment && this.buildModal()));\n }\n return (h(\"div\", { className: 'sb-Content' },\n h(\"div\", { className: 'sb-Separator' }, \" \\u0418\\u041B\\u0418 \"),\n h(\"div\", { className: 'sb-Wrapper' },\n h(\"div\", null, getInstallmentText(this.getInstallment(this.state.paymentMethod), this.state.selectedQuantity)),\n h(\"div\", { className: 'sb-Link', onClick: this.handleOpenModal }, getOtherProgramsText(this.validData.length - 1))),\n h(\"div\", { className: 'sb-HyperLink' },\n h(\"a\", { href: '/pages/payment_info#installment', target: '_blank', rel: 'nofollow' }, \"\\u041F\\u043E\\u0434\\u0440\\u043E\\u0431\\u043D\\u0435\\u0435 \\u043E\\u0431 \\u0443\\u0441\\u043B\\u043E\\u0432\\u0438\\u044F\\u0445\")),\n isModalOpen && this.isNotRendered && this.buildModal()));\n }\n}\n","import { formatAmount } from 'core/utils/humanize';\nexport function getInstallmentText(installment, quantity = 1) {\n const { price, paymentsPeriod, paymentsNumber } = installment;\n const currentPrice = (price * quantity).toLocaleString().replace(/,/g, ' ');\n switch (paymentsPeriod) {\n case 'half_month':\n return `${currentPrice} ₽ / ${formatAmount(paymentsNumber, ['платеж', 'платежа', 'платежей'])} раз в две недели`;\n case 'month':\n return `${currentPrice} ₽ / мес. на ${formatAmount(paymentsNumber, ['месяц', 'месяца', 'месяцев'])}`;\n default:\n throw new Error('Unknown paymentsPeriod');\n }\n}\nexport function getOtherProgramsText(amount) {\n if (amount === 0) {\n return 'Посмотреть';\n }\n const humanizedAmount = formatAmount(amount, ['программа', 'программы', 'программ']);\n return `Еще ${humanizedAmount}`;\n}\n"],"sourceRoot":""}