{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_storefront_shoeshow/cartridge/client/default/js/components/scroll.js","webpack:///./cartridges/app_storefront_shoeshow/cartridge/client/default/js/gtm/setdatalayer.js","webpack:///./cartridges/app_storefront_shoeshow/cartridge/client/default/js/modalFocus.js","webpack:///./cartridges/app_storefront_shoeshow/cartridge/client/default/js/storeLocator.js","webpack:///./cartridges/app_storefront_shoeshow/cartridge/client/default/js/storeLocator/storeLocator.js","webpack:///./cartridges/app_storefront_shoeshow/cartridge/client/default/js/util.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;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,KAAK;AACL;;;;;;;;;;;;;ACZa;;AAEb;AACA;AACA,mBAAmB,mCAAmC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,uCAAuC;AAC7E,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,uCAAuC;AAC7E,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,UAAU;AAChD;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,4CAA4C;AAClF,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,UAAU;AAChD;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,UAAU;AAChD;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB;AACA,SAAS;AACT,2BAA2B,uBAAuB;AAClD;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;AACL;;;;;;;;;;;;;AC9Za;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;AC/Ca;;AAEb,qBAAqB,mBAAO,CAAC,wFAAQ;;AAErC;AACA,mBAAmB,mBAAO,CAAC,kIAA6B;AACxD,CAAC;;;;;;;;;;;;;ACND;AACa;;AAEb,mBAAmB,mBAAO,CAAC,mHAAsB;AACjD,mBAAmB,mBAAO,CAAC,iHAAqB;AAChD,iBAAiB,mBAAO,CAAC,qGAAe;;AAExC;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,2DAA2D;AAC/E,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB,0DAA0D;;AAE1D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;ACzRa;;AAEb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA","file":"default/js/storeLocator.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_storefront_shoeshow/cartridge/client/default/js/storeLocator.js\");\n","'use strict';\n\nmodule.exports = {\n scrollTo: function ($anchor, offset) {\n offset = offset || 0;\n $([document.documentElement, document.body]).animate(\n {\n scrollTop: $anchor.offset().top - offset,\n },\n 500\n );\n },\n};\n","'use strict';\n\nfunction gtmproduct(data) {\n var gtmdata = [];\n for (var x = 0; x < data.order.items.items.length; x++) {\n gtmdata.push({\n id: data.order.items.items[x].masterID,\n name: setReg(data.order.items.items[x].productName),\n price: data.order.items.items[x].price.sales.decimalPrice,\n brand: data.order.items.items[x].brand != null ? setReg(data.order.items.items[x].brand) : '',\n category: setReg(data.order.items.items[x].categoryFullPath),\n variant:\n setVariant(\n data.order.items.items[x].variationAttributes[0] != null\n ? data.order.items.items[x].variationAttributes[0].displayValue\n : '',\n 'c'\n ) +\n setVariant(\n data.order.items.items[x].variationAttributes[1] != null\n ? data.order.items.items[x].variationAttributes[1].displayValue\n : null,\n 's'\n ) +\n setVariant(\n data.order.items.items[x].variationAttributes[2] != null\n ? data.order.items.items[x].variationAttributes[2].displayValue\n : '',\n 'w'\n ),\n quantity: data.order.items.items[x].quantity,\n });\n }\n return gtmdata;\n}\n\nfunction gtmPrice(data) {\n var mapType = data.mapType;\n if (mapType && data.mapFirstRevealOurPrice) {\n if (mapType === 'B' || mapType === 'C') {\n return 0.0;\n }\n }\n return data.price.sales.value;\n}\nfunction setReg(data) {\n // Decode all HTML entities in the given parameter.\n var temp = document.createElement('div');\n temp.innerHTML = data;\n return temp.childNodes.length === 0 ? '' : temp.childNodes[0].nodeValue;\n}\n\nfunction convertHalfSize(size) {\n var sizetoConvert = size.toString(),\n halfsize = sizetoConvert.match(/\\½/i) ? true : false;\n\n if (halfsize) {\n halfsize = sizetoConvert.replace(/\\½/g, '');\n return parseInt(halfsize) + 0.5;\n } else {\n return size;\n }\n}\n\nfunction setVariant(data, type) {\n var result = '';\n\n switch (type) {\n case 'c':\n if (data != null && data.length > 0) {\n result = 'Color:' + data;\n }\n break;\n\n case 's':\n if (data != null) {\n result = ',Size:' + convertHalfSize(data);\n }\n break;\n\n case 'w':\n if (data != null && data.length > 0) {\n result = ',Width:' + data;\n }\n break;\n\n default:\n result = '';\n }\n\n return result;\n}\n\nmodule.exports = {\n MiniCartIncreaseQty: function (data) {\n try {\n ssDataLayer.push({\n event: 'ecom.cart.add',\n ecommerce: {\n add: {\n products: [\n {\n id: data.masterid,\n name: setReg(data.name),\n price: data.price,\n brand: setReg(data.brand),\n category: setReg(data.category),\n variant:\n setVariant(data.color, 'c') +\n setVariant(data.size, 's') +\n setVariant(data.width, 'w'),\n quantity: eval(data.newQty + '-' + data.oldQty),\n },\n ],\n },\n },\n });\n } catch (ex) {\n console.log('GTM-MiniCartIncreaseQty Error:' + ex);\n }\n },\n\n MiniCartDecreaseQty: function (data) {\n try {\n ssDataLayer.push({\n event: 'ecom.cart.remove',\n ecommerce: {\n remove: {\n products: [\n {\n id: data.masterid,\n name: setReg(data.name),\n price: data.price,\n brand: setReg(data.brand),\n category: setReg(data.category),\n variant:\n setVariant(data.color, 'c') +\n setVariant(data.size, 's') +\n setVariant(data.width, 'w'),\n quantity: eval(data.oldQty + '-' + data.newQty),\n },\n ],\n },\n },\n });\n } catch (ex) {\n console.log('GTM-MiniCartDecreaseQty Error:' + ex);\n }\n },\n\n RemoveLineItemfromCart: function (data) {\n try {\n ssDataLayer.push({\n event: 'ecom.cart.remove',\n ecommerce: {\n remove: {\n products: [\n {\n id: data.masterid,\n name: setReg(data.name),\n price: data.price,\n brand: setReg(data.brand),\n category: setReg(data.category),\n variant:\n setVariant(data.color, 'c') +\n setVariant(data.size, 's') +\n setVariant(data.width, 'w'),\n quantity: data.qty,\n },\n ],\n },\n },\n });\n } catch (ex) {\n console.log('GTM-MiniCartDecreaseQty Error:' + ex);\n }\n },\n\n EmailSignUp: function (email) {\n try {\n ssDataLayer.push({\n event: 'signup.newsletter.footer',\n email: email,\n });\n } catch (ex) {\n console.log('GTM-MiniCartDecreaseQty Error:' + ex);\n }\n },\n\n ProductCarousel: function (data) {\n try {\n ssDataLayer.push({\n event: 'ecom.product.list',\n ecommerce: {\n impressions: data,\n },\n });\n } catch (ex) {\n console.log('GTM-ProductCarousel Error:' + ex);\n }\n },\n\n PDP: function (data) {\n try {\n var avail = '';\n if (data && data.availability && data.availability.status) {\n avail = data.availability.status;\n }\n ssDataLayer.push({\n event: 'ecom.product.detail',\n ecommerce: {\n detail: {\n products: [\n {\n id: data.id,\n name: setReg(data.productName),\n price: gtmPrice(data),\n brand: setReg(data.brand),\n category: setReg(data.categoryFullPath),\n availability: avail,\n },\n ],\n },\n },\n });\n } catch (ex) {\n console.log('GTM-ProductCarousel Error:' + ex);\n }\n },\n\n AddToCart: function (data) {\n try {\n ssDataLayer.push({\n event: 'ecom.cart.add',\n ecommerce: {\n add: {\n products: [\n {\n id: data.masterid,\n name: setReg(data.productName),\n price: gtmPrice(data),\n brand: setReg(data.brand),\n category: setReg(data.categoryFullPath),\n variant:\n setVariant(data.color, 'c') +\n setVariant(data.size, 's') +\n setVariant(data.width, 'w'),\n quantity: data.qty,\n },\n ],\n },\n },\n });\n } catch (ex) {\n console.log('GTM-AddToCart Error:' + ex);\n }\n },\n\n ShippingOption: function (data) {\n try {\n ssDataLayer.push({\n event: 'ecom.checkout.shipping.validation',\n ecommerce: {\n checkout: {\n actionField: { step: 3, option: data.shippingMethod },\n },\n },\n });\n } catch (ex) {\n console.log('GTM-ShippingOption:' + ex);\n }\n },\n\n ProceedToPayment: function (data) {\n try {\n ssDataLayer.push({\n event: 'ecom.checkout.shipping.completeStep',\n ecommerce: {\n checkout: {\n actionField: { step: 3, option: data.shippingMethod },\n },\n },\n });\n } catch (ex) {\n console.log('GTM-ShippingOption:' + ex);\n }\n },\n\n Payment: function (data) {\n try {\n ssDataLayer.push({\n event: 'ecom.checkout.payment',\n ecommerce: {\n checkout: {\n actionField: { step: 4 },\n products: gtmproduct(data),\n },\n },\n });\n } catch (ex) {\n console.log('GTM-Payment:' + ex);\n }\n },\n\n PaymentOption: function (data) {\n try {\n ssDataLayer.push({\n event: 'ecom.checkout.payment.completeStep',\n ecommerce: {\n checkout: {\n actionField: { step: 4, option: data.paymentMethod.value },\n },\n },\n });\n } catch (ex) {\n console.log('GTM-PaymentOption:' + ex);\n }\n },\n\n OrderReview: function (data) {\n try {\n ssDataLayer.push({\n event: 'ecom.checkout.review',\n ecommerce: {\n checkout: {\n actionField: { step: 5 },\n products: gtmproduct(data),\n },\n },\n });\n } catch (ex) {\n console.log('GTM-OrderReview:' + ex);\n }\n },\n\n PlaceOrder: function (data) {\n try {\n ssDataLayer.push({\n event: 'ecom.checkout.review.completeStep',\n ecommerce: {\n checkout: {\n actionField: { step: 5 },\n // 'products': gtmproduct(data)\n },\n },\n });\n } catch (ex) {\n console.log('GTM-OrderReview:' + ex);\n }\n },\n\n StoreLocator: function (data) {\n try {\n ssDataLayer.push({\n event: 'search.locations',\n zipCode: data.searchKey.postalCode,\n });\n } catch (ex) {\n console.log('GTM-StoreLocator:' + ex);\n }\n },\n\n PromotionalBanners: function () {\n try {\n var promotions = [];\n $.each($('.gtmpromo'), function (k, v) {\n var $this = $(this);\n promotions.push({\n id: $this.data('prid'),\n name: $this.data('prname'),\n creative: $this.data('prcreative'),\n position: $this.data('prposition'),\n });\n });\n\n if (promotions.length > 0) {\n ssDataLayer.push({\n event: 'ecom.promo.view',\n ecommerce: {\n promoView: {\n promotions: promotions,\n },\n },\n });\n }\n } catch (ex) {\n console.log('${GTM-PromotionalBanners} Error:' + ex);\n }\n },\n\n PromotionClickHandler: function () {\n try {\n $('.gtmpromo').click(function () {\n var $this = $(this);\n ssDataLayer.push({\n event: 'ecom.promo.click',\n ecommerce: {\n promoClick: {\n promotions: [\n {\n id: $this.data('prid'),\n name: $this.data('prname'),\n creative: $this.data('prcreative'),\n position: $this.data('prposition'),\n },\n ],\n },\n },\n });\n });\n } catch (ex) {\n console.log('GTM-PromotionClickHandler Error:' + ex);\n }\n },\n};\n","'use strict';\n\nmodule.exports = {\n trapFocus: function (afterCloseElement, isQuickview = false) {\n var focusableEls = $('.modal-content').find('select, input, textarea, button, a').filter(':visible');\n if (isQuickview) {\n var firstFocusableEl = focusableEls[1];\n var lastFocusableEl = focusableEls[focusableEls.length - 2];\n } else {\n var firstFocusableEl = focusableEls[0];\n var lastFocusableEl = focusableEls[focusableEls.length - 1];\n }\n var KEYCODE_TAB = 9;\n firstFocusableEl.focus();\n // remove previous listener first\n $('.modal-content').off('keydown');\n $('.modal-content').on('keydown', function (e) {\n if (e.key === 'Escape') {\n $('.close').trigger('click');\n }\n var isTabPressed = e.key === 'Tab' || e.keyCode === KEYCODE_TAB;\n\n if (!isTabPressed) {\n return;\n }\n\n if (e.shiftKey) {\n /* shift + tab */ if (document.activeElement === firstFocusableEl) {\n lastFocusableEl.focus();\n e.preventDefault();\n }\n } /* tab */ else {\n if (document.activeElement === lastFocusableEl) {\n firstFocusableEl.focus();\n e.preventDefault();\n }\n }\n });\n $('.close').on('click', function (e) {\n $('.modal-content').off('keydown');\n // the quickview modal has its own method to change the focus after the modal is closed\n if (!isQuickview) {\n afterCloseElement.focus();\n }\n e.preventDefault();\n });\n },\n};\n","'use strict';\n\nvar processInclude = require('./util');\n\n$(document).ready(function () {\n processInclude(require('./storeLocator/storeLocator'));\n});\n","/* globals google */\n'use strict';\n\nvar scrollHelper = require('../components/scroll');\nvar setdatalayer = require('../gtm/setdatalayer');\nvar modalFocus = require('../modalFocus');\n\n/**\n * appends params to a url\n * @param {string} url - Original url\n * @param {Object} params - Parameters to append\n * @returns {string} result url with appended parameters\n */\nfunction appendToUrl(url, params) {\n var newUrl = url;\n newUrl +=\n (newUrl.indexOf('?') !== -1 ? '&' : '?') +\n Object.keys(params)\n .map(function (key) {\n return key + '=' + encodeURIComponent(params[key]);\n })\n .join('&');\n\n return newUrl;\n}\n\n/**\n * Uses google maps api to render a map\n */\nfunction maps() {\n var map;\n var infowindow = new google.maps.InfoWindow();\n // Init U.S. Map in the center of the viewport\n var latlng = new google.maps.LatLng(37.09024, -95.712891);\n var mapOptions = {\n scrollwheel: false,\n zoom: 4,\n center: latlng,\n };\n\n map = new google.maps.Map($('.map-canvas')[0], mapOptions);\n var mapdiv = $('.map-canvas').attr('data-locations');\n\n mapdiv = JSON.parse(mapdiv);\n\n var bounds = new google.maps.LatLngBounds();\n\n // Customized google map marker icon with svg format\n var markerImg = {\n path:\n 'M13.5,30.1460153 L16.8554555,25.5 L20.0024287,25.5 C23.039087,25.5 25.5,' +\n '23.0388955 25.5,20.0024287 L25.5,5.99757128 C25.5,2.96091298 23.0388955,0.5 ' +\n '20.0024287,0.5 L5.99757128,0.5 C2.96091298,0.5 0.5,2.96110446 0.5,5.99757128 ' +\n 'L0.5,20.0024287 C0.5,23.039087 2.96110446,25.5 5.99757128,25.5 L10.1445445,' +\n '25.5 L13.5,30.1460153 Z',\n fillColor: '#293573',\n fillOpacity: 1,\n scale: 1.1,\n strokeColor: 'white',\n strokeWeight: 1,\n anchor: new google.maps.Point(13, 30),\n labelOrigin: new google.maps.Point(12, 12),\n };\n\n Object.keys(mapdiv).forEach(function (key) {\n var item = mapdiv[key];\n var lable = parseInt(key, 10) + 1;\n var storeLocation = new google.maps.LatLng(item.latitude, item.longitude);\n if (item.chain == 'SD') {\n markerImg.fillColor = '#000000';\n } else {\n markerImg.fillColor = '#293573';\n }\n var marker = new google.maps.Marker({\n position: storeLocation,\n map: map,\n title: item.name,\n icon: markerImg,\n label: { text: lable.toString(), color: 'white', fontSize: '16px' },\n });\n\n marker.addListener('click', function () {\n infowindow.setOptions({\n content: item.infoWindowHtml,\n });\n infowindow.open(map, marker);\n });\n\n // Create a minimum bound based on a set of storeLocations\n bounds.extend(marker.position);\n });\n // Fit the all the store marks in the center of a minimum bounds when any store has been found.\n if (mapdiv && mapdiv.length !== 0) {\n map.fitBounds(bounds);\n }\n}\n\n/**\n * Renders the results of the search and updates the map\n * @param {Object} data - Response from the server\n */\nfunction updateStoresResults(data) {\n var $resultsDiv = $('.results');\n var $resultsCard = $('.results-card');\n var $mapDiv = $('.map-canvas');\n var hasResults = data.stores.length > 0;\n\n $resultsCard.show();\n\n $resultsDiv.empty().data('has-results', hasResults).data('radius', data.radius).data('search-key', data.searchKey);\n\n $mapDiv.attr('data-locations', data.locations);\n\n if ($mapDiv.data('has-google-api')) {\n maps();\n } else {\n $('.store-locator-no-apiKey').show();\n }\n\n if (data.searchKey != null && data.searchKey.postalCode != null) {\n setdatalayer.StoreLocator(data);\n }\n\n if (data.storesResultsHtml) {\n $resultsDiv.append(data.storesResultsHtml);\n }\n\n scrollHelper.scrollTo($resultsCard, 30);\n\n if ($('#inStoreInventoryModal').length) {\n modalFocus.trapFocus($('.btn-get-in-store-inventory'));\n }\n}\n\n/**\n * Search for stores with new zip code\n * @param {HTMLElement} element - the target html element\n * @returns {boolean} false to prevent default event\n */\nfunction search(element) {\n $.spinner().start();\n var $form = element.closest('.store-locator');\n var radius = $('.results').data('radius');\n var url = $form.attr('action');\n var urlParams = { radius: radius, radio: $('.checkout-content').length > 0 };\n\n var payload = $form.is('form') ? $form.serialize() : { postalCode: $form.find('[name=\"postalCode\"]').val() };\n\n url = appendToUrl(url, urlParams);\n\n $.ajax({\n url: url,\n type: $form.attr('method'),\n data: payload,\n dataType: 'json',\n success: function (data) {\n $.spinner().stop();\n updateStoresResults(data);\n $('.select-store').prop('disabled', true);\n },\n });\n return false;\n}\n\nmodule.exports = {\n init: function () {\n if ($('.map-canvas').data('has-google-api')) {\n maps();\n } else {\n $('.store-locator-no-apiKey').show();\n }\n },\n\n detectLocation: function () {\n // clicking on detect location.\n $('.detect-location').on('click', function () {\n $.spinner().start();\n if (!navigator.geolocation) {\n $.spinner().stop();\n return;\n }\n\n navigator.geolocation.getCurrentPosition(\n function (position) {\n var $detectLocationButton = $('.detect-location');\n var url = $detectLocationButton.data('action');\n var radius = $('.results').data('radius');\n var urlParams = {\n radius: radius,\n lat: position.coords.latitude,\n long: position.coords.longitude,\n };\n\n url = appendToUrl(url, urlParams);\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n $.spinner().stop();\n updateStoresResults(data);\n $('.select-store').prop('disabled', true);\n },\n });\n },\n function () {\n alert('Please check if your browser privacy settings allow access to your location data.');\n $.spinner().stop();\n },\n {\n timeout: 5000,\n }\n );\n });\n },\n\n search: function () {\n $('.store-locator-container form.store-locator').submit(function (e) {\n e.preventDefault();\n search($(this));\n });\n $('.store-locator-container .btn-storelocator-search[type=\"button\"]').click(function (e) {\n e.preventDefault();\n search($(this));\n });\n },\n\n changeRadius: function () {\n $('.store-locator-container .radius').change(function () {\n var radius = $(this).val();\n var searchKeys = $('.results').data('search-key');\n var url = $('.radius').data('action-url');\n var urlParams = {};\n\n if (searchKeys.postalCode) {\n urlParams = {\n radius: radius,\n postalCode: searchKeys.postalCode,\n };\n } else if (searchKeys.lat && searchKeys.long) {\n urlParams = {\n radius: radius,\n lat: searchKeys.lat,\n long: searchKeys.long,\n };\n }\n\n url = appendToUrl(url, urlParams);\n $.spinner().start();\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n $.spinner().stop();\n updateStoresResults(data);\n $('.select-store').prop('disabled', true);\n },\n });\n });\n },\n selectStore: function () {\n $('.store-locator-container').on('click', '.select-store', function (e) {\n e.preventDefault();\n var selectedStore = $(':checked', '.results-card .results');\n var data = {\n storeID: selectedStore.val(),\n searchRadius: $('#radius').val(),\n searchPostalCode: $('.results').data('search-key').postalCode,\n storeDetailsHtml: selectedStore.siblings('label').find('.store-details').html(),\n event: e,\n };\n\n $('body').trigger('store:selected', data);\n });\n },\n updateSelectStoreButton: function () {\n $('body').on('change', '.select-store-input', function () {\n $('.select-store').prop('disabled', false);\n });\n },\n};\n","'use strict';\n\nmodule.exports = function (include) {\n if (typeof include === 'function') {\n include();\n } else if (typeof include === 'object') {\n Object.keys(include).forEach(function (key) {\n if (typeof include[key] === 'function') {\n include[key]();\n }\n });\n }\n};\n"],"sourceRoot":""}