UNPKG

vue-giveworks-form

Version:

This plugin provides Vue.js component for the open [http://giveworks.net](Giveworks Platform).

3,152 lines 87.2 kB
((typeof self !== 'undefined' ? self : this)["webpackJsonpGiveworksForm"] = (typeof self !== 'undefined' ? self : this)["webpackJsonpGiveworksForm"] || []).push([[11],{

/***/ "253b":
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var _vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_css_loader_dist_cjs_js_ref_8_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_8_oneOf_1_2_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_cache_loader_dist_cjs_js_ref_0_0_vue_loader_lib_index_js_vue_loader_options_AnimateCss_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("3560");
/* harmony import */ var _vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_css_loader_dist_cjs_js_ref_8_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_8_oneOf_1_2_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_cache_loader_dist_cjs_js_ref_0_0_vue_loader_lib_index_js_vue_loader_options_AnimateCss_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_css_loader_dist_cjs_js_ref_8_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_8_oneOf_1_2_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_cache_loader_dist_cjs_js_ref_0_0_vue_loader_lib_index_js_vue_loader_options_AnimateCss_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */


/***/ }),

/***/ "3182":
/***/ (function(module, exports, __webpack_require__) {

"use strict";


function hasEnoughResultsToDetermineBestMatch(results) {
  var numberOfResultsWithMaxStrengthProperty = results.filter(function (result) {
    return result.matchStrength;
  }).length;

  // if all possible results have a maxStrength property
  // that means the card number is sufficiently long
  // enough to determine conclusively what the type is
  return numberOfResultsWithMaxStrengthProperty > 0 &&
    numberOfResultsWithMaxStrengthProperty === results.length;
}

function findBestMatch(results) {
  if (!hasEnoughResultsToDetermineBestMatch(results)) {
    return;
  }

  return results.reduce(function (bestMatch, result) { // eslint-disable-line consistent-return
    if (!bestMatch) {
      return result;
    }

    // if the current best match pattern is less specific
    // than this result, set the result as the new best match
    if (bestMatch.matchStrength < result.matchStrength) {
      return result;
    }

    return bestMatch;
  });
}

module.exports = findBestMatch;


/***/ }),

/***/ "3474":
/***/ (function(module, exports, __webpack_require__) {

"use strict";


// Polyfill taken from <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray#Polyfill>.

module.exports = Array.isArray || function (arg) {
  return Object.prototype.toString.call(arg) === '[object Array]';
};


/***/ }),

/***/ "3560":
/***/ (function(module, exports, __webpack_require__) {

// extracted by mini-css-extract-plugin

/***/ }),

/***/ "38ad":
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var expirationYear = __webpack_require__("b91c");
var isArray = __webpack_require__("3474");

function getNumberOfMonthDigitsInDateString(dateString) {
  var firstCharacter = Number(dateString[0]);
  var assumedYear;

  /*
    if the first character in the string starts with `0`,
    we know that the month will be 2 digits.

    '0122' => {month: '01', year: '22'}
  */
  if (firstCharacter === 0) {
    return 2;
  }

  /*
    if the first character in the string starts with
    number greater than 1, it must be a 1 digit month

    '322' => {month: '3', year: '22'}
  */
  if (firstCharacter > 1) {
    return 1;
  }

  /*
    if the first 2 characters make up a number between
    13-19, we know that the month portion must be 1

    '139' => {month: '1', year: '39'}
  */
  if (firstCharacter === 1 && Number(dateString[1]) > 2) {
    return 1;
  }

  /*
    if the first 2 characters make up a number between
    10-12, we check if the year portion would be considered
    valid if we assumed that the month was 1. If it is
    not potentially valid, we assume the month must have
    2 digits.

    '109' => {month: '10', year: '9'}
    '120' => {month: '1', year: '20'} // when checked in the year 2019
    '120' => {month: '12', year: '0'} // when checked in the year 2021
  */
  if (firstCharacter === 1) {
    assumedYear = dateString.substr(1);

    return expirationYear(assumedYear).isPotentiallyValid ? 1 : 2;
  }

  /*
    If the length of the value is exactly 5 characters,
    we assume a full year was passed in, meaning the remaining
    single leading digit must be the month value.

    '12202' => {month: '1', year: '2202'}
  */
  if (dateString.length === 5) {
    return 1;
  }

  /*
    If the length of the value is more than five characters,
    we assume a full year was passed in addition to the month
    and therefore the month portion must be 2 digits.

    '112020' => {month: '11', year: '2020'}
  */
  if (dateString.length > 5) {
    return 2;
  }

  /*
    By default, the month value is the first value
  */
  return 1;
}

function parseDate(date) {
  var month, numberOfDigitsInMonth;

  if (/^\d{4}-\d{1,2}$/.test(date)) {
    date = date.split('-').reverse();
  } else if (/\//.test(date)) {
    date = date.split(/\s*\/\s*/g);
  } else if (/\s/.test(date)) {
    date = date.split(/ +/g);
  }

  if (isArray(date)) {
    return {
      month: date[0] || '',
      year: date.slice(1).join()
    };
  }

  numberOfDigitsInMonth = getNumberOfMonthDigitsInDateString(date);

  month = date.substr(0, numberOfDigitsInMonth);

  return {
    month: month,
    year: date.substr(month.length)
  };
}

module.exports = parseDate;


/***/ }),

/***/ "4400":
/***/ (function(module, exports, __webpack_require__) {

"use strict";


// Adapted from https://github.com/polvo-labs/card-type/blob/aaab11f80fa1939bccc8f24905a06ae3cd864356/src/cardType.js#L37-L42
function matchesRange(cardNumber, min, max) {
  var maxLengthToCheck = String(min).length;
  var substr = cardNumber.substr(0, maxLengthToCheck);
  var integerRepresentationOfCardNumber = parseInt(substr, 10);

  min = parseInt(String(min).substr(0, substr.length), 10);
  max = parseInt(String(max).substr(0, substr.length), 10);

  return integerRepresentationOfCardNumber >= min && integerRepresentationOfCardNumber <= max;
}

function matchesPattern(cardNumber, pattern) {
  pattern = String(pattern);

  return pattern.substring(0, cardNumber.length) === cardNumber.substring(0, pattern.length);
}

function matches(cardNumber, pattern) {
  if (Array.isArray(pattern)) {
    return matchesRange(cardNumber, pattern[0], pattern[1]);
  }

  return matchesPattern(cardNumber, pattern);
}

module.exports = matches;


/***/ }),

/***/ "446a":
/***/ (function(module, exports, __webpack_require__) {

"use strict";


function clone(originalObject) {
  var dupe;

  if (!originalObject) { return null; }

  dupe = JSON.parse(JSON.stringify(originalObject));

  return dupe;
}

module.exports = clone;


/***/ }),

