{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/src/js/utils/cart-utils.js","webpack:///./assets/src/js/utils/ga-ecommerce-utils.js","webpack:///./assets/src/js/flagpole-items.js","webpack:///./assets/src/js/utils/sst-utils.js","webpack:///./assets/src/js/utils/cookie-utils.js","webpack:///./assets/src/js/modules/mini-cart.js","webpack:///./assets/src/js/modules/site-toaster.js","webpack:///./assets/src/js/modules/site-popup.js","webpack:///./assets/src/js/modules/site-modal.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","getEpiCartItems","url","window","location","protocol","hostname","Promise","resolve","reject","fetch","then","json","catch","addToEpiCart","code","method","headers","accept","ok","removeFromEpiCart","pushToDataLayer","data","console","log","dataLayer","push","ecommerce","getEventData","response","error","checkout","event","addPaymentInfo","paymentType","addShippingInfo","gaAddToCart","type","init","document","addEventListener","href","target","indexOf","purchase","tax","shipping","viewCart","viewItem","viewItemList","category","FlagpoleItems","this","getDetailModalUrl","modalId","hiddenSelector","toaster","btn","classList","contains","getAttribute","addToOrderLine","getMiniCartHtml","remove","SiteToaster","id","message","open","setTimeout","close","modalBtn","closest","preventDefault","removeExistingDetailModal","getAccessoryDetailModal","initModal","text","detailModal","getElementById","modalHtml","body","querySelector","div","createElement","innerHTML","trim","appendChild","firstChild","modal","SitePopup","updateHeight","addOutdoorProductToOrderLine","itemNo","group","captureScreenDimensions","navigator","screen","height","width","userAgent","getCookie","screenDims","replace","setCookie","removeOrderLine","cookies","cookie","split","forEach","str","substring","length","days","date","Date","setTime","getTime","toGMTString","setCookieToExpireOnDate","initMiniCart","cart","icon","items","add","updateMiniCartHtml","html","miniCartDiv","options","openToasters","querySelectorAll","callbacks","onOpen","onClose","render","update","map","style","top","setAttribute","focus","SiteModal","modalDiv","isOpen","previousElementInFocus","onResize","closeSelectors","disableOverlayClick","onDocumentModalKeyUp","toggleBtn","keyCode","element","contentDiv","altContentDiv","offsetHeight","resetFocus","setPreviousElementInFocus","activeElement"],"mappings":"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","file":"flagpole-items.min.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 = 2);\n","const getEpiCartItems = () => { // getCartItems()\n const url = `${window.location.protocol}//${window.location.hostname}/api/v1/cart`;\n return new Promise((resolve, reject) => {\n fetch(url)\n .then(r => r.json())\n .then(resolve)\n .catch(reject);\n });\n};\n\nconst addToEpiCart = code => ( // addToCart()\n new Promise((resolve, reject) => {\n fetch(`${window.location.protocol}//${window.location.hostname}/api/v1/cart/items/${code}`, {\n method: 'POST',\n headers: {\n accept: 'application/json',\n 'content-type': 'application/json',\n },\n })\n .then((r) => {\n if (r.ok) {\n r.json().then(resolve);\n } else {\n r.json().then(reject);\n }\n })\n .catch(reject);\n })\n);\n\n\nconst removeFromEpiCart = (code) => { // removeFromCart()\n const url = `${window.location.protocol}//${window.location.hostname}/api/v1/cart/items/${code}`;\n return new Promise((resolve, reject) => {\n fetch(url, { method: 'DELETE' })\n .then((r) => {\n if (r.ok) {\n resolve();\n } else {\n r.json().then(reject);\n }\n })\n .catch(reject);\n });\n};\n\nexport {\n getEpiCartItems,\n addToEpiCart,\n removeFromEpiCart,\n};\n","/* eslint-disable no-console */\nconst pushToDataLayer = (data) => {\n console.log(data);\n const { dataLayer } = window;\n if (dataLayer === null || data === null) return;\n dataLayer.push({ ecommerce: null });\n dataLayer.push(data);\n};\n\nconst getEventData = url => (\n new Promise((resolve, reject) => {\n fetch(url, {\n method: 'POST',\n headers: {\n accept: 'application/json',\n 'content-type': 'application/json',\n },\n })\n .then((response) => {\n if (response.ok) {\n response.json().then(resolve);\n } else {\n response.json().then(reject);\n }\n })\n .catch(console.error);\n })\n);\n\nconst addPaymentInfo = (paymentType) => {\n const url = `/ga/AddPaymentInfoFormatter?paymentType=${paymentType}`;\n getEventData(url)\n .then(ecommerce => (\n pushToDataLayer({\n event: 'add_payment_info',\n ecommerce,\n })\n ));\n};\n\nconst addShippingInfo = () => {\n const url = '/ga/AddShippingInfoFormatter';\n getEventData(url)\n .then(ecommerce => (\n pushToDataLayer({\n event: 'add_shipping_info',\n ecommerce,\n })\n ));\n};\n\nconst checkout = () => {\n const url = '/ga/CheckoutFormatter';\n getEventData(url)\n .then(ecommerce => (\n pushToDataLayer({\n event: 'begin_checkout',\n ecommerce,\n })\n ));\n};\n\nconst gaAddToCart = (code, type) => {\n const url = `/ga/AddToCartFormatter?code=${code}&type=${type}`;\n return new Promise((resolve, reject) => {\n fetch(url, {\n method: 'POST',\n headers: {\n accept: 'application/json',\n 'content-type': 'application/json',\n },\n })\n .then((response) => {\n if (response.ok) {\n response.json()\n .then((ecommerce) => {\n pushToDataLayer({\n event: 'add_to_cart',\n ecommerce,\n });\n })\n .then(resolve);\n } else {\n response.json().then(reject);\n }\n })\n .catch(console.error);\n });\n};\n\nconst init = () => {\n // Add in catch for all checkout buttons\n document.addEventListener('click', (event) => {\n const { target } = event;\n const { href } = target;\n if (href) {\n if (href.indexOf('checkout') !== -1) {\n checkout();\n }\n }\n });\n};\n\nconst purchase = (value, tax, shipping) => {\n const url = `/ga/PurchaseFormatter?value=${value}&tax=${tax}&shipping=${shipping}`;\n getEventData(url)\n .then(ecommerce => (\n pushToDataLayer({\n event: 'purchase',\n ecommerce,\n })\n ));\n};\n\nconst viewCart = () => {\n const url = '/ga/ViewCartFormatter';\n getEventData(url)\n .then(ecommerce => (\n pushToDataLayer({\n event: 'view_cart',\n ecommerce,\n })\n ));\n};\n\nconst viewItem = (code, type) => {\n const url = `/ga/ViewItemFormatter?code=${code}&type=${type}`;\n getEventData(url)\n .then(ecommerce => (\n pushToDataLayer({\n event: 'view_item',\n ecommerce,\n })\n ));\n};\n\nconst viewItemList = (category) => {\n const url = `/ga/ViewItemListFormatter?name=${category}`;\n getEventData(url)\n .then((ecommerce) => {\n if (ecommerce === null) return;\n pushToDataLayer({\n event: 'view_item_list',\n ecommerce,\n });\n });\n};\n\nexport {\n addPaymentInfo,\n addShippingInfo,\n checkout,\n gaAddToCart,\n init,\n purchase,\n pushToDataLayer,\n viewCart,\n viewItem,\n viewItemList,\n};\n/* eslint-enable no-console */\n","/* eslint-disable no-console */\nimport { addToEpiCart } from './utils/cart-utils';\nimport { addToOrderLine } from './utils/sst-utils';\nimport { gaAddToCart } from './utils/ga-ecommerce-utils';\nimport { getMiniCartHtml } from './modules/mini-cart';\nimport SiteToaster from './modules/site-toaster';\n\nimport SitePopup from './modules/site-popup';\n\nexport default class FlagpoleItems {\n constructor() {\n this.getDetailModalUrl = 'GetFlagpoleItemDetailModal';\n this.modalId = 'flagpole-item-detail-modal';\n this.hiddenSelector = 'hidden';\n this.toaster = null;\n // Grid/Accessory events\n document.addEventListener('click', (event) => {\n const btn = event.target;\n // Add to cart\n if (btn.classList.contains('add-to-cart-btn')) {\n const code = btn.getAttribute('data-product-code');\n addToOrderLine(code)\n .then(gaAddToCart(code, 'Outdoor Products'))\n .then(addToEpiCart(code))\n .then(() => {\n getMiniCartHtml();\n if (this.toaster) {\n this.toaster.remove();\n }\n this.toaster = new SiteToaster({\n id: 'status-toaster',\n message: 'Item has been added to your cart.',\n });\n this.toaster.open();\n setTimeout(() => {\n this.toaster.close();\n }, 3000);\n setTimeout(() => {\n this.toaster.remove();\n }, 3300);\n })\n .catch(console.error);\n return;\n }\n // Launch detail modal\n const modalBtn = btn.closest('.product-detail-modal-btn');\n if (modalBtn != null) {\n event.preventDefault();\n const code = modalBtn.getAttribute('data-product-code');\n this.removeExistingDetailModal();\n this.getAccessoryDetailModal(code)\n .then((data) => {\n if (data !== '~error~') {\n this.initModal(data);\n }\n })\n .catch(console.error);\n }\n });\n }\n\n getAccessoryDetailModal(code) {\n const url = `${this.getDetailModalUrl}?code=${code}`;\n return new Promise((resolve, reject) => {\n fetch(url, {\n method: 'POST',\n })\n .then((response) => {\n if (response.ok) {\n response.text().then(resolve);\n } else {\n response.text().then(reject);\n }\n })\n .catch(console.error);\n });\n }\n\n removeExistingDetailModal() {\n const detailModal = document.getElementById(this.modalId);\n if (detailModal != null) {\n detailModal.remove();\n }\n }\n\n initModal(modalHtml) {\n // Append html to the end of the DOM\n const body = document.querySelector('body');\n const div = document.createElement('div');\n div.innerHTML = modalHtml.trim();\n body.appendChild(div.firstChild);\n // Define div references\n const modal = new SitePopup({\n id: this.modalId,\n });\n modal.updateHeight();\n modal.open();\n }\n}\nwindow.FlagpoleItems = FlagpoleItems;\n/* eslint-enable no-console */\n","/* eslint-disable no-console */\nimport { gaAddToCart } from './ga-ecommerce-utils';\nimport { getCookie, setCookie } from './cookie-utils';\n\nconst addToOrderLine = itemNo => (\n new Promise((resolve, reject) => {\n fetch(`${window.location.protocol}//${window.location.hostname}/RouteOrderLine?itemNo=${itemNo}`, {\n method: 'POST',\n headers: {\n accept: 'application/json',\n 'content-type': 'application/json',\n },\n })\n .then((r) => {\n gaAddToCart(itemNo)\n .then(() => {\n if (r.ok) {\n r.json().then(resolve);\n } else {\n r.json().then(reject);\n }\n });\n })\n .catch(console.error);\n })\n);\n\nconst removeOrderLine = itemNo => (\n new Promise((resolve, reject) => {\n fetch(`${window.location.protocol}//${window.location.hostname}/RemoveOrderLine?itemNo=${itemNo}`, {\n method: 'POST',\n headers: {\n accept: 'application/json',\n 'content-type': 'application/json',\n },\n })\n .then((r) => {\n if (r.ok) {\n r.json().then(resolve);\n } else {\n r.json().then(reject);\n }\n })\n .catch(console.error);\n })\n);\n\nconst addOutdoorProductToOrderLine = (itemNo, group) => (\n new Promise((resolve, reject) => {\n fetch(`${window.location.protocol}//${window.location.hostname}/RouteOrderLine?itemNo=${itemNo}&group=${group}`, {\n method: 'POST',\n headers: {\n accept: 'application/json',\n 'content-type': 'application/json',\n },\n })\n .then((r) => {\n gaAddToCart(itemNo, group)\n .then(() => {\n if (r.ok) {\n r.json().then(resolve);\n } else {\n r.json().then(reject);\n }\n });\n })\n .catch(console.error);\n })\n);\n\nconst captureScreenDimensions = () => {\n const { navigator, screen } = window;\n const { height, width } = screen;\n const { userAgent } = navigator;\n const COOKIE_NAME = 'sst-ss';\n // Only run if cookie has w/ dimensions has not been set\n if (getCookie(COOKIE_NAME) === '') {\n const screenDims = `${height}x${width}`;\n const url = `${window.location.protocol}//${window.location.hostname}/api/SaveScreenSize/?ss=${screenDims}&ua=${userAgent.replace(/\\s/g, '')}`;\n fetch(url, {\n method: 'POST',\n headers: {\n accept: 'application/json',\n 'content-type': 'application/json',\n },\n })\n .then((response) => {\n if (response.ok) {\n // Only storing the screen dimensions in the cookie\n setCookie(COOKIE_NAME, screenDims, 200);\n }\n })\n .catch(console.error);\n }\n};\n\nexport {\n addOutdoorProductToOrderLine,\n addToOrderLine,\n captureScreenDimensions,\n removeOrderLine,\n};\n/* eslint-enable no-console */\n","const getCookie = (name) => {\n const cookies = document.cookie.split(';');\n let value = '';\n cookies.forEach((str) => {\n const cookie = str.trim();\n if (cookie.indexOf(name) !== -1) {\n value = cookie.substring(name.length + 1, cookie.length);\n }\n });\n return value;\n};\n\nconst setCookie = (name, value, days) => {\n const date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n document.cookie = `${name}=${value}; expires=${date.toGMTString()}`;\n};\n\nconst setCookieToExpireOnDate = (name, value, date) => {\n document.cookie = `${name}=${value}; expires=${date.toGMTString()}`;\n};\n\nexport {\n getCookie,\n setCookie,\n setCookieToExpireOnDate,\n};\n","/* eslint-disable no-use-before-define */\nimport { getEpiCartItems } from '../utils/cart-utils';\n\nconst getMiniCartHtml = () => {\n const url = `${window.location.protocol}//${window.location.hostname}/cart/MiniCartDetails`;\n fetch(url)\n .then(r => r.text())\n .then(updateMiniCartHtml)\n .catch(console.error);\n};\n\n/* const onRemoveItemClick = (e) => {\n const code = e.target.getAttribute('data-code');\n removeFromEpiCart(code)\n .then(getMiniCartHtml)\n .catch(console.error);\n}; */\n\nconst initMiniCart = () => {\n getEpiCartItems()\n .then((cart) => {\n const icon = document.querySelector('.icon-item-cart');\n if (!icon) {\n return;\n }\n if (cart.items.length) {\n icon.classList.add('items-added-to-cart');\n } else {\n icon.classList.remove('items-added-to-cart');\n }\n })\n .catch(console.error);\n // const itemList = document.getElementById('mini-cart-items-list');\n /* if (!itemList) {\n return;\n } */\n /* Array.from(itemList.children).forEach((li) => {\n const btn = li.querySelector('.mini-cart-rm');\n btn.onclick = onRemoveItemClick;\n }); */\n};\n\nconst updateMiniCartHtml = (html) => {\n const miniCartDiv = document.querySelector('.cart-content-wrap');\n if (!miniCartDiv) {\n return;\n }\n\n miniCartDiv.innerHTML = html;\n initMiniCart();\n};\n\nexport {\n getMiniCartHtml,\n initMiniCart,\n};\n/* eslint-enable no-use-before-define */\n","/* eslint-disable no-console */\nexport default class SiteToaster {\n constructor(options) {\n // If there are any other toasters open, remove\n const openToasters = document.querySelectorAll('.site-toaster');\n for (let i = 0; i < openToasters.length; i++) { /* eslint-disable-line no-plusplus */\n openToasters[i].remove();\n }\n if (!options.callbacks) {\n options.callbacks = {};\n }\n this.onOpen = options.callbacks.onOpen;\n this.onClose = options.callbacks.onClose;\n this.message = options.message;\n this.id = options.id;\n // Create toaster html\n this.render();\n // Toaster events\n window.addEventListener('resize', this.update.bind(this));\n window.addEventListener('scroll', this.update.bind(this));\n const toaster = document.getElementById(this.id);\n [].map.call(toaster.querySelectorAll('.close-btn'), btn => btn.addEventListener('click', this.close.bind(this)));\n }\n\n update() {\n const toaster = document.getElementById(this.id);\n if (toaster === null) {\n return;\n }\n toaster.style.top = 0;\n }\n\n render() {\n const body = document.querySelector('body');\n const div = document.createElement('div');\n div.id = this.id;\n div.classList.add('site-toaster');\n div.setAttribute('tabindex', '0');\n div.innerHTML = `
${this.message}
`;\n body.appendChild(div);\n }\n\n close() {\n const toaster = document.getElementById(this.id);\n if (toaster) {\n toaster.classList.remove('toaster-visible');\n if (this.onClose) {\n this.onClose();\n }\n }\n }\n\n open() {\n const toaster = document.getElementById(this.id);\n // toaster.classList.remove('hidden');\n setTimeout(() => {\n toaster.classList.add('toaster-visible');\n toaster.focus();\n }, 500);\n this.update();\n }\n\n remove() {\n const toaster = document.getElementById(this.id);\n if (toaster) {\n toaster.remove();\n }\n }\n}\n/* eslint-enable no-console */\n","/* eslint-disable no-console */\nimport SiteModal from './site-modal';\n\nexport default class SitePopup extends SiteModal {\n open() {\n // If any type of modal is open, do not continue\n const isModalOpen = document.querySelectorAll('.modal.modal-visible').length > 0;\n if (isModalOpen) {\n return;\n }\n super.open();\n }\n}\n/* eslint-enable no-console */\n","/* eslint-disable no-console */\nexport default class SiteModal {\n constructor(options) {\n if (!options.callbacks) {\n options.callbacks = {};\n }\n this.onOpen = options.callbacks.onOpen;\n this.onClose = options.callbacks.onClose;\n this.modalDiv = document.querySelector(`#${options.id}`);\n this.isOpen = false;\n this.previousElementInFocus = null;\n // Modal events\n window.addEventListener('resize', this.onResize.bind(this));\n const closeSelectors = `.close-btn, #modal-refine-btn, .close-modal-btn${options.disableOverlayClick ? '' : ', .modal-overlay'}`;\n [].map.call(this.modalDiv.querySelectorAll(closeSelectors), btn => btn.addEventListener('click', this.close.bind(this)));\n document.addEventListener('keyup', this.onDocumentModalKeyUp.bind(this));\n // Add open to toggleBtn\n if (options.toggleBtn) {\n options.toggleBtn.addEventListener('click', this.open.bind(this));\n }\n }\n\n onDocumentModalKeyUp(event) {\n if (event.keyCode === 27 && this.isOpen) {\n this.close(); /* eslint-disable-line no-use-before-define */\n }\n }\n\n setPreviousElementInFocus(element) {\n this.previousElementInFocus = element;\n }\n\n resetFocus() {\n if (this.previousElementInFocus) {\n this.previousElementInFocus.focus();\n }\n }\n\n updateHeight() {\n if (!this.isOpen) {\n return;\n }\n // Check both .modal-content and .modal-alternate-content\n const contentDiv = this.modalDiv.querySelector('.modal-content:not(.hidden)');\n const altContentDiv = this.modalDiv.querySelector('.modal-alternate-content:not(.hidden)');\n const div = contentDiv !== null ? contentDiv : altContentDiv;\n if (div) {\n this.modalDiv.querySelector('.modal-panel').style.height = `${div.offsetHeight + 30}px`;\n }\n }\n\n onResize() {\n if (!this.isOpen) {\n return;\n }\n this.updateHeight();\n }\n\n close() {\n this.isOpen = false;\n if (this.onClose) {\n this.onClose();\n }\n this.modalDiv.classList.remove('modal-visible');\n this.resetFocus();\n }\n\n open(event) {\n if (event) {\n event.preventDefault();\n }\n this.isOpen = true;\n this.modalDiv.classList.add('modal-visible');\n if (this.onOpen) {\n this.onOpen();\n }\n this.setPreviousElementInFocus(document.activeElement);\n this.modalDiv.focus();\n this.updateHeight();\n }\n}\n/* eslint-enable no-console */\n"],"sourceRoot":""}