{"version":3,"file":"chunks-75330cbe70226a2a/apps_common_cart-utils_index_js.b6a0911c4e031dab.js?t=1741497828074","mappings":"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","sources":["webpack://assemble/./apps/common/cart-utils/Shopware.js","webpack://assemble/./apps/common/cart-utils/Utils.js","webpack://assemble/./apps/common/cart-utils/BigCommerce.js","webpack://assemble/./apps/common/cart-utils/EasyStore.js","webpack://assemble/./apps/common/cart-utils/Shopify.js","webpack://assemble/./apps/common/cart-utils/Shopline.js","webpack://assemble/./apps/common/cart-utils/Wix.js","webpack://assemble/./apps/common/cart-utils/WooCommerce.js","webpack://assemble/./apps/common/cart-utils/index.js"],"sourcesContent":["import isEqual from 'lodash/isEqual';\nimport get from 'lodash/get';\nimport * as utils from './Utils';\n\n\n\nexport function formatCartItem(itemRow) {\n let variantOptions = itemRow.payload.options;\n let variantTitle = variantOptions.join(\"/\");\n\n let item = {};\n item['id'] = itemRow.id;\n item['title'] = variantTitle ? `${itemRow.label} (${variantTitle})` : itemRow.label;\n item['quantity'] = itemRow.quantity;\n item['price'] = parseFloat(itemRow.price.unitPrice);\n item['product_id'] = itemRow.productId;\n item['product_title'] = itemRow.label;\n item['variant_id'] = itemRow.variantId;\n item['variant_title'] = variantTitle;\n return item;\n}\n\n\nexport function formatCartResponse(response) {\n let data = {};\n data['currency'] = window.OnVoardData.active_currency;\n data['total_price'] = parseFloat(response.price.totalPrice);\n\n let items = [];\n response.lineItems.forEach((itemRow) => {\n let item = formatCartItem(itemRow);\n items.push(item);\n })\n\n data['items'] = items;\n return data;\n}\n\n\nfunction getAddedCartItems(response) {\n const existingData = get(window.OnVoardEventsData, 'shopware_cart', {});\n const existingMapper = {};\n if (existingData.lineItems) {\n existingData.lineItems.forEach((itemRow) => {\n existingMapper[`${itemRow.id}`] = parseInt(itemRow.quantity);\n })\n }\n\n const currentMapper = {};\n if (response.lineItems) {\n response.lineItems.forEach((itemRow) => {\n currentMapper[`${itemRow.id}`] = parseInt(itemRow.quantity);\n })\n }\n\n let addedIds = utils.getAddedCartItemIds(existingMapper, currentMapper);\n let addedItems = [];\n if (response.lineItems) {\n response.lineItems.forEach((itemRow) => {\n let itemId = `${itemRow.id}`;\n if (!addedIds.includes(itemId)) return;\n addedItems.push(itemRow)\n })\n }\n\n return addedItems;\n}\n\n\nexport function handleCartUpdate(response) {\n let noChange = isEqual(window.OnVoardEventsData['shopware_cart'], response);\n let isNew = !window.OnVoardEventsData['shopware_cart'] ? true : false;\n\n // no cart change\n if (noChange) return;\n\n // if first time loading, don't dispatch added cart items\n let addedCartItems = [];\n if (!isNew) addedCartItems = getAddedCartItems(response);\n\n window.OnVoardEventsData['shopware_cart'] = response;\n utils.dispatchCartUpdateEvent(response);\n addedCartItems.forEach((item) => {\n utils.dispatchAddCartItemEvent(item);\n })\n}\n\nfunction fetchCart(callback) {\n let ovItemsMapping = {};\n let ovInitialItems = {};\n let ovCart = {};\n\n fetch(window.OnVoardData[\"sw_storefront_url\"] + '/store-api/checkout/cart', {\n method: 'GET',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'sw-access-key': window.OnVoardData[\"sw_access_key\"],\n 'sw-context-token': window.OnVoardData[\"sw_context_token\"]\n }\n })\n .then(res => res.json())\n .then(json => {\n ovCart = json;\n let ovCartVariantIds = [];\n\n ovInitialItems = json.lineItems;\n ovInitialItems.forEach((item) => {\n if (item.payload.options && item.payload.options.length > 0) {\n ovCartVariantIds.push(item.referencedId);\n ovItemsMapping[item.referencedId] = item;\n return;\n }\n\n item['productId'] = item.referencedId;\n item['variantId'] = null;\n ovItemsMapping[item.referencedId] = item;\n })\n\n if (ovCartVariantIds.length === 0) {\n return new Promise((resolve, reject) => {\n resolve(new Response(JSON.stringify({\"elements\":[]})));\n })\n }\n\n return fetch(window.OnVoardData[\"sw_storefront_url\"] + '/store-api/product', {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'sw-access-key': window.OnVoardData[\"sw_access_key\"],\n 'sw-context-token': window.OnVoardData[\"sw_context_token\"]\n },\n body: JSON.stringify({\n \"ids\": ovCartVariantIds,\n \"includes\": {\n \"product\": [\n \"id\", \"parentId\", \"productNumber\"\n ]\n }\n })\n })\n })\n .then(res => res.json())\n .then(json => {\n json.elements.forEach((row) => {\n ovItemsMapping[row.id]['productId'] = row.parentId;\n ovItemsMapping[row.id]['variantId'] = row.id;\n })\n\n var ovNewLineItems = [];\n ovInitialItems.forEach((item) => {\n ovNewLineItems.push(ovItemsMapping[item.referencedId]);\n })\n\n ovCart.lineItems = ovNewLineItems;\n callback(ovCart);\n window.OnVoardData['cart'] = ovCart;\n window.OnVoardData['cartLoaded'] = true;\n });\n}\n\n\nexport function setupCartUpdateEvent() {\n if (window.OnVoardEventsData.setupCartUpdateEvent) return;\n window.OnVoardEventsData.setupCartUpdateEvent = true;\n\n const triggerPaths = [\n \"/checkout/line-item/add\",\n \"/checkout/line-item/delete\",\n \"/widgets/checkout/info\",\n \"/store-api/checkout/cart/line-item\",\n ];\n\n let triggerCartUpdate = () => {\n let successCallback = (response) => {\n handleCartUpdate(response);\n };\n\n fetchCart(successCallback);\n };\n\n utils.interceptRequests(triggerPaths, (response, url) => {\n triggerCartUpdate();\n });\n}\n\nexport function setupCheckoutOffCanvasEvent() {\n if (window.OnVoardEventsData.setupCheckoutOffCanvasEvent) return;\n window.OnVoardEventsData.setupCheckoutOffCanvasEvent = true;\n\n const triggerPaths = [\n \"/widgets/checkout/info\",\n ];\n\n utils.interceptRequests(triggerPaths, (response, url) => {\n let event = new CustomEvent(\"ov_shopware_checkout_offcanvas\", {detail: response});\n document.dispatchEvent(event);\n });\n}\n\n\nexport function loadCart() {\n let successCallback = (response) => {\n handleCartUpdate(response);\n };\n\n fetchCart(successCallback);\n}\n\n","import * as comUtils from \"common/utils\";\nexport * from \"common/utils\";\n\n\nexport function parseResponse(response) {\n if (!(response instanceof Object)) {\n try {\n response = JSON.parse(response);\n } catch(e) {\n return;\n }\n }\n\n return response;\n}\n\nexport function convertCentsToAmount(cents) {\n if (!cents) return 0;\n return (cents / 100.0).toFixed(2);\n}\n\nexport function convertCentsToFloat(cents) {\n return parseFloat(convertCentsToAmount(cents));\n}\n\nexport function getAddedCartItemIds(existingMapper, currentMapper) {\n let addedIds = [];\n\n for (var id in currentMapper) {\n let currentQuantity = currentMapper[id];\n\n if (!(id in existingMapper)) {\n if (!addedIds.includes(id)) addedIds.push(id);\n continue;\n }\n\n let existingQuantity = existingMapper[id];\n if (currentQuantity > existingQuantity) {\n if (!addedIds.includes(id)) addedIds.push(id);\n continue;\n }\n }\n\n return addedIds;\n}\n\nexport function dispatchAddCartItemEvent(item) {\n let event = new CustomEvent(\"ov_add_cart_item\", {detail: item});\n document.dispatchEvent(event);\n}\n\nexport function dispatchCartUpdateEvent(response) {\n let event = new CustomEvent(\"ov_cart_update\", {detail: response});\n document.dispatchEvent(event);\n}\n\nexport function getExistingCartResponse() {\n let platform = comUtils.getEcommercePlatform();\n let response = null;\n if (window.OnVoardEventsData) {\n response = window.OnVoardEventsData[`${platform}_cart`] || null;\n }\n\n return response;\n}\n","import isEqual from 'lodash/isEqual';\nimport get from 'lodash/get';\nimport * as utils from './Utils';\n\n\nexport function formatCartItem(itemRow) {\n let productTitle = itemRow.name;\n let variantTitle = '';\n\n if (itemRow.options) {\n variantTitle = itemRow.options.map((option) => option.value).join(\"/\") || '';\n }\n\n let item = {};\n item['id'] = `${itemRow.id}`;\n item['title'] = variantTitle ? `${productTitle} (${variantTitle})` : productTitle;\n item['quantity'] = itemRow.quantity;\n item['price'] = itemRow.salePrice;\n item['product_id'] = `${itemRow.productId}`;\n item['product_title'] = productTitle;\n item['variant_id'] = `${itemRow.variantId}`;\n item['variant_title'] = variantTitle;\n return item;\n}\n\nexport function formatCartResponse(response) {\n if (!response.id) return {};\n\n let data = {};\n data['currency'] = response.currency.code;\n data['total_price'] = response.cartAmount;\n data['total_discount'] = response.discountAmount;\n\n let items = [];\n if (response.lineItems) {\n response.lineItems.physicalItems.forEach((itemRow) => {\n let item = formatCartItem(itemRow);\n items.push(item);\n })\n\n response.lineItems.digitalItems.forEach((itemRow) => {\n let item = formatCartItem(itemRow);\n items.push(item);\n })\n }\n\n data['items'] = items;\n return data;\n}\n\n\nfunction getAddedCartItems(response) {\n const existingData = get(window.OnVoardEventsData, 'bigcommerce_cart', {});\n\n const existingMapper = {};\n if (existingData.lineItems) {\n existingData.lineItems.physicalItems.forEach((itemRow) => {\n existingMapper[`${itemRow.id}`] = parseInt(itemRow.quantity);\n })\n\n existingData.lineItems.digitalItems.forEach((itemRow) => {\n existingMapper[`${itemRow.id}`] = parseInt(itemRow.quantity);\n })\n }\n\n const currentMapper = {};\n if (response.lineItems) {\n response.lineItems.physicalItems.forEach((itemRow) => {\n currentMapper[`${itemRow.id}`] = parseInt(itemRow.quantity);\n })\n\n response.lineItems.digitalItems.forEach((itemRow) => {\n currentMapper[`${itemRow.id}`] = parseInt(itemRow.quantity);\n })\n }\n\n let addedIds = utils.getAddedCartItemIds(existingMapper, currentMapper);\n let addedItems = [];\n if (response.lineItems) {\n response.lineItems.physicalItems.forEach((itemRow) => {\n let itemId = `${itemRow.id}`;\n if (!addedIds.includes(itemId)) return;\n addedItems.push(itemRow)\n })\n\n response.lineItems.digitalItems.forEach((itemRow) => {\n let itemId = `${itemRow.id}`;\n if (!addedIds.includes(itemId)) return;\n addedItems.push(itemRow)\n })\n }\n\n return addedItems;\n}\n\nexport function handleCartUpdate(response) {\n let noChange = isEqual(window.OnVoardEventsData['bigcommerce_cart'], response);\n let isNew = !window.OnVoardEventsData['bigcommerce_cart'] ? true : false;\n\n // no cart change\n if (noChange) return;\n\n // if first time loading, don't dispatch added cart items\n let addedCartItems = [];\n if (!isNew) addedCartItems = getAddedCartItems(response);\n\n window.OnVoardEventsData['bigcommerce_cart'] = response;\n utils.dispatchCartUpdateEvent(response);\n addedCartItems.forEach((item) => {\n utils.dispatchAddCartItemEvent(item);\n })\n}\n\nexport function setupCartUpdateEvent() {\n if (window.OnVoardEventsData.setupCartUpdateEvent) return;\n window.OnVoardEventsData.setupCartUpdateEvent = true;\n\n let cartUpdatePaths = [\n \"/api/storefront/carts\",\n ];\n\n utils.interceptRequests(cartUpdatePaths, (response, url) => {\n if (url.includes('items')) return;\n response = utils.parseResponse(response);\n if (!response) return;\n if (response.status === 'error') return;\n\n if (!utils.isArray(response)) {\n handleCartUpdate(response);\n return;\n }\n\n let cart = {};\n if (response && response.length > 0) cart = response[0];\n handleCartUpdate(cart);\n });\n\n const triggerPaths = [\n \"/remote/v1/cart/add\",\n \"/remote/v1/cart/update\",\n ];\n\n let triggerCartUpdate = () => {\n utils.getRq({\n \"url\": \"/api/storefront/carts?include=lineItems.physicalItems.options,lineItems.digitalItems.options\",\n \"headers\": {\n \"x-requested-with\": \"XMLHttpRequest\",\n },\n \"successCallback\": (response) => {\n response = utils.parseResponse(response);\n if (!response) return;\n if (response.status === 'error') return;\n\n let cart = {};\n if (response && response.length > 0) cart = response[0];\n handleCartUpdate(cart);\n },\n \"errorCallback\": () => {}\n });\n };\n\n utils.interceptRequests(triggerPaths, (response, url) => {\n triggerCartUpdate();\n });\n}\n\nexport function loadCart() {\n let successCallback = (response) => {\n response = utils.parseResponse(response);\n if (!response) return;\n if (response.status === 'error') return;\n\n let cart = {};\n if (response && response.length > 0) cart = response[0];\n handleCartUpdate(cart);\n };\n\n let errorCallback = () => {};\n\n utils.getRq({\n \"url\": \"/api/storefront/carts?include=lineItems.physicalItems.options,lineItems.digitalItems.options\",\n \"headers\": {\n \"x-requested-with\": \"XMLHttpRequest\",\n },\n \"successCallback\": successCallback,\n \"errorCallback\": errorCallback,\n });\n}\n\n","import isEqual from 'lodash/isEqual';\nimport get from 'lodash/get';\nimport * as utils from './Utils';\n\n\n\nexport function formatCartItem(itemRow) {\n let item = {};\n item['id'] = `${itemRow.id}`;\n item['title'] = itemRow.title;\n item['quantity'] = itemRow.quantity;\n item['price'] = parseFloat(itemRow.price);\n item['product_id'] = `${itemRow.product_id}`;\n item['product_title'] = itemRow.product_name;\n item['variant_id'] = `${itemRow.variant_id}`;\n item['variant_title'] = itemRow.variant_name;\n return item;\n}\n\nexport function flattenCartItems(response) {\n let flattenItems = [];\n\n if (!response.items) return [];\n response.items.forEach((itemRow) => {\n if (!itemRow.items) {\n flattenItems.push(itemRow);\n return;\n }\n\n itemRow.items.forEach((subItem) => {\n flattenItems.push(subItem);\n })\n })\n\n return flattenItems;\n}\n\nexport function formatCartResponse(response) {\n let data = {};\n data['currency'] = response.currency;\n data['total_price'] = response.total_price ? parseFloat(response.total_price) : parseFloat(0);\n data['total_discount'] = response.total_discount ? parseFloat(response.total_discount) : parseFloat(0);\n\n let cartItems = flattenCartItems(response);\n let items = [];\n cartItems.forEach((itemRow) => {\n let item = formatCartItem(itemRow);\n items.push(item);\n })\n\n data['items'] = items;\n return data;\n}\n\n\nfunction getAddedCartItems(response) {\n const existingData = get(window.OnVoardEventsData, 'easystore_cart', {});\n\n const existingMapper = {};\n if (existingData.items) {\n existingData.items.forEach((itemRow) => {\n if (itemRow.freebie) return;\n existingMapper[`${itemRow.i_id}`] = parseInt(itemRow.quantity);\n })\n }\n\n let cartItems = flattenCartItems(response);\n const currentMapper = {};\n cartItems.forEach((itemRow) => {\n if (itemRow.freebie) return;\n currentMapper[`${itemRow.i_id}`] = parseInt(itemRow.quantity);\n })\n\n let addedIds = utils.getAddedCartItemIds(existingMapper, currentMapper);\n let addedItems = [];\n cartItems.forEach((itemRow) => {\n let itemId = `${itemRow.i_id}`;\n if (!addedIds.includes(itemId)) return;\n addedItems.push(itemRow)\n })\n\n return addedItems;\n}\n\nexport function handleCartUpdate(response) {\n let noChange = isEqual(window.OnVoardEventsData['easystore_cart'], response);\n let isNew = !window.OnVoardEventsData['easystore_cart'] ? true : false;\n\n // no cart change\n if (noChange) return;\n\n // if first time loading, don't dispatch added cart items\n let addedCartItems = [];\n if (!isNew) addedCartItems = getAddedCartItems(response);\n\n window.OnVoardEventsData['easystore_cart'] = response;\n utils.dispatchCartUpdateEvent(response);\n addedCartItems.forEach((item) => {\n utils.dispatchAddCartItemEvent(item);\n })\n}\n\nexport function setupCartUpdateEvent() {\n if (window.OnVoardEventsData.setupCartUpdateEvent) return;\n window.OnVoardEventsData.setupCartUpdateEvent = true;\n\n // Important: For EasyStore, don't intercept request on checkout page as it will cause some bugs with their promotion feature.\n if (window.EasyStore.Checkout) return;\n\n let cartUpdatePaths = [\n \"/cart/add?retrieve=true\",\n \"/cart?retrieve=true\",\n \"/new_cart?retrieve=true\",\n \"/cart/remove_item_quantity?retrieve=true\",\n \"/cart/apply_cart_voucher_code?retrieve=true\",\n \"/new_cart/update\",\n ];\n\n utils.interceptRequests(cartUpdatePaths, (response, url) => {\n response = utils.parseResponse(response);\n if (!response) return;\n if (response.status === 'error') return;\n handleCartUpdate(response.cart || response);\n });\n\n // turn off because causing issues with promotion\n // const easyStoretriggerPaths = [\n // \"/cart/add\",\n // ];\n\n // let triggerCartUpdate = () => {\n // utils.getRq({\n // \"url\": \"/cart?retrieve=true\",\n // \"headers\": {\n // \"x-requested-with\": \"XMLHttpRequest\",\n // },\n // \"successCallback\": (response) => {\n // response = utils.parseResponse(response);\n // if (!response) return;\n // if (response.status === 'error') return;\n // handleCartUpdate(response);\n // },\n // \"errorCallback\": () => {}\n // });\n // };\n\n // utils.interceptRequests(easyStoretriggerPaths, (response, url) => {\n // triggerCartUpdate();\n // });\n}\n\nexport function loadCart() {\n // Important: For EasyStore, don't load cart on checkout page as it will cause some bugs with their promotion feature.\n if (window.EasyStore.Checkout) return;\n\n let cartPayload = null;\n if (!cartPayload && typeof global_cart !== 'undefined' && global_cart) cartPayload = global_cart;\n\n if (cartPayload && cartPayload.cart) {\n let response = utils.parseResponse(cartPayload.cart);\n handleCartUpdate(response);\n return;\n }\n\n let successCallback = (response) => {\n response = utils.parseResponse(response);\n if (!response) return;\n if (response.status === 'error') return;\n handleCartUpdate(response.cart || response);\n };\n\n let errorCallback = () => {};\n\n utils.getRq({\n \"url\": \"/cart?retrieve=true\",\n \"successCallback\": successCallback,\n \"errorCallback\": errorCallback,\n \"headers\": {\n \"x-requested-with\": \"XMLHttpRequest\"\n }\n });\n}\n\n","import isEqual from 'lodash/isEqual';\nimport get from 'lodash/get';\nimport * as utils from './Utils';\n\n\nexport function formatCartItem(itemRow) {\n let item = {};\n item['id'] = `${itemRow.id}`;\n item['title'] = itemRow.title;\n item['quantity'] = itemRow.quantity;\n item['price'] = utils.convertCentsToFloat(itemRow.price);\n item['product_id'] = `${itemRow.product_id}`;\n item['product_title'] = itemRow.product_title;\n item['variant_id'] = `${itemRow.variant_id}`;\n item['variant_title'] = itemRow.variant_title;\n return item;\n}\n\nexport function formatCartResponse(response) {\n let data = {};\n data['currency'] = response.currency;\n data['total_price'] = utils.convertCentsToFloat(response.total_price);\n data['original_total_price'] = utils.convertCentsToFloat(response.original_total_price);\n data['items_subtotal_price'] = utils.convertCentsToFloat(response.items_subtotal_price);\n\n let totalDiscount = parseFloat(0);\n if (response.cart_level_discount_applications) {\n response.cart_level_discount_applications.forEach((row) => {\n totalDiscount += utils.convertCentsToFloat(row.total_allocated_amount)\n })\n }\n\n data['total_discount'] = totalDiscount;\n\n let items = [];\n response.items.forEach((itemRow) => {\n let item = formatCartItem(itemRow);\n items.push(item);\n })\n\n data['items'] = items;\n return data;\n}\n\n\nfunction getAddedCartItems(response) {\n const existingData = get(window.OnVoardEventsData, 'shopify_cart', {});\n const existingMapper = {};\n if (existingData.items) {\n existingData.items.forEach((itemRow) => {\n existingMapper[`${itemRow.id}`] = parseInt(itemRow.quantity);\n })\n }\n\n const currentMapper = {};\n if (response.items) {\n response.items.forEach((itemRow) => {\n currentMapper[`${itemRow.id}`] = parseInt(itemRow.quantity);\n })\n }\n\n let addedIds = utils.getAddedCartItemIds(existingMapper, currentMapper);\n let addedItems = [];\n if (response.items) {\n response.items.forEach((itemRow) => {\n let itemId = `${itemRow.id}`;\n if (!addedIds.includes(itemId)) return;\n addedItems.push(itemRow)\n })\n }\n\n return addedItems;\n}\n\nexport function handleCartUpdate(response) {\n let noChange = isEqual(window.OnVoardEventsData['shopify_cart'], response);\n let isNew = !window.OnVoardEventsData['shopify_cart'] ? true : false;\n\n // no cart change\n if (noChange) return;\n\n // if first time loading, don't dispatch added cart items\n let addedCartItems = [];\n if (!isNew) addedCartItems = getAddedCartItems(response);\n\n window.OnVoardEventsData['shopify_cart'] = response;\n utils.dispatchCartUpdateEvent(response);\n addedCartItems.forEach((item) => {\n utils.dispatchAddCartItemEvent(item);\n })\n}\n\nexport function setupCartUpdateEvent() {\n if (window.OnVoardEventsData.setupCartUpdateEvent) return;\n window.OnVoardEventsData.setupCartUpdateEvent = true;\n\n let cartUpdatePaths = [\n \"/cart.js\",\n \"/cart/update.js\",\n \"/cart/update\",\n \"/cart/change.js\",\n \"/cart/change\",\n \"/cart/clear.js\",\n \"/cart/clear\",\n ];\n\n utils.interceptRequests(cartUpdatePaths, (response, url) => {\n response = utils.parseResponse(response);\n if (!response) return;\n handleCartUpdate(response);\n });\n\n let shopifytriggerPaths = [\n \"/cart/add.js\",\n \"/cart/add\",\n ];\n\n let triggerCartUpdate = () => {\n utils.getRq({\n \"url\": \"/cart.js\",\n \"headers\": {\n \"x-requested-with\": \"XMLHttpRequest\",\n },\n \"successCallback\": (response) => {\n response = utils.parseResponse(response);\n if (!response) return;\n handleCartUpdate(response);\n },\n \"errorCallback\": () => {}\n });\n };\n\n utils.interceptRequests(shopifytriggerPaths, (response, url) => {\n triggerCartUpdate();\n });\n}\n\n\nexport function loadCart() {\n let successCallback = (response) => {\n response = utils.parseResponse(response);\n if (!response) return;\n handleCartUpdate(response);\n };\n\n let errorCallback = () => {};\n\n utils.getRq({\n \"url\": \"/cart.js\",\n \"successCallback\": successCallback,\n \"errorCallback\": errorCallback\n });\n}\n\n\n","import isEqual from 'lodash/isEqual';\nimport get from 'lodash/get';\nimport * as utils from './Utils';\n\n\nexport function formatCartItem(itemRow) {\n let item = {};\n item['id'] = `${itemRow.id}`;\n item['title'] = itemRow.title;\n item['quantity'] = itemRow.quantity;\n item['price'] = itemRow.price;\n item['product_id'] = `${itemRow.product_id}`;\n item['product_title'] = itemRow.product_title;\n item['variant_id'] = `${itemRow.variant_id}`;\n item['variant_title'] = itemRow.variant_title;\n return item;\n}\n\nexport function formatCartResponse(response) {\n let data = {};\n data['currency'] = response.currency;\n data['total_price'] = response.total_price;\n data['total_discount'] = response.total_discount;\n\n let items = [];\n if (response.items && response.items.length > 0) {\n response.items.forEach((itemRow) => {\n let item = formatCartItem(itemRow);\n items.push(item);\n })\n }\n data['items'] = items;\n return data;\n}\n\n\nfunction getAddedCartItems(response) {\n const existingData = get(window.OnVoardEventsData, 'shopline_cart', {});\n const existingMapper = {};\n if (existingData.items) {\n existingData.items.forEach((itemRow) => {\n existingMapper[`${itemRow.id}`] = parseInt(itemRow.quantity);\n })\n }\n\n const currentMapper = {};\n if (response.items) {\n response.items.forEach((itemRow) => {\n currentMapper[`${itemRow.id}`] = parseInt(itemRow.quantity);\n })\n }\n\n let addedIds = utils.getAddedCartItemIds(existingMapper, currentMapper);\n let addedItems = [];\n if (response.items) {\n response.items.forEach((itemRow) => {\n let itemId = `${itemRow.id}`;\n if (!addedIds.includes(itemId)) return;\n addedItems.push(itemRow)\n })\n }\n\n return addedItems;\n}\n\nexport function handleCartUpdate(response) {\n if (window.OnVoardData) {\n window.OnVoardData['cart'] = response;\n }\n\n let noChange = isEqual(window.OnVoardEventsData['shopline_cart'], response);\n let isNew = !window.OnVoardEventsData['shopline_cart'] ? true : false;\n\n // no cart change\n if (noChange) return;\n\n // if first time loading, don't dispatch added cart items\n let addedCartItems = [];\n if (!isNew) addedCartItems = getAddedCartItems(response);\n\n window.OnVoardEventsData['shopline_cart'] = response;\n utils.dispatchCartUpdateEvent(response);\n addedCartItems.forEach((item) => {\n utils.dispatchAddCartItemEvent(item);\n })\n}\n\nexport function setupCartUpdateEvent() {\n if (window.OnVoardEventsData.setupCartUpdateEvent) return;\n window.OnVoardEventsData.setupCartUpdateEvent = true;\n\n let cartUpdatePaths = [];\n utils.interceptRequests(cartUpdatePaths, (response, url) => {\n response = utils.parseResponse(response);\n if (!response) return;\n if (!response.data) return;\n handleCartUpdate(response.data);\n });\n\n let shoplinetriggerPaths = [\n \"/leproxy/api/carts/cart\",\n ];\n\n let triggerCartUpdate = () => {\n utils.getRq({\n \"url\": \"/api/carts/ajax-cart\",\n \"headers\": {\n 'Content-Type': 'application/json',\n },\n \"successCallback\": (response) => {\n response = utils.parseResponse(response);\n if (!response) return;\n handleCartUpdate(response);\n },\n \"errorCallback\": () => {}\n });\n };\n\n utils.interceptRequests(shoplinetriggerPaths, (response, url) => {\n triggerCartUpdate();\n });\n}\n\n\nexport function loadCart() {\n let successCallback = (response) => {\n response = utils.parseResponse(response);\n if (!response) return;\n handleCartUpdate(response);\n };\n\n let errorCallback = () => {};\n\n utils.getRq({\n \"url\": \"/api/carts/ajax-cart\",\n \"headers\": {\n 'Content-Type': 'application/json',\n },\n \"successCallback\": successCallback,\n \"errorCallback\": errorCallback\n });\n}\n\n\n","import isEqual from 'lodash/isEqual';\nimport get from 'lodash/get';\nimport * as utils from './Utils';\n\n\nexport function formatCartItem(itemRow) {\n let product = itemRow.product;\n let productTitle = product.name;\n let variantTitle = '';\n\n if (itemRow.optionsSelectionsValues) {\n variantTitle = itemRow.optionsSelectionsValues.map((option) => option.value).join(\"/\") || '';\n }\n\n let item = {};\n item['id'] = `${itemRow.cartItemId}`;\n item['title'] = variantTitle ? `${productTitle} (${variantTitle})` : productTitle;\n item['quantity'] = itemRow.quantity;\n item['price'] = product.price;\n item['product_id'] = `${product.id}`;\n item['product_title'] = productTitle;\n item['variant_id'] = null; // wix doesn't provide variant ID\n item['variant_title'] = variantTitle;\n return item;\n}\n\nexport function formatCartResponse(response) {\n let data = {};\n data['currency'] = response.convertedCurrencyFormat.code;\n data['total_price'] = response.convertedTotals.subTotal;\n data['total_discount'] = response.convertedTotals.discount;\n\n let items = [];\n response.items.forEach((itemRow) => {\n let item = formatCartItem(itemRow);\n items.push(item);\n })\n\n data['items'] = items;\n return data;\n}\n\n\nfunction getAddedCartItems(response) {\n const existingData = get(window.OnVoardEventsData, 'wix_cart', {});\n\n const existingMapper = {};\n if (existingData.items) {\n existingData.items.forEach((itemRow) => {\n existingMapper[`${itemRow.cartItemId}`] = parseInt(itemRow.quantity);\n })\n }\n\n const currentMapper = {};\n if (response.items) {\n response.items.forEach((itemRow) => {\n currentMapper[`${itemRow.cartItemId}`] = parseInt(itemRow.quantity);\n })\n }\n\n let addedIds = utils.getAddedCartItemIds(existingMapper, currentMapper);\n let addedItems = [];\n if (response.items) {\n response.items.forEach((itemRow) => {\n let itemId = `${itemRow.cartItemId}`;\n if (!addedIds.includes(itemId)) return;\n addedItems.push(itemRow)\n })\n }\n\n return addedItems;\n}\n\nexport function handleCartUpdate(response) {\n let noChange = isEqual(window.OnVoardEventsData['wix_cart'], response);\n let isNew = !window.OnVoardEventsData['wix_cart'] ? true : false;\n\n // no cart change\n if (noChange) return;\n\n // if first time loading, don't dispatch added cart items\n let addedCartItems = [];\n if (!isNew) addedCartItems = getAddedCartItems(response);\n\n window.OnVoardEventsData['wix_cart'] = response;\n utils.dispatchCartUpdateEvent(response);\n addedCartItems.forEach((item) => {\n utils.dispatchAddCartItemEvent(item);\n })\n}\n\nexport function setupCartUpdateEvent() {\n if (window.OnVoardEventsData.setupCartUpdateEvent) return;\n window.OnVoardEventsData.setupCartUpdateEvent = true;\n\n document.addEventListener('ov_trigger_cart_reload', () => {\n loadCart();\n });\n}\n\nexport function loadCart() {\n import('common/wix-utils')\n .then((wixUtils) => {\n wixUtils.fetchCartData({callback: handleCartUpdate});\n });\n}\n\n\n\n","import isEqual from 'lodash/isEqual';\nimport get from 'lodash/get';\nimport * as utils from './Utils';\n\n\n\nexport function formatCartItem(itemRow) {\n let item = {};\n item['id'] = `${itemRow.key}`;\n item['title'] = itemRow.title;\n item['quantity'] = itemRow.quantity;\n item['price'] = itemRow.price;\n item['product_id'] = `${itemRow.product_id}`;\n item['product_title'] = itemRow.product_name;\n item['variant_id'] = `${itemRow.variation_id}`;\n item['variant_title'] = itemRow.variation_name;\n return item;\n}\n\nexport function formatCartResponse(response) {\n let data = {};\n data['currency'] = response.currency;\n data['total_price'] = response.subtotal;\n data['total_discount'] = response.discount_total;\n\n let items = [];\n response.items.forEach((itemRow) => {\n let item = formatCartItem(itemRow);\n items.push(item);\n })\n\n data['items'] = items;\n return data;\n}\n\n\nfunction getAddedCartItems(response) {\n const existingData = get(window.OnVoardEventsData, 'woocommerce_cart', {});\n\n const existingMapper = {};\n if (existingData.items) {\n existingData.items.forEach((itemRow) => {\n existingMapper[`${itemRow.key}`] = parseInt(itemRow.quantity);\n })\n }\n\n const currentMapper = {};\n if (response.items) {\n response.items.forEach((itemRow) => {\n currentMapper[`${itemRow.key}`] = parseInt(itemRow.quantity);\n })\n }\n\n let addedIds = utils.getAddedCartItemIds(existingMapper, currentMapper);\n let addedItems = [];\n if (response.items) {\n response.items.forEach((itemRow) => {\n let itemId = `${itemRow.key}`;\n if (!addedIds.includes(itemId)) return;\n addedItems.push(itemRow)\n })\n }\n\n return addedItems;\n}\n\nexport function handleCartUpdate(response) {\n let noChange = isEqual(window.OnVoardEventsData['woocommerce_cart'], response);\n let isNew = !window.OnVoardEventsData['woocommerce_cart'] ? true : false;\n\n // no cart change\n if (noChange) return;\n\n // if first time loading, don't dispatch added cart items\n let addedCartItems = [];\n if (!isNew) addedCartItems = getAddedCartItems(response);\n\n window.OnVoardEventsData['woocommerce_cart'] = response;\n utils.dispatchCartUpdateEvent(response);\n addedCartItems.forEach((item) => {\n utils.dispatchAddCartItemEvent(item);\n })\n}\n\nexport function setupCartUpdateEvent() {\n if (window.OnVoardEventsData.setupCartUpdateEvent) return;\n window.OnVoardEventsData.setupCartUpdateEvent = true;\n if (typeof jQuery === 'undefined') return;\n\n let triggerCartUpdate = () => {\n utils.getRq({\n \"url\": \"/wp-json/onvoard/get-cart\",\n \"headers\": {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\",\n \"x-requested-with\": \"XMLHttpRequest\",\n },\n \"successCallback\": (response) => {\n response = utils.parseResponse(response);\n if (!response) return;\n if (response.status === 'error') return;\n handleCartUpdate(response);\n },\n \"errorCallback\": () => {}\n });\n };\n\n let cartEvents = [\n \"added_to_cart\",\n \"removed_from_cart\",\n \"updated_cart_totals\",\n ];\n\n jQuery(function($) {\n cartEvents.forEach((cartEvent) => {\n $(document.body).on(cartEvent, () => {\n triggerCartUpdate();\n });\n })\n });\n}\n\nexport function loadCart() {\n let successCallback = (response) => {\n response = utils.parseResponse(response);\n if (!response) return;\n if (response.status === 'error') return;\n handleCartUpdate(response);\n };\n\n let errorCallback = () => {};\n\n utils.getRq({\n \"url\": \"/wp-json/onvoard/get-cart\",\n \"headers\": {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\",\n \"x-requested-with\": \"XMLHttpRequest\",\n },\n \"successCallback\": successCallback,\n \"errorCallback\": errorCallback,\n });\n}\n\n","import get from 'lodash/get';\nimport * as utils from './Utils';\nimport * as bigCommerceUtils from './BigCommerce';\nimport * as easyStoreUtils from './EasyStore';\nimport * as shopifyUtils from './Shopify';\nimport * as shoplineUtils from './Shopline';\nimport * as shopwareUtils from './Shopware';\nimport * as wixUtils from './Wix';\nimport * as wooCommerceUtils from './WooCommerce';\n\n\nexport function setupCartUpdateEvent() {\n if (!window.OnVoardEventsReady) window.OnVoardEventsReady = {};\n if (window.OnVoardEventsReady['cart_update']) return;\n\n let platform = utils.getEcommercePlatform();\n if (platform === 'shopify') {\n shopifyUtils.setupCartUpdateEvent();\n }\n\n if (platform === 'bigcommerce') {\n bigCommerceUtils.setupCartUpdateEvent();\n }\n\n if (platform === 'easystore') {\n easyStoreUtils.setupCartUpdateEvent();\n }\n\n if (platform === 'shopline') {\n shoplineUtils.setupCartUpdateEvent();\n }\n\n if (platform === 'shopware') {\n shopwareUtils.setupCartUpdateEvent();\n }\n\n if (platform === 'wix') {\n wixUtils.setupCartUpdateEvent();\n }\n\n if (platform === 'woocommerce') {\n wooCommerceUtils.setupCartUpdateEvent();\n }\n\n window.OnVoardEventsReady['cart_update'] = 1;\n}\n\nexport function loadCart() {\n let platform = utils.getEcommercePlatform();\n\n if (platform === 'shopify') {\n shopifyUtils.loadCart();\n }\n\n if (platform === 'bigcommerce') {\n bigCommerceUtils.loadCart();\n }\n\n if (platform === 'easystore') {\n easyStoreUtils.loadCart();\n }\n\n if (platform === 'shopline') {\n shoplineUtils.loadCart();\n }\n\n if (platform === 'shopware') {\n shopwareUtils.loadCart();\n }\n\n if (platform === 'wix') {\n wixUtils.loadCart();\n }\n\n if (platform === 'woocommerce') {\n wooCommerceUtils.loadCart();\n }\n}\n\nexport function formatCartResponse(response) {\n let platform = utils.getEcommercePlatform();\n\n if (platform === 'shopify') {\n return shopifyUtils.formatCartResponse(response);\n }\n\n if (platform === 'bigcommerce') {\n return bigCommerceUtils.formatCartResponse(response);\n }\n\n if (platform === 'easystore') {\n return easyStoreUtils.formatCartResponse(response);\n }\n\n if (platform === 'shopline') {\n return shoplineUtils.formatCartResponse(response);\n }\n\n if (platform === 'shopware') {\n return shopwareUtils.formatCartResponse(response);\n }\n\n if (platform === 'wix') {\n return wixUtils.formatCartResponse(response);\n }\n\n if (platform === 'woocommerce') {\n return wooCommerceUtils.formatCartResponse(response);\n }\n\n return response;\n}\n\nexport function formatCartItem(response) {\n let platform = utils.getEcommercePlatform();\n\n if (platform === 'shopify') {\n return shopifyUtils.formatCartItem(response);\n }\n\n if (platform === 'bigcommerce') {\n return bigCommerceUtils.formatCartItem(response);\n }\n\n if (platform === 'easystore') {\n return easyStoreUtils.formatCartItem(response);\n }\n\n if (platform === 'shopline') {\n return shoplineUtils.formatCartItem(response);\n }\n\n if (platform === 'shopware') {\n return shopwareUtils.formatCartItem(response);\n }\n\n if (platform === 'wix') {\n return wixUtils.formatCartItem(response);\n }\n\n if (platform === 'woocommerce') {\n return wooCommerceUtils.formatCartItem(response);\n }\n\n return response;\n}\n\nexport function checkCartDataLoaded() {\n let cartResponse = utils.getExistingCartResponse();\n if (cartResponse) return true;\n return false;\n}\n\nexport function loadInitialCartData() {\n let cartResponse = utils.getExistingCartResponse();\n\n if (cartResponse) {\n utils.dispatchCartUpdateEvent(cartResponse);\n return;\n }\n\n loadCart();\n}\n\n"],"names":["formatCartItem","itemRow","variantTitle","payload","options","join","item","id","concat","label","quantity","parseFloat","price","unitPrice","productId","variantId","formatCartResponse","response","data","window","OnVoardData","active_currency","totalPrice","items","lineItems","forEach","push","handleCartUpdate","noChange","isEqual","OnVoardEventsData","isNew","addedCartItems","existingData","get","existingMapper","parseInt","currentMapper","addedIds","utils","addedItems","itemId","includes","getAddedCartItems","fetchCart","callback","ovItemsMapping","ovInitialItems","ovCart","fetch","method","headers","then","res","json","ovCartVariantIds","length","referencedId","Promise","resolve","reject","Response","JSON","stringify","body","elements","row","parentId","ovNewLineItems","setupCartUpdateEvent","url","setupCheckoutOffCanvasEvent","event","CustomEvent","detail","document","dispatchEvent","loadCart","parseResponse","Object","parse","e","convertCentsToFloat","cents","toFixed","convertCentsToAmount","getAddedCartItemIds","currentQuantity","dispatchAddCartItemEvent","dispatchCartUpdateEvent","getExistingCartResponse","platform","comUtils","productTitle","name","map","option","value","salePrice","physicalItems","digitalItems","status","cart","title","product_id","product_name","variant_id","variant_name","flattenCartItems","flattenItems","subItem","freebie","i_id","cartItems","product_title","variant_title","product","optionsSelectionsValues","cartItemId","wixUtils","fetchCartData","key","variation_id","variation_name","jQuery","cartEvents","$","cartEvent","on","OnVoardEventsReady","shopifyUtils","bigCommerceUtils","EasyStore","Checkout","shoplineUtils","shopwareUtils","addEventListener","wooCommerceUtils","cartPayload","global_cart","easyStoreUtils","currency","total_price","original_total_price","items_subtotal_price","totalDiscount","cart_level_discount_applications","total_allocated_amount","code","cartAmount","discountAmount","total_discount","convertedCurrencyFormat","convertedTotals","subTotal","discount","subtotal","discount_total","checkCartDataLoaded","loadInitialCartData","cartResponse"],"sourceRoot":""}