pagseguro/magento2

View on GitHub
view/frontend/web/js/jquery.mask.min.js

Summary

Maintainability
D
2 days
Test Coverage
// jQuery Mask Plugin v1.14.0
// github.com/igorescobar/jQuery-Mask-Plugin
(function (b) {
  'function' === typeof define && define.amd
    ? define(['jquery'], b)
    : 'object' === typeof exports
    ? (module.exports = b(require('jquery')))
    : b(jQuery || Zepto);
})(function (b) {
  var y = function (a, e, d) {
    var c = {
      invalid: [],
      getCaret: function () {
        try {
          var r,
            b = 0,
            e = a.get(0),
            d = document.selection,
            f = e.selectionStart;
          if (d && -1 === navigator.appVersion.indexOf('MSIE 10'))
            (r = d.createRange()),
              r.moveStart('character', -c.val().length),
              (b = r.text.length);
          else if (f || '0' === f) b = f;
          return b;
        } catch (g) {}
      },
      setCaret: function (r) {
        try {
          if (a.is(':focus')) {
            var c,
              b = a.get(0);
            b.setSelectionRange
              ? (b.focus(), b.setSelectionRange(r, r))
              : ((c = b.createTextRange()),
                c.collapse(!0),
                c.moveEnd('character', r),
                c.moveStart('character', r),
                c.select());
          }
        } catch (e) {}
      },
      events: function () {
        a.on('keydown.mask', function (c) {
          a.data('mask-keycode', c.keyCode || c.which);
        })
          .on(
            b.jMaskGlobals.useInput ? 'input.mask' : 'keyup.mask',
            c.behaviour
          )
          .on('paste.mask drop.mask', function () {
            setTimeout(function () {
              a.keydown().keyup();
            }, 100);
          })
          .on('change.mask', function () {
            a.data('changed', !0);
          })
          .on('blur.mask', function () {
            n === c.val() || a.data('changed') || a.trigger('change');
            a.data('changed', !1);
          })
          .on('blur.mask', function () {
            n = c.val();
          })
          .on('focus.mask', function (a) {
            !0 === d.selectOnFocus && b(a.target).select();
          })
          .on('focusout.mask', function () {
            d.clearIfNotMatch && !p.test(c.val()) && c.val('');
          });
      },
      getRegexMask: function () {
        for (var a = [], c, b, d, f, l = 0; l < e.length; l++)
          (c = g.translation[e.charAt(l)])
            ? ((b = c.pattern.toString().replace(/.{1}$|^.{1}/g, '')),
              (d = c.optional),
              (c = c.recursive)
                ? (a.push(e.charAt(l)),
                  (f = { digit: e.charAt(l), pattern: b }))
                : a.push(d || c ? b + '?' : b))
            : a.push(e.charAt(l).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'));
        a = a.join('');
        f &&
          (a = a
            .replace(
              new RegExp('(' + f.digit + '(.*' + f.digit + ')?)'),
              '($1)?'
            )
            .replace(new RegExp(f.digit, 'g'), f.pattern));
        return new RegExp(a);
      },
      destroyEvents: function () {
        a.off(
          'input keydown keyup paste drop blur focusout '
            .split(' ')
            .join('.mask ')
        );
      },
      val: function (c) {
        var b = a.is('input') ? 'val' : 'text';
        if (0 < arguments.length) {
          if (a[b]() !== c) a[b](c);
          b = a;
        } else b = a[b]();
        return b;
      },
      getMCharsBeforeCount: function (a, c) {
        for (var b = 0, d = 0, f = e.length; d < f && d < a; d++)
          g.translation[e.charAt(d)] || ((a = c ? a + 1 : a), b++);
        return b;
      },
      caretPos: function (a, b, d, h) {
        return g.translation[e.charAt(Math.min(a - 1, e.length - 1))]
          ? Math.min(a + d - b - h, d)
          : c.caretPos(a + 1, b, d, h);
      },
      behaviour: function (d) {
        d = d || window.event;
        c.invalid = [];
        var e = a.data('mask-keycode');
        if (-1 === b.inArray(e, g.byPassKeys)) {
          var m = c.getCaret(),
            h = c.val().length,
            f = c.getMasked(),
            l = f.length,
            k = c.getMCharsBeforeCount(l - 1) - c.getMCharsBeforeCount(h - 1),
            n = m < h;
          c.val(f);
          n &&
            (8 !== e && 46 !== e && (m = c.caretPos(m, h, l, k)),
            c.setCaret(m));
          return c.callbacks(d);
        }
      },
      getMasked: function (a, b) {
        var m = [],
          h = void 0 === b ? c.val() : b + '',
          f = 0,
          l = e.length,
          k = 0,
          n = h.length,
          q = 1,
          p = 'push',
          u = -1,
          t,
          w;
        d.reverse
          ? ((p = 'unshift'),
            (q = -1),
            (t = 0),
            (f = l - 1),
            (k = n - 1),
            (w = function () {
              return -1 < f && -1 < k;
            }))
          : ((t = l - 1),
            (w = function () {
              return f < l && k < n;
            }));
        for (; w(); ) {
          var x = e.charAt(f),
            v = h.charAt(k),
            s = g.translation[x];
          if (s)
            v.match(s.pattern)
              ? (m[p](v),
                s.recursive &&
                  (-1 === u ? (u = f) : f === t && (f = u - q),
                  t === u && (f -= q)),
                (f += q))
              : s.optional
              ? ((f += q), (k -= q))
              : s.fallback
              ? (m[p](s.fallback), (f += q), (k -= q))
              : c.invalid.push({ p: k, v: v, e: s.pattern }),
              (k += q);
          else {
            if (!a) m[p](x);
            v === x && (k += q);
            f += q;
          }
        }
        h = e.charAt(t);
        l !== n + 1 || g.translation[h] || m.push(h);
        return m.join('');
      },
      callbacks: function (b) {
        var g = c.val(),
          m = g !== n,
          h = [g, b, a, d],
          f = function (a, b, c) {
            'function' === typeof d[a] && b && d[a].apply(this, c);
          };
        f('onChange', !0 === m, h);
        f('onKeyPress', !0 === m, h);
        f('onComplete', g.length === e.length, h);
        f('onInvalid', 0 < c.invalid.length, [g, b, a, c.invalid, d]);
      },
    };
    a = b(a);
    var g = this,
      n = c.val(),
      p;
    e = 'function' === typeof e ? e(c.val(), void 0, a, d) : e;
    g.mask = e;
    g.options = d;
    g.remove = function () {
      var b = c.getCaret();
      c.destroyEvents();
      c.val(g.getCleanVal());
      c.setCaret(b - c.getMCharsBeforeCount(b));
      return a;
    };
    g.getCleanVal = function () {
      return c.getMasked(!0);
    };
    g.getMaskedVal = function (a) {
      return c.getMasked(!1, a);
    };
    g.init = function (e) {
      e = e || !1;
      d = d || {};
      g.clearIfNotMatch = b.jMaskGlobals.clearIfNotMatch;
      g.byPassKeys = b.jMaskGlobals.byPassKeys;
      g.translation = b.extend({}, b.jMaskGlobals.translation, d.translation);
      g = b.extend(!0, {}, g, d);
      p = c.getRegexMask();
      !1 === e
        ? (d.placeholder && a.attr('placeholder', d.placeholder),
          a.data('mask') && a.attr('autocomplete', 'off'),
          c.destroyEvents(),
          c.events(),
          (e = c.getCaret()),
          c.val(c.getMasked()),
          c.setCaret(e + c.getMCharsBeforeCount(e, !0)))
        : (c.events(), c.val(c.getMasked()));
    };
    g.init(!a.is('input'));
  };
  b.maskWatchers = {};
  var A = function () {
      var a = b(this),
        e = {},
        d = a.attr('data-mask');
      a.attr('data-mask-reverse') && (e.reverse = !0);
      a.attr('data-mask-clearifnotmatch') && (e.clearIfNotMatch = !0);
      'true' === a.attr('data-mask-selectonfocus') && (e.selectOnFocus = !0);
      if (z(a, d, e)) return a.data('mask', new y(this, d, e));
    },
    z = function (a, e, d) {
      d = d || {};
      var c = b(a).data('mask'),
        g = JSON.stringify;
      a = b(a).val() || b(a).text();
      try {
        return (
          'function' === typeof e && (e = e(a)),
          'object' !== typeof c || g(c.options) !== g(d) || c.mask !== e
        );
      } catch (n) {}
    };
  b.fn.mask = function (a, e) {
    e = e || {};
    var d = this.selector,
      c = b.jMaskGlobals,
      g = c.watchInterval,
      c = e.watchInputs || c.watchInputs,
      n = function () {
        if (z(this, a, e)) return b(this).data('mask', new y(this, a, e));
      };
    b(this).each(n);
    d &&
      '' !== d &&
      c &&
      (clearInterval(b.maskWatchers[d]),
      (b.maskWatchers[d] = setInterval(function () {
        b(document).find(d).each(n);
      }, g)));
    return this;
  };
  b.fn.masked = function (a) {
    return this.data('mask').getMaskedVal(a);
  };
  b.fn.unmask = function () {
    clearInterval(b.maskWatchers[this.selector]);
    delete b.maskWatchers[this.selector];
    return this.each(function () {
      var a = b(this).data('mask');
      a && a.remove().removeData('mask');
    });
  };
  b.fn.cleanVal = function () {
    return this.data('mask').getCleanVal();
  };
  b.applyDataMask = function (a) {
    a = a || b.jMaskGlobals.maskElements;
    (a instanceof b ? a : b(a)).filter(b.jMaskGlobals.dataMaskAttr).each(A);
  };
  var p = {
    maskElements: 'input,td,span,div',
    dataMaskAttr: '*[data-mask]',
    dataMask: !0,
    watchInterval: 300,
    watchInputs: !0,
    useInput: (function (a) {
      var b = document.createElement('div'),
        d;
      a = 'on' + a;
      d = a in b;
      d || (b.setAttribute(a, 'return;'), (d = 'function' === typeof b[a]));
      return d;
    })('input'),
    watchDataMask: !1,
    byPassKeys: [9, 16, 17, 18, 36, 37, 38, 39, 40, 91],
    translation: {
      0: { pattern: /\d/ },
      9: { pattern: /\d/, optional: !0 },
      '#': { pattern: /\d/, recursive: !0 },
      A: { pattern: /[a-zA-Z0-9]/ },
      S: { pattern: /[a-zA-Z]/ },
    },
  };
  b.jMaskGlobals = b.jMaskGlobals || {};
  p = b.jMaskGlobals = b.extend(!0, {}, p, b.jMaskGlobals);
  p.dataMask && b.applyDataMask();
  setInterval(function () {
    b.jMaskGlobals.watchDataMask && b.applyDataMask();
  }, p.watchInterval);
});