UNPKG

lin3s-react-analytics-enhanced-ecommerce-sylius

Version:

Transformations to turn Sylius objects into Enhanced Eccomerce Data Layers

179 lines (163 loc) 5.81 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var getCategoryForProduct = function getCategoryForProduct(product) { return product.taxons && product.taxons.main ? product.taxons.main : ''; }; var getVariantPrice = function getVariantPrice(product) { return product.variants && product.variants.length > 0 && product.variants[0].price ? (product.variants[0].price.price || product.variants[0].price.current) / 100 : 0; }; var transformActionField = function transformActionField(order, params) { return { id: order.tokenValue, affiliation: params.affiliation || 'Online Store', revenue: order.totals.total / 100, tax: order.totals.taxes / 100, shipping: order.totals.shipping / 100 }; }; var transformProducts = function transformProducts(items, params) { return items.map(function (item) { return _extends({ name: item.product.name, id: item.product.code, variant: item.product.variants[0].code, price: item.total / item.quantity / 100, brand: item.brand || params.brand, category: getCategoryForProduct(item.product), quantity: item.quantity }, item.customFields); }); }; var transformProductsForImpression = function transformProductsForImpression(products, params) { return products.map(function (product, index) { return _extends({ name: product.name, id: product.code, category: getCategoryForProduct(product), brand: product.brand || params.brand, list: params.list, price: getVariantPrice(product), position: (params.initialIndex || 0) + index + 1 }, product.customFields); }); }; var transformProductsForCart = function transformProductsForCart(items, params) { return items.map(function (item) { return _extends({ name: item.product.name, id: item.product.code, variant: item.product.variants[0].code, price: getVariantPrice(item.product), brand: item.product.brand || params.brand, category: getCategoryForProduct(item.product), quantity: item.quantity }, item.customFields); }); }; var transformOrderForDL = function transformOrderForDL(order) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return { event: 'purchase', ecommerce: { purchase: { actionField: transformActionField(order, params), products: transformProducts(order.items, params) } } }; }; var transformProductsForImpressionDL = function transformProductsForImpressionDL(products) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return { event: 'productImpressions', ecommerce: { currencyCode: params.currency || 'EUR', impressions: transformProductsForImpression(products, params) } }; }; var transformProductForDetailDL = function transformProductForDetailDL(product) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return { event: 'productDetail', ecommerce: { detail: { products: [_extends({ name: product.name, id: product.code, price: getVariantPrice(product), category: getCategoryForProduct(product), brand: product.brand || params.brand }, product.customFields)] } } }; }; var transformProductForClickDL = function transformProductForClickDL(product) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return { event: 'productClick', ecommerce: { click: { actionField: { list: params.list }, products: [_extends({ name: product.name, id: product.code, price: getVariantPrice(product), category: getCategoryForProduct(product), position: params.position }, product.customFields)] } } }; }; var transformCartItemsForCheckoutDL = function transformCartItemsForCheckoutDL(cartItems) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return { event: 'checkout', ecommerce: { checkout: { actionField: _extends({ step: params.step || 1 }, params.customActionField), products: transformProducts(cartItems, params) } } }; }; var transformAddToCartDL = function transformAddToCartDL(products) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return { event: 'addToCart', ecommerce: { currencyCode: params.currency || 'EUR', add: { products: transformProductsForCart(products, params) } } }; }; var transformRemoveFromCartDL = function transformRemoveFromCartDL(products) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return { event: 'removeFromCart', ecommerce: { currencyCode: params.currency || 'EUR', add: { products: transformProductsForCart(products, params) } } }; }; exports.transformOrderForDL = transformOrderForDL; exports.transformProductsForImpressionDL = transformProductsForImpressionDL; exports.transformProductForDetailDL = transformProductForDetailDL; exports.transformProductForClickDL = transformProductForClickDL; exports.transformCartItemsForCheckoutDL = transformCartItemsForCheckoutDL; exports.transformAddToCartDL = transformAddToCartDL; exports.transformRemoveFromCartDL = transformRemoveFromCartDL;