Browse Source

fix jitoffset + some cleanup

Robin Herbots 7 years ago
parent
commit
a8d7548491

+ 1 - 0
CHANGELOG.md

@@ -4,6 +4,7 @@
 
 ### Updates
 - package & bundling
+- rework jit enabled quantifiers
 
 ## [4.0.3 - 2018-11-07]
 

+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
   "name": "inputmask",
-  "version": "5.0.0-beta.66",
+  "version": "5.0.0-beta.80",
   "main": [
 	  "./index.js",
     "./css/inputmask.css"

+ 1 - 2
bundle.jquery.js

@@ -1,7 +1,6 @@
 var im = require("./bundle");
-var dependencyLib = require("./lib/dependencyLibs/inputmask.dependencyLib");
 var jQuery = require("jquery");
-if (dependencyLib === jQuery) {
+if (im.dependencyLib === jQuery) {
     require("./lib/jquery.inputmask");
 }
 

+ 1 - 1
composer.json

@@ -1,7 +1,7 @@
 {
   "name": "robinherbots/inputmask",
   "description": "Inputmask is a javascript library which creates an input mask.  Inputmask can run against vanilla javascript, jQuery and jqlite.",
-  "version": "5.0.0-beta.66",
+  "version": "5.0.0-beta.80",
   "type": "library",
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "homepage": "http://robinherbots.github.io/Inputmask",

+ 187 - 194
dist/inputmask.js

@@ -3,7 +3,7 @@
  * https://github.com/RobinHerbots/Inputmask
  * Copyright (c) 2010 - 2018 Robin Herbots
  * Licensed under the MIT license
- * Version: 5.0.0-beta.66
+ * Version: 5.0.0-beta.80
  */
 !function webpackUniversalModuleDefinition(e, t) {
     if ("object" == typeof exports && "object" == typeof module) module.exports = t(); else if ("function" == typeof define && define.amd) define([], t); else {
@@ -59,89 +59,86 @@
         a(1), a(5), a(6), e.exports = a(2);
     }, function(e, t, a) {
         "use strict";
-        var n, i, r;
-        "function" == typeof Symbol && Symbol.iterator;
-        i = [ a(2) ], void 0 === (r = "function" == typeof (n = function(e) {
-            return e.extendDefinitions({
-                A: {
-                    validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
-                    casing: "upper"
-                },
-                "&": {
-                    validator: "[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
-                    casing: "upper"
+        var n;
+        e.exports = ((n = a(2)).extendDefinitions({
+            A: {
+                validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
+                casing: "upper"
+            },
+            "&": {
+                validator: "[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
+                casing: "upper"
+            },
+            "#": {
+                validator: "[0-9A-Fa-f]",
+                casing: "upper"
+            }
+        }), n.extendAliases({
+            cssunit: {
+                regex: "[+-]?[0-9]+\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)"
+            },
+            url: {
+                regex: "(https?|ftp)//.*",
+                autoUnmask: !1
+            },
+            ip: {
+                mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]",
+                definitions: {
+                    i: {
+                        validator: function validator(e, t, a, n, i) {
+                            return e = -1 < a - 1 && "." !== t.buffer[a - 1] ? (e = t.buffer[a - 1] + e, -1 < a - 2 && "." !== t.buffer[a - 2] ? t.buffer[a - 2] + e : "0" + e) : "00" + e, 
+                            new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(e);
+                        }
+                    }
                 },
-                "#": {
-                    validator: "[0-9A-Fa-f]",
-                    casing: "upper"
-                }
-            }), e.extendAliases({
-                cssunit: {
-                    regex: "[+-]?[0-9]+\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)"
+                onUnMask: function onUnMask(e, t, a) {
+                    return e;
                 },
-                url: {
-                    regex: "(https?|ftp)//.*",
-                    autoUnmask: !1
+                inputmode: "numeric"
+            },
+            email: {
+                mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]",
+                greedy: !1,
+                casing: "lower",
+                onBeforePaste: function onBeforePaste(e, t) {
+                    return (e = e.toLowerCase()).replace("mailto:", "");
                 },
-                ip: {
-                    mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]",
-                    definitions: {
-                        i: {
-                            validator: function validator(e, t, a, n, i) {
-                                return e = -1 < a - 1 && "." !== t.buffer[a - 1] ? (e = t.buffer[a - 1] + e, -1 < a - 2 && "." !== t.buffer[a - 2] ? t.buffer[a - 2] + e : "0" + e) : "00" + e, 
-                                new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(e);
-                            }
-                        }
-                    },
-                    onUnMask: function onUnMask(e, t, a) {
-                        return e;
+                definitions: {
+                    "*": {
+                        validator: "[0-9\uff11-\uff19A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5!#$%&'*+/=?^_`{|}~-]"
                     },
-                    inputmode: "numeric"
+                    "-": {
+                        validator: "[0-9A-Za-z-]"
+                    }
                 },
-                email: {
-                    mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]",
-                    greedy: !1,
-                    casing: "lower",
-                    onBeforePaste: function onBeforePaste(e, t) {
-                        return (e = e.toLowerCase()).replace("mailto:", "");
-                    },
-                    definitions: {
-                        "*": {
-                            validator: "[0-9\uff11-\uff19A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5!#$%&'*+/=?^_`{|}~-]"
-                        },
-                        "-": {
-                            validator: "[0-9A-Za-z-]"
-                        }
-                    },
-                    onUnMask: function onUnMask(e, t, a) {
-                        return e;
-                    },
-                    inputmode: "email"
+                onUnMask: function onUnMask(e, t, a) {
+                    return e;
                 },
-                mac: {
-                    mask: "##:##:##:##:##:##"
+                inputmode: "email"
+            },
+            mac: {
+                mask: "##:##:##:##:##:##"
+            },
+            vin: {
+                mask: "V{13}9{4}",
+                definitions: {
+                    V: {
+                        validator: "[A-HJ-NPR-Za-hj-npr-z\\d]",
+                        casing: "upper"
+                    }
                 },
-                vin: {
-                    mask: "V{13}9{4}",
-                    definitions: {
-                        V: {
-                            validator: "[A-HJ-NPR-Za-hj-npr-z\\d]",
-                            casing: "upper"
-                        }
-                    },
-                    clearIncomplete: !0,
-                    autoUnmask: !0
-                }
-            }), e;
-        }) ? n.apply(t, i) : n) || (e.exports = r);
+                clearIncomplete: !0,
+                autoUnmask: !0
+            }
+        }), n);
     }, function(e, t, a) {
         "use strict";
-        var n, i, r, T = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
+        var T = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
             return typeof e;
         } : function(e) {
             return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
         };
-        i = [ a(3), a(4) ], void 0 === (r = "function" == typeof (n = function(F, M, V) {
+        e.exports = function(F, M, V) {
             var S = M.document, e = navigator.userAgent, x = 0 < e.indexOf("MSIE ") || 0 < e.indexOf("Trident/"), P = isInputEventSupported("touchstart"), _ = /iemobile/i.test(e), E = /iphone/i.test(e) && !_;
             function Inputmask(e, t, a) {
                 if (!(this instanceof Inputmask)) return new Inputmask(e, t, a);
@@ -173,7 +170,8 @@
                         tests: {},
                         excludes: {},
                         metadata: t,
-                        maskLength: V
+                        maskLength: V,
+                        jitOffset: {}
                     }, !0 !== s && (Inputmask.prototype.masksCache[o] = r, r = F.extend(!0, {}, Inputmask.prototype.masksCache[o]))) : r = F.extend(!0, {}, Inputmask.prototype.masksCache[o]), 
                     r;
                 }
@@ -381,12 +379,12 @@
                                 } else if (e.isQuantifier && a !== D.matches[F.inArray(e, D.matches) - 1]) for (var P = e, _ = 0 < C.length ? C.shift() : 0; _ < (isNaN(P.quantifier.max) ? _ + 1 : P.quantifier.max) && B <= A; _++) {
                                     var E = D.matches[F.inArray(P, D.matches) - 1];
                                     if (e = handleMatch(E, [ _ ].concat(t), E)) {
-                                        if ((O = I[I.length - 1].match).optionalQuantifier = _ > P.quantifier.min - 1, O.jit = (_ || 1) * E.matches.indexOf(O) >= P.quantifier.jit, 
+                                        if ((O = I[I.length - 1].match).optionalQuantifier = _ >= P.quantifier.min, O.jit = (_ || 1) * E.matches.indexOf(O) >= P.quantifier.jit, 
                                         O.optionalQuantifier && isFirstMatch(O, E)) {
                                             L = !0, B = A;
                                             break;
                                         }
-                                        return O.jit && !O.optionalQuantifier && (O.jitOffset = E.matches.indexOf(O)), !0;
+                                        return O.jit && (getMaskSet().jitOffset[A] = E.matches.indexOf(O)), !0;
                                     }
                                 } else if (e = resolveTestFromToken(e, C, t, a)) return !0;
                             } else B++;
@@ -555,7 +553,7 @@
                         (!t || !0 === c) && !1 === r && !0 !== n)) {
                             var s = getMaskSet().validPositions[i];
                             if (!s || null !== s.match.fn || s.match.def !== e && e !== N.skipOptionalPartCharacter) {
-                                if ((N.insertMode || getMaskSet().validPositions[seekNext(i)] === V) && !isMask(i, !0)) for (var l = i + 1, p = seekNext(i); l <= p; l++) if (!1 !== (r = _isValid(l, e, t))) {
+                                if ((N.insertMode || getMaskSet().validPositions[seekNext(i)] === V) && (!isMask(i, !0) || getMaskSet().jitOffset[i])) if (getMaskSet().jitOffset[i] && getMaskSet().validPositions[seekNext(i)] === V) (r = isValid(i + getMaskSet().jitOffset[i], e, t)).caret = i; else for (var l = i + 1, p = seekNext(i); l <= p; l++) if (!1 !== (r = _isValid(l, e, t))) {
                                     r = trackbackPositions(i, r.pos !== V ? r.pos : l) || r, i = l;
                                     break;
                                 }
@@ -1691,124 +1689,121 @@
                 X: 88,
                 CONTROL: 17
             }, Inputmask.dependencyLib = F, M.Inputmask = Inputmask;
-        }) ? n.apply(t, i) : n) || (e.exports = r);
+        }(a(3), a(4));
     }, function(e, t, a) {
         "use strict";
-        var n, i, r, c = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
+        var c = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
             return typeof e;
         } : function(e) {
             return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
-        };
-        i = [ a(4) ], void 0 === (r = "function" == typeof (n = function(t) {
-            var f = t.document;
-            function isWindow(e) {
-                return null != e && e === e.window;
-            }
-            function isValidElement(e) {
-                return e instanceof Element;
-            }
-            function DependencyLib(e) {
-                return e instanceof DependencyLib ? e : this instanceof DependencyLib ? void (null != e && e !== t && (this[0] = e.nodeName ? e : void 0 !== e[0] && e[0].nodeName ? e[0] : f.querySelector(e), 
-                void 0 !== this[0] && null !== this[0] && (this[0].eventRegistry = this[0].eventRegistry || {}))) : new DependencyLib(e);
-            }
-            return DependencyLib.prototype = {
-                on: function on(e, a) {
-                    if (isValidElement(this[0])) for (var t = function addEvent(e, t) {
-                        i.addEventListener ? i.addEventListener(e, a, !1) : i.attachEvent && i.attachEvent("on" + e, a), 
-                        n[e] = n[e] || {}, n[e][t] = n[e][t] || [], n[e][t].push(a);
-                    }, n = this[0].eventRegistry, i = this[0], r = e.split(" "), o = 0; o < r.length; o++) {
-                        var s = r[o].split(".");
-                        t(s[0], s[1] || "global");
-                    }
-                    return this;
-                },
-                off: function off(e, s) {
-                    if (isValidElement(this[0])) for (var t = function removeEvent(e, t, a) {
-                        if (e in l == 1) if (i.removeEventListener ? i.removeEventListener(e, a, !1) : i.detachEvent && i.detachEvent("on" + e, a), 
-                        "global" === t) for (var n in l[e]) l[e][n].splice(l[e][n].indexOf(a), 1); else l[e][t].splice(l[e][t].indexOf(a), 1);
-                    }, a = function resolveNamespace(e, t) {
-                        var a, n, i = [];
-                        if (0 < e.length) if (void 0 === s) for (a = 0, n = l[e][t].length; a < n; a++) i.push({
-                            ev: e,
-                            namespace: t && 0 < t.length ? t : "global",
-                            handler: l[e][t][a]
-                        }); else i.push({
-                            ev: e,
-                            namespace: t && 0 < t.length ? t : "global",
-                            handler: s
-                        }); else if (0 < t.length) for (var r in l) for (var o in l[r]) if (o === t) if (void 0 === s) for (a = 0, 
-                        n = l[r][o].length; a < n; a++) i.push({
-                            ev: r,
-                            namespace: o,
-                            handler: l[r][o][a]
-                        }); else i.push({
-                            ev: r,
-                            namespace: o,
-                            handler: s
-                        });
-                        return i;
-                    }, l = this[0].eventRegistry, i = this[0], n = e.split(" "), r = 0; r < n.length; r++) for (var o = n[r].split("."), u = a(o[0], o[1]), c = 0, p = u.length; c < p; c++) t(u[c].ev, u[c].namespace, u[c].handler);
-                    return this;
-                },
-                trigger: function trigger(e) {
-                    if (isValidElement(this[0])) for (var t = this[0].eventRegistry, a = this[0], n = "string" == typeof e ? e.split(" ") : [ e.type ], i = 0; i < n.length; i++) {
-                        var r = n[i].split("."), o = r[0], s = r[1] || "global";
-                        if (void 0 !== f && "global" === s) {
-                            var l, u, c = {
-                                bubbles: !0,
-                                cancelable: !0,
-                                detail: arguments[1]
-                            };
-                            if (f.createEvent) {
-                                try {
-                                    l = new CustomEvent(o, c);
-                                } catch (e) {
-                                    (l = f.createEvent("CustomEvent")).initCustomEvent(o, c.bubbles, c.cancelable, c.detail);
-                                }
-                                e.type && DependencyLib.extend(l, e), a.dispatchEvent(l);
-                            } else (l = f.createEventObject()).eventType = o, l.detail = arguments[1], e.type && DependencyLib.extend(l, e), 
-                            a.fireEvent("on" + l.eventType, l);
-                        } else if (void 0 !== t[o]) if (e = e.type ? e : DependencyLib.Event(e), "global" === s) for (var p in t[o]) for (u = 0; u < t[o][p].length; u++) t[o][p][u].apply(a, arguments); else for (u = 0; u < t[o][s].length; u++) t[o][s][u].apply(a, arguments);
-                    }
-                    return this;
+        }, n = a(4), f = n.document;
+        function isWindow(e) {
+            return null != e && e === e.window;
+        }
+        function isValidElement(e) {
+            return e instanceof Element;
+        }
+        function DependencyLib(e) {
+            return e instanceof DependencyLib ? e : this instanceof DependencyLib ? void (null != e && e !== n && (this[0] = e.nodeName ? e : void 0 !== e[0] && e[0].nodeName ? e[0] : f.querySelector(e), 
+            void 0 !== this[0] && null !== this[0] && (this[0].eventRegistry = this[0].eventRegistry || {}))) : new DependencyLib(e);
+        }
+        DependencyLib.prototype = {
+            on: function on(e, a) {
+                if (isValidElement(this[0])) for (var t = function addEvent(e, t) {
+                    i.addEventListener ? i.addEventListener(e, a, !1) : i.attachEvent && i.attachEvent("on" + e, a), 
+                    n[e] = n[e] || {}, n[e][t] = n[e][t] || [], n[e][t].push(a);
+                }, n = this[0].eventRegistry, i = this[0], r = e.split(" "), o = 0; o < r.length; o++) {
+                    var s = r[o].split(".");
+                    t(s[0], s[1] || "global");
                 }
-            }, DependencyLib.isFunction = function(e) {
-                return "function" == typeof e;
-            }, DependencyLib.noop = function() {}, DependencyLib.isArray = Array.isArray, DependencyLib.inArray = function(e, t, a) {
-                return null == t ? -1 : function indexOf(e, t) {
-                    for (var a = 0, n = e.length; a < n; a++) if (e[a] === t) return a;
-                    return -1;
-                }(t, e);
-            }, DependencyLib.valHooks = void 0, DependencyLib.isPlainObject = function(e) {
-                return !("object" !== (void 0 === e ? "undefined" : c(e)) || e.nodeType || isWindow(e) || e.constructor && !Object.hasOwnProperty.call(e.constructor.prototype, "isPrototypeOf"));
-            }, DependencyLib.extend = function() {
-                var e, t, a, n, i, r, o = arguments[0] || {}, s = 1, l = arguments.length, u = !1;
-                for ("boolean" == typeof o && (u = o, o = arguments[s] || {}, s++), "object" === (void 0 === o ? "undefined" : c(o)) || DependencyLib.isFunction(o) || (o = {}), 
-                s === l && (o = this, s--); s < l; s++) if (null != (e = arguments[s])) for (t in e) a = o[t], 
-                o !== (n = e[t]) && (u && n && (DependencyLib.isPlainObject(n) || (i = DependencyLib.isArray(n))) ? (r = i ? (i = !1, 
-                a && DependencyLib.isArray(a) ? a : []) : a && DependencyLib.isPlainObject(a) ? a : {}, 
-                o[t] = DependencyLib.extend(u, r, n)) : void 0 !== n && (o[t] = n));
-                return o;
-            }, DependencyLib.each = function(e, t) {
-                var a = 0;
-                if (function isArraylike(e) {
-                    var t = "length" in e && e.length, a = void 0 === e ? "undefined" : c(e);
-                    return "function" !== a && !isWindow(e) && (!(1 !== e.nodeType || !t) || "array" === a || 0 === t || "number" == typeof t && 0 < t && t - 1 in e);
-                }(e)) for (var n = e.length; a < n && !1 !== t.call(e[a], a, e[a]); a++) ; else for (a in e) if (!1 === t.call(e[a], a, e[a])) break;
-                return e;
-            }, DependencyLib.data = function(e, t, a) {
-                if (void 0 === a) return e.__data ? e.__data[t] : null;
-                e.__data = e.__data || {}, e.__data[t] = a;
-            }, "function" == typeof t.CustomEvent ? DependencyLib.Event = t.CustomEvent : (DependencyLib.Event = function(e, t) {
-                t = t || {
-                    bubbles: !1,
-                    cancelable: !1,
-                    detail: void 0
-                };
-                var a = f.createEvent("CustomEvent");
-                return a.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), a;
-            }).prototype = t.Event.prototype, DependencyLib;
-        }) ? n.apply(t, i) : n) || (e.exports = r);
+                return this;
+            },
+            off: function off(e, s) {
+                if (isValidElement(this[0])) for (var t = function removeEvent(e, t, a) {
+                    if (e in l == !0) if (i.removeEventListener ? i.removeEventListener(e, a, !1) : i.detachEvent && i.detachEvent("on" + e, a), 
+                    "global" === t) for (var n in l[e]) l[e][n].splice(l[e][n].indexOf(a), 1); else l[e][t].splice(l[e][t].indexOf(a), 1);
+                }, a = function resolveNamespace(e, t) {
+                    var a, n, i = [];
+                    if (0 < e.length) if (void 0 === s) for (a = 0, n = l[e][t].length; a < n; a++) i.push({
+                        ev: e,
+                        namespace: t && 0 < t.length ? t : "global",
+                        handler: l[e][t][a]
+                    }); else i.push({
+                        ev: e,
+                        namespace: t && 0 < t.length ? t : "global",
+                        handler: s
+                    }); else if (0 < t.length) for (var r in l) for (var o in l[r]) if (o === t) if (void 0 === s) for (a = 0, 
+                    n = l[r][o].length; a < n; a++) i.push({
+                        ev: r,
+                        namespace: o,
+                        handler: l[r][o][a]
+                    }); else i.push({
+                        ev: r,
+                        namespace: o,
+                        handler: s
+                    });
+                    return i;
+                }, l = this[0].eventRegistry, i = this[0], n = e.split(" "), r = 0; r < n.length; r++) for (var o = n[r].split("."), u = a(o[0], o[1]), c = 0, p = u.length; c < p; c++) t(u[c].ev, u[c].namespace, u[c].handler);
+                return this;
+            },
+            trigger: function trigger(e) {
+                if (isValidElement(this[0])) for (var t = this[0].eventRegistry, a = this[0], n = "string" == typeof e ? e.split(" ") : [ e.type ], i = 0; i < n.length; i++) {
+                    var r = n[i].split("."), o = r[0], s = r[1] || "global";
+                    if (void 0 !== f && "global" === s) {
+                        var l, u, c = {
+                            bubbles: !0,
+                            cancelable: !0,
+                            detail: arguments[1]
+                        };
+                        if (f.createEvent) {
+                            try {
+                                l = new CustomEvent(o, c);
+                            } catch (e) {
+                                (l = f.createEvent("CustomEvent")).initCustomEvent(o, c.bubbles, c.cancelable, c.detail);
+                            }
+                            e.type && DependencyLib.extend(l, e), a.dispatchEvent(l);
+                        } else (l = f.createEventObject()).eventType = o, l.detail = arguments[1], e.type && DependencyLib.extend(l, e), 
+                        a.fireEvent("on" + l.eventType, l);
+                    } else if (void 0 !== t[o]) if (e = e.type ? e : DependencyLib.Event(e), "global" === s) for (var p in t[o]) for (u = 0; u < t[o][p].length; u++) t[o][p][u].apply(a, arguments); else for (u = 0; u < t[o][s].length; u++) t[o][s][u].apply(a, arguments);
+                }
+                return this;
+            }
+        }, DependencyLib.isFunction = function(e) {
+            return "function" == typeof e;
+        }, DependencyLib.noop = function() {}, DependencyLib.isArray = Array.isArray, DependencyLib.inArray = function(e, t, a) {
+            return null == t ? -1 : function indexOf(e, t) {
+                for (var a = 0, n = e.length; a < n; a++) if (e[a] === t) return a;
+                return -1;
+            }(t, e);
+        }, DependencyLib.valHooks = void 0, DependencyLib.isPlainObject = function(e) {
+            return "object" === (void 0 === e ? "undefined" : c(e)) && !e.nodeType && !isWindow(e) && !(e.constructor && !Object.hasOwnProperty.call(e.constructor.prototype, "isPrototypeOf"));
+        }, DependencyLib.extend = function() {
+            var e, t, a, n, i, r, o = arguments[0] || {}, s = 1, l = arguments.length, u = !1;
+            for ("boolean" == typeof o && (u = o, o = arguments[s] || {}, s++), "object" === (void 0 === o ? "undefined" : c(o)) || DependencyLib.isFunction(o) || (o = {}), 
+            s === l && (o = this, s--); s < l; s++) if (null != (e = arguments[s])) for (t in e) a = o[t], 
+            o !== (n = e[t]) && (u && n && (DependencyLib.isPlainObject(n) || (i = DependencyLib.isArray(n))) ? (r = i ? (i = !1, 
+            a && DependencyLib.isArray(a) ? a : []) : a && DependencyLib.isPlainObject(a) ? a : {}, 
+            o[t] = DependencyLib.extend(u, r, n)) : void 0 !== n && (o[t] = n));
+            return o;
+        }, DependencyLib.each = function(e, t) {
+            var a = 0;
+            if (function isArraylike(e) {
+                var t = "length" in e && e.length, a = void 0 === e ? "undefined" : c(e);
+                return "function" !== a && !isWindow(e) && (!(1 !== e.nodeType || !t) || "array" === a || 0 === t || "number" == typeof t && 0 < t && t - 1 in e);
+            }(e)) for (var n = e.length; a < n && !1 !== t.call(e[a], a, e[a]); a++) ; else for (a in e) if (!1 === t.call(e[a], a, e[a])) break;
+            return e;
+        }, DependencyLib.data = function(e, t, a) {
+            if (void 0 === a) return e.__data ? e.__data[t] : null;
+            e.__data = e.__data || {}, e.__data[t] = a;
+        }, "function" == typeof n.CustomEvent ? DependencyLib.Event = n.CustomEvent : (DependencyLib.Event = function(e, t) {
+            t = t || {
+                bubbles: !1,
+                cancelable: !1,
+                detail: void 0
+            };
+            var a = f.createEvent("CustomEvent");
+            return a.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), a;
+        }).prototype = n.Event.prototype, e.exports = DependencyLib;
     }, function(module, exports, __webpack_require__) {
         "use strict";
         var __WEBPACK_AMD_DEFINE_RESULT__, _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
@@ -1821,12 +1816,12 @@
         }.call(exports, __webpack_require__, exports, module), void 0 === __WEBPACK_AMD_DEFINE_RESULT__ || (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);
     }, function(e, t, a) {
         "use strict";
-        var n, i, r, c = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
+        var c = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
             return typeof e;
         } : function(e) {
             return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
         };
