{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./.tmp/app_col_eu_core/js/components/formValidation.js","webpack:///./.tmp/app_col_eu_core/js/notifyMe.js","webpack:///./.tmp/app_col_eu_core/js/components/processInclude.js","webpack:///./.tmp/app_col_eu_core/js/notifyMe/notifyMe.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","formElement","payload","$","find","removeClass","fields","keys","forEach","feedbackElement","parent","children","length","Array","isArray","html","join","siblings","addClass","error","$formElement","prop","closest","alert","content","theme","attachment","autoClose","processInclude","require","document","ready","include","formValidation","showValidationFeedback","message","text","show","clearValidationFeedback","empty","hide","checkValidInput","inputElem","setCustomValidity","checkValidity","validationMessage","submitNotifyMeForm","isValid","errors","each","this","validationResult","validationResponse","validateNotifyMeForm","trigger","registerNotifyMeForm","on","e","form","preventDefault","url","attr","elements","variantPID","Error","spinner","start","ajax","type","dataType","data","serialize","success","handleNotifyMeSuccess","stop","createNotifyMeForm","hideForm","$formContainer","$button","lazyLoadUrl","is","method","responseHTML","append","val","complete","init","window","options","target"],"mappings":"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","file":"notifyMe.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 = 266);\n","'use strict';\n\n/**\n * Remove all validation. Should be called every time before revalidating form\n * @param {element} form - Form to be cleared\n * @returns {void}\n */\nfunction clearFormErrors(form) {\n $(form).find('.form-control.is-invalid').removeClass('is-invalid');\n}\n\nmodule.exports = function (formElement, payload) {\n // clear form validation first\n clearFormErrors(formElement);\n\n if (typeof payload === 'object' && payload.fields) {\n Object.keys(payload.fields).forEach(function (key) {\n if (payload.fields[key]) {\n var feedbackElement = $(formElement).find('[name=\"' + key + '\"]')\n .parent()\n .children('.invalid-feedback');\n\n if (feedbackElement.length > 0) {\n if (Array.isArray(payload[key])) {\n feedbackElement.html(payload.fields[key].join('
'));\n } else {\n feedbackElement.html(payload.fields[key]);\n }\n feedbackElement.siblings('.form-control').addClass('is-invalid');\n }\n }\n });\n }\n if (payload && payload.error) {\n // Modified to leverage alerts component\n const $formElement = $(formElement);\n const $form = $formElement.prop('tagName') === 'FORM'\n ? $formElement\n : $formElement.closest('form');\n\n $form.alert({\n content: payload.error.join('
'),\n theme: 'danger',\n attachment: 'prepend',\n autoClose: false\n });\n }\n};\n","'use strict';\n\nvar processInclude = require('./components/processInclude');\n\n$(document).ready(function () {\n processInclude(require('./notifyMe/notifyMe'));\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","'use strict';\n/**\n * File includes the ajax call to submit the notifyMe form\n */\nlet formValidation = require('../components/formValidation');\n\n/**\n * Add error message to invalid feedback container\n * @param {string} message validation error message\n * @return {void}\n */\nfunction showValidationFeedback(message) {\n $('.invalid-feedback').text(message).show();\n}\n\n/**\n * Clears and hides the invalid feedback container\n * @return {void}\n */\nfunction clearValidationFeedback() {\n $('.is-invalid').removeClass('is-invalid');\n $('.invalid-feedback').empty().hide();\n}\n\n/**\n * Validates HTML input fields\n * @param {HTMLElement} inputElem HTML input element to be validated\n * @return {array} is input valid, validation message\n */\nfunction checkValidInput(inputElem) {\n inputElem.setCustomValidity('');\n if (!inputElem.checkValidity()) { // if input is invalid\n $(inputElem).addClass('is-invalid').closest('.form-group').addClass('is-invalid');\n return [false, inputElem.validationMessage];\n }\n return [true, ''];\n}\n\n/**\n * Validates form by checking each input\n * @return {boolean} is form valid\n */\nfunction validateNotifyMeForm() {\n clearValidationFeedback();\n if ($('.notifyMeForm')[0] && !$('.notifyMeForm')[0].checkValidity()) { // if form invalid\n let errors = '';\n $('.notifyMeForm div.material-text-input').find('input').each(function () { // loop through inputs\n let [validationResult, validationResponse] = checkValidInput(this);\n if (!validationResult) { // if input is invalid\n errors += validationResponse + ' '; // add error message\n }\n });\n if (errors) {\n showValidationFeedback(errors); // display error messages\n return false;\n }\n }\n return true;\n}\n\n/**\n * If the form is valid submit it\n * @return {boolean} is form valid\n */\nfunction submitNotifyMeForm() {\n let isValid = validateNotifyMeForm();\n if (isValid) { // if form is valid\n $('.notifyMeForm').trigger('submit');\n $('.notify-me.btn').hide();\n }\n return isValid;\n}\n\n/**\n * Handles AJAX success response\n * @param {Object} data AJAX return data\n * @return {void}\n */\nfunction handleNotifyMeSuccess(data) {\n // hide velocity message and form (prevent duplicate submission)\n $('.product__message--velocity').removeClass('product__message--velocity--notifyme').hide();\n $('.notifyMeForm').hide();\n // show response message\n $('.notifyMeFormMessage').html(data.message).show();\n}\n\n/**\n * Changes form submit to make AJAX call\n * @return {void}\n */\nfunction registerNotifyMeForm() {\n $(document).on('submit', '.notifyMeForm', function (e) {\n let form = $(this);\n e.preventDefault();\n let url = form.attr('action');\n\n if (!this.elements.variantPID.value) {\n throw new Error('Notify Me: product variant not selected, invalid request.');\n }\n\n $.spinner().start();\n $.ajax({\n url: url,\n type: 'POST',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n if (!data.success && data.success === false && 'fields' in data) {\n formValidation(form, data);\n } else {\n handleNotifyMeSuccess(data);\n }\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n}\n\n/**\n * Builds the Notify Me form\n * @param {boolean|undefined} hideForm create notify me form without unhiding it\n * @return {void}\n */\nfunction createNotifyMeForm(hideForm) {\n var $formContainer = $('.js-notifyMeFormContainer');\n var $button = $('.notify-me.btn');\n\n if ($button.data('cta') === 'showForm') {\n /**\n * Instead of remote including the Notify Me form\n * when the page is loaded, only make the call\n * when the form is requested (lazy load)\n */\n if ($button.data('is-loading')) {\n return;\n }\n\n var lazyLoadUrl = $button.data('lazy-load-url');\n\n if (!hideForm) {\n // show form\n $formContainer.show();\n }\n\n if ($formContainer.is(':empty')) {\n /**\n * Mark as loading before the call returns so rapid clicks by the user\n * doesn't load the form multiple times.\n */\n $button.data('is-loading', true);\n\n $.ajax({\n url: lazyLoadUrl,\n method: 'GET',\n success: function (responseHTML) {\n $formContainer.append(responseHTML);\n\n // form creation event will prep form for validation\n $formContainer.find('form').trigger('form:created');\n\n // add variant ID to variant form input\n $formContainer.find('#variantPID').val($button.data('pid'));\n\n // hide response message\n $formContainer.find('.notifyMeFormMessage').empty().hide();\n\n // register listener for form submission\n $button.data('cta', 'submitForm');\n registerNotifyMeForm();\n },\n complete: function () {\n $button.data('is-loading', false);\n }\n });\n } else {\n // show form in case it is hidden\n $formContainer.find('.notifyMeForm').show();\n $button.data('cta', 'submitForm');\n }\n } else if ($button.data('cta') === 'submitForm') {\n submitNotifyMeForm();\n }\n}\n\nmodule.exports = {\n init: function () {\n $(document).on('click', '.notify-me.btn', function () {\n createNotifyMeForm();\n });\n\n $(window).on('product:triggerNotifyMe', function (e, options) {\n const hideForm = options && options.hideForm;\n createNotifyMeForm(hideForm);\n });\n\n $(document).on('change blur', '.notifyMeForm input', function (e) {\n clearValidationFeedback();\n\n let [validationResult, validationResponse] = checkValidInput(this);\n\n if (!$(e.target).val()) {\n $(e.target).closest('.focus-fill').removeClass('focus-fill');\n }\n if (!validationResult) {\n showValidationFeedback(validationResponse);\n }\n });\n\n $(document).on('focus', '.notifyMeForm input', function (e) {\n $(e.target).closest('.form-group').addClass('focus-fill');\n });\n }\n};\n"],"sourceRoot":""}