{"version":3,"file":"actions.min.js","sources":["https:\/\/slmetrics.ru\/local\/course_store\/amd\/src\/local\/shopping_cart\/actions.js"],"sourcesContent":["\"use strict\";\n\n\/**\n * JS \u043c\u043e\u0434\u0443\u043b\u044c \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u043a\u043e\u0440\u0437\u0438\u043d\u044b \u043d\u0430 \u0432\u043d\u0435\u043d\u0448\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445\n *\n * @module local_course_store\/local\/shopping_cart\/actions\n *\/\n\nimport Events from '.\/events';\nimport * as Repository from '.\/repository';\nimport Selectors from '.\/selectors';\nimport Notification from 'core\/notification';\nimport Templates from 'core\/templates';\nimport TEMPLATES from '.\/template_names';\nimport CertificationAddedModal from '.\/CertificationAddedModal';\n\nconst timers = {\n removeRestoreItem: null\n};\n\n\/**\n *\n *\/\nexport function showEmptyShoppingCart() {\n const itemsListContainer = document.querySelector(Selectors.regions.itemsListContainer);\n const restoreItems = itemsListContainer.querySelectorAll(Selectors.regions.restoreItems);\n\n itemsListContainer.classList.add('dimmed_text');\n if (restoreItems) {\n restoreItems.forEach((el) => el.classList.add('bg-pulse-grey'));\n }\n\n const toBeHiddenElements = [\n itemsListContainer,\n document.querySelector(Selectors.regions.ofertaText),\n ];\n const toBeRevealedElements = [\n document.querySelector(Selectors.regions.emptyCartNotification),\n ];\n\n setTimeout(() => {\n toBeHiddenElements.forEach((el) => {\n if (el) {\n el.classList.add('d-none');\n }\n });\n toBeRevealedElements.forEach((el) => {\n if (el) {\n el.classList.remove('d-none');\n }\n });\n }, TIME_TO_WAIT_BEFORE_RENDER_EMPTY_CART);\n}\n\n\/**\n *\n *\/\nexport function cleanUpAfterShoppingCartIsEmptied() {\n window.sessionStorage.removeItem(CFG_CERTIFICATION_ADDED_MODAL_SHOWNAT);\n}\n\n\/**\n *\n *\/\nexport function checkIsShoppingCartEmpty() {\n\n Repository.fetchShoppingCart()\n .then(({shoppingCart}) => {\n if (0 >= Number.parseInt(shoppingCart.items_count)) {\n window.console.debug('checkIsShoppingCartEmpty', shoppingCart);\n dispatchShoppingCartIsEmptied();\n }\n return;\n }).catch(Notification.exception);\n}\n\n\/**\n * @param {CustomEvent} e\n *\/\nexport function rerenderShoppinCartFooter(e) {\n const renderPromise = Templates.renderForPromise(TEMPLATES.shoppingCart.footer, e.detail.shoppingCart);\n\n renderPromise\n .then(({html, js}) => Templates.replaceNode(Selectors.regions.shoppingCartFooter, html, js))\n .catch(Notification.exception);\n}\n\n\/**\n * TODO: \u0431\u0440\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0438\u0437 e.detail \u0432\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a API\n *\/\nexport function rerenderShoppinCartIcon() {\n Repository.fetchShoppingCart()\n .then(\n ({shoppingCart}) => {\n window.console.debug('rerenderShoppinCartIcon', shoppingCart);\n const renderPromise = Templates.renderForPromise(\n TEMPLATES.shoppingCart.icon,\n {shopping_cart: shoppingCart}\n );\n\n const iconEl = document.querySelector(Selectors.regions.icon);\n renderPromise.then(\n ({html, js}) => {\n Templates.replaceNode(iconEl, html, js);\n return;\n }\n ).catch(Notification.exception);\n\n return;\n }\n )\n .catch(Notification.exception);\n}\n\n\/**\n * @param {Element} removeFromCartEl\n *\n * @returns {Promise}\n *\/\nexport function removeFromCart(removeFromCartEl) {\n\n const strategy = removeItemStrategies.make();\n\n return strategy(removeFromCartEl);\n}\n\n\/**\n *\n * @param {object} param0\n * @param {number} param0.courseId\n *\n * @returns {Promise}\n *\/\nexport function restoreItemInCart({courseId}) {\n\n if (timers.removeRestoreItem) {\n clearTimeout(timers.removeRestoreItem);\n }\n const strategy = restoreCartStrategies.make();\n\n return strategy({courseId});\n}\n\n\/**\n * \u0414\u043e\u0431\u0430\u0432\u0438\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0432 \u043a\u043e\u0440\u0437\u0438\u043d\u0443\n *\n * @param {Element} addTocartEl\n *\n * @returns {Promise}\n *\/\nexport function addToCart(addTocartEl) {\n\n const strategy = addToCartStrategies.make();\n\n return strategy(addTocartEl);\n}\n\nconst addToCartStrategies = {\n make() {\n const isGuestUser = false;\n\n if (isGuestUser) {\n return this.guestUserStrategy();\n }\n\n return this.registeredUserStrategy();\n },\n\n guestUserStrategy() {\n\n return function(addToCartEl) {\n window.console.debug('guestUserStrategy', {courseId: addToCartEl.dataset.courseId});\n \/**\n * - \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c courseId \u0432 SessionStorage\n * - \u0421\u0433\u0435\u0440\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 Events.ShoppingCartUpdated\n * - \u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0441 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043a\u043e\u0440\u0437\u043d\u0438\u0443\n *\/\n };\n },\n\n registeredUserStrategy() {\n\n\n return function(addToCartEl) {\n\n const titleEl = addToCartEl.querySelector(Selectors.regions.addToCartBtn.title);\n const loadingEl = addToCartEl.querySelector(Selectors.regions.addToCartBtn.loadingIndicator);\n\n const removeFromCartBtn = document.querySelector(Selectors.actions.removeFromCartByCourseId(addToCartEl.dataset.courseId));\n\n titleEl.classList.add('d-none');\n loadingEl.classList.remove('d-none');\n\n const hideLoading = () => {\n titleEl.classList.remove('d-none');\n loadingEl.classList.add('d-none');\n };\n\n const showRemoveFromCartBtn = (itemId) => {\n removeFromCartBtn.classList.remove('d-none');\n removeFromCartBtn.setAttribute('data-item-id', itemId);\n addToCartEl.classList.add('d-none');\n };\n\n const addPromise = Repository.addCertification(addToCartEl.dataset.courseId);\n\n window.console.debug('addToCartStrategies ', {addPromise});\n\n addPromise\n .then(\n ({shoppingCart, newItem}) => {\n showRemoveFromCartBtn(newItem.id);\n dispatchShoppingCartUpdated(shoppingCart);\n\n if (canShowCertificationAddedModal()) {\n showCertificationAddedModal();\n }\n\n return shoppingCart;\n }\n ).always(() => hideLoading());\n\n return addPromise;\n };\n }\n};\n\nconst removeItemStrategies = {\n make() {\n const isGuestUser = false;\n\n if (isGuestUser) {\n return this.guestUserStrategy();\n }\n\n return this.registeredUserStrategy();\n },\n\n guestUserStrategy() {\n\n return function(courseId) {\n \/**\n * - \u0412\u044b\u0442\u0430\u0449\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u0440\u0437\u0438\u043d\u044b \u0438\u0437 SessionStorage\n * - \u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 courseId\n * - \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u0443\u044e \u043a\u043e\u0440\u0437\u0438\u043d\u0443 \u0432 SessionStorage\n * - \u0421\u0433\u0435\u0440\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 Events.ShoppingCartUpdated\n *\/\n window.console.debug('removeItemStrategies guestUserStrategy', {courseId});\n\n };\n },\n\n registeredUserStrategy() {\n return function(removeItemEl) {\n\n const itemId = removeItemEl.dataset?.itemId;\n if (!itemId) {\n itemId = getShoppingCartItemIdByCourseId(removeItemEl.dataset.courseId);\n }\n\n let hideLoading = () => {};\n let showAddToCartBtn = () => {};\n if (!document.querySelector(Selectors.regions.shoppingCartPageContainer)) {\n const titleEl = removeItemEl.querySelector(Selectors.regions.removeFromCartBtn.title);\n const loadingEl = removeItemEl.querySelector(Selectors.regions.removeFromCartBtn.loadingIndicator);\n titleEl.classList.add('d-none');\n loadingEl.classList.remove('d-none');\n\n hideLoading = () => {\n titleEl.classList.remove('d-none');\n loadingEl.classList.add('d-none');\n };\n\n const addToCartBtn = document.querySelector(Selectors.actions.addToCartByCourseId(removeItemEl.dataset.courseId));\n if (!addToCartBtn) {\n window.console.debug(\n 'removeItemStrategies', {addToCartBtn, selector: Selectors.actions.addToCartByCourseId(removeItemEl.dataset.courseId)});\n throw new Error('\u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0430 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u0440\u0437\u0438\u043d\u0443');\n }\n showAddToCartBtn = () => {\n addToCartBtn.classList.remove('d-none');\n removeItemEl.classList.add('d-none');\n removeItemEl.removeAttribute('data-item-id');\n };\n }\n\n\n return Repository.removeCertification(itemId)\n .then(\n ({shoppingCart}) => {\n dispatchShoppingCartItemRemoved(itemId);\n dispatchShoppingCartUpdated(shoppingCart);\n\n showAddToCartBtn();\n\n return {shoppingCart};\n }\n )\n .catch(Notification.exception)\n .always(() => hideLoading());\n };\n }\n};\n\nconst restoreCartStrategies = {\n make() {\n const isGuestUser = false;\n\n if (isGuestUser) {\n return this.guestUserStrategy();\n }\n\n return this.registeredUserStrategy();\n },\n\n guestUserStrategy() {\n\n return function({courseId}) {\n window.console.debug('restoreCartStrategies guestUserStrategy', {courseId});\n \/**\n * - \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c courseId \u0432 SessionStorage\n * - \u0421\u0433\u0435\u0440\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 Events.ShoppingCartUpdated\n * - \u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0441 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043a\u043e\u0440\u0437\u043d\u0438\u0443\n *\/\n };\n },\n\n \/**\n *\n * @returns {Promise}\n *\/\n registeredUserStrategy() {\n\n return function({courseId}) {\n return Repository.addCertification(courseId)\n .then(\n ({shoppingCart, newItem}) => {\n\n dispatchShoppingCartItemRestored({shoppingCart, newItem});\n dispatchShoppingCartUpdated(shoppingCart);\n\n return shoppingCart;\n }\n );\n };\n }\n};\n\n\/**\n * @returns {bool}\n *\/\nfunction canShowCertificationAddedModal() {\n const modalShownAt = window.sessionStorage.getItem(CFG_CERTIFICATION_ADDED_MODAL_SHOWNAT);\n if (!modalShownAt) {\n return true;\n }\n\n return false;\n}\n\n\/**\n * @returns {bool}\n *\/\nexport function showCertificationAddedModal() {\n const modalPromise = CertificationAddedModal.create();\n modalPromise.then((modal) => {\n window.sessionStorage.setItem(CFG_CERTIFICATION_ADDED_MODAL_SHOWNAT, Date.now());\n modal.show();\n\n return modal;\n }).catch((error) => {\n window.console.error('\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 CertificationAddedModal', {error});\n });\n return modalPromise;\n}\n\n\/**\n * @param {CustomEvent} e\n *\/\nexport function switchCartItemWithRestoreButton(e) {\n\n \/**\n * - \u041d\u0430\u0439\u0442\u0438 li \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438\n * - \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 li \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0439 \u043a\u043d\u043e\u043f\u043a\u0443 \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\n * - \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0441 d-none \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043f\u043e\u0437\u0438\u0446\u0438\u0438\n * - \u0432\u044b\u0437\u0432\u0430\u0442\u044c li.replace(RestoreEl)\n * - \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0441 d-none \u0443 RestoreEl\n * - \u0437\u0430\u043f\u0443\u0441\u0442\u044c \u0442\u0430\u0439\u043c\u0435\u0440 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438\n *\/\n const itemId = e.detail.itemId;\n if (!itemId) {\n throw new Error('switchCartItemWithRestoreButton: \u041d\u0435 \u0437\u0430\u0434\u0430\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f itemId');\n }\n const itemEl = document.querySelector(Selectors.regions.item(itemId));\n if (!itemEl) {\n window.console.debug('switchCartItemWithRestoreButton', {itemId});\n throw new Error('\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d \u043a\u043e\u0440\u0437\u0438\u043d\u044b \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 itemId');\n }\n const restoreTemplate = document.getElementById(Selectors.ids.restoreItemTemplate);\n if (!restoreTemplate) {\n throw new Error('\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438');\n }\n const restoreClone = restoreTemplate.content.cloneNode(true);\n for (const itemAttr in itemEl.dataset) {\n restoreClone.children[0].dataset[itemAttr] = itemEl.dataset[itemAttr];\n }\n restoreClone.children[0].dataset.region = Selectors.regionValues.restoreItems;\n\n itemEl.classList.add('d-none');\n itemEl.replaceWith(restoreClone);\n\n const restoreEl = document.querySelector(Selectors.regions.restoreItem({itemId}));\n if (!restoreEl) {\n window.console.debug('Selectors.regions.restoreItem({itemId})', {selector: Selectors.regions.restoreItem({itemId}), itemId});\n throw new Error('\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d \u043a\u043e\u0440\u0437\u0438\u043d\u044b \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 itemId');\n }\n\n const restoreDesc = restoreEl.querySelector(Selectors.regions.restoreCartItem.description());\n restoreDesc.innerHTML = restoreEl.dataset.description;\n const shortnameDesc = restoreEl.querySelector(Selectors.regions.restoreCartItem.shortname());\n shortnameDesc.innerHTML = restoreEl.dataset.shortname;\n\n timers.removeRestoreItem = setTimeout(() => {\n const btn = restoreEl.querySelector(Selectors.actions.restoreShoppingCartItem);\n btn.setAttribute('disabled', true);\n restoreEl.remove();\n }, TIME_TO_WAIT_BEFORE_REMOVE_CART_ITEM);\n}\n\n\/**\n *\n * @param {CustomEvent} e\n *\/\nexport function swichRestoreButtonWithNewCartItem(e) {\n \/**\n * - \u043d\u0430\u0439\u0442\u0438 restoreEl\n * - \u043e\u0442\u0440\u0435\u043d\u0434\u0435\u0440\u0440\u0438\u0442\u044c item \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u0437 dataset restoreItem\n * - \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c restoreEl \u043d\u043e\u0432\u044b\u043c html\n *\/\n const restoreEl = document.querySelector(Selectors.regions.restoreItem({courseId: e.detail.newItem.courseid}));\n if (!restoreEl) {\n throw new Error('\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043a\u043e\u0440\u0437\u0438\u043d\u044b \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 courseId');\n }\n const renderPromise = Templates.renderForPromise(TEMPLATES.shoppingCart.item, e.detail.newItem);\n renderPromise.then(\n ({html, js}) => {\n Templates.replaceNode(restoreEl, html, js);\n return;\n }\n ).catch();\n\n}\n\n\/**\n * \u0412\u043a\u043b\u044e\u0447\u0438\u0442 \u043a\u043d\u043e\u043f\u043a\u0443 \"\u041e\u0444\u043e\u0440\u043c\u0438\u0442\u044c \u043f\u043b\u0430\u0442\u0451\u0436\"\n *\/\nexport function enableCreateOrderBtn() {\n const btn = document.querySelector(Selectors.actions.createOrder);\n if (!btn) {\n window.console.error('\u041a\u043d\u043e\u043f\u043a\u0430 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u043a\u0430\u0437\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430');\n return;\n }\n btn.removeAttribute('disabled');\n window.console.debug('createOrder Btn enabled', {btn});\n}\n\n\/**\n * \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442 \u043a\u043d\u043e\u043f\u043a\u0443 \"\u041e\u0444\u043e\u0440\u043c\u0438\u0442\u044c \u043f\u043b\u0430\u0442\u0451\u0436\"\n *\/\nexport function disableCreateOrderBtn() {\n const btn = document.querySelector(Selectors.actions.createOrder);\n btn.setAttribute('disabled', true);\n}\n\n\/**\n *\n * @param {number} cartId\n * @returns {bool|Promise}\n *\/\nexport function createOrder(cartId) {\n if (!cartId) {\n window.console.error('\u041d\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438', {reason: '\u043d\u0435 \u0437\u0430\u0434\u0430\u043d cartId'});\n return false;\n }\n return Repository.createOrder(cartId).then(\n ({order}) => {\n const url = new URL(order.links.checkout);\n window.location = url;\n\n return {order};\n }\n ).catch(Notification.exception);\n}\n\n\/**\n *\n * @param {object} shoppingCart\n *\/\nfunction dispatchShoppingCartUpdated(shoppingCart) {\n const ev = new CustomEvent(Events.ShoppingCartUpdated, {detail: {shoppingCart}});\n document\n .querySelector(Selectors.regions.iconContainer)\n .dispatchEvent(ev);\n}\n\n\/**\n *\n * @param {number} itemId\n *\/\nfunction dispatchShoppingCartItemRemoved(itemId) {\n const ev = new CustomEvent(Events.ShoppingCartItemRemoved, {detail: {itemId}});\n document\n .querySelector(Selectors.regions.iconContainer)\n .dispatchEvent(ev);\n}\n\n\/**\n *\n * @param {number} courseId\n *\/\nfunction dispatchShoppingCartItemRestored({shoppingCart, newItem}) {\n const ev = new CustomEvent(Events.ShoppingCartItemRestored, {detail: {shoppingCart, newItem}});\n document\n .querySelector(Selectors.regions.iconContainer)\n .dispatchEvent(ev);\n}\n\n\/**\n *\n *\/\nfunction dispatchShoppingCartIsEmptied() {\n const ev = new CustomEvent(Events.ShoppingCartIsEmptied);\n document\n .querySelector(Selectors.regions.iconContainer)\n .dispatchEvent(ev);\n}\n\n\/**\n *\n * @param {number} courseId\n * @returns {number}\n *\/\nfunction getShoppingCartItemIdByCourseId(courseId) {\n window.console.debug('getShoppingCartByCourseId', {courseId});\n return null; \/\/ TODO:\n}\n\nconst TIME_TO_WAIT_BEFORE_REMOVE_CART_ITEM = 2000;\nconst TIME_TO_WAIT_BEFORE_RENDER_EMPTY_CART = TIME_TO_WAIT_BEFORE_REMOVE_CART_ITEM + 500;\nconst CFG_CERTIFICATION_ADDED_MODAL_SHOWNAT = 'local_course_store\/ShoppingCart\/cfg:certificationAddedModalShownAt';"],"names":["addTocartEl","addToCartStrategies","make","strategy","Repository","fetchShoppingCart","then","_ref","shoppingCart","Number","parseInt","items_count","window","console","debug","ev","CustomEvent","Events","ShoppingCartIsEmptied","document","querySelector","Selectors","regions","iconContainer","dispatchEvent","dispatchShoppingCartIsEmptied","catch","Notification","exception","sessionStorage","removeItem","CFG_CERTIFICATION_ADDED_MODAL_SHOWNAT","cartId","error","reason","createOrder","_ref12","order","url","URL","links","checkout","location","actions","setAttribute","btn","removeAttribute","removeFromCartEl","removeItemStrategies","e","Templates","renderForPromise","TEMPLATES","footer","detail","_ref2","html","js","replaceNode","shoppingCartFooter","_ref3","renderPromise","icon","shopping_cart","iconEl","_ref4","courseId","timers","removeRestoreItem","clearTimeout","restoreCartStrategies","itemsListContainer","restoreItems","querySelectorAll","classList","add","forEach","el","toBeHiddenElements","ofertaText","toBeRevealedElements","emptyCartNotification","setTimeout","remove","TIME_TO_WAIT_BEFORE_RENDER_EMPTY_CART","restoreEl","restoreItem","newItem","courseid","Error","item","_ref11","itemId","itemEl","restoreTemplate","getElementById","ids","restoreItemTemplate","restoreClone","content","cloneNode","itemAttr","dataset","children","region","regionValues","replaceWith","selector","restoreCartItem","description","innerHTML","shortname","restoreShoppingCartItem","TIME_TO_WAIT_BEFORE_REMOVE_CART_ITEM","this","registeredUserStrategy","guestUserStrategy","addToCartEl","titleEl","addToCartBtn","title","loadingEl","loadingIndicator","removeFromCartBtn","removeFromCartByCourseId","addPromise","addCertification","_ref6","id","dispatchShoppingCartUpdated","getItem","canShowCertificationAddedModal","showCertificationAddedModal","always","removeItemEl","_removeItemEl$dataset","hideLoading","showAddToCartBtn","shoppingCartPageContainer","addToCartByCourseId","removeCertification","_ref7","ShoppingCartItemRemoved","dispatchShoppingCartItemRemoved","_ref10","ShoppingCartItemRestored","dispatchShoppingCartItemRestored","modalPromise","CertificationAddedModal","create","modal","setItem","Date","now","show","ShoppingCartUpdated"],"mappings":"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\/E,aAAa,eAAgBgD,QAC\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\/ElF,sCAAwC"}