-        i = [ a(2) ], void 0 === (r = "function" == typeof (n = function(s) {
+        e.exports = function(s) {
             var l = s.dependencyLib, u = {
                 d: [ "[1-9]|[12][0-9]|3[01]", Date.prototype.setDate, "day", Date.prototype.getDate ],
                 dd: [ "0[1-9]|[12][0-9]|3[01]", Date.prototype.setDate, "day", function() {
@@ -1998,12 +1993,10 @@
                     shiftPositions: !1
                 }
             }), s;
-        }) ? n.apply(t, i) : n) || (e.exports = r);
+        }(a(2));
     }, function(e, t, a) {
         "use strict";
-        var n, i, r;
-        "function" == typeof Symbol && Symbol.iterator;
-        i = [ a(2) ], void 0 === (r = "function" == typeof (n = function(k) {
+        e.exports = function(k) {
             var h = k.dependencyLib;
             function autoEscape(e, t) {
                 for (var a = "", n = 0; n < e.length; n++) k.prototype.definitions[e.charAt(n)] || t.definitions[e.charAt(n)] || t.optionalmarker.start === e.charAt(n) || t.optionalmarker.end === e.charAt(n) || t.quantifiermarker.start === e.charAt(n) || t.quantifiermarker.end === e.charAt(n) || t.groupmarker.start === e.charAt(n) || t.groupmarker.end === e.charAt(n) || t.alternatormarker === e.charAt(n) ? a += "\\" + e.charAt(n) : a += e.charAt(n);
@@ -2328,7 +2321,7 @@
                     allowMinus: !1
                 }
             }), k;
-        }) ? n.apply(t, i) : n) || (e.exports = r);
+        }(a(2));
     } ]);
 });
 //# sourceMappingURL=inputmask.js.map

