@ecomplus/widget-analytics
Version:
Storefront plugin to handle GA Universal Analytics
2 lines • 6.39 kB
JavaScript
var widgetAnalytics=function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/assets/vendor/",n(n.s=3)}([function(e,t){e.exports=void 0},function(e,t){e.exports=void 0},function(e,t){e.exports=void 0},function(e,t,n){"use strict";n.r(t);var o=n(1),r=n(0),c=n.n(r),i=n(2),a=n.n(i);const s=o.$ecomConfig.get("currency")||"BRL",u=e=>{const[t,...n]=Object(o.name)(e).split(" / "),r={name:t,id:e.sku,price:Object(o.price)(e).toFixed(2)};n&&n.length?r.variant=n.join(" / "):e.variation_id&&(r.name=t.replace(window.__customGTMVariantRegex||/\s[^\s]+$/,""),r.variant=t.replace(r.name,"").trim()),e.quantity&&(r.quantity=e.quantity);const{categories:c,brands:i}=e;if(c&&c.length){r.category=c[c.length-1];for(let e=0;e<c.length-1&&(r["dimension"+(e+1)]=c[e],4!==e);e++);}return i&&i.length&&(r.brand=i[i.length-1]),r};const d=e=>{const t={item_id:e.id,item_name:e.name,price:e.price,quantity:Math.abs(e.quantity||1)};return e.category&&(t.item_category=e.category),e.brand&&(t.item_brand=e.brand),t},{location:p}=window;var m=(e,t,n)=>{const r=()=>setTimeout(()=>{e("event","page_view",{page_title:document.title||"Checkout",page_path:"/"+p.hash.split("/")[1],send_to:t})},300);let i=!1;(e=>{const t=window.storefrontApp&&window.storefrontApp.router;if(t){let n,r,i;const d=()=>{const e=[];return c.a.data&&Array.isArray(c.a.data.items)&&c.a.data.items.forEach(t=>{e.push(u(t))}),e},p=t=>{e.push({ecommerce:null}),e.push({event:"eec.checkout_option",ecommerce:{currencyCode:s,checkout_option:{actionField:t}}})},m=(t,o)=>{const c={step:t,option:o};1===t&&n||2===t&&r||(e.push({ecommerce:null}),e.push({event:"eec.checkout",ecommerce:{currencyCode:s,checkout:{actionField:c,products:d()}}}),e.push({event:"checkout"}),1===t?n=!0:r=!0)},l=(t,n)=>{if(!i){if(window.localStorage.getItem("gtm.orderIdSent")!==t){let r;if(n)try{r=JSON.parse(n)}catch(e){}const{amount:i}=r||window.storefrontApp,u={id:t,revenue:(i&&i.total||c.a.data&&c.a.data.subtotal||0).toFixed(2)};i&&(void 0!==i.freight&&(u.shipping=i.freight.toFixed(2)),void 0!==i.tax&&(u.tax=i.tax.toFixed(2))),r&&(["shipping_method_label","payment_method_label"].forEach((e,t)=>{r[e]&&p({step:3+t,option:r[e]})}),r.extra_discount&&r.extra_discount.discount_coupon&&(u.coupon=r.extra_discount.discount_coupon));let m=1;if(window.__sendGTMExtraPurchaseData){const t=a.a.getCustomer(),n={};let r;t&&(n.customerDisplayName=Object(o.nickname)(t),t.name&&(n.customerGivenName=t.name.given_name,n.customerFamilyName=t.name.family_name),n.customerEmail=t.main_email,n.customerPhone=Object(o.phone)(t),r=t.addresses&&t.addresses[0]);try{const e=JSON.parse(window.sessionStorage.getItem("ecomCustomerAddress"));"object"==typeof r&&r?Object.assign(r,e):r=e}catch{}r&&r.zip&&(n.shippingAddrZip=r.zip,n.shippingAddrStreet=r.street,n.shippingAddrNumber=r.number,r.street&&r.number&&(n.shippingAddrStreet+=", "+r.number),n.shippingAddrCity=r.city,n.shippingAddrProvinceCode=r.province_code),e.push({event:"purchaseExtraData",...n}),m=100}setTimeout(()=>{e.push({ecommerce:null}),e.push({event:"eec.purchase",ecommerce:{currencyCode:s,purchase:{actionField:u,products:d()}}})},m),window.localStorage.setItem("gtm.orderIdSent",t)}i=!0}};let h;const f=({name:e,params:t})=>{switch(e){case"cart":m(1,"Review Cart");break;case"checkout":t.step&&r||m(2,"Login / Signup"),1===Number(t.step)?m(3,"Shipping Method"):2===Number(t.step)&&m(4,"Payment Method");break;case"confirmation":clearTimeout(h),t.json?l(t.id,decodeURIComponent(t.json)):h=setTimeout(()=>{l(t.id)},1500)}};t.currentRoute&&f(t.currentRoute),t.afterEach(f)}})({push:({event:t,ecommerce:o})=>{if(!t)return;let c,a;switch(t){case"eec.checkout":case"eec.checkout_option":c=o&&o.checkout,c&&(i||(e("event","begin_checkout",{items:c.products.map(d)}),i=!0),a=c.actionField&&c.actionField.step),e("event","set_checkout_option",{checkout_step:a||(p.hash.startsWith("#/cart")?1:2)});break;case"eec.purchase":r(),c=o&&o.purchase,c&&c.actionField&&(e("event","purchase",{transaction_id:c.actionField.id,affiliation:document.querySelector('meta[name="author"]').getAttribute("content")||"Shop",value:Number(c.actionField.revenue),currency:o.currencyCode,tax:c.actionField.tax?Number(c.actionField.tax):0,shipping:c.actionField.shipping?Number(c.actionField.shipping):0,items:c.products.map(d)}),n&&e("event","conversion",{send_to:n,value:Number(c.actionField.revenue),currency:o.currencyCode,transaction_id:c.actionField.id}));break;default:r()}}})},l=e=>{(e=>{const t={};setTimeout(()=>{c.a.data.items.forEach(e=>{t[e.sku]=u(e)})},10);const n=n=>{const o=u(n);e.push({ecommerce:null}),e.push({event:"eec.add",ecommerce:{currencyCode:s,add:{products:[o]}}}),e.push({event:"addToCart"}),t[n.sku]=o},o=n=>{const o=t[n.sku];e.push({ecommerce:null}),e.push({event:"eec.remove",ecommerce:{currencyCode:s,remove:{products:[o?Object.assign({},o):u(n)]}}}),e.push({event:"removeFromCart"}),delete t[n.sku]};c.a.on("addItem",({item:e})=>n(e)),c.a.on("increaseItemQnt",({item:e})=>{const r=t[e.sku];if(r){const t=e.quantity-r.quantity;t>0?n({...e,quantity:t}):o({...e,quantity:-t})}else n(e)}),c.a.on("removeItem",({item:e})=>o(e)),c.a.on("clear",()=>{for(const e in t)t[e]&&o(t[e])})})({push:({event:t,ecommerce:n})=>{if(n&&("eec.add"===t||"eec.remove"===t)){const o="eec.add"===t,r=n[o?"add":"remove"];r&&r.products&&e("event",o?"add_to_cart":"remove_from_cart",{items:r.products.map(d)})}}})};t.default=(e={})=>{const{gaTrackingId:t,googleAdsId:n}=e,{gtag:o}=window;"function"==typeof o&&(m(o,t,n),l(o))}}]).default;
//# sourceMappingURL=widget-analytics.var.min.js.map