/***/ "540a":
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(global) {// Generated by CoffeeScript 1.10.0
(function() {
  var Payment, QJ, cardFromNumber, cardFromType, cards, defaultFormat, formatBackCardNumber, formatBackExpiry, formatCardNumber, formatExpiry, formatForwardExpiry, formatForwardSlash, formatMonthExpiry, hasTextSelected, luhnCheck, reFormatCardNumber, restrictCVC, restrictCardNumber, restrictCombinedExpiry, restrictExpiry, restrictMonthExpiry, restrictNumeric, restrictYearExpiry, setCardType,
    indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };

  QJ = __webpack_require__("5d3e");

  defaultFormat = /(\d{1,4})/g;

  cards = [
    {
      type: 'amex',
      pattern: /^3[47]/,
      format: /(\d{1,4})(\d{1,6})?(\d{1,5})?/,
      length: [15],
      cvcLength: [4],
      luhn: true
    }, {
      type: 'dankort',
      pattern: /^5019/,
      format: defaultFormat,
      length: [16],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'dinersclub',
      pattern: /^(36|38|30[0-5])/,
      format: /(\d{1,4})(\d{1,6})?(\d{1,4})?/,
      length: [14],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'discover',
      pattern: /^(6011|65|64[4-9]|622)/,
      format: defaultFormat,
      length: [16],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'elo',
      pattern: /^401178|^401179|^431274|^438935|^451416|^457393|^457631|^457632|^504175|^627780|^636297|^636369|^636368|^(506699|5067[0-6]\d|50677[0-8])|^(50900\d|5090[1-9]\d|509[1-9]\d{2})|^65003[1-3]|^(65003[5-9]|65004\d|65005[0-1])|^(65040[5-9]|6504[1-3]\d)|^(65048[5-9]|65049\d|6505[0-2]\d|65053[0-8])|^(65054[1-9]|6505[5-8]\d|65059[0-8])|^(65070\d|65071[0-8])|^65072[0-7]|^(65090[1-9]|65091\d|650920)|^(65165[2-9]|6516[6-7]\d)|^(65500\d|65501\d)|^(65502[1-9]|6550[3-4]\d|65505[0-8])|^(65092[1-9]|65097[0-8])/,
      format: defaultFormat,
      length: [16],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'hipercard',
      pattern: /^(384100|384140|384160|606282|637095|637568|60(?!11))/,
      format: defaultFormat,
      length: [14, 15, 16, 17, 18, 19],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'jcb',
      pattern: /^(308[8-9]|309[0-3]|3094[0]{4}|309[6-9]|310[0-2]|311[2-9]|3120|315[8-9]|333[7-9]|334[0-9]|352[8-9]|35[3-8][0-9])/,
      format: defaultFormat,
      length: [16, 19],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'laser',
      pattern: /^(6706|6771|6709)/,
      format: defaultFormat,
      length: [16, 17, 18, 19],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'maestro',
      pattern: /^(5018|5020|5038|5078|5[6-9]|6304|6703|6708|6759|676[1-3])/,
      format: defaultFormat,
      length: [12, 13, 14, 15, 16, 17, 18, 19],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'mastercard',
      pattern: /^(5[1-5]|677189)|^(222[1-9]|2[3-6]\d{2}|27[0-1]\d|2720)/,
      format: defaultFormat,
      length: [16],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'mir',
      pattern: /^220[0-4][0-9][0-9]\d{10}$/,
      format: defaultFormat,
      length: [16],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'troy',
      pattern: /^9792/,
      format: defaultFormat,
      length: [16],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'unionpay',
      pattern: /^62/,
      format: defaultFormat,
      length: [16, 17, 18, 19],
      cvcLength: [3],
      luhn: false
    }, {
      type: 'visaelectron',
      pattern: /^4(026|17500|405|508|844|91[37])/,
      format: defaultFormat,
      length: [16],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'visa',
      pattern: /^4/,
      format: defaultFormat,
      length: [13, 16, 19],
      cvcLength: [3],
      luhn: true
    }
  ];

  cardFromNumber = function(num) {
    var card, foundCard, j, len, match;
    num = (num + '').replace(/\D/g, '');
    foundCard = void 0;
    for (j = 0, len = cards.length; j < len; j++) {
      card = cards[j];
      if (match = num.match(card.pattern)) {
        if (!foundCard || match[0].length > foundCard[1][0].length) {
          foundCard = [card, match];
        }
      }
    }
    return foundCard && foundCard[0];
  };

  cardFromType = function(type) {
    var card, j, len;
    for (j = 0, len = cards.length; j < len; j++) {
      card = cards[j];
      if (card.type === type) {
        return card;
      }
    }
  };

  luhnCheck = function(num) {
    var digit, digits, j, len, odd, sum;
    odd = true;
    sum = 0;
    digits = (num + '').split('').reverse();
    for (j = 0, len = digits.length; j < len; j++) {
      digit = digits[j];
      digit = parseInt(digit, 10);
      if ((odd = !odd)) {
        digit *= 2;
      }
      if (digit > 9) {
        digit -= 9;
      }
      sum += digit;
    }
    return sum % 10 === 0;
  };

  hasTextSelected = function(target) {
    var e, error, ref;
    try {
      if ((target.selectionStart != null) && target.selectionStart !== target.selectionEnd) {
        return true;
      }
      if ((typeof document !== "undefined" && document !== null ? (ref = document.selection) != null ? ref.createRange : void 0 : void 0) != null) {
        if (document.selection.createRange().text) {
          return true;
        }
      }
    } catch (error) {
      e = error;
    }
    return false;
  };

  reFormatCardNumber = function(e) {
    return setTimeout((function(_this) {
      return function() {
        var target, value;
        target = e.target;
        value = QJ.val(target);
        value = Payment.fns.formatCardNumber(value);
        QJ.val(target, value);
        return QJ.trigger(target, 'change');
      };
    })(this));
  };

  formatCardNumber = function(maxLength) {
    return function(e) {
      var card, digit, i, j, len, length, re, target, upperLength, upperLengths, value;
      digit = String.fromCharCode(e.which);
      if (!/^\d+$/.test(digit)) {
        return;
      }
      target = e.target;
      value = QJ.val(target);
      card = cardFromNumber(value + digit);
      length = (value.replace(/\D/g, '') + digit).length;
      upperLengths = [16];
      if (card) {
        upperLengths = card.length;
      }
      if (maxLength) {
        upperLengths = upperLengths.filter(function(x) {
          return x <= maxLength;
        });
      }
      for (i = j = 0, len = upperLengths.length; j < len; i = ++j) {
        upperLength = upperLengths[i];
        if (length >= upperLength && upperLengths[i + 1]) {
          continue;
        }
        if (length >= upperLength) {
          return;
        }
      }
      if (hasTextSelected(target)) {
        return;
      }
      if (card && card.type === 'amex') {
        re = /^(\d{4}|\d{4}\s\d{6})$/;
      } else {
        re = /(?:^|\s)(\d{4})$/;
      }
      if (re.test(value)) {
        e.preventDefault();
        QJ.val(target, value + ' ' + digit);
        return QJ.trigger(target, 'change');
      }
    };
  };

  formatBackCardNumber = function(e) {
    var target, value;
    target = e.target;
    value = QJ.val(target);
    if (e.meta) {
      return;
    }
    if (e.which !== 8) {
      return;
    }
    if (hasTextSelected(target)) {
      return;
    }
    if (/\d\s$/.test(value)) {
      e.preventDefault();
      QJ.val(target, value.replace(/\d\s$/, ''));
      return QJ.trigger(target, 'change');
    } else if (/\s\d?$/.test(value)) {
      e.preventDefault();
      QJ.val(target, value.replace(/\s\d?$/, ''));
      return QJ.trigger(target, 'change');
    }
  };

  formatExpiry = function(e) {
    var digit, target, val;
    digit = String.fromCharCode(e.which);
    if (!/^\d+$/.test(digit)) {
      return;
    }
    target = e.target;
    val = QJ.val(target) + digit;
    if (/^\d$/.test(val) && (val !== '0' && val !== '1')) {
      e.preventDefault();
      QJ.val(target, "0" + val + " / ");
      return QJ.trigger(target, 'change');
    } else if (/^\d\d$/.test(val)) {
      e.preventDefault();
      QJ.val(target, val + " / ");
      return QJ.trigger(target, 'change');
    }
  };

  formatMonthExpiry = function(e) {
    var digit, target, val;
    digit = String.fromCharCode(e.which);
    if (!/^\d+$/.test(digit)) {
      return;
    }
    target = e.target;
    val = QJ.val(target) + digit;
    if (/^\d$/.test(val) && (val !== '0' && val !== '1')) {
      e.preventDefault();
      QJ.val(target, "0" + val);
      return QJ.trigger(target, 'change');
    } else if (/^\d\d$/.test(val)) {
      e.preventDefault();
      QJ.val(target, "" + val);
      return QJ.trigger(target, 'change');
    }
  };

  formatForwardExpiry = function(e) {
    var digit, target, val;
    digit = String.fromCharCode(e.which);
    if (!/^\d+$/.test(digit)) {
      return;
    }
    target = e.target;
    val = QJ.val(target);
    if (/^\d\d$/.test(val)) {
      QJ.val(target, val + " / ");
      return QJ.trigger(target, 'change');
    }
  };

  formatForwardSlash = function(e) {
    var slash, target, val;
    slash = String.fromCharCode(e.which);
    if (slash !== '/') {
      return;
    }
    target = e.target;
    val = QJ.val(target);
    if (/^\d$/.test(val) && val !== '0') {
      QJ.val(target, "0" + val + " / ");
      return QJ.trigger(target, 'change');
    }
  };

  formatBackExpiry = function(e) {
    var target, value;
    if (e.metaKey) {
      return;
    }
    target = e.target;
    value = QJ.val(target);
    if (e.which !== 8) {
      return;
    }
    if (hasTextSelected(target)) {
      return;
    }
    if (/\d(\s|\/)+$/.test(value)) {
      e.preventDefault();
      QJ.val(target, value.replace(/\d(\s|\/)*$/, ''));
      return QJ.trigger(target, 'change');
    } else if (/\s\/\s?\d?$/.test(value)) {
      e.preventDefault();
      QJ.val(target, value.replace(/\s\/\s?\d?$/, ''));
      return QJ.trigger(target, 'change');
    }
  };

  restrictNumeric = function(e) {
    var input;
    if (e.metaKey || e.ctrlKey) {
      return true;
    }
    if (e.which === 32) {
      return e.preventDefault();
    }
    if (e.which === 0) {
      return true;
    }
    if (e.which < 33) {
      return true;
    }
    input = String.fromCharCode(e.which);
    if (!/[\d\s]/.test(input)) {
      return e.preventDefault();
    }
  };

  restrictCardNumber = function(maxLength) {
    return function(e) {
      var card, digit, length, target, value;
      target = e.target;
      digit = String.fromCharCode(e.which);
      if (!/^\d+$/.test(digit)) {
        return;
      }
      if (hasTextSelected(target)) {
        return;
      }
      value = (QJ.val(target) + digit).replace(/\D/g, '');
      card = cardFromNumber(value);
      length = 16;
      if (card) {
        length = card.length[card.length.length - 1];
      }
      if (maxLength) {
        length = Math.min(length, maxLength);
      }
      if (!(value.length <= length)) {
        return e.preventDefault();
      }
    };
  };

  restrictExpiry = function(e, length) {
    var digit, target, value;
    target = e.target;
    digit = String.fromCharCode(e.which);
    if (!/^\d+$/.test(digit)) {
      return;
    }
    if (hasTextSelected(target)) {
      return;
    }
    value = QJ.val(target) + digit;
    value = value.replace(/\D/g, '');
    if (value.length > length) {
      return e.preventDefault();
    }
  };

  restrictCombinedExpiry = function(e) {
    return restrictExpiry(e, 6);
  };

  restrictMonthExpiry = function(e) {
    return restrictExpiry(e, 2);
  };

  restrictYearExpiry = function(e) {
    return restrictExpiry(e, 4);
  };

  restrictCVC = function(e) {
    var digit, target, val;
    target = e.target;
    digit = String.fromCharCode(e.which);
    if (!/^\d+$/.test(digit)) {
      return;
    }
    if (hasTextSelected(target)) {
      return;
    }
    val = QJ.val(target) + digit;
    if (!(val.length <= 4)) {
      return e.preventDefault();
    }
  };

  setCardType = function(e) {
    var allTypes, card, cardType, target, val;
    target = e.target;
    val = QJ.val(target);
    cardType = Payment.fns.cardType(val) || 'unknown';
    if (!QJ.hasClass(target, cardType)) {
      allTypes = (function() {
        var j, len, results;
        results = [];
        for (j = 0, len = cards.length; j < len; j++) {
          card = cards[j];
          results.push(card.type);
        }
        return results;
      })();
      QJ.removeClass(target, 'unknown');
      QJ.removeClass(target, allTypes.join(' '));
      QJ.addClass(target, cardType);
      QJ.toggleClass(target, 'identified', cardType !== 'unknown');
      return QJ.trigger(target, 'payment.cardType', cardType);
    }
  };

  Payment = (function() {
    function Payment() {}

    Payment.fns = {
      cardExpiryVal: function(value) {
        var month, prefix, ref, year;
        value = value.replace(/\s/g, '');
        ref = value.split('/', 2), month = ref[0], year = ref[1];
        if ((year != null ? year.length : void 0) === 2 && /^\d+$/.test(year)) {
          prefix = (new Date).getFullYear();
          prefix = prefix.toString().slice(0, 2);
          year = prefix + year;
        }
        month = parseInt(month, 10);
        year = parseInt(year, 10);
        return {
          month: month,
          year: year
        };
      },
      validateCardNumber: function(num) {
        var card, ref;
        num = (num + '').replace(/\s+|-/g, '');
        if (!/^\d+$/.test(num)) {
          return false;
        }
        card = cardFromNumber(num);
        if (!card) {
          return false;
        }
        return (ref = num.length, indexOf.call(card.length, ref) >= 0) && (card.luhn === false || luhnCheck(num));
      },
      validateCardExpiry: function(month, year) {
        var currentTime, expiry, prefix, ref, ref1;
        if (typeof month === 'object' && 'month' in month) {
          ref = month, month = ref.month, year = ref.year;
        } else if (typeof month === 'string' && indexOf.call(month, '/') >= 0) {
          ref1 = Payment.fns.cardExpiryVal(month), month = ref1.month, year = ref1.year;
        }
        if (!(month && year)) {
          return false;
        }
        month = QJ.trim(month);
        year = QJ.trim(year);
        if (!/^\d+$/.test(month)) {
          return false;
        }
        if (!/^\d+$/.test(year)) {
          return false;
        }
        month = parseInt(month, 10);
        if (!(month && month <= 12)) {
          return false;
        }
        if (year.length === 2) {
          prefix = (new Date).getFullYear();
          prefix = prefix.toString().slice(0, 2);
          year = prefix + year;
        }
        expiry = new Date(year, month);
        currentTime = new Date;
        expiry.setMonth(expiry.getMonth() - 1);
        expiry.setMonth(expiry.getMonth() + 1, 1);
        return expiry > currentTime;
      },
      validateCardCVC: function(cvc, type) {
        var ref, ref1;
        cvc = QJ.trim(cvc);
        if (!/^\d+$/.test(cvc)) {
          return false;
        }
        if (type && cardFromType(type)) {
          return ref = cvc.length, indexOf.call((ref1 = cardFromType(type)) != null ? ref1.cvcLength : void 0, ref) >= 0;
        } else {
          return cvc.length >= 3 && cvc.length <= 4;
        }
      },
      cardType: function(num) {
        var ref;
        if (!num) {
          return null;
        }
        return ((ref = cardFromNumber(num)) != null ? ref.type : void 0) || null;
      },
      formatCardNumber: function(num) {
        var card, groups, ref, upperLength;
        card = cardFromNumber(num);
        if (!card) {
          return num;
        }
        upperLength = card.length[card.length.length - 1];
        num = num.replace(/\D/g, '');
        num = num.slice(0, upperLength);
        if (card.format.global) {
          return (ref = num.match(card.format)) != null ? ref.join(' ') : void 0;
        } else {
          groups = card.format.exec(num);
          if (groups == null) {
            return;
          }
          groups.shift();
          groups = groups.filter(function(n) {
            return n;
          });
          return groups.join(' ');
        }
      }
    };

    Payment.restrictNumeric = function(el) {
      return QJ.on(el, 'keypress', restrictNumeric);
    };

    Payment.cardExpiryVal = function(el) {
      return Payment.fns.cardExpiryVal(QJ.val(el));
    };

    Payment.formatCardCVC = function(el) {
      Payment.restrictNumeric(el);
      QJ.on(el, 'keypress', restrictCVC);
      return el;
    };

    Payment.formatCardExpiry = function(el) {
      var month, year;
      Payment.restrictNumeric(el);
      if (el.length && el.length === 2) {
        month = el[0], year = el[1];
        this.formatCardExpiryMultiple(month, year);
      } else {
        QJ.on(el, 'keypress', restrictCombinedExpiry);
        QJ.on(el, 'keypress', formatExpiry);
        QJ.on(el, 'keypress', formatForwardSlash);
        QJ.on(el, 'keypress', formatForwardExpiry);
        QJ.on(el, 'keydown', formatBackExpiry);
      }
      return el;
    };

    Payment.formatCardExpiryMultiple = function(month, year) {
      QJ.on(month, 'keypress', restrictMonthExpiry);
      QJ.on(month, 'keypress', formatMonthExpiry);
      return QJ.on(year, 'keypress', restrictYearExpiry);
    };

    Payment.formatCardNumber = function(el, maxLength) {
      Payment.restrictNumeric(el);
      QJ.on(el, 'keypress', restrictCardNumber(maxLength));
      QJ.on(el, 'keypress', formatCardNumber(maxLength));
      QJ.on(el, 'keydown', formatBackCardNumber);
      QJ.on(el, 'keyup blur', setCardType);
      QJ.on(el, 'paste', reFormatCardNumber);
      QJ.on(el, 'input', reFormatCardNumber);
      return el;
    };

    Payment.getCardArray = function() {
      return cards;
    };

    Payment.setCardArray = function(cardArray) {
      cards = cardArray;
      return true;
    };

    Payment.addToCardArray = function(cardObject) {
      return cards.push(cardObject);
    };

    Payment.removeFromCardArray = function(type) {
      var key, value;
      for (key in cards) {
        value = cards[key];
        if (value.type === type) {
          cards.splice(key, 1);
        }
      }
      return true;
    };

    return Payment;

  })();

  module.exports = Payment;

  global.Payment = Payment;

}).call(this);

/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("c8ba")))

/***/ }),

/***/ "5d3e":
/***/ (function(module, exports) {

// Generated by CoffeeScript 1.10.0
(function() {
  var QJ, rreturn, rtrim;

  QJ = function(selector) {
    if (QJ.isDOMElement(selector)) {
      return selector;
    }
    return document.querySelectorAll(selector);
  };

  QJ.isDOMElement = function(el) {
    return el && (el.nodeName != null);
  };

  rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;

  QJ.trim = function(text) {
    if (text === null) {
      return "";
    } else {
      return (text + "").replace(rtrim, "");
    }
  };

  rreturn = /\r/g;

  QJ.val = function(el, val) {
    var ret;
    if (arguments.length > 1) {
      return el.value = val;
    } else {
      ret = el.value;
      if (typeof ret === "string") {
        return ret.replace(rreturn, "");
      } else {
        if (ret === null) {
          return "";
        } else {
          return ret;
        }
      }
    }
  };

  QJ.preventDefault = function(eventObject) {
    if (typeof eventObject.preventDefault === "function") {
      eventObject.preventDefault();
      return;
    }
    eventObject.returnValue = false;
    return false;
  };

  QJ.normalizeEvent = function(e) {
    var original;
    original = e;
    e = {
      which: original.which != null ? original.which : void 0,
      target: original.target || original.srcElement,
      preventDefault: function() {
        return QJ.preventDefault(original);
      },
      originalEvent: original,
      data: original.data || original.detail
    };
    if (e.which == null) {
      e.which = original.charCode != null ? original.charCode : original.keyCode;
    }
    return e;
  };

  QJ.on = function(element, eventName, callback) {
    var el, i, j, len, len1, multEventName, originalCallback, ref;
    if (element.length) {
      for (i = 0, len = element.length; i < len; i++) {
        el = element[i];
        QJ.on(el, eventName, callback);
      }
      return;
    }
    if (eventName.match(" ")) {
      ref = eventName.split(" ");
      for (j = 0, len1 = ref.length; j < len1; j++) {
        multEventName = ref[j];
        QJ.on(element, multEventName, callback);
      }
      return;
    }
    originalCallback = callback;
    callback = function(e) {
      e = QJ.normalizeEvent(e);
      return originalCallback(e);
    };
    if (element.addEventListener) {
      return element.addEventListener(eventName, callback, false);
    }
    if (element.attachEvent) {
      eventName = "on" + eventName;
      return element.attachEvent(eventName, callback);
    }
    element['on' + eventName] = callback;
  };

  QJ.addClass = function(el, className) {
    var e;
    if (el.length) {
      return (function() {
        var i, len, results;
        results = [];
        for (i = 0, len = el.length; i < len; i++) {
          e = el[i];
          results.push(QJ.addClass(e, className));
        }
        return results;
      })();
    }
    if (el.classList) {
      return el.classList.add(className);
    } else {
      return el.className += ' ' + className;
    }
  };

  QJ.hasClass = function(el, className) {
    var e, hasClass, i, len;
    if (el.length) {
      hasClass = true;
      for (i = 0, len = el.length; i < len; i++) {
        e = el[i];
        hasClass = hasClass && QJ.hasClass(e, className);
      }
      return hasClass;
    }
    if (el.classList) {
      return el.classList.contains(className);
    } else {
      return new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className);
    }
  };

  QJ.removeClass = function(el, className) {
    var cls, e, i, len, ref, results;
    if (el.length) {
      return (function() {
        var i, len, results;
        results = [];
        for (i = 0, len = el.length; i < len; i++) {
          e = el[i];
          results.push(QJ.removeClass(e, className));
        }
        return results;
      })();
    }
    if (el.classList) {
      ref = className.split(' ');
      results = [];
      for (i = 0, len = ref.length; i < len; i++) {
        cls = ref[i];
        results.push(el.classList.remove(cls));
      }
      return results;
    } else {
      return el.className = el.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
    }
  };

  QJ.toggleClass = function(el, className, bool) {
    var e;
    if (el.length) {
      return (function() {
        var i, len, results;
        results = [];
        for (i = 0, len = el.length; i < len; i++) {
          e = el[i];
          results.push(QJ.toggleClass(e, className, bool));
        }
        return results;
      })();
    }
    if (bool) {
      if (!QJ.hasClass(el, className)) {
        return QJ.addClass(el, className);
      }
    } else {
      return QJ.removeClass(el, className);
    }
  };

  QJ.append = function(el, toAppend) {
    var e;
    if (el.length) {
      return (function() {
        var i, len, results;
        results = [];
        for (i = 0, len = el.length; i < len; i++) {
          e = el[i];
          results.push(QJ.append(e, toAppend));
        }
        return results;
      })();
    }
    return el.insertAdjacentHTML('beforeend', toAppend);
  };

  QJ.find = function(el, selector) {
    if (el instanceof NodeList || el instanceof Array) {
      el = el[0];
    }
    return el.querySelectorAll(selector);
  };

  QJ.trigger = function(el, name, data) {
    var e, error, ev;
    try {
      ev = new CustomEvent(name, {
        detail: data
      });
    } catch (error) {
      e = error;
      ev = document.createEvent('CustomEvent');
      if (ev.initCustomEvent) {
        ev.initCustomEvent(name, true, true, data);
      } else {
        ev.initEvent(name, true, true, data);
      }
    }
    return el.dispatchEvent(ev);
  };

  module.exports = QJ;

}).call(this);


/***/ }),

/***/ "5f74":
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var cardTypes = {
  visa: {
    niceType: 'Visa',
    type: 'visa',
    patterns: [
      4
    ],
    gaps: [4, 8, 12],
    lengths: [16, 18, 19],
    code: {
      name: 'CVV',
      size: 3
    }
  },
  mastercard: {
    niceType: 'Mastercard',
    type: 'mastercard',
    patterns: [
      [51, 55],
      [2221, 2229],
      [223, 229],
      [23, 26],
      [270, 271],
      2720
    ],
    gaps: [4, 8, 12],
    lengths: [16],
    code: {
      name: 'CVC',
      size: 3
    }
  },
  'american-express': {
    niceType: 'American Express',
    type: 'american-express',
    patterns: [
      34,
      37
    ],
    gaps: [4, 10],
    lengths: [15],
    code: {
      name: 'CID',
      size: 4
    }
  },
  'diners-club': {
    niceType: 'Diners Club',
    type: 'diners-club',
    patterns: [
      [300, 305],
      36,
      38,
      39
    ],
    gaps: [4, 10],
    lengths: [14, 16, 19],
    code: {
      name: 'CVV',
      size: 3
    }
  },
  discover: {
    niceType: 'Discover',
    type: 'discover',
    patterns: [
      6011,
      [644, 649],
      65
    ],
    gaps: [4, 8, 12],
    lengths: [16, 19],
    code: {
      name: 'CID',
      size: 3
    }
  },
  jcb: {
    niceType: 'JCB',
    type: 'jcb',
    patterns: [
      2131,
      1800,
      [3528, 3589]
    ],
    gaps: [4, 8, 12],
    lengths: [16, 17, 18, 19],
    code: {
      name: 'CVV',
      size: 3
    }
  },
  unionpay: {
    niceType: 'UnionPay',
    type: 'unionpay',
    patterns: [
      620,
      [624, 626],
      [62100, 62182],
      [62184, 62187],
      [62185, 62197],
      [62200, 62205],
      [622010, 622999],
      622018,
      [622019, 622999],
      [62207, 62209],
      [622126, 622925],
      [623, 626],
      6270,
      6272,
      6276,
      [627700, 627779],
      [627781, 627799],
      [6282, 6289],
      6291,
      6292,
      810,
      [8110, 8131],
      [8132, 8151],
      [8152, 8163],
      [8164, 8171]
    ],
    gaps: [4, 8, 12],
    lengths: [14, 15, 16, 17, 18, 19],
    code: {
      name: 'CVN',
      size: 3
    }
  },
  maestro: {
    niceType: 'Maestro',
    type: 'maestro',
    patterns: [
      493698,
      [500000, 506698],
      [506779, 508999],
      [56, 59],
      63,
      67,
      6
    ],
    gaps: [4, 8, 12],
    lengths: [12, 13, 14, 15, 16, 17, 18, 19],
    code: {
      name: 'CVC',
      size: 3
    }
  },
  elo: {
    niceType: 'Elo',
    type: 'elo',
    patterns: [
      401178,
      401179,
      438935,
      457631,
      457632,
      431274,
      451416,
      457393,
      504175,
      [506699, 506778],
      [509000, 509999],
      627780,
      636297,
      636368,
      [650031, 650033],
      [650035, 650051],
      [650405, 650439],
      [650485, 650538],
      [650541, 650598],
      [650700, 650718],
      [650720, 650727],
      [650901, 650978],
      [651652, 651679],
      [655000, 655019],
      [655021, 655058]
    ],
    gaps: [4, 8, 12],
    lengths: [16],
    code: {
      name: 'CVE',
      size: 3
    }
  },
  mir: {
    niceType: 'Mir',
    type: 'mir',
    patterns: [
      [2200, 2204]
    ],
    gaps: [4, 8, 12],
    lengths: [16, 17, 18, 19],
    code: {
      name: 'CVP2',
      size: 3
    }
  },
  hiper: {
    niceType: 'Hiper',
    type: 'hiper',
    patterns: [
      637095,
      637568,
      637599,
      637609,
      637612
    ],
    gaps: [4, 8, 12],
    lengths: [16],
    code: {
      name: 'CVC',
      size: 3
    }
  },
  hipercard: {
    niceType: 'Hipercard',
    type: 'hipercard',
    patterns: [
      606282
    ],
    gaps: [4, 8, 12],
    lengths: [16],
    code: {
      name: 'CVC',
      size: 3
    }
  }
};

module.exports = cardTypes;


/***/ }),

/***/ "6468":
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);

// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7ef6bfa2-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-credit-card-field/src/Components/CreditCardField.vue?vue&type=template&id=62e89d3a&
var render = function () {
var _obj;
var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"credit-card-field",class:( _obj = {'has-brand': !!_vm.type, 'has-errors': _vm.hasErrors}, _obj[("is-focused-" + _vm.focused)] = _vm.focused, _obj )},[_c('form-group',[_c('div',{staticClass:"credit-card-field-rows"},[_c('div',{staticClass:"credit-card-field-row",class:{'has-error': _vm.currentErrors.number}},[_c('input-field',{directives:[{name:"card-number",rawName:"v-card-number"},{name:"bubble",rawName:"v-bubble:blur",value:(_vm.onBlur),expression:"onBlur",arg:"blur"},{name:"bubble",rawName:"v-bubble:focus",value:(function () { return _vm.focused = 'number'; }),expression:"() => focused = 'number'",arg:"focus"},{name:"validate",rawName:"v-validate:number",value:(_vm.validated.number),expression:"validated.number",arg:"number"}],ref:"number",attrs:{"disabled":_vm.activity,"error":_vm.error,"errors":_vm.currentErrors,"custom":"","id":"number","name":"number","label":"Card Number","placeholder":"Credit Card Number"},on:{"validate":_vm.onValidate},nativeOn:{"card-types":function($event){return _vm.onCardTypeChange($event)},"valid":function($event){return (function () { return _vm.onValid('number', _vm.showName ? 'name' : 'expMonth'); })($event)}},scopedSlots:_vm._u([{key:"activity",fn:function(){return [_c('animate-css',{attrs:{"name":"fade"}},[(_vm.activity)?_c('activity-indicator',{key:"activity",attrs:{"size":_vm.size}}):_c('div',{key:"icons",staticClass:"credit-card-icons"},[_c('animate-css',{attrs:{"mode":"out-in","name":"flip","y":""}},[(_vm.focused !== 'cvc')?_c('div',{key:"front",staticClass:"credit-card-field-icon-card"},[_c('icon',{staticClass:"credit-card-field-icon",attrs:{"icon":[_vm.icon ? 'fab' : 'far', _vm.icon || 'credit-card'],"data-brand":_vm.type && _vm.type.niceType || 'unknown',"width":"20","height":"18"}})],1):_c('div',{key:"back",staticClass:"credit-card-field-icon-card"},[_c('icon',{staticClass:"credit-card-field-icon",attrs:{"icon":['fas', 'credit-card'],"width":"23.33","height":"20"}})],1)])],1)],1)]},proxy:true}]),model:{value:(_vm.card.numberFormatted),callback:function ($$v) {_vm.$set(_vm.card, "numberFormatted", $$v)},expression:"card.numberFormatted"}})],1),_c('animate-css',{attrs:{"name":"fade"}},[(_vm.showSecurityFields && _vm.showName)?_c('div',{staticClass:"credit-card-field-row",class:{'has-error': _vm.currentErrors.name}},[_c('input-field',{directives:[{name:"bubble",rawName:"v-bubble:focus",value:(function () { return _vm.focused = 'name'; }),expression:"() => focused = 'name'",arg:"focus"},{name:"validate",rawName:"v-validate:name",value:(_vm.validated.name),expression:"validated.name",arg:"name"}],ref:"name",staticClass:"credit-card-field-name",attrs:{"disabled":_vm.activity,"errors":_vm.currentErrors,"custom":"","id":"name","name":"name","label":"Name","placeholder":"Name on Card"},model:{value:(_vm.card.name),callback:function ($$v) {_vm.$set(_vm.card, "name", $$v)},expression:"card.name"}})],1):_vm._e()]),_c('animate-css',{attrs:{"name":"fade"}},[(_vm.showSecurityFields)?_c('div',{staticClass:"credit-card-field-row d-flex",class:{'has-error': _vm.currentErrors.expMonth || _vm.currentErrors.expYear || _vm.currentErrors.cvc || _vm.currentErrors.zip}},[_c('select-field',{directives:[{name:"bubble",rawName:"v-bubble"},{name:"bubble",rawName:"v-bubble:blur",value:(_vm.onBlur),expression:"onBlur",arg:"blur"},{name:"bubble",rawName:"v-bubble:focus",value:(function () { return _vm.focused = 'expMonth'; }),expression:"() => focused = 'expMonth'",arg:"focus"},{name:"validate",rawName:"v-validate:month",value:(_vm.validated.expMonth),expression:"validated.expMonth",arg:"month"}],ref:"expMonth",staticClass:"credit-card-field-month",attrs:{"disabled":_vm.activity,"errors":_vm.currentErrors,"custom":"","id":"expMonth","name":"expMonth","label":"Month","placeholder":"Month"},nativeOn:{"valid":function($event){return (function () { return _vm.onValid('expMonth', 'expYear'); })($event)}},model:{value:(_vm.card.expMonth),callback:function ($$v) {_vm.$set(_vm.card, "expMonth", $$v)},expression:"card.expMonth"}},_vm._l((12),function(i){return _c('option',{key:i},[_vm._v(_vm._s(_vm.padZero(i, 2)))])}),0),_c('select-field',{directives:[{name:"bubble",rawName:"v-bubble"},{name:"bubble",rawName:"v-bubble:blur",value:(_vm.onBlur),expression:"onBlur",arg:"blur"},{name:"bubble",rawName:"v-bubble:focus",value:(function () { return _vm.focused = 'expYear'; }),expression:"() => focused = 'expYear'",arg:"focus"},{name:"validate",rawName:"v-validate:year",value:(_vm.validated.expYear),expression:"validated.expYear",arg:"year"}],ref:"expYear",staticClass:"credit-card-field-year",attrs:{"disabled":_vm.activity,"errors":_vm.currentErrors,"custom":"","id":"expYear","name":"expYear","label":"Year","placeholder":"Year"},nativeOn:{"valid":function($event){return (function () { return _vm.onValid('expYear', 'cvc'); })($event)}},model:{value:(_vm.card.expYear),callback:function ($$v) {_vm.$set(_vm.card, "expYear", $$v)},expression:"card.expYear"}},_vm._l((_vm.years),function(i){return _c('option',{key:i},[_vm._v(_vm._s(i))])}),0),_c('input-field',{directives:[{name:"bubble",rawName:"v-bubble"},{name:"bubble",rawName:"v-bubble:blur",value:(_vm.onBlur),expression:"onBlur",arg:"blur"},{name:"bubble",rawName:"v-bubble:focus",value:(function () { return _vm.focused = 'cvc'; }),expression:"() => focused = 'cvc'",arg:"focus"},{name:"validate",rawName:"v-validate:cvc",value:(_vm.validated.cvc),expression:"validated.cvc",arg:"cvc"}],ref:"cvc",staticClass:"credit-card-field-cvc",attrs:{"disabled":_vm.activity,"errors":_vm.currentErrors,"maxlength":_vm.code && _vm.code.size,"label":_vm.code && _vm.code.name || 'CVC',"placeholder":_vm.code && _vm.code.name || 'CVC',"validator":function () { return _vm.type && _vm.type.code.size; },"custom":"","id":"cvc","name":"cvc"},nativeOn:{"valid":function($event){return (function () { return _vm.onValid('cvc', 'zip'); })($event)}},model:{value:(_vm.card.cvc),callback:function ($$v) {_vm.$set(_vm.card, "cvc", $$v)},expression:"card.cvc"}}),(_vm.showZip)?_c('input-field',{directives:[{name:"bubble",rawName:"v-bubble"},{name:"bubble",rawName:"v-bubble:blur",value:(_vm.onBlur),expression:"onBlur",arg:"blur"},{name:"bubble",rawName:"v-bubble:focus",value:(function () { return _vm.focused = 'zip'; }),expression:"() => focused = 'zip'",arg:"focus"},{name:"validate",rawName:"v-validate:zip",value:(_vm.validated.zip),expression:"validated.zip",arg:"zip"}],ref:"zip",staticClass:"credit-card-field-zip",attrs:{"disabled":_vm.activity,"errors":_vm.currentErrors,"validator":{minLength: 5},"custom":"","id":"zip","name":"zip","maxlength":"5","label":"Zip Code","placeholder":"Zip Code"},nativeOn:{"valid":function($event){return (function () { return _vm.onValid('zip'); })($event)}},model:{value:(_vm.card.zip),callback:function ($$v) {_vm.$set(_vm.card, "zip", $$v)},expression:"card.zip"}}):_vm._e()],1):_vm._e()])],1),_vm._t("default")],2),_vm._t("help",[(_vm.helpText)?_c('help-text',{domProps:{"innerHTML":_vm._s(_vm.helpText)}}):_vm._e()]),_vm._t("feedback",[(_vm.validFeedback)?_c('form-feedback',{attrs:{"valid":""},domProps:{"innerHTML":_vm._s(_vm.validFeedback)}}):_vm._e(),(_vm.invalidFeedback)?_c('form-feedback',{attrs:{"invalid":""},domProps:{"innerHTML":_vm._s(_vm.invalidFeedback)}}):_vm._e()])],2)}
var staticRenderFns = []


// CONCATENATED MODULE: ./node_modules/vue-credit-card-field/src/Components/CreditCardField.vue?vue&type=template&id=62e89d3a&

// EXTERNAL MODULE: ./node_modules/vue-credit-card-field/src/icons.js
var icons = __webpack_require__("6123");

// EXTERNAL MODULE: ./node_modules/payment/lib/index.js
var lib = __webpack_require__("540a");

// CONCATENATED MODULE: ./node_modules/vue-credit-card-field/src/Helpers/input.js
function input(el) {
    return el.querySelector('input, textarea, select') || el;
}
// CONCATENATED MODULE: ./node_modules/vue-credit-card-field/src/Helpers/attribute.js


function attribute(el, attr, value) {
    input(el)[value ? 'setAttribute' : 'removeAttribute'](attr, value);
};
// CONCATENATED MODULE: ./node_modules/vue-credit-card-field/src/Helpers/format.js
function format(cardNumber, type) {
    if(!cardNumber || !type) {
        return cardNumber;
    }

    cardNumber = cardNumber.replace(/[^\d\/]/g, '');

    const parts = [], { gaps } = type;
    const offsets = [].concat(0, gaps, cardNumber.length);

    for(let i = 0; offsets[i] < cardNumber.length; i++) {
        const start = offsets[i];
        const end = Math.min(offsets[i + 1], cardNumber.length);
        
        parts.push(cardNumber.substring(start, end));
    }

    return parts.join(' ');
};
// CONCATENATED MODULE: ./node_modules/vue-credit-card-field/src/Helpers/set.js
function set_set(value) {
    binding.expression.split('.').reduce((carry, attr) => {
        if(vnode.context[attr] instanceof Object) {
            return vnode.context[attr];
        }
        else {
            vnode.context.$set(carry, attr, value);        
        }
    }, null);
}
        
// CONCATENATED MODULE: ./node_modules/vue-credit-card-field/src/Helpers/shouldFormat.js
function shouldFormat(e) {
    return (
        !e.altKey &&
        !e.ctrlKey &&
        !e.metaKey && 
        !e.shiftyKey
    );
};
// CONCATENATED MODULE: ./node_modules/vue-credit-card-field/src/Helpers/value.js
function value_value(subject) {
    if(subject instanceof Function) {
        return subject();
    }

    return subject;
}
// CONCATENATED MODULE: ./node_modules/vue-credit-card-field/src/Helpers/index.js








// CONCATENATED MODULE: ./node_modules/vue-credit-card-field/src/Directives/Bubble.js


/* harmony default export */ var Bubble = ({

    bind(el, { arg, value }, vnode) {
        input(el).addEventListener(arg, e => {
            if(value instanceof Function) {
                value(e);
            }

            vnode.context.$emit(arg, e);
        });
    }

});
// EXTERNAL MODULE: ./node_modules/card-validator/index.js
var card_validator = __webpack_require__("d07d");
var card_validator_default = /*#__PURE__*/__webpack_require__.n(card_validator);

// CONCATENATED MODULE: ./node_modules/vue-credit-card-field/src/Directives/Validate.js



const METHODS = {
    'cvc': 'cvv',
    'zip': 'postalCode',
    'date': 'expirationDate',
    'year': 'expirationYear',
    'month': 'expirationMonth'
};

card_validator_default.a.name = function name(value) {
    const isValid = value && value.length;
    const isPotentiallyValid = isValid || !value;

    return {
        isValid,
        isPotentiallyValid
    };
};

/* harmony default export */ var Validate = ({

    bind(el, binding, vnode) {
        const method = card_validator_default.a[binding.arg] || card_validator_default.a[METHODS[binding.arg]];

        if(!binding.arg || !method) {
            throw Error('An argument with a valid method is required for v-validate.');
        }

        let prevValue;

        function get() {
            return binding.expression.split('.').reduce((carry, attr) => {
                return carry[attr];
            }, vnode.context);
        }

        function set(value) {
            binding.expression.split('.').reduce((carry, attr) => {
                if(vnode.context[attr] instanceof Object) {
                    return vnode.context[attr];
                }
                else {
                    vnode.context.$set(carry, attr, value);        
                }
            }, null);
        }
                
        function validate(force = false) {
            return e => {
                if( shouldFormat(e) && 
                    !!e.target.value && 
                    (e.target.value !== prevValue || force)) {
                        
                    dispatch(e.target.value, force);
                    
                    prevValue = e.target.value;
                }            
            };
        }
        
        function dispatch(str, force = false) {
            const response = method(str, value_value(vnode.data.attrs.validator));
                  
            if(!response.isValid && (!response.isPotentiallyValid || force)) {
                el.dispatchEvent(new Event('invalid'));
            }
            else if(response.isValid) {
                el.dispatchEvent(new Event('valid'));
            }
            else if(response.isPotentiallyValid) {
                el.dispatchEvent(new Event('potentially-valid'));
            }
            
            el.dispatchEvent(Object.assign(new Event('validate'), {
                response
            }));
        }

        const inputEl = input(el);

        inputEl.addEventListener('paste', () => {
            setTimeout(() => {
                dispatch(inputEl.value);
            });
        });

        inputEl.addEventListener('revalidate', dispatch);
        inputEl.addEventListener('blur', validate(true));

        if(inputEl.tagName === 'SELECT') {
            inputEl.addEventListener('change', e => {
                set(null);

                setTimeout(() => {
                    dispatch(inputEl.value);
                });
            });
        }
        else {
            inputEl.addEventListener('keyup',  validate());
        }

        inputEl.addEventListener('keydown', e => {
            if(shouldFormat(e)) {
                prevValue = e.target.value;
            }
        });
        
        el.addEventListener('valid', e => set(true));
        el.addEventListener('invalid', e => set(false));
        el.addEventListener('potentially-valid', e =>  set(null));

        el.addEventListener('validate', ({ response }) => {
            vnode.componentInstance.$emit('validate', el, response, get());
        });

        if(inputEl.value) {
            if(get() !== false) {
                set(null);

                dispatch(inputEl.value);
            }
        }
    }

});
// CONCATENATED MODULE: ./node_modules/vue-credit-card-field/src/Directives/CardNumber.js



/* harmony default export */ var CardNumber = ({

    bind(el, binding, vnode) {
        let prevValue;

        function dispatch(value, force = false) {
            const types = Object(card_validator["creditCardType"])(value);

            value = JSON.stringify(types);

            if(value !== prevValue || force) {
                event = new Event('card-types');
                event.types = types;
                
                el.dispatchEvent(event);
            }

            prevValue = value;

            return types;
        }

        el.addEventListener('paste', e => {
            const clipboardData = e.clipboardData || window.clipboardData;
            const value = clipboardData.getData('text/plain');
            
            dispatch(value);
        });

        el.addEventListener('keyup', e => {
            if(shouldFormat(e)) {
                dispatch(e.target.value);
            }
        });
        
        el.addEventListener('card-types', ({ types }) => {
            const [ type ] = types;
            
            attribute(el, 'maxlength', type && (type.gaps.length + type.lengths.pop()));
        });

        const { value } = input(el);

        if(value) {
            vnode.context.$nextTick(() => dispatch(value, true));
        }
    }

});
// EXTERNAL MODULE: ./node_modules/vue-interface/src/Mixins/Variant/index.js + 1 modules
var Variant = __webpack_require__("485b");

// EXTERNAL MODULE: ./node_modules/vue-interface/src/Components/HelpText/index.js + 5 modules
var HelpText = __webpack_require__("5138");

// EXTERNAL MODULE: ./node_modules/vue-interface/src/Helpers/Functions/index.js + 33 modules
var Functions = __webpack_require__("ca14");

// EXTERNAL MODULE: ./node_modules/vue-interface/src/Mixins/FormControl/index.js + 3 modules
var FormControl = __webpack_require__("0ab3");

// EXTERNAL MODULE: ./node_modules/vue-interface/src/Components/FormGroup/index.js + 5 modules
var FormGroup = __webpack_require__("2848");

// EXTERNAL MODULE: ./node_modules/vue-interface/src/Components/InputField/index.js + 5 modules
var InputField = __webpack_require__("46d8");

// EXTERNAL MODULE: ./node_modules/vue-interface/src/Mixins/MergeClasses/index.js + 1 modules
var MergeClasses = __webpack_require__("bc02");

// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7ef6bfa2-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-interface/src/Components/AnimateCss/AnimateCss.vue?vue&type=template&id=46781450&
var AnimateCssvue_type_template_id_46781450_render = function () {
var this$1 = this;
var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{"mode":_vm.mode,"enter-class":_vm.enterClass,"enter-to-class":_vm.enterToClass,"enter-active-class":_vm.enterActiveClassName,"leave-class":_vm.leaveClass,"leave-to-class":_vm.leaveToClass,"leave-active-class":_vm.leaveActiveClassName},on:{"before-enter":function () {
	var ref;

	var args = [], len = arguments.length;
	while ( len-- ) args[ len ] = arguments[ len ];
	return (ref = this$1).$emit.apply(ref, [ 'before-enter' ].concat( args ));
},"enter":function () {
	var ref;

	var args = [], len = arguments.length;
	while ( len-- ) args[ len ] = arguments[ len ];
	return (ref = this$1).$emit.apply(ref, [ 'enter' ].concat( args ));
},"after-enter":function () {
	var ref;

	var args = [], len = arguments.length;
	while ( len-- ) args[ len ] = arguments[ len ];
	return (ref = this$1).$emit.apply(ref, [ 'after-enter' ].concat( args ));
},"before-leave":function () {
	var ref;

	var args = [], len = arguments.length;
	while ( len-- ) args[ len ] = arguments[ len ];
	return (ref = this$1).$emit.apply(ref, [ 'before-leave' ].concat( args ));
},"leave":function () {
	var ref;

	var args = [], len = arguments.length;
	while ( len-- ) args[ len ] = arguments[ len ];
	return (ref = this$1).$emit.apply(ref, [ 'leave' ].concat( args ));
},"after-leave":function () {
	var ref;

	var args = [], len = arguments.length;
	while ( len-- ) args[ len ] = arguments[ len ];
	return (ref = this$1).$emit.apply(ref, [ 'after-leave' ].concat( args ));
}}},[_vm._t("default")],2)}
var AnimateCssvue_type_template_id_46781450_staticRenderFns = []


// CONCATENATED MODULE: ./node_modules/vue-interface/src/Components/AnimateCss/AnimateCss.vue?vue&type=template&id=46781450&

// EXTERNAL MODULE: ./node_modules/vue-interface/src/Helpers/Functions/camelCase.js
var camelCase = __webpack_require__("fea0");

// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-interface/src/Components/AnimateCss/AnimateCss.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//



/* harmony default export */ var AnimateCssvue_type_script_lang_js_ = ({

    props: {

        delay: [String, Number, Function],

        duration: [String, Number, Function],
        
        mode: String,

        enter: String,

        enterClass: String,

        leave: String,

        enterToClass: String,

        enterActiveClass: String,
        
        leaveClass: String,

        leaveToClass: String,

        leaveActiveClass: String,

        x: Boolean,

        y: Boolean,

        big: Boolean,

        up: Boolean,

        down: Boolean,

        left: Boolean,

        right: Boolean,

        animated: {
            type: Boolean,
            default: true
        },

        name: String,

        direction: {
            type: String,
            default() {
                return (
                    this.x && 'x' ||
                    this.y && 'y' ||
                    this.up && 'up' ||
                    this.down && 'down' ||
                    this.left && 'left' ||
                    this.right && 'right'
                ) || undefined;
            },
            validate(value) {
                return ['up', 'down', 'left', 'right'].indexOf(value.toLowerCase()) !== -1;
            }
        },

        directionEffects: {
            type: Array,
            default: () => ([
                'bounce',
                'fade',
                'flip',
                'lightspeed',
                'rotate',
                'roll',
                'slide',
                'zoom'
            ])
        },

        special: {
            type: Boolean,
            default() {
                return this.name && this.directionEffects.indexOf(this.name.toLowerCase()) === -1;
            }
        }

    },

    computed: {

        enterActiveClassName() {
            return this.enter && `${this.enter} ${this.animated && 'animated'}` || 
                this.activeClass('in', this.enterActiveClass);
        },

        leaveActiveClassName() {
            return this.leave && `${this.leave} ${this.animated && 'animated'}` || 
                this.activeClass('out', this.leaveActiveClass);
        }

    },

    updated() {
        if(this.$slots.default && this.$slots.default.length) {
            const [{ elm }] = this.$slots.default;

            for(let attr of ['duration', 'delay']) {
                const value = this[attr] instanceof Function
                    ? this[attr]()
                    : this[attr];
                
                elm.style[Object(camelCase["a" /* default */])(`animation_${attr}`)] = value;
            }
        }
        
        /*
        const duration = this.duration instanceof Function ? this.duration() : this.duration;

        if(duration && this.$slots.default && this.$slots.default.length) {
            const el = this.$slots.default[0].elm;
            
            if(el.style.animationDuration !== duration) {
                el.style.animationDuration = duration;
            }
        }
        const delay = this.delay instanceof Function ? this.delay() : this.delay;

        if(delay && this.$slots.default && this.$slots.default.length) {
            const el = this.$slots.default[0].elm;
            
            if(el.style.animationDelay !== delay) {
                el.style.animationDelay = delay;
            }
        }
        */
    },

    methods: {

        activeClass(key, ...classes) {
            return [
                Object(camelCase["a" /* default */])([
                    this.name,
                    !this.special && key,
                    this.direction,
                    this.big && 'big'
                ].filter(value => !!value).join(' '))
            ]
                .concat([
                    this.animated && 'animated'
                ])
                .concat(classes)
                .join(' ');
        }        

    }

});

// CONCATENATED MODULE: ./node_modules/vue-interface/src/Components/AnimateCss/AnimateCss.vue?vue&type=script&lang=js&
 /* harmony default export */ var AnimateCss_AnimateCssvue_type_script_lang_js_ = (AnimateCssvue_type_script_lang_js_); 
// EXTERNAL MODULE: ./node_modules/vue-interface/src/Components/AnimateCss/AnimateCss.vue?vue&type=style&index=0&lang=scss&
var AnimateCssvue_type_style_index_0_lang_scss_ = __webpack_require__("253b");

// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
var componentNormalizer = __webpack_require__("2877");

// CONCATENATED MODULE: ./node_modules/vue-interface/src/Components/AnimateCss/AnimateCss.vue






/* normalize component */

var component = Object(componentNormalizer["a" /* default */])(
  AnimateCss_AnimateCssvue_type_script_lang_js_,
  AnimateCssvue_type_template_id_46781450_render,
  AnimateCssvue_type_template_id_46781450_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var AnimateCss = (component.exports);
// CONCATENATED MODULE: ./node_modules/vue-interface/src/Components/AnimateCss/index.js

/* harmony default export */ var Components_AnimateCss = (AnimateCss);

// EXTERNAL MODULE: ./node_modules/vue-interface/src/Components/SelectField/index.js + 5 modules
var SelectField = __webpack_require__("8cec");

// EXTERNAL MODULE: ./node_modules/vue-interface/src/Components/FormFeedback/index.js + 5 modules
var FormFeedback = __webpack_require__("a892");

// EXTERNAL MODULE: ./node_modules/@fortawesome/vue-fontawesome/index.es.js
var index_es = __webpack_require__("ad3d");

// EXTERNAL MODULE: ./node_modules/vue-interface/src/Components/ActivityIndicator/index.js + 16 modules
var ActivityIndicator = __webpack_require__("a633");

// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-credit-card-field/src/Components/CreditCardField.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//




















const ICONS = {
    'american-express': 'amex'
};

/* harmony default export */ var CreditCardFieldvue_type_script_lang_js_ = ({

    name: 'CreditCardField',

    mixins: [
        MergeClasses["a" /* default */],
        Variant["a" /* default */],
        FormControl["a" /* default */]
    ],

    components: {
        Icon: index_es["a" /* FontAwesomeIcon */],
        HelpText: HelpText["a" /* default */],
        FormGroup: FormGroup["default"],
        AnimateCss: Components_AnimateCss,
        InputField: InputField["default"],
        SelectField: SelectField["default"],
        FormFeedback: FormFeedback["default"],
        ActivityIndicator: ActivityIndicator["default"]
    },

    props: {

        activity: {
            type: Boolean,
            default: false
        },

        name: String,

        number: [Number, String],

        expMonth: String,

        expYear: String,

        cvc: String,

        zip: String,
        
        showName: {
            type: Boolean,
            default() {
                return !!this.name;
            }
        },

        showZip: {
            type: Boolean,
            default() {
                return !!this.zip;
            }
        }

    },

    directives: {
        Bubble: Bubble,
        Validate: Validate,
        CardNumber: CardNumber
    },

    watch: {

        card: {
            deep: true,
            handler(value) {
                this.$emit('input', Object.assign(this.blankCard(), value));
            }
        },

        validated: {
            deep: true,
            handler(value, oldValue) {
                const entries = Object.entries(value);

                entries.forEach(([key, value]) => {
                    this.$set(this.currentErrors, key, value === false ? (this.currentErrors[key] || true) : false);
                });

                if(this.showSecurityFields) {
                    this.$nextTick(() => {
                        if(this.totalFields === this.totalValidFields) {
                            this.isValid = true;
                        }
                        else if(this.totalInvalidFields) {
                            this.isValid = false;
                        }
                        else {
                            this.isValid = null;
                        }
                    });
                }
            }
        },

        ['card.number'](value) {
            this.card.number = value ? value.replace(/\s/g, '') : value;
        },

        ['card.numberFormatted'](value) {
            this.$set(this.card, 'number', value);
            this.$set(this.card, 'numberFormatted', format(value, this.type));
        },

        ['card.expMonth'](value) {
            this.updateExpiration();
        },

        ['card.expYear'](value) {
            this.updateExpiration();
        },

        ['validated.number'](value, old) {
            if(!this.showSecurityFields && value === true) {
                this.showSecurityFields = true;
            }
        },

        isValid(value) {
            if(value === true) {
                this.dispatch('valid');
            }
            else if(value === false) {
                this.dispatch('invalid');
            }
        },

        showSecurityFields(value) {
            this.$nextTick(() => {
                const field = this.showName ? 'name' : 'expMonth';

                this.$refs[field] && this.$refs[field].focus();
            });
        }

    },

    computed: {

        invalidFeedback() {
            return this.error || Object.entries(this.currentErrors)
                .filter(([key, value]) => !!value && (typeof value === 'string'))
                .map(([key, value]) => value.toString())
                .join('<br>');
        },

        isPotentiallyValid() {
            return this.isValid !== false;
        },

        totalFields() {
            return Object.entries(this.$refs).length
        },

        totalValidFields() {
            return Object.entries(this.validated)
                .filter(([key, value]) => value === true)
                .length;
        },

        totalInvalidFields() {
            return Object.entries(this.validated)
                .filter(([key, value]) => value === false)
                .length;
        },

        hasErrors() {
            return !!this.error || !!Object.entries(this.currentErrors)
                .filter(([key, value]) => !!value)
                .length;
        },

        years() {
            const years = [], year = new Date().getFullYear();

            for(let i = year; i < year + 15; i++) {
                years.push(i);    
            }

            return years;
        }

    },

    methods: {

        blankCard(defaultValues) {
            return Object(Functions["o" /* pickBy */])(Object.assign({
                number: null,
                numberFormatted: null,
                expMonth: null,
                expYear: null,
                expiration: null,
                name: this.showName ? null : undefined,
                zip: this.showZip ? null : undefined,
            }, defaultValues || {}), value => value !== undefined);
        },

        dispatch(event) {
            this.$emit(event, {
                card: this.card,
                type: this.type,
                isValid: this.isValid,
                isPotentiallyValid: this.isPotentiallyValid,
                input: {
                    el: this.$el.querySelector(':focus'),
                    isValid: null,
                    isPotentiallyValid: null,
                }
            });
        },

        padZero(num, places) {
            const zero = places - num.toString().length + 1;

            return Array(+(zero > 0 && zero)).join('0') + num;
        },

        updateExpiration() {
            if(this.card.expMonth && this.card.expYear) {
                this.$set(this.card, 'expiration', `${this.card.expMonth} / ${this.card.expYear}`);
            }
        },

        onBlur() {
            setTimeout(() => {
                if(!this.$el.querySelector(':focus')) {
                   this.focused = null;
                }
            });
        },

        onValid(current, next) {
            if(this.$refs[current] && this.$refs[current].$el.querySelector(':focus')) {
                if(this.$refs[next] && this.$refs[next].$el.classList.contains('is-empty')) {
                    input(this.$refs[next].$el).focus();
                }
                else if(!this.$refs[next]) {
                    input(this.$refs[current].$el).blur();
                }
            }
        },

        onValidate(el, { isValid, isPotentiallyValid }) {
            this.$emit('change', {
                card: this.card,
                type: this.type,
                isValid: this.isValid === true,
                isPotentiallyValid: this.isPotentiallyValid,
                input: {
                    el,
                    isValid,
                    isPotentiallyValid 
                }
            });
        },

        onCardTypeChange({ types }) {
            const [ type ] = types;

            this.type = type;
            this.code = type && type.code;
            this.icon = type && `cc-${(ICONS[type.type] || type.type)}`;
            this.$set(this.card, 'brand', type ? type.type : null);
            this.$set(this.card, 'numberFormatted', format(this.card.number, this.type));
            
            this.$refs.number.$el.dispatchEvent(new Event('revalidate'));
        }

    },

    created() {
        this.card.numberFormatted = this.card.number;
        this.updateExpiration();
    },

    data() {
        const card = this.blankCard({
            number: this.number,
            expMonth: this.expMonth,
            expYear: this.expYear,
            cvc: this.cvc,
            zip: this.zip,
            name: this.name
        });

        const validated = Object.keys(card)
            .reduce((carry, value) => {
                carry[value] = this.errors[value] ? false : null;

                return carry;
            }, {});

        return {
            card,
            validated,
            icon: null,
            code: null,
            type: null,
            focused: null,
            isValid: null,
            showSecurityFields: !!card.number,
            currentErrors: Object.assign({
                number: this.error
            }, this.errors)
        }
    }

});

// CONCATENATED MODULE: ./node_modules/vue-credit-card-field/src/Components/CreditCardField.vue?vue&type=script&lang=js&
 /* harmony default export */ var Components_CreditCardFieldvue_type_script_lang_js_ = (CreditCardFieldvue_type_script_lang_js_); 
// EXTERNAL MODULE: ./node_modules/vue-credit-card-field/src/Components/CreditCardField.vue?vue&type=style&index=0&lang=scss&
var CreditCardFieldvue_type_style_index_0_lang_scss_ = __webpack_require__("b781");

// CONCATENATED MODULE: ./node_modules/vue-credit-card-field/src/Components/CreditCardField.vue






/* normalize component */

var CreditCardField_component = Object(componentNormalizer["a" /* default */])(
  Components_CreditCardFieldvue_type_script_lang_js_,
  render,
  staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var CreditCardField = __webpack_exports__["default"] = (CreditCardField_component.exports);

/***/ }),

/***/ "7913":
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var luhn10 = __webpack_require__("7e86");
var getCardTypes = __webpack_require__("dd3d");

function verification(card, isPotentiallyValid, isValid) {
  return {card: card, isPotentiallyValid: isPotentiallyValid, isValid: isValid};
}

function cardNumber(value, options) {
  var potentialTypes, cardType, isPotentiallyValid, isValid, i, maxLength;

  options = options || {};

  if (typeof value === 'number') {
    value = String(value);
  }

  if (typeof value !== 'string') { return verification(null, false, false); }

  value = value.replace(/\-|\s/g, '');

  if (!/^\d*$/.test(value)) { return verification(null, false, false); }

  potentialTypes = getCardTypes(value);

  if (potentialTypes.length === 0) {
    return verification(null, false, false);
  } else if (potentialTypes.length !== 1) {
    return verification(null, true, false);
  }

  cardType = potentialTypes[0];

  if (options.maxLength && value.length > options.maxLength) {
    return verification(cardType, false, false);
  }

  if (cardType.type === getCardTypes.types.UNIONPAY && options.luhnValidateUnionPay !== true) {
    isValid = true;
  } else {
    isValid = luhn10(value);
  }

  maxLength = Math.max.apply(null, cardType.lengths);
  if (options.maxLength) {
    maxLength = Math.min(options.maxLength, maxLength);
  }

  for (i = 0; i < cardType.lengths.length; i++) {
    if (cardType.lengths[i] === value.length) {
      isPotentiallyValid = value.length < maxLength || isValid;

      return verification(cardType, isPotentiallyValid, isValid);
    }
  }

  return verification(cardType, value.length < maxLength, false);
}

module.exports = cardNumber;


/***/ }),

/***/ "7e86":
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/*
 * Luhn algorithm implementation in JavaScript
 * Copyright (c) 2009 Nicholas C. Zakas
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */


function luhn10(identifier) {
  var sum = 0;
  var alt = false;
  var i = identifier.length - 1;
  var num;

  while (i >= 0) {
    num = parseInt(identifier.charAt(i), 10);

    if (alt) {
      num *= 2;
      if (num > 9) {
        num = (num % 10) + 1; // eslint-disable-line no-extra-parens
      }
    }

    alt = !alt;

    sum += num;

    i--;
  }

  return sum % 10 === 0;
}

module.exports = luhn10;


/***/ }),

/***/ "9f23":
/***/ (function(module, exports, __webpack_require__) {

"use strict";


function isValidInputType(cardNumber) {
  return typeof cardNumber === 'string' || cardNumber instanceof String;
}

module.exports = isValidInputType;


/***/ }),

/***/ "b30b":
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var DEFAULT_MIN_POSTAL_CODE_LENGTH = 3;

function verification(isValid, isPotentiallyValid) {
  return {isValid: isValid, isPotentiallyValid: isPotentiallyValid};
}

function postalCode(value, options) {
  var minLength;

  options = options || {};

  minLength = options.minLength || DEFAULT_MIN_POSTAL_CODE_LENGTH;

  if (typeof value !== 'string') {
    return verification(false, false);
  } else if (value.length < minLength) {
    return verification(false, true);
  }

  return verification(true, true);
}

module.exports = postalCode;


/***/ }),

/***/ "b781":
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var _vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_css_loader_dist_cjs_js_ref_8_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_8_oneOf_1_2_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_cache_loader_dist_cjs_js_ref_0_0_vue_loader_lib_index_js_vue_loader_options_CreditCardField_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("dc2d");
/* harmony import */ var _vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_css_loader_dist_cjs_js_ref_8_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_8_oneOf_1_2_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_cache_loader_dist_cjs_js_ref_0_0_vue_loader_lib_index_js_vue_loader_options_CreditCardField_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_css_loader_dist_cjs_js_ref_8_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_8_oneOf_1_2_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_cache_loader_dist_cjs_js_ref_0_0_vue_loader_lib_index_js_vue_loader_options_CreditCardField_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */


/***/ }),

/***/ "b91c":
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE = 19;

function verification(isValid, isPotentiallyValid, isCurrentYear) {
  return {
    isValid: isValid,
    isPotentiallyValid: isPotentiallyValid,
    isCurrentYear: isCurrentYear || false
  };
}

function expirationYear(value, maxElapsedYear) {
  var currentFirstTwo, currentYear, firstTwo, len, twoDigitYear, valid, isCurrentYear;

  maxElapsedYear = maxElapsedYear || DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE;

  if (typeof value !== 'string') {
    return verification(false, false);
  }
  if (value.replace(/\s/g, '') === '') {
    return verification(false, true);
  }
  if (!/^\d*$/.test(value)) {
    return verification(false, false);
  }

  len = value.length;

  if (len < 2) {
    return verification(false, true);
  }

  currentYear = new Date().getFullYear();

  if (len === 3) {
    // 20x === 20x
    firstTwo = value.slice(0, 2);
    currentFirstTwo = String(currentYear).slice(0, 2);

    return verification(false, firstTwo === currentFirstTwo);
  }

  if (len > 4) {
    return verification(false, false);
  }

  value = parseInt(value, 10);
  twoDigitYear = Number(String(currentYear).substr(2, 2));

  if (len === 2) {
    isCurrentYear = twoDigitYear === value;
    valid = value >= twoDigitYear && value <= twoDigitYear + maxElapsedYear;
  } else if (len === 4) {
    isCurrentYear = currentYear === value;
    valid = value >= currentYear && value <= currentYear + maxElapsedYear;
  }

  return verification(valid, valid, isCurrentYear);
}

module.exports = expirationYear;


/***/ }),

/***/ "b958":
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var clone = __webpack_require__("446a");
var matches = __webpack_require__("4400");

function addMatchingCardsToResults(cardNumber, cardConfiguration, results) {
  var i, pattern, patternLength, clonedCardConfiguration;

  for (i = 0; i < cardConfiguration.patterns.length; i++) {
    pattern = cardConfiguration.patterns[i];

    if (!matches(cardNumber, pattern)) {
      continue;
    }

    clonedCardConfiguration = clone(cardConfiguration);

    if (Array.isArray(pattern)) {
      patternLength = String(pattern[0]).length;
    } else {
      patternLength = String(pattern).length;
    }

    if (cardNumber.length >= patternLength) {
      clonedCardConfiguration.matchStrength = patternLength;
    }

    results.push(clonedCardConfiguration);
    break;
  }
}

module.exports = addMatchingCardsToResults;


/***/ }),

/***/ "bb85":
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var parseDate = __webpack_require__("38ad");
var expirationMonth = __webpack_require__("d849");
var expirationYear = __webpack_require__("b91c");

function verification(isValid, isPotentiallyValid, month, year) {
  return {
    isValid: isValid,
    isPotentiallyValid: isPotentiallyValid,
    month: month,
    year: year
  };
}

function expirationDate(value, maxElapsedYear) {
  var date, monthValid, yearValid, isValidForThisYear;

  if (typeof value === 'string') {
    value = value.replace(/^(\d\d) (\d\d(\d\d)?)$/, '$1/$2');
    date = parseDate(value);
  } else if (value !== null && typeof value === 'object') {
    date = {
      month: String(value.month),
      year: String(value.year)
    };
  } else {
    return verification(false, false, null, null);
  }

  monthValid = expirationMonth(date.month);
  yearValid = expirationYear(date.year, maxElapsedYear);

  if (monthValid.isValid) {
    if (yearValid.isCurrentYear) {
      isValidForThisYear = monthValid.isValidForThisYear;

      return verification(isValidForThisYear, isValidForThisYear, date.month, date.year);
    }

    if (yearValid.isValid) {
      return verification(true, true, date.month, date.year);
    }
  }

  if (monthValid.isPotentiallyValid && yearValid.isPotentiallyValid) {
    return verification(false, true, null, null);
  }

  return verification(false, false, null, null);
}

module.exports = expirationDate;


/***/ }),

/***/ "d07d":
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = {
  number: __webpack_require__("7913"),
  expirationDate: __webpack_require__("bb85"),
  expirationMonth: __webpack_require__("d849"),
  expirationYear: __webpack_require__("b91c"),
  cvv: __webpack_require__("f981"),
  postalCode: __webpack_require__("b30b"),
  creditCardType: __webpack_require__("dd3d")
};


/***/ }),

/***/ "d849":
/***/ (function(module, exports, __webpack_require__) {

"use strict";


function verification(isValid, isPotentiallyValid, isValidForThisYear) {
  return {
    isValid: isValid,
    isPotentiallyValid: isPotentiallyValid,
    isValidForThisYear: isValidForThisYear || false
  };
}

function expirationMonth(value) {
  var month, result;
  var currentMonth = new Date().getMonth() + 1;

  if (typeof value !== 'string') {
    return verification(false, false);
  }
  if (value.replace(/\s/g, '') === '' || value === '0') {
    return verification(false, true);
  }
  if (!/^\d*$/.test(value)) {
    return verification(false, false);
  }

  month = parseInt(value, 10);

  if (isNaN(value)) {
    return verification(false, false);
  }

  result = month > 0 && month < 13;

  return verification(result, result, result && month >= currentMonth);
}

module.exports = expirationMonth;


/***/ }),

/***/ "dc2d":
/***/ (function(module, exports, __webpack_require__) {

// extracted by mini-css-extract-plugin

/***/ }),

/***/ "dd3d":
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var types = __webpack_require__("5f74");
var clone = __webpack_require__("446a");
var findBestMatch = __webpack_require__("3182");
var isValidInputType = __webpack_require__("9f23");
var addMatchingCardsToResults = __webpack_require__("b958");

var testOrder;
var customCards = {};

var cardNames = {
  VISA: 'visa',
  MASTERCARD: 'mastercard',
  AMERICAN_EXPRESS: 'american-express',
  DINERS_CLUB: 'diners-club',
  DISCOVER: 'discover',
  JCB: 'jcb',
  UNIONPAY: 'unionpay',
  MAESTRO: 'maestro',
  ELO: 'elo',
  MIR: 'mir',
  HIPER: 'hiper',
  HIPERCARD: 'hipercard'
};

var ORIGINAL_TEST_ORDER = [
  cardNames.VISA,
  cardNames.MASTERCARD,
  cardNames.AMERICAN_EXPRESS,
  cardNames.DINERS_CLUB,
  cardNames.DISCOVER,
  cardNames.JCB,
  cardNames.UNIONPAY,
  cardNames.MAESTRO,
  cardNames.ELO,
  cardNames.MIR,
  cardNames.HIPER,
  cardNames.HIPERCARD
];

testOrder = clone(ORIGINAL_TEST_ORDER);

function findType(type) {
  return customCards[type] || types[type];
}

function getAllCardTypes() {
  return testOrder.map(function (type) {
    return clone(findType(type));
  });
}

function getCardPosition(name, ignoreErrorForNotExisting) {
  var position = testOrder.indexOf(name);

  if (!ignoreErrorForNotExisting && position === -1) {
    throw new Error('"' + name + '" is not a supported card type.');
  }

  return position;
}

function creditCardType(cardNumber) {
  var bestMatch;
  var results = [];

  if (!isValidInputType(cardNumber)) {
    return [];
  }

  if (cardNumber.length === 0) {
    return getAllCardTypes(testOrder);
  }

  testOrder.forEach(function (type) {
    var cardConfiguration = findType(type);

    addMatchingCardsToResults(cardNumber, cardConfiguration, results);
  });

  bestMatch = findBestMatch(results);

  if (bestMatch) {
    return [bestMatch];
  }

  return results;
}

creditCardType.getTypeInfo = function (type) {
  return clone(findType(type));
};

creditCardType.removeCard = function (name) {
  var position = getCardPosition(name);

  testOrder.splice(position, 1);
};

creditCardType.addCard = function (config) {
  var existingCardPosition = getCardPosition(config.type, true);

  customCards[config.type] = config;

  if (existingCardPosition === -1) {
    testOrder.push(config.type);
  }
};

creditCardType.updateCard = function (cardType, updates) {
  var clonedCard;
  var originalObject = customCards[cardType] || types[cardType];

  if (!originalObject) {
    throw new Error('"' + cardType + '" is not a recognized type. Use `addCard` instead.');
  }

  if (updates.type && originalObject.type !== updates.type) {
    throw new Error('Cannot overwrite type parameter.');
  }

  clonedCard = clone(originalObject, true);

  Object.keys(clonedCard).forEach(function (key) {
    if (updates[key]) {
      clonedCard[key] = updates[key];
    }
  });

  customCards[clonedCard.type] = clonedCard;
};

creditCardType.changeOrder = function (name, position) {
  var currentPosition = getCardPosition(name);

  testOrder.splice(currentPosition, 1);
  testOrder.splice(position, 0, name);
};

creditCardType.resetModifications = function () {
  testOrder = clone(ORIGINAL_TEST_ORDER);
  customCards = {};
};

creditCardType.types = cardNames;

module.exports = creditCardType;


/***/ }),

/***/ "f981":
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var DEFAULT_LENGTH = 3;

function includes(array, thing) {
  var i = 0;

  for (; i < array.length; i++) {
    if (thing === array[i]) { return true; }
  }

  return false;
}

function max(array) {
  var maximum = DEFAULT_LENGTH;
  var i = 0;

  for (; i < array.length; i++) {
    maximum = array[i] > maximum ? array[i] : maximum;
  }

  return maximum;
}

function verification(isValid, isPotentiallyValid) {
  return {isValid: isValid, isPotentiallyValid: isPotentiallyValid};
}

function cvv(value, maxLength) {
  maxLength = maxLength || DEFAULT_LENGTH;
  maxLength = maxLength instanceof Array ? maxLength : [maxLength];

  if (typeof value !== 'string') { return verification(false, false); }
  if (!/^\d*$/.test(value)) { return verification(false, false); }
  if (includes(maxLength, value.length)) { return verification(true, true); }
  if (value.length < Math.min.apply(null, maxLength)) { return verification(false, true); }
  if (value.length > max(maxLength)) { return verification(false, false); }

  return verification(true, true);
}

module.exports = cvv;


/***/ })

}]);
//# sourceMappingURL=GiveworksForm.common.vendors~vue-credit-card-field.js.map