File diff suppressed because it is too large
+ 2 - 2
dist/inputmask.min.js


File diff suppressed because it is too large
+ 412 - 422
dist/jquery.inputmask.js


File diff suppressed because it is too large
+ 2 - 2
dist/jquery.inputmask.min.js


+ 135 - 146
lib/dependencyLibs/inputmask.dependencyLib.jqlite.js

@@ -4,178 +4,167 @@
  Copyright (c) Robin Herbots
  Licensed under the MIT license
  */
-(function (factory) {
-    if (typeof define === "function" && define.amd) {
-        define(["jqlite", "../global/window"], factory);
-    } else if (typeof exports === "object") {
-        module.exports = factory(require("jqlite"), require("../global/window"));
-    } else {
-        window.dependencyLib = factory(jqlite, window);
-    }
-}
-(function ($, window) {
-    var document = window.document;
-    // Use a stripped-down indexOf as it's faster than native
-    // http://jsperf.com/thor-indexof-vs-for/5
-    function indexOf(list, elem) {
-        var i = 0,
-            len = list.length;
-        for (; i < len; i++) {
-            if (list[i] === elem) {
-                return i;
-            }
+var $ = require("jqlite"), window = require("../global/window"), document = window.document;
+// Use a stripped-down indexOf as it's faster than native
+// http://jsperf.com/thor-indexof-vs-for/5
+function indexOf(list, elem) {
+    var i = 0,
+        len = list.length;
+    for (; i < len; i++) {
+        if (list[i] === elem) {
+            return i;
         }
-        return -1;
     }
+    return -1;
+}
 
 
-    function isWindow(obj) {
-        return obj != null && obj === obj.window;
+function isWindow(obj) {
+    return obj != null && obj === obj.window;
+}
+
+function isArraylike(obj) {
+    // Support: iOS 8.2 (not reproducible in simulator)
+    // `in` check used to prevent JIT error (gh-2145)
+    // hasOwn isn't used here due to false negatives
+    // regarding Nodelist length in IE
+    var length = "length" in obj && obj.length,
+        ltype = typeof obj;
+
+    if (ltype === "function" || isWindow(obj)) {
+        return false;
     }
 
-    function isArraylike(obj) {
-        // Support: iOS 8.2 (not reproducible in simulator)
-        // `in` check used to prevent JIT error (gh-2145)
-        // hasOwn isn't used here due to false negatives
-        // regarding Nodelist length in IE
-        var length = "length" in obj && obj.length,
-            ltype = typeof obj;
+    if (obj.nodeType === 1 && length) {
+        return true;
+    }
 
-        if (ltype === "function" || isWindow(obj)) {
-            return false;
-        }
+    return ltype === "array" || length === 0 ||
+        typeof length === "number" && length > 0 && (length - 1) in obj;
+}
 
-        if (obj.nodeType === 1 && length) {
-            return true;
-        }
+$.inArray = function (elem, arr, i) {
+    return arr == null ? -1 : indexOf(arr, elem, i);
+};
+$.isFunction = function (obj) {
+    return typeof obj === "function";
+};
+$.isArray = Array.isArray;
+$.isPlainObject = function (obj) {
+    // Not plain objects:
+    // - Any object or value whose internal [[Class]] property is not "[object Object]"
+    // - DOM nodes
+    // - window
+    if (typeof obj !== "object" || obj.nodeType || isWindow(obj)) {
+        return false;
+    }
 
-        return ltype === "array" || length === 0 ||
-            typeof length === "number" && length > 0 && (length - 1) in obj;
+    if (obj.constructor && !Object.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) {
+        return false;
     }
 
-    $.inArray = function (elem, arr, i) {
-        return arr == null ? -1 : indexOf(arr, elem, i);
-    };
-    $.isFunction = function (obj) {
-        return typeof obj === "function";
-    };
-    $.isArray = Array.isArray;
-    $.isPlainObject = function (obj) {
-        // Not plain objects:
-        // - Any object or value whose internal [[Class]] property is not "[object Object]"
-        // - DOM nodes
-        // - window
-        if (typeof obj !== "object" || obj.nodeType || isWindow(obj)) {
-            return false;
-        }
+    // If the function hasn't returned already, we're confident that
+    // |obj| is a plain object, created by {} or constructed with new Object
+    return true;
+};
+$.extend = function () {
+    var options, name, src, copy, copyIsArray, clone,
+        target = arguments[0] || {},
+        i = 1,
+        length = arguments.length,
+        deep = false;
+
+    // Handle a deep copy situation
+    if (typeof target === "boolean") {
+        deep = target;
+
+        // Skip the boolean and the target
+        target = arguments[i] || {};
+        i++;
+    }
 
-        if (obj.constructor && !Object.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) {
-            return false;
-        }
+    // Handle case when target is a string or something (possible in deep copy)
+    if (typeof target !== "object" && !$.isFunction(target)) {
+        target = {};
+    }
 
-        // If the function hasn't returned already, we're confident that
-        // |obj| is a plain object, created by {} or constructed with new Object
-        return true;
-    };
-    $.extend = function () {
-        var options, name, src, copy, copyIsArray, clone,
-            target = arguments[0] || {},
-            i = 1,
-            length = arguments.length,
-            deep = false;
-
-        // Handle a deep copy situation
-        if (typeof target === "boolean") {
-            deep = target;
-
-            // Skip the boolean and the target
-            target = arguments[i] || {};
-            i++;
-        }
+    // Extend jQuery itself if only one argument is passed
+    if (i === length) {
+        target = this;
+        i--;
+    }
 
-        // Handle case when target is a string or something (possible in deep copy)
-        if (typeof target !== "object" && !$.isFunction(target)) {
-            target = {};
-        }
+    for (; i < length; i++) {
+        // Only deal with non-null/undefined values
+        if ((options = arguments[i]) != null) {
+            // Extend the base object
+            for (name in options) {
+                src = target[name];
+                copy = options[name];
+
+                // Prevent never-ending loop
+                if (target === copy) {
+                    continue;
+                }
 
-        // Extend jQuery itself if only one argument is passed
-        if (i === length) {
-            target = this;
-            i--;
-        }
+                // Recurse if we're merging plain objects or arrays
+                if (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))) {
+                    if (copyIsArray) {
+                        copyIsArray = false;
+                        clone = src && $.isArray(src) ? src : [];
 
-        for (; i < length; i++) {
-            // Only deal with non-null/undefined values
-            if ((options = arguments[i]) != null) {
-                // Extend the base object
-                for (name in options) {
-                    src = target[name];
-                    copy = options[name];
-
-                    // Prevent never-ending loop
-                    if (target === copy) {
-                        continue;
+                    } else {
+                        clone = src && $.isPlainObject(src) ? src : {};
                     }
 
-                    // Recurse if we're merging plain objects or arrays
-                    if (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))) {
-                        if (copyIsArray) {
-                            copyIsArray = false;
-                            clone = src && $.isArray(src) ? src : [];
-
-                        } else {
-                            clone = src && $.isPlainObject(src) ? src : {};
-                        }
+                    // Never move original objects, clone them
+                    target[name] = $.extend(deep, clone, copy);
 
-                        // Never move original objects, clone them
-                        target[name] = $.extend(deep, clone, copy);
-
-                        // Don't bring in undefined values
-                    } else if (copy !== undefined) {
-                        target[name] = copy;
-                    }
+                    // Don't bring in undefined values
+                } else if (copy !== undefined) {
+                    target[name] = copy;
                 }
             }
         }
+    }
 
-        // Return the modified object
-        return target;
-    };
-    $.each = function (obj, callback) {
-        var value, i = 0;
-
-        if (isArraylike(obj)) {
-            for (var length = obj.length; i < length; i++) {
-                value = callback.call(obj[i], i, obj[i]);
-                if (value === false) {
-                    break;
-                }
+    // Return the modified object
+    return target;
+};
+$.each = function (obj, callback) {
+    var value, i = 0;
+
+    if (isArraylike(obj)) {
+        for (var length = obj.length; i < length; i++) {
+            value = callback.call(obj[i], i, obj[i]);
+            if (value === false) {
+                break;
             }
-        } else {
-            for (i in obj) {
-                value = callback.call(obj[i], i, obj[i]);
-                if (value === false) {
-                    break;
-                }
+        }
+    } else {
+        for (i in obj) {
+            value = callback.call(obj[i], i, obj[i]);
+            if (value === false) {
+                break;
             }
         }
+    }
 
-        return obj;
-    };
-    $.data = function (elem, name, data) {
-        return $(elem).data(name, data);
-    };
-    $.Event = $.Event || function CustomEvent(event, params) {
-        params = params || {
-            bubbles: false,
-            cancelable: false,
-            detail: undefined
-        };
-        var evt = document.createEvent("CustomEvent");
-        evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
-        return evt;
+    return obj;
+};
+$.data = function (elem, name, data) {
+    return $(elem).data(name, data);
+};
+$.Event = $.Event || function CustomEvent(event, params) {
+    params = params || {
+        bubbles: false,
+        cancelable: false,
+        detail: undefined
     };
-    $.Event.prototype = window.Event.prototype;
+    var evt = document.createEvent("CustomEvent");
+    evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
+    return evt;
+};
+$.Event.prototype = window.Event.prototype;
 
-    return $;
-}));
+module.exports = $;

+ 1 - 12
lib/dependencyLibs/inputmask.dependencyLib.jquery.js

@@ -4,15 +4,4 @@
  Copyright (c) Robin Herbots
  Licensed under the MIT license
  */
-(function (factory) {
-	if (typeof define === "function" && define.amd) {
-		define(["jquery"], factory);
-	} else if (typeof exports === "object") {
-		module.exports = factory(require("jquery"));
-	} else {
-		window.dependencyLib = factory(jQuery);
-	}
-}
-(function ($) {
-	return $;
-}));
+module.exports = require("jquery");

+ 300 - 311
lib/dependencyLibs/inputmask.dependencyLib.js

@@ -4,383 +4,372 @@
  Copyright (c) Robin Herbots
  Licensed under the MIT license
  */
-(function (factory) {
-    if (typeof define === "function" && define.amd) {
-        define(["../global/window"], factory);
-    } else if (typeof exports === "object") {
-        module.exports = factory(require("../global/window"));
-    } else {
-        window.dependencyLib = factory(window);
-    }
-}
-(function (window) {
-    var document = window.document;
-    //helper functions
-
-    // Use a stripped-down indexOf as it's faster than native
-    // http://jsperf.com/thor-indexof-vs-for/5
-    function indexOf(list, elem) {
-        var i = 0,
-            len = list.length;
-        for (; i < len; i++) {
-            if (list[i] === elem) {
-                return i;
-            }
+var window = require("../global/window"), document = window.document;
+//helper functions
+
+// Use a stripped-down indexOf as it's faster than native
+// http://jsperf.com/thor-indexof-vs-for/5
+function indexOf(list, elem) {
+    var i = 0,
+        len = list.length;
+    for (; i < len; i++) {
+        if (list[i] === elem) {
+            return i;
         }
-        return -1;
     }
+    return -1;
+}
 
-    function isWindow(obj) {
-        return obj != null && obj === obj.window;
+function isWindow(obj) {
+    return obj != null && obj === obj.window;
+}
+
+function isArraylike(obj) {
+    // Support: iOS 8.2 (not reproducible in simulator)
+    // `in` check used to prevent JIT error (gh-2145)
+    // hasOwn isn't used here due to false negatives
+    // regarding Nodelist length in IE
+    var length = "length" in obj && obj.length,
+        ltype = typeof obj;
+
+    if (ltype === "function" || isWindow(obj)) {
+        return false;
     }
 
-    function isArraylike(obj) {
-        // Support: iOS 8.2 (not reproducible in simulator)
-        // `in` check used to prevent JIT error (gh-2145)
-        // hasOwn isn't used here due to false negatives
-        // regarding Nodelist length in IE
-        var length = "length" in obj && obj.length,
-            ltype = typeof obj;
+    if (obj.nodeType === 1 && length) {
+        return true;
+    }
 
-        if (ltype === "function" || isWindow(obj)) {
-            return false;
-        }
+    return ltype === "array" || length === 0 ||
+        typeof length === "number" && length > 0 && (length - 1) in obj;
+}
 
-        if (obj.nodeType === 1 && length) {
-            return true;
-        }
+function isValidElement(elem) {
+    return elem instanceof Element;
+}
 
-        return ltype === "array" || length === 0 ||
-            typeof length === "number" && length > 0 && (length - 1) in obj;
+function DependencyLib(elem) {
+    if (elem instanceof DependencyLib) {
+        return elem;
     }
-
-    function isValidElement(elem) {
-        return elem instanceof Element;
+    if (!(this instanceof DependencyLib)) {
+        return new DependencyLib(elem);
     }
-
-    function DependencyLib(elem) {
-        if (elem instanceof DependencyLib) {
-            return elem;
-        }
-        if (!(this instanceof DependencyLib)) {
-            return new DependencyLib(elem);
-        }
-        if (elem !== undefined && elem !== null && elem !== window) {
-            this[0] = elem.nodeName ? elem : (elem[0] !== undefined && elem[0].nodeName ? elem[0] : document.querySelector(elem));
-            if (this[0] !== undefined && this[0] !== null) {
-                this[0].eventRegistry = this[0].eventRegistry || {};
-            }
+    if (elem !== undefined && elem !== null && elem !== window) {
+        this[0] = elem.nodeName ? elem : (elem[0] !== undefined && elem[0].nodeName ? elem[0] : document.querySelector(elem));
+        if (this[0] !== undefined && this[0] !== null) {
+            this[0].eventRegistry = this[0].eventRegistry || {};
         }
     }
+}
 
-    function getWindow(elem) {
-        return isWindow(elem) ?
-            elem :
-            elem.nodeType === 9 ?
-                elem.defaultView || elem.parentWindow :
-                false;
-    }
+function getWindow(elem) {
+    return isWindow(elem) ?
+        elem :
+        elem.nodeType === 9 ?
+            elem.defaultView || elem.parentWindow :
+            false;
+}
 
-    DependencyLib.prototype = {
-        on: function (events, handler) {
-            if (isValidElement(this[0])) {
-                var eventRegistry = this[0].eventRegistry,
-                    elem = this[0];
-
-                function addEvent(ev, namespace) {
-                    //register domevent
-                    if (elem.addEventListener) { // all browsers except IE before version 9
-                        elem.addEventListener(ev, handler, false);
-                    } else if (elem.attachEvent) { // IE before version 9
-                        elem.attachEvent("on" + ev, handler);
-                    }
-                    eventRegistry[ev] = eventRegistry[ev] || {};
-                    eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || [];
-                    eventRegistry[ev][namespace].push(handler);
+DependencyLib.prototype = {
+    on: function (events, handler) {
+        if (isValidElement(this[0])) {
+            var eventRegistry = this[0].eventRegistry,
+                elem = this[0];
+
+            function addEvent(ev, namespace) {
+                //register domevent
+                if (elem.addEventListener) { // all browsers except IE before version 9
+                    elem.addEventListener(ev, handler, false);
+                } else if (elem.attachEvent) { // IE before version 9
+                    elem.attachEvent("on" + ev, handler);
                 }
+                eventRegistry[ev] = eventRegistry[ev] || {};
+                eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || [];
+                eventRegistry[ev][namespace].push(handler);
+            }
 
-                var _events = events.split(" ");
-                for (var endx = 0; endx < _events.length; endx++) {
-                    var nsEvent = _events[endx].split("."),
-                        ev = nsEvent[0],
-                        namespace = nsEvent[1] || "global";
-                    addEvent(ev, namespace);
-                }
+            var _events = events.split(" ");
+            for (var endx = 0; endx < _events.length; endx++) {
+                var nsEvent = _events[endx].split("."),
+                    ev = nsEvent[0],
+                    namespace = nsEvent[1] || "global";
+                addEvent(ev, namespace);
             }
-            return this;
-        },
-        off: function (events, handler) {
-            if (isValidElement(this[0])) {
-                var eventRegistry = this[0].eventRegistry,
-                    elem = this[0];
-
-                function removeEvent(ev, namespace, handler) {
-                    if (ev in eventRegistry === true) {
-                        //unbind to dom events
-                        if (elem.removeEventListener) { // all browsers except IE before version 9
-                            elem.removeEventListener(ev, handler, false);
-                        } else if (elem.detachEvent) { // IE before version 9
-                            elem.detachEvent("on" + ev, handler);
-                        }
-                        if (namespace === "global") {
-                            for (var nmsp in eventRegistry[ev]) {
-                                eventRegistry[ev][nmsp].splice(eventRegistry[ev][nmsp].indexOf(handler), 1);
-                            }
-                        } else {
-                            eventRegistry[ev][namespace].splice(eventRegistry[ev][namespace].indexOf(handler), 1);
+        }
+        return this;
+    },
+    off: function (events, handler) {
+        if (isValidElement(this[0])) {
+            var eventRegistry = this[0].eventRegistry,
+                elem = this[0];
+
+            function removeEvent(ev, namespace, handler) {
+                if (ev in eventRegistry === true) {
+                    //unbind to dom events
+                    if (elem.removeEventListener) { // all browsers except IE before version 9
+                        elem.removeEventListener(ev, handler, false);
+                    } else if (elem.detachEvent) { // IE before version 9
+                        elem.detachEvent("on" + ev, handler);
+                    }
+                    if (namespace === "global") {
+                        for (var nmsp in eventRegistry[ev]) {
+                            eventRegistry[ev][nmsp].splice(eventRegistry[ev][nmsp].indexOf(handler), 1);
                         }
+                    } else {
+                        eventRegistry[ev][namespace].splice(eventRegistry[ev][namespace].indexOf(handler), 1);
                     }
                 }
+            }
 
-                function resolveNamespace(ev, namespace) {
-                    var evts = [],
-                        hndx, hndL;
-                    if (ev.length > 0) {
-                        if (handler === undefined) {
-                            for (hndx = 0, hndL = eventRegistry[ev][namespace].length; hndx < hndL; hndx++) {
-                                evts.push({
-                                    ev: ev,
-                                    namespace: namespace && namespace.length > 0 ? namespace : "global",
-                                    handler: eventRegistry[ev][namespace][hndx]
-                                });
-                            }
-                        } else {
+            function resolveNamespace(ev, namespace) {
+                var evts = [],
+                    hndx, hndL;
+                if (ev.length > 0) {
+                    if (handler === undefined) {
+                        for (hndx = 0, hndL = eventRegistry[ev][namespace].length; hndx < hndL; hndx++) {
                             evts.push({
                                 ev: ev,
                                 namespace: namespace && namespace.length > 0 ? namespace : "global",
-                                handler: handler
+                                handler: eventRegistry[ev][namespace][hndx]
                             });
                         }
-                    } else if (namespace.length > 0) {
-                        for (var evNdx in eventRegistry) {
-                            for (var nmsp in eventRegistry[evNdx]) {
-                                if (nmsp === namespace) {
-                                    if (handler === undefined) {
-                                        for (hndx = 0, hndL = eventRegistry[evNdx][nmsp].length; hndx < hndL; hndx++) {
-                                            evts.push({
-                                                ev: evNdx,
-                                                namespace: nmsp,
-                                                handler: eventRegistry[evNdx][nmsp][hndx]
-                                            });
-                                        }
-                                    } else {
+                    } else {
+                        evts.push({
+                            ev: ev,
+                            namespace: namespace && namespace.length > 0 ? namespace : "global",
+                            handler: handler
+                        });
+                    }
+                } else if (namespace.length > 0) {
+                    for (var evNdx in eventRegistry) {
+                        for (var nmsp in eventRegistry[evNdx]) {
+                            if (nmsp === namespace) {
+                                if (handler === undefined) {
+                                    for (hndx = 0, hndL = eventRegistry[evNdx][nmsp].length; hndx < hndL; hndx++) {
                                         evts.push({
                                             ev: evNdx,
                                             namespace: nmsp,
-                                            handler: handler
+                                            handler: eventRegistry[evNdx][nmsp][hndx]
                                         });
                                     }
+                                } else {
+                                    evts.push({
+                                        ev: evNdx,
+                                        namespace: nmsp,
+                                        handler: handler
+                                    });
                                 }
                             }
                         }
                     }
-
-                    return evts;
                 }
 
-                var _events = events.split(" ");
-                for (var endx = 0; endx < _events.length; endx++) {
-                    var nsEvent = _events[endx].split("."),
-                        offEvents = resolveNamespace(nsEvent[0], nsEvent[1]);
-                    for (var i = 0, offEventsL = offEvents.length; i < offEventsL; i++) {
-                        removeEvent(offEvents[i].ev, offEvents[i].namespace, offEvents[i].handler);
-                    }
+                return evts;
+            }
+
+            var _events = events.split(" ");
+            for (var endx = 0; endx < _events.length; endx++) {
+                var nsEvent = _events[endx].split("."),
+                    offEvents = resolveNamespace(nsEvent[0], nsEvent[1]);
+                for (var i = 0, offEventsL = offEvents.length; i < offEventsL; i++) {
+                    removeEvent(offEvents[i].ev, offEvents[i].namespace, offEvents[i].handler);
                 }
             }
-            return this;
-        },
-        trigger: function (events /* , args... */) {
-            if (isValidElement(this[0])) {
-                var eventRegistry = this[0].eventRegistry,
-                    elem = this[0];
-                var _events = typeof events === "string" ? events.split(" ") : [events.type];
-                for (var endx = 0; endx < _events.length; endx++) {
-                    var nsEvent = _events[endx].split("."),
-                        ev = nsEvent[0],
-                        namespace = nsEvent[1] || "global";
-                    if (document !== undefined && namespace === "global") {
-                        //trigger domevent
-                        var evnt, i, params = {
-                            bubbles: true,
-                            cancelable: true,
-                            detail: arguments[1]
-                        };
-                        // The custom event that will be created
-                        if (document.createEvent) {
-                            try {
-                                evnt = new CustomEvent(ev, params);
-                            } catch (e) {
-                                evnt = document.createEvent("CustomEvent");
-                                evnt.initCustomEvent(ev, params.bubbles, params.cancelable, params.detail);
-                            }
-                            if (events.type) DependencyLib.extend(evnt, events);
-                            elem.dispatchEvent(evnt);
-                        } else {
-                            evnt = document.createEventObject();
-                            evnt.eventType = ev;
-                            evnt.detail = arguments[1];
-                            if (events.type) DependencyLib.extend(evnt, events);
-                            elem.fireEvent("on" + evnt.eventType, evnt);
+        }
+        return this;
+    },
+    trigger: function (events /* , args... */) {
+        if (isValidElement(this[0])) {
+            var eventRegistry = this[0].eventRegistry,
+                elem = this[0];
+            var _events = typeof events === "string" ? events.split(" ") : [events.type];
+            for (var endx = 0; endx < _events.length; endx++) {
+                var nsEvent = _events[endx].split("."),
+                    ev = nsEvent[0],
+                    namespace = nsEvent[1] || "global";
+                if (document !== undefined && namespace === "global") {
+                    //trigger domevent
+                    var evnt, i, params = {
+                        bubbles: true,
+                        cancelable: true,
+                        detail: arguments[1]
+                    };
+                    // The custom event that will be created
+                    if (document.createEvent) {
+                        try {
+                            evnt = new CustomEvent(ev, params);
+                        } catch (e) {
+                            evnt = document.createEvent("CustomEvent");
+                            evnt.initCustomEvent(ev, params.bubbles, params.cancelable, params.detail);
                         }
-                    } else if (eventRegistry[ev] !== undefined) {
-                        arguments[0] = arguments[0].type ? arguments[0] : DependencyLib.Event(arguments[0]);
-                        if (namespace === "global") {
-                            for (var nmsp in eventRegistry[ev]) {
-                                for (i = 0; i < eventRegistry[ev][nmsp].length; i++) {
-                                    eventRegistry[ev][nmsp][i].apply(elem, arguments);
-                                }
-                            }
-                        } else {
-                            for (i = 0; i < eventRegistry[ev][namespace].length; i++) {
-                                eventRegistry[ev][namespace][i].apply(elem, arguments);
+                        if (events.type) DependencyLib.extend(evnt, events);
+                        elem.dispatchEvent(evnt);
+                    } else {
+                        evnt = document.createEventObject();
+                        evnt.eventType = ev;
+                        evnt.detail = arguments[1];
+                        if (events.type) DependencyLib.extend(evnt, events);
+                        elem.fireEvent("on" + evnt.eventType, evnt);
+                    }
+                } else if (eventRegistry[ev] !== undefined) {
+                    arguments[0] = arguments[0].type ? arguments[0] : DependencyLib.Event(arguments[0]);
+                    if (namespace === "global") {
+                        for (var nmsp in eventRegistry[ev]) {
+                            for (i = 0; i < eventRegistry[ev][nmsp].length; i++) {
+                                eventRegistry[ev][nmsp][i].apply(elem, arguments);
                             }
                         }
+                    } else {
+                        for (i = 0; i < eventRegistry[ev][namespace].length; i++) {
+                            eventRegistry[ev][namespace][i].apply(elem, arguments);
+                        }
                     }
                 }
             }
-            return this;
-        }
-    };
-
-    //static
-    DependencyLib.isFunction = function (obj) {
-        return typeof obj === "function";
-    };
-    DependencyLib.noop = function () {
-    };
-    DependencyLib.isArray = Array.isArray;
-    DependencyLib.inArray = function (elem, arr, i) {
-        return arr == null ? -1 : indexOf(arr, elem, i);
-    };
-    DependencyLib.valHooks = undefined;
-
-
-    DependencyLib.isPlainObject = function (obj) {
-        // Not plain objects:
-        // - Any object or value whose internal [[Class]] property is not "[object Object]"
-        // - DOM nodes
-        // - window
-        if (typeof obj !== "object" || obj.nodeType || isWindow(obj)) {
-            return false;
         }
+        return this;
+    }
+};
+
+//static
+DependencyLib.isFunction = function (obj) {
+    return typeof obj === "function";
+};
+DependencyLib.noop = function () {
+};
+DependencyLib.isArray = Array.isArray;
+DependencyLib.inArray = function (elem, arr, i) {
+    return arr == null ? -1 : indexOf(arr, elem, i);
+};
+DependencyLib.valHooks = undefined;
+
+
+DependencyLib.isPlainObject = function (obj) {
+    // Not plain objects:
+    // - Any object or value whose internal [[Class]] property is not "[object Object]"
+    // - DOM nodes
+    // - window
+    if (typeof obj !== "object" || obj.nodeType || isWindow(obj)) {
+        return false;
+    }
 
-        if (obj.constructor && !Object.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) {
-            return false;
-        }
+    if (obj.constructor && !Object.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) {
+        return false;
+    }
 
-        // If the function hasn't returned already, we're confident that
-        // |obj| is a plain object, created by {} or constructed with new Object
-        return true;
-    };
-
-    DependencyLib.extend = function () {
-        var options, name, src, copy, copyIsArray, clone,
-            target = arguments[0] || {},
-            i = 1,
-            length = arguments.length,
-            deep = false;
-
-        // Handle a deep copy situation
-        if (typeof target === "boolean") {
-            deep = target;
-
-            // Skip the boolean and the target
-            target = arguments[i] || {};
-            i++;
-        }
+    // If the function hasn't returned already, we're confident that
+    // |obj| is a plain object, created by {} or constructed with new Object
+    return true;
+};
+
+DependencyLib.extend = function () {
+    var options, name, src, copy, copyIsArray, clone,
+        target = arguments[0] || {},
+        i = 1,
+        length = arguments.length,
+        deep = false;
+
+    // Handle a deep copy situation
+    if (typeof target === "boolean") {
+        deep = target;
+
+        // Skip the boolean and the target
+        target = arguments[i] || {};
+        i++;
+    }
 
-        // Handle case when target is a string or something (possible in deep copy)
-        if (typeof target !== "object" && !DependencyLib.isFunction(target)) {
-            target = {};
-        }
+    // Handle case when target is a string or something (possible in deep copy)
+    if (typeof target !== "object" && !DependencyLib.isFunction(target)) {
+        target = {};
+    }
 
-        // Extend jQuery itself if only one argument is passed
-        if (i === length) {
-            target = this;
-            i--;
-        }
+    // Extend jQuery itself if only one argument is passed
+    if (i === length) {
+        target = this;
+        i--;
+    }
 
-        for (; i < length; i++) {
-            // Only deal with non-null/undefined values
-            if ((options = arguments[i]) != null) {
-                // Extend the base object
-                for (name in options) {
-                    src = target[name];
-                    copy = options[name];
-
-                    // Prevent never-ending loop
-                    if (target === copy) {
-                        continue;
-                    }
+    for (; i < length; i++) {
+        // Only deal with non-null/undefined values
+        if ((options = arguments[i]) != null) {
+            // Extend the base object
+            for (name in options) {
+                src = target[name];
+                copy = options[name];
+
+                // Prevent never-ending loop
+                if (target === copy) {
+                    continue;
+                }
 
-                    // Recurse if we're merging plain objects or arrays
-                    if (deep && copy && (DependencyLib.isPlainObject(copy) || (copyIsArray = DependencyLib.isArray(copy)))) {
-                        if (copyIsArray) {
-                            copyIsArray = false;
-                            clone = src && DependencyLib.isArray(src) ? src : [];
+                // Recurse if we're merging plain objects or arrays
+                if (deep && copy && (DependencyLib.isPlainObject(copy) || (copyIsArray = DependencyLib.isArray(copy)))) {
+                    if (copyIsArray) {
+                        copyIsArray = false;
+                        clone = src && DependencyLib.isArray(src) ? src : [];
 
-                        } else {
-                            clone = src && DependencyLib.isPlainObject(src) ? src : {};
-                        }
+                    } else {
+                        clone = src && DependencyLib.isPlainObject(src) ? src : {};
+                    }
 
-                        // Never move original objects, clone them
-                        target[name] = DependencyLib.extend(deep, clone, copy);
+                    // Never move original objects, clone them
+                    target[name] = DependencyLib.extend(deep, clone, copy);
 
-                        // Don't bring in undefined values
-                    } else if (copy !== undefined) {
-                        target[name] = copy;
-                    }
+                    // Don't bring in undefined values
+                } else if (copy !== undefined) {
+                    target[name] = copy;
                 }
             }
         }
+    }
 
-        // Return the modified object
-        return target;
-    };
+    // Return the modified object
+    return target;
+};
 
-    DependencyLib.each = function (obj, callback) {
-        var value, i = 0;
+DependencyLib.each = function (obj, callback) {
+    var value, i = 0;
 
-        if (isArraylike(obj)) {
-            for (var length = obj.length; i < length; i++) {
-                value = callback.call(obj[i], i, obj[i]);
-                if (value === false) {
-                    break;
-                }
+    if (isArraylike(obj)) {
+        for (var length = obj.length; i < length; i++) {
+            value = callback.call(obj[i], i, obj[i]);
+            if (value === false) {
+                break;
             }
-        } else {
-            for (i in obj) {
-                value = callback.call(obj[i], i, obj[i]);
-                if (value === false) {
-                    break;
-                }
+        }
+    } else {
+        for (i in obj) {
+            value = callback.call(obj[i], i, obj[i]);
+            if (value === false) {
+                break;
             }
         }
+    }
 
-        return obj;
-    };
+    return obj;
+};
 
-    DependencyLib.data = function (owner, key, value) {
-        if (value === undefined) {
-            return owner.__data ? owner.__data[key] : null;
-        } else {
-            owner.__data = owner.__data || {};
-            owner.__data[key] = value;
-        }
-    };
-
-    if (typeof window.CustomEvent === "function") {
-        DependencyLib.Event = window.CustomEvent;
+DependencyLib.data = function (owner, key, value) {
+    if (value === undefined) {
+        return owner.__data ? owner.__data[key] : null;
+    } else {
+        owner.__data = owner.__data || {};
+        owner.__data[key] = value;
     }
-    else {
-        DependencyLib.Event = function (event, params) {
-            params = params || {bubbles: false, cancelable: false, detail: undefined};
-            var evt = document.createEvent('CustomEvent');
-            evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
-            return evt;
-        }
-        DependencyLib.Event.prototype = window.Event.prototype;
+};
+
+if (typeof window.CustomEvent === "function") {
+    DependencyLib.Event = window.CustomEvent;
+}
+else {
+    DependencyLib.Event = function (event, params) {
+        params = params || {bubbles: false, cancelable: false, detail: undefined};
+        var evt = document.createEvent('CustomEvent');
+        evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
+        return evt;
     }
+    DependencyLib.Event.prototype = window.Event.prototype;
+}
 
-    return DependencyLib;
-}));
+module.exports = DependencyLib;

+ 1 - 7
lib/extensions/inputmask.date.extensions.js

@@ -7,13 +7,7 @@
  Optional extensions on the jquery.inputmask base
  */
 (function (factory) {
-    if (typeof define === "function" && define.amd) {
-        define(["../inputmask"], factory);
-    } else if (typeof exports === "object") {
-        module.exports = factory(require("../inputmask"));
-    } else {
-        factory(window.Inputmask);
-    }
+    module.exports = factory(require("../inputmask"));
 }
 (function (Inputmask) {
         var $ = Inputmask.dependencyLib;

+ 1 - 7
lib/extensions/inputmask.extensions.js

@@ -7,13 +7,7 @@
  Optional extensions on the jquery.inputmask base
  */
 (function (factory) {
-    if (typeof define === "function" && define.amd) {
-        define(["../inputmask"], factory);
-    } else if (typeof exports === "object") {
-        module.exports = factory(require("../inputmask"));
-    } else {
-        factory(window.Inputmask);
-    }
+    module.exports = factory(require("../inputmask"));
 }
 (function (Inputmask) {
     //extra definitions

+ 1 - 7
lib/extensions/inputmask.numeric.extensions.js

@@ -7,13 +7,7 @@
  Optional extensions on the jquery.inputmask base
  */
 (function (factory) {
-    if (typeof define === "function" && define.amd) {
-        define(["../inputmask"], factory);
-    } else if (typeof exports === "object") {
-        module.exports = factory(require("../inputmask"));
-    } else {
-        factory(window.Inputmask);
-    }
+    module.exports = factory(require("../inputmask"));
 }
 (function (Inputmask) {
     var $ = Inputmask.dependencyLib;

+ 25 - 23
lib/inputmask.js

@@ -5,13 +5,7 @@
  * Licensed under the MIT license
  */
 (function (factory) {
-    if (typeof define === "function" && define.amd) {
-        define(["./dependencyLibs/inputmask.dependencyLib", "./global/window"], factory);
-    } else if (typeof exports === "object") {
-        module.exports = factory(require("./dependencyLibs/inputmask.dependencyLib"), require("./global/window"));
-    } else {
-        window.Inputmask = factory(window.dependencyLib || jQuery, window);
-    }
+    module.exports = factory(require("./dependencyLibs/inputmask.dependencyLib"), require("./global/window"));
 }
 (function ($, window, undefined) {
         var document = window.document,
@@ -748,7 +742,8 @@
                         "tests": {},
                         "excludes": {}, //excluded alternations
                         "metadata": metadata,
-                        maskLength: undefined
+                        "maskLength": undefined,
+                        "jitOffset": {}
                     };
                     if (nocache !== true) {
                         Inputmask.prototype.masksCache[maskdefKey] = masksetDefinition;
@@ -1203,7 +1198,7 @@
                                         latestMatch = matches[matches.length - 1].match;
                                         //mark optionality
                                         //TODO FIX RECURSIVE QUANTIFIERS
-                                        latestMatch.optionalQuantifier = qndx > (qt.quantifier.min - 1);
+                                        latestMatch.optionalQuantifier = qndx >= qt.quantifier.min;
                                         // console.log(pos + " " + qt.quantifier.min + " " + latestMatch.optionalQuantifier);
                                         latestMatch.jit = (qndx || 1) * tokenGroup.matches.indexOf(latestMatch) >= qt.quantifier.jit;
                                         if (latestMatch.optionalQuantifier && isFirstMatch(latestMatch, tokenGroup)) {
@@ -1211,8 +1206,9 @@
                                             testPos = pos; //match the position after the group
                                             break; //stop quantifierloop && search for next possible match
                                         }
-                                        if (latestMatch.jit && !latestMatch.optionalQuantifier) {
-                                            latestMatch.jitOffset = tokenGroup.matches.indexOf(latestMatch);
+                                        if (latestMatch.jit /*&& !latestMatch.optionalQuantifier*/) {
+                                            //always set jitOffset, isvalid checks when to apply
+                                            getMaskSet().jitOffset[pos] = tokenGroup.matches.indexOf(latestMatch);
                                         }
                                         return true;
                                     }
@@ -1574,7 +1570,7 @@
                 if ($.isFunction(opts.preValidation) && !strict && fromSetValid !== true && validateOnly !== true) {
                     result = opts.preValidation(getBuffer(), maskPos, c, isSelection(pos), opts, getMaskSet());
                 }
-                if (result === true) {
+                if (result === true) { //preValidation result
                     trackbackPositions(undefined, maskPos, true);
 
                     if (maxLength === undefined || maskPos < maxLength) {
@@ -1585,17 +1581,23 @@
                                 result = {
                                     "caret": seekNext(maskPos)
                                 };
-                            } else if ((opts.insertMode || getMaskSet().validPositions[seekNext(maskPos)] === undefined) && !isMask(maskPos, true)) { //does the input match on a further position?
-                                for (var nPos = maskPos + 1, snPos = seekNext(maskPos); nPos <= snPos; nPos++) {
-                                    // if (!isMask(nPos, true)) {
-                                    // 	continue;
-                                    // }
-                                    result = _isValid(nPos, c, strict);
-                                    if (result !== false) {
-                                        result = trackbackPositions(maskPos, result.pos !== undefined ? result.pos : nPos) || result;
-                                        maskPos = nPos;
-                                        break;
-                                    }
+                            } else {
+                                if ((opts.insertMode || getMaskSet().validPositions[seekNext(maskPos)] === undefined) && (!isMask(maskPos, true) || getMaskSet().jitOffset[maskPos])) { //does the input match on a further position?
+                                    if (getMaskSet().jitOffset[maskPos] && getMaskSet().validPositions[seekNext(maskPos)] === undefined) {
+                                        result = isValid(maskPos + getMaskSet().jitOffset[maskPos], c, strict);
+                                        result.caret = maskPos;
+                                    } else
+                                        for (var nPos = maskPos + 1, snPos = seekNext(maskPos); nPos <= snPos; nPos++) {
+                                            // if (!isMask(nPos, true)) {
+                                            // 	continue;
+                                            // }
+                                            result = _isValid(nPos, c, strict);
+                                            if (result !== false) {
+                                                result = trackbackPositions(maskPos, result.pos !== undefined ? result.pos : nPos) || result;
+                                                maskPos = nPos;
+                                                break;
+                                            }
+                                        }
                                 }
                             }
                         }

+ 1 - 7
lib/jquery.inputmask.js

@@ -6,13 +6,7 @@
  */
 
 (function (factory) {
-    if (typeof define === "function" && define.amd) {
-        define(["jquery", "./inputmask"], factory);
-    } else if (typeof exports === "object") {
-        module.exports = factory(require("jquery"), require("./inputmask"));
-    } else {
-        factory(jQuery, window.Inputmask);
-    }
+    module.exports = factory(require("jquery"), require("./inputmask"));
 }
 (function ($, Inputmask) {
     if ($.fn.inputmask === undefined) {

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "inputmask",
-  "version": "5.0.0-beta.66",
+  "version": "5.0.0-beta.80",
   "description": "Inputmask is a javascript library which creates an input mask.  Inputmask can run against vanilla javascript, jQuery and jqlite.",
   "main": "index.js",
   "files": [

+ 6 - 3
webpack.config.js

@@ -74,7 +74,12 @@ module.exports = {
         libraryTarget: "umd"
     },
     externals: {
-        "jquery": "jQuery",
+        "jquery": {
+            commonjs: "jquery",
+            commonjs2: "jquery",
+            amd: "jquery",
+            root: "jQuery"
+        },
         "jqlite": "jqlite",
         "qunit": "QUnit"
     },
@@ -126,9 +131,7 @@ module.exports = {
     },
     resolve: {
         alias: {
-            // "./js/dependencyLibs/inputmask.dependencyLib": "./js/dependencyLibs/inputmask.dependencyLib.jquery",
             // "./dependencyLibs/inputmask.dependencyLib": "./dependencyLibs/inputmask.dependencyLib.jquery"
-            // "./js/dependencyLibs/inputmask.dependencyLib": "./js/dependencyLibs/inputmask.dependencyLib.jqlite",
             // "./dependencyLibs/inputmask.dependencyLib": "./dependencyLibs/inputmask.dependencyLib.jqlite"
         }
     },

+ 0 - 1
webpack.jqueryconfig.js

@@ -4,7 +4,6 @@ var $ = require("./lib/dependencyLibs/inputmask.dependencyLib"),
     webPackJqueryConfig = $.extend(true, {}, webpackconfig);
 
 webPackJqueryConfig.resolve.alias = {
-    "./lib/dependencyLibs/inputmask.dependencyLib": "./lib/dependencyLibs/inputmask.dependencyLib.jquery",
     "./dependencyLibs/inputmask.dependencyLib": "./dependencyLibs/inputmask.dependencyLib.jquery"
 };