{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_belkin/cartridge/client/default/js/gtm.js"],"names":[],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFa;;AAEb;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,gDAAgD;;AAEhD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,eAAe;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,YAAY;AAC/D,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;;AAEA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,CAAC","file":"default/js/gtm.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./cartridges/app_belkin/cartridge/client/default/js/gtm.js\");\n","'use strict';\n\n/* eslint-disable no-underscore-dangle */\n\nvar gtm = {\n url: '',\n getPageAction: function () {\n return $('.page').data('action');\n },\n requestProductDetails: function (data, targetData, method) {\n $.ajax({\n url: gtm.url,\n method: method,\n data: data,\n dataType: 'json',\n success: function (response) {\n gtm.processResponse(response.productDetails, targetData);\n },\n error: function () {\n console.log('Error in getting GTM data');\n }\n });\n },\n getProductIDS: function (elem) {\n var details = elem;\n var pids = [];\n details.each(function (i) {\n var pid = $(this).data('pid');\n pids.push(pid);\n });\n\n if (pids.length >= 0) {\n pids = pids.join(',');\n }\n\n return pids;\n },\n processResponse: function (response, targetData, targetKey) {\n try {\n if (response.length > 0) {\n var currTargetData = gtm.targetData[targetData];\n var evn = currTargetData.data.event;\n\n var targetObj = Object.create({});\n\n // deep clone target object\n $.extend(true, targetObj, currTargetData.data);\n\n if (typeof (response) === 'string') {\n // append string response in target property\n if (typeof (targetKey) !== 'undefined') {\n gtm.getProperty(targetObj, currTargetData.keys)[targetKey] = response;\n }\n } else {\n // push product details\n response.forEach(function (v) {\n // clean product details\n var detail = v;\n\n // check if raw product details\n if ('productName' in v) {\n detail = productDetail(v);\n }\n\n gtm.getProperty(targetObj, currTargetData.keys).push(detail);\n });\n }\n\n dataLayer.push(targetObj);\n }\n } catch (e) {\n console.log('GTM: process response error');\n }\n },\n init: function () {\n gtm.action.onload();\n var events = gtm.action.events;\n Object.keys(events).forEach(function (key) {\n if (typeof events[key] === 'function') {\n events[key]();\n }\n });\n },\n getProperty: getProperty, // function coming from backend\n targetData: gtmSchema, // object coming from backend\n ajaxHook: function (callback) {\n $(document).ajaxComplete(function (e, request, settings) {\n var response = JSON.parse(request.responseText);\n callback(response);\n $(e.currentTarget).off('ajaxComplete');\n $('button.gtm-disabled').removeClass('gtm-disabled');\n });\n $(document).ajaxError(function (e, request, settings) {\n console.log('Error in getting GTM data');\n $(e.currentTarget).off('ajaxError');\n });\n return false;\n },\n action: {\n onload: function () {\n // add some onload script here\n },\n events: {\n // add all event listener triggered thru click\n\n newsletterSignup: function () {\n $('body').on('submit', '#newsletter-signup', function (e) {\n var email = $('#dwfrm_mcsubscribe_email').val();\n\n var data = {\n event: 'signup.newsletter.footer',\n email: email\n };\n\n dataLayer.push(data);\n });\n },\n\n productListClick: function () {\n $('body').on('click', '.product-tile__wrapper a:first-of-type', function (e) {\n var plpData = $(this).data('gtmplp');\n if (plpData && plpData.id) {\n var category = plpData.category || 'unknown';\n var data = {\n event: 'ecom.product.click',\n ecommerce: {\n click: {\n actionField: {list: category},\n products: []\n }\n }\n };\n data.ecommerce.click.products.push(plpData);\n dataLayer.push(data);\n }\n });\n },\n showMore: function () {\n $('.container').on('click', '.show-more button', function (e) {\n e.stopPropagation();\n var showMoreUrl = $(this).data('url');\n e.preventDefault();\n\n var queryStr = showMoreUrl.split('?')[1];\n gtm.url = gtmUrls.searchDetails + '?' + queryStr;\n gtm.requestProductDetails({}, 'PLP', 'GET');\n });\n },\n addToCart: function () {\n var selectedVariantId = '';\n /**\n * Create additional listener to existing add to cart function.\n */\n $('body').on('product:beforeAddToCart', function (e, data) {\n selectedVariantId = $(data).data('vid');\n if (!selectedVariantId || typeof selectedVariantId === 'undefined' || selectedVariantId === undefined || selectedVariantId === '') {\n selectedVariantId = $('.product-detail').data('vid');\n if (!selectedVariantId) {\n selectedVariantId = $(data).data('pid');\n }\n }\n // var selectedVariantElem = $('.product-detail[data-pid=\"' + selectedVariantId + '\"]');\n\n // check if not bundle\n // if (selectedVariantElem.find('.product-bundle').length === 0 &&\n // selectedVariantElem.find('.bundle-items').length === 0) {\n // selectedVariantId = selectedVariantElem.find('.product-id').text();\n // }\n });\n\n $('body').on('product:afterAddToCart', function (e, data) {\n var items = data.cart.items;\n var productDetails = [];\n\n items.forEach(function (item) {\n // attach selected item\n var detail = productDetail(item, null, 1);\n detail.id = $('.product-detail').data('analytics-id');\n if (!detail.id || typeof detail.id === 'undefined' || detail.id === undefined || detail.id === '') {\n detail.id = item.id;\n }\n if (detail.variant === selectedVariantId) {\n productDetails.push(detail);\n }\n });\n gtm.processResponse(productDetails, 'AddToCart');\n });\n },\n removeLineItemfromCart: function () {\n $('body').on('click', '.cart-delete-confirmation-btn', function (e) {\n e.preventDefault();\n var pid = $(this).data('pid');\n gtm.ajaxHook(function (req) {\n gtm.url = gtmUrls.productDetails;\n gtm.requestProductDetails({ pids: pid }, 'RemoveLineItemfromCart', 'POST');\n });\n });\n },\n cartUpdateQty: function () {\n $('body').on('change', '.quantity-form > .quantity', function () {\n var _this = $(this);\n var preQty = _this.attr('data-pre-select-qty');\n var newQty = _this.val();\n var pid = _this.data('pid');\n\n var target = 'CartIncreaseQty';\n if (preQty > newQty) {\n target = 'CartDecreaseQty';\n }\n\n gtm.ajaxHook(function (response) {\n var items = response.items;\n var productDetails = [];\n\n items.forEach(function (item) {\n if (item.id === pid) {\n var detail = productDetail(item);\n productDetails.push(detail);\n }\n });\n\n gtm.processResponse(productDetails, target);\n\n _this.attr('data-pre-select-qty', newQty);\n });\n });\n },\n checkout: function () {\n // edit sections btn\n $('.customer-summary .edit-button').on('click', function (e) {\n e.preventDefault();\n\n gtm.processResponse('Pre-auth', 'CheckoutLogin', 'option');\n });\n\n $('.shipping-summary .edit-button').on('click', function (e) {\n e.preventDefault();\n\n var shippingOpt = $('.shipping-method__name .form-check-input:checked').val();\n gtm.processResponse(shippingOpt, 'ShippingOption', 'option');\n });\n\n $('.payment-summary .edit-button').on('click', function (e) {\n e.preventDefault();\n\n var paymentOpt = $('.payment-options .active').closest('[data-method-id]').data('method-id');\n gtm.processResponse(paymentOpt, 'PaymentOption', 'option');\n });\n\n // submit sections\n $('button.submit-customer, button.submit-customer-login').on('click', function (e) {\n e.preventDefault();\n\n gtm.ajaxHook(function (response) {\n gtm.processResponse(response.order.items.items, 'Shipping');\n });\n });\n\n $('button.submit-shipping').click(function (e) {\n e.preventDefault();\n\n var $btn = $('.submit-shipping');\n var isEnabled = !$btn.is('.gtm-disabled');\n\n if (isEnabled) {\n $btn.addClass('gtm-disabled');\n gtm.ajaxHook(function (response) {\n gtm.processResponse(response.shippingMethod, 'ShippingOption', 'option');\n gtm.processResponse(response.order.items.items, 'Payment');\n });\n }\n });\n\n $('button.submit-payment').click(function (e) {\n e.preventDefault();\n\n var $btn = $('.submit-shipping');\n var isEnabled = !$btn.is('.gtm-disabled');\n\n if (isEnabled) {\n $btn.addClass('gtm-disabled');\n gtm.ajaxHook(function (response) {\n if (!response.error) {\n gtm.processResponse(response.paymentMethod.value, 'PaymentOption', 'option');\n gtm.processResponse(response.order.items.items, 'OrderReview');\n }\n });\n }\n });\n }\n } // end\n }\n};\n\nwindow.addEventListener('load', function () {\n gtm.init();\n});\n"],"sourceRoot":""}