Browse Source

fixup corrupted repo

Robin Herbots 6 years ago
parent
commit
c58cb33bd2

+ 1 - 1
bower.json

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

+ 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.235",
+  "version": "5.0.0-beta.238",
   "type": "library",
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "homepage": "http://robinherbots.github.io/Inputmask",

+ 111 - 75
dist/inputmask.js

@@ -3,7 +3,7 @@
  * https://github.com/RobinHerbots/Inputmask
  * Copyright (c) 2010 - 2019 Robin Herbots
  * Licensed under the MIT license
- * Version: 5.0.0-beta.235
+ * Version: 5.0.0-beta.238
  */
 !function webpackUniversalModuleDefinition(root, factory) {
     if ("object" == typeof exports && "object" == typeof module) module.exports = factory(); else if ("function" == typeof define && define.amd) define([], factory); else {
@@ -1010,8 +1010,8 @@
                 if (opts.skipOptionalPartCharacter = "", !0 === start) resetMaskSet(), maskset.tests = {}, 
                 start = 0, end = buffer.length; else for (i = start; i < end; i++) delete maskset.validPositions[i];
                 for (p = start, i = start; i < end; i++) {
-                    var valResult = isValid(p, buffer[i], !opts.negationSymbol || [ i ] !== opts.negationSymbol.front, !opts.negationSymbol || [ i ] !== opts.negationSymbol.front);
-                    !1 !== valResult && (p = void 0 !== valResult.caret ? valResult.caret : valResult.pos + 1);
+                    var valResult = isValid(p, buffer[i], !opts.negationSymbol || buffer[i] !== opts.negationSymbol.front, !opts.negationSymbol || buffer[i] !== opts.negationSymbol.front);
+                    !1 !== valResult && (p = void 0 !== valResult.caret && valResult.caret > valResult.pos ? valResult.caret : valResult.pos + 1);
                 }
                 opts.skipOptionalPartCharacter = skipOptionalPartCharacter;
             }
@@ -1046,17 +1046,10 @@
                 }
                 return isMatch;
             }
-            function alternate(pos, c, strict, fromIsValid, rAltPos) {
-                var validPsClone = $.extend(!0, {}, maskset.validPositions), lastAlt, alternation, isValidRslt = !1, returnRslt = !1, altPos, prevAltPos, i, validPos, decisionPos, lAltPos = void 0 !== rAltPos ? rAltPos : getLastValidPosition();
-                function insertPosition(insert) {
-                    if (insert && isValidRslt && void 0 !== c) {
-                        var targetLvp = getLastValidPosition(pos) + 1;
-                        for (i = decisionPos; i < getLastValidPosition() + 1; i++) validPos = maskset.validPositions[i], 
-                        (void 0 === validPos || 1 == validPos.match.static) && i < pos + posOffset && posOffset++;
-                        pos += posOffset, isValidRslt = returnRslt = isValid(targetLvp < pos ? targetLvp : pos, c, strict, fromIsValid, !0);
-                    }
-                }
-                if (-1 === lAltPos && void 0 === rAltPos) lastAlt = 0, prevAltPos = getTest(lastAlt), 
+            function alternate(maskPos, c, strict, fromIsValid, rAltPos, selection) {
+                var validPsClone = $.extend(!0, {}, maskset.validPositions), tstClone = $.extend(!0, {}, maskset.tests), lastAlt, alternation, isValidRslt = !1, returnRslt = !1, altPos, prevAltPos, i, validPos, decisionPos, lAltPos = void 0 !== rAltPos ? rAltPos : getLastValidPosition(), nextPos, input, begin, end;
+                if (selection && (begin = selection.begin, end = selection.end, selection.begin > selection.end && (begin = selection.end, 
+                end = selection.begin)), -1 === lAltPos && void 0 === rAltPos) lastAlt = 0, prevAltPos = getTest(lastAlt), 
                 alternation = prevAltPos.alternation; else for (;0 <= lAltPos; lAltPos--) if (altPos = maskset.validPositions[lAltPos], 
                 altPos && void 0 !== altPos.alternation) {
                     if (prevAltPos && prevAltPos.locator[altPos.alternation] !== altPos.locator[altPos.alternation]) break;
@@ -1064,26 +1057,23 @@
                 }
                 if (void 0 !== alternation) {
                     decisionPos = parseInt(lastAlt), maskset.excludes[decisionPos] = maskset.excludes[decisionPos] || [], 
-                    !0 !== pos && maskset.excludes[decisionPos].push(getDecisionTaker(prevAltPos));
-                    var validInputsClone = [], staticInputsBeforePos = 0;
-                    for (i = decisionPos; i < getLastValidPosition(void 0, !0) + 1; i++) validPos = maskset.validPositions[i], 
-                    validPos && !0 !== validPos.generatedInput ? validInputsClone.push(validPos.input) : i < pos && staticInputsBeforePos++, 
+                    !0 !== maskPos && maskset.excludes[decisionPos].push(getDecisionTaker(prevAltPos));
+                    var validInputs = [], resultPos = -1;
+                    for (i = decisionPos; i < getLastValidPosition(void 0, !0) + 1; i++) -1 === resultPos && maskPos <= i && void 0 !== c && (validInputs.push(c), 
+                    resultPos = validInputs.length - 1), validPos = maskset.validPositions[i], validPos && !0 !== validPos.generatedInput && (void 0 === selection || i < begin || end <= i) && validInputs.push(validPos.input), 
                     delete maskset.validPositions[i];
-                    for (;void 0 !== maskset.excludes[decisionPos] && maskset.excludes[decisionPos].length < 10; ) {
-                        var posOffset = -1 * staticInputsBeforePos, validInputs = validInputsClone.slice();
-                        for (maskset.tests[decisionPos] = void 0, resetMaskSet(!0), isValidRslt = !0, insertPosition(0 === pos); 0 < validInputs.length; ) {
-                            var input = validInputs.shift();
-                            if (!(isValidRslt = isValid(isValidRslt.caret || getLastValidPosition(void 0, !0) + 1, input, !1, fromIsValid, !0))) break;
-                        }
-                        if (insertPosition(0 < pos), isValidRslt) break;
+                    for (-1 === resultPos && void 0 !== c && (validInputs.push(c), resultPos = validInputs.length - 1); void 0 !== maskset.excludes[decisionPos] && maskset.excludes[decisionPos].length < 10; ) {
+                        for (maskset.tests[decisionPos] = void 0, resetMaskSet(!0), isValidRslt = !0, i = 0; i < validInputs.length && (nextPos = isValidRslt.caret || getLastValidPosition(void 0, !0) + 1, 
+                        input = validInputs[i], isValidRslt = isValid(nextPos, input, !1, fromIsValid, !0)); i++) i === resultPos && (returnRslt = isValidRslt);
+                        if (isValidRslt) break;
                         if (resetMaskSet(), prevAltPos = getTest(decisionPos), maskset.validPositions = $.extend(!0, {}, validPsClone), 
-                        !maskset.excludes[decisionPos]) {
-                            returnRslt = alternate(pos, c, strict, fromIsValid, decisionPos - 1);
+                        maskset.tests = $.extend(!0, {}, tstClone), !maskset.excludes[decisionPos]) {
+                            returnRslt = alternate(maskPos, c, strict, fromIsValid, decisionPos - 1, selection);
                             break;
                         }
                         var decisionTaker = getDecisionTaker(prevAltPos);
                         if (-1 !== maskset.excludes[decisionPos].indexOf(decisionTaker)) {
-                            returnRslt = alternate(pos, c, strict, fromIsValid, decisionPos - 1);
+                            returnRslt = alternate(maskPos, c, strict, fromIsValid, decisionPos - 1, selection);
                             break;
                         }
                         for (maskset.excludes[decisionPos].push(decisionTaker), i = decisionPos; i < getLastValidPosition(void 0, !0) + 1; i++) delete maskset.validPositions[i];
@@ -1133,9 +1123,9 @@
                             var elem = void 0 !== rslt.c ? rslt.c : c, validatedPos = position;
                             return elem = elem === opts.skipOptionalPartCharacter && !0 === test.static ? getPlaceholder(position, test, !0) || test.def : elem, 
                             rslt = processCommandObject(rslt), !0 !== rslt && void 0 !== rslt.pos && rslt.pos !== position && (validatedPos = rslt.pos), 
-                            !0 !== rslt && void 0 === rslt.pos && void 0 === rslt.c ? !1 : (revalidateMask(pos, $.extend({}, tst, {
+                            !0 !== rslt && void 0 === rslt.pos && void 0 === rslt.c ? !1 : (!1 === revalidateMask(pos, $.extend({}, tst, {
                                 input: casing(elem, test, validatedPos)
-                            }), fromIsValid, validatedPos) || (rslt = !1), !1);
+                            }), fromIsValid, validatedPos) && (rslt = !1), !1);
                         }
                     }), rslt;
                 }
@@ -1163,7 +1153,7 @@
                             };
                         }
                     } else result = !1;
-                    !1 !== result || !1 === opts.keepStatic || null != opts.regex && !isComplete(getBuffer()) || strict || !0 === fromAlternate || (result = alternate(maskPos, c, strict, fromIsValid)), 
+                    !1 !== result || !1 === opts.keepStatic || null != opts.regex && !isComplete(getBuffer()) || strict || !0 === fromAlternate || (result = alternate(maskPos, c, strict, fromIsValid, void 0, pos)), 
                     !0 === result && (result = {
                         pos: maskPos
                     });
@@ -1197,21 +1187,20 @@
             function revalidateMask(pos, validTest, fromIsValid, validatedPos) {
                 function IsEnclosedStatic(pos, valids, selection) {
                     var posMatch = valids[pos];
-                    if (void 0 === posMatch || (!0 !== posMatch.match.static || !0 === posMatch.match.optionality) && posMatch.input !== opts.radixPoint) return !1;
+                    if (void 0 === posMatch || !0 !== posMatch.match.static || !0 === posMatch.match.optionality || void 0 !== valids[0] && void 0 !== valids[0].alternation) return !1;
                     var prevMatch = selection.begin <= pos - 1 ? valids[pos - 1] && !0 === valids[pos - 1].match.static && valids[pos - 1] : valids[pos - 1], nextMatch = selection.end > pos + 1 ? valids[pos + 1] && !0 === valids[pos + 1].match.static && valids[pos + 1] : valids[pos + 1];
                     return prevMatch && nextMatch;
                 }
-                var begin = void 0 !== pos.begin ? pos.begin : pos, end = void 0 !== pos.end ? pos.end : pos;
+                var offset = 0, begin = void 0 !== pos.begin ? pos.begin : pos, end = void 0 !== pos.end ? pos.end : pos;
                 if (pos.begin > pos.end && (begin = pos.end, end = pos.begin), void 0 === validTest && !1 === opts.insertMode && end < maskset.maskLength && (0 === begin && 0 === end || (begin += 1, 
                 end += 1)), validatedPos = void 0 !== validatedPos ? validatedPos : begin, begin !== end || opts.insertMode && void 0 !== maskset.validPositions[validatedPos] && void 0 === fromIsValid || void 0 === validTest) {
                     var positionsClone = $.extend(!0, {}, maskset.validPositions), lvp = void 0 === validTest && !1 === opts.insertMode ? 1 < end ? end - 1 : end : getLastValidPosition(void 0, !0), i;
                     for (maskset.p = begin, i = lvp; begin <= i; i--) delete maskset.validPositions[i], 
                     void 0 === validTest && delete maskset.tests[i + 1];
-                    var valid = !0, j = validatedPos, posMatch = j;
+                    var valid = !0, j = validatedPos, posMatch = j, t;
                     if (i = j, validTest && (maskset.validPositions[validatedPos] = $.extend(!0, {}, validTest), 
                     posMatch++, j++, begin < end && i++), validTest || opts.insertMode) for (;i <= lvp; i++) {
-                        var t = positionsClone[i];
-                        if (void 0 !== t && !0 !== t.generatedInput && (end <= i || begin <= i && IsEnclosedStatic(i, positionsClone, {
+                        if (void 0 !== (t = positionsClone[i]) && !0 !== t.generatedInput && (end <= i || begin <= i && IsEnclosedStatic(i, positionsClone, {
                             begin: begin,
                             end: end
                         }))) {
@@ -1220,8 +1209,11 @@
                                     "+" === t.match.def && getBuffer(!0);
                                     var result = isValid(posMatch, t.input, "+" !== t.match.def, "+" !== t.match.def);
                                     if (valid = !1 !== result, j = (result.pos || posMatch) + 1, !valid) break;
-                                } else valid = !0 === t.generatedInput;
-                                if (valid) break;
+                                } else valid = !1;
+                                if (valid) {
+                                    void 0 === validTest && t.match.static && i === pos.begin && offset++;
+                                    break;
+                                }
                                 if (!valid && posMatch > maskset.maskLength) break;
                                 posMatch++;
                             }
@@ -1232,11 +1224,12 @@
                     if (!valid) return maskset.validPositions = $.extend(!0, {}, positionsClone), resetMaskSet(!0), 
                     !1;
                 } else validTest && (maskset.validPositions[validatedPos] = $.extend(!0, {}, validTest));
-                return resetMaskSet(!0), !0;
+                return resetMaskSet(!0), offset;
             }
-            function isMask(pos, strict) {
+            function isMask(pos, strict, fuzzy) {
                 var test = getTestTemplate(pos).match;
-                if ("" === test.def && (test = getTest(pos).match), 1 != test.static) return test.fn;
+                if ("" === test.def && (test = getTest(pos).match), !0 !== test.static) return test.fn;
+                if (!0 === fuzzy && void 0 !== maskset.validPositions[pos] && !0 !== maskset.validPositions[pos].generatedInput) return !0;
                 if (!0 !== strict && -1 < pos) {
                     var tests = getTests(pos);
                     return tests.length > 1 + ("" === tests[tests.length - 1].match.def ? 1 : 0);
@@ -1244,13 +1237,13 @@
                 return !1;
             }
             function seekNext(pos, newBlock) {
-                for (var position = pos + 1; "" !== getTest(position).match.def && (!0 === newBlock && (!0 !== getTest(position).match.newBlockMarker || !isMask(position)) || !0 !== newBlock && !isMask(position)); ) position++;
+                for (var position = pos + 1; "" !== getTest(position).match.def && (!0 === newBlock && (!0 !== getTest(position).match.newBlockMarker || !isMask(position, void 0, !0)) || !0 !== newBlock && !isMask(position, void 0, !0)); ) position++;
                 return position;
             }
             function seekPrevious(pos, newBlock) {
                 var position = pos, tests;
                 if (position <= 0) return 0;
-                for (;0 < --position && (!0 === newBlock && !0 !== getTest(position).match.newBlockMarker || !0 !== newBlock && !isMask(position) && (tests = getTests(position), 
+                for (;0 < --position && (!0 === newBlock && !0 !== getTest(position).match.newBlockMarker || !0 !== newBlock && !isMask(position, void 0, !0) && (tests = getTests(position), 
                 tests.length < 2 || 2 === tests.length && "" === tests[1].match.def)); ) ;
                 return position;
             }
@@ -1405,7 +1398,7 @@
                         caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, !0);
                     } else k === Inputmask.keyCode.HOME && !e.shiftKey || k === Inputmask.keyCode.PAGE_UP ? (e.preventDefault(), 
                     caret(input, 0, e.shiftKey ? pos.begin : 0, !0)) : (opts.undoOnEscape && k === Inputmask.keyCode.ESCAPE || 90 === k && e.ctrlKey) && !0 !== e.altKey ? (checkVal(input, !0, !1, undoValue.split("")), 
-                    $input.trigger("click")) : k !== Inputmask.keyCode.INSERT || e.shiftKey || e.ctrlKey ? !0 === opts.tabThrough && k === Inputmask.keyCode.TAB ? (!0 === e.shiftKey ? (!0 === getTest(pos.begin).match.static && (pos.begin = seekNext(pos.begin)), 
+                    $input.trigger("click")) : !0 === opts.tabThrough && k === Inputmask.keyCode.TAB ? (!0 === e.shiftKey ? (!0 === getTest(pos.begin).match.static && (pos.begin = seekNext(pos.begin)), 
                     pos.end = seekPrevious(pos.begin, !0), pos.begin = seekPrevious(pos.end, !0)) : (pos.begin = seekNext(pos.begin, !0), 
                     pos.end = seekNext(pos.begin, !0), pos.end < maskset.maskLength && pos.end--), pos.begin < maskset.maskLength && (e.preventDefault(), 
                     caret(input, pos.begin, pos.end))) : e.shiftKey || (!1 === opts.insertMode ? k === Inputmask.keyCode.RIGHT ? setTimeout(function() {
@@ -1417,7 +1410,7 @@
                     }, 0) : !0 === opts.colorMask && (k !== Inputmask.keyCode.RIGHT && k !== Inputmask.keyCode.LEFT || setTimeout(function() {
                         var caretPos = caret(input, void 0, void 0, !0);
                         renderColorMask(input, caretPos);
-                    }, 0))) : (opts.insertMode = !opts.insertMode, caret(input, pos.begin, pos.end));
+                    }, 0)));
                     ignorable = -1 !== $.inArray(k, opts.ignorables);
                 },
                 keypressEvent: function keypressEvent(e, checkval, writeOut, strict, ndx) {
@@ -1727,20 +1720,23 @@
                     var pend = pos.end;
                     pos.end = pos.begin, pos.begin = pend;
                 }
+                var offset;
                 if (k === Inputmask.keyCode.BACKSPACE || k === Inputmask.keyCode.DELETE && !1 === opts.insertMode ? pos.end - pos.begin < 1 && (pos.begin = seekPrevious(pos.begin), 
-                void 0 !== maskset.validPositions[pos.begin] && maskset.validPositions[pos.begin].input === opts.groupSeparator && pos.begin--) : k === Inputmask.keyCode.DELETE && pos.begin === pos.end && (pos.end = isMask(pos.end, !0) && maskset.validPositions[pos.end] && maskset.validPositions[pos.end].input !== opts.radixPoint ? pos.end + 1 : seekNext(pos.end) + 1, 
+                void 0 !== maskset.validPositions[pos.begin] && maskset.validPositions[pos.begin].input === opts.groupSeparator && pos.begin--) : k === Inputmask.keyCode.DELETE && pos.begin === pos.end && (pos.end = isMask(pos.end, !0, !0) ? pos.end + 1 : seekNext(pos.end) + 1, 
                 void 0 !== maskset.validPositions[pos.begin] && maskset.validPositions[pos.begin].input === opts.groupSeparator && pos.end++), 
-                revalidateMask(pos), !0 !== strict && !1 !== opts.keepStatic || null !== opts.regex && -1 !== getTest(pos.begin).match.def.indexOf("|")) {
-                    var result = alternate(!0);
-                    if (result) {
-                        var newPos = void 0 !== result.caret ? result.caret : result.pos ? seekNext(result.pos.begin ? result.pos.begin : result.pos) : getLastValidPosition(-1, !0);
-                        (k !== Inputmask.keyCode.DELETE || pos.begin > newPos) && pos.begin;
+                !1 !== (offset = revalidateMask(pos))) {
+                    if (!0 !== strict && !1 !== opts.keepStatic || null !== opts.regex && -1 !== getTest(pos.begin).match.def.indexOf("|")) {
+                        var result = alternate(!0);
+                        if (result) {
+                            var newPos = void 0 !== result.caret ? result.caret : result.pos ? seekNext(result.pos.begin ? result.pos.begin : result.pos) : getLastValidPosition(-1, !0);
+                            (k !== Inputmask.keyCode.DELETE || pos.begin > newPos) && pos.begin;
+                        }
                     }
+                    var lvp = getLastValidPosition(pos.end, !0);
+                    lvp < pos.begin ? maskset.p = !1 === opts.insertMode ? seekPrevious(lvp + 1) : seekNext(lvp) : !0 !== strict && (maskset.p = k === Inputmask.keyCode.DELETE ? pos.begin + offset : pos.begin, 
+                    !1 === opts.insertMode && k === Inputmask.keyCode.DELETE && (maskset.p = pos.end + 1, 
+                    void 0 === maskset.validPositions[maskset.p] && getLastValidPosition(maskset.maskLength, !0) < maskset.p && (maskset.p = seekPrevious(lvp + 1))));
                 }
-                var lvp = getLastValidPosition(pos.end, !0);
-                lvp < pos.begin ? maskset.p = !1 === opts.insertMode ? seekPrevious(lvp + 1) : seekNext(lvp) : !0 !== strict && (maskset.p = pos.begin, 
-                !1 === opts.insertMode && k === Inputmask.keyCode.DELETE && (maskset.p = pos.end + 1, 
-                void 0 === maskset.validPositions[maskset.p] && getLastValidPosition(maskset.maskLength, !0) < maskset.p && (maskset.p = seekPrevious(lvp + 1))));
             }
             function initializeColorMask(input) {
                 var computedStyle = (input.ownerDocument.defaultView || window).getComputedStyle(input, null);
@@ -2181,7 +2177,7 @@
                     var result = currentResult, dateParts = analyseMask(buffer.join(""), opts.inputFormat, opts);
                     return result && dateParts.date.getTime() == dateParts.date.getTime() && (result = isValidDate(dateParts, result), 
                     result = result && isDateInRange(dateParts, opts)), pos && result && currentResult.pos !== pos ? {
-                        buffer: parse(opts.inputFormat, dateParts, opts),
+                        buffer: parse(opts.inputFormat, dateParts, opts).split(""),
                         refreshFromBuffer: {
                             start: pos,
                             end: currentResult.pos
@@ -2214,7 +2210,7 @@
             return escapedTxt;
         }
         function alignDigits(buffer, digits, opts) {
-            if (0 < digits && !opts.digitsOptional && 0 < buffer.length) {
+            if (0 < digits && (!opts.digitsOptional || !1 !== opts.__financeInput) && 0 < buffer.length) {
                 var radixPosition = $.inArray(opts.radixPoint, buffer);
                 -1 === radixPosition && (buffer.push(opts.radixPoint), radixPosition = buffer.length - 1);
                 for (var i = 1; i <= digits; i++) buffer[radixPosition + i] = buffer[radixPosition + i] || "0";
@@ -2233,7 +2229,7 @@
         function findValid(symbol, maskset) {
             var ret = -1;
             return $.each(maskset.validPositions, function(ndx, tst) {
-                if (tst.match.def === symbol) return ret = parseInt(ndx), !1;
+                if (tst && tst.match.def === symbol) return ret = parseInt(ndx), !1;
             }), ret;
         }
         function parseMinMaxOptions(opts) {
@@ -2334,11 +2330,12 @@
                     }
                 },
                 preValidation: function preValidation(buffer, pos, c, isSelection, opts, maskset, caretPos) {
+                    if (!1 !== opts.__financeInput && c === opts.radixPoint) return !1;
                     var radixPos = $.inArray(opts.radixPoint, buffer);
                     if (pos = hanndleRadixDance(pos, c, radixPos, opts), "-" !== c && c !== opts.negationSymbol.front) return -1 !== radixPos && !0 === opts._radixDance && !1 === isSelection && c === opts.radixPoint && void 0 !== opts.digits && (isNaN(opts.digits) || 0 < parseInt(opts.digits)) && radixPos !== pos ? {
                         caret: opts._radixDance && pos === radixPos - 1 ? radixPos + 1 : radixPos
                     } : {
-                        rewritePosition: isSelection && caretPos.end < radixPos && !1 === opts.__financeInput ? radixPos : pos
+                        rewritePosition: isSelection && opts.digitsOptional ? caretPos.end : pos
                     };
                     if (!0 !== opts.allowMinus) return !1;
                     var isNegative = !1, front = findValid("+", maskset), back = findValid("-", maskset);
@@ -2363,8 +2360,14 @@
                         var unmasked = opts.onUnMask(buffer.slice().reverse().join(""), void 0, $.extend({}, opts, {
                             unmaskAsNumber: !0
                         }));
-                        if (null !== opts.min && unmasked < opts.min && unmasked.toString().length >= opts.min.toString().length) return !1;
-                        if (null !== opts.max && unmasked > opts.max) return !1;
+                        if (null !== opts.min && unmasked < opts.min && (unmasked.toString().length >= opts.min.toString().length || unmasked < 0)) return {
+                            refreshFromBuffer: !0,
+                            buffer: alignDigits(opts.min.toString().replace(".", opts.radixPoint).split(""), opts.digits, opts).reverse()
+                        };
+                        if (null !== opts.max && unmasked > opts.max) return {
+                            refreshFromBuffer: !0,
+                            buffer: alignDigits(opts.max.toString().replace(".", opts.radixPoint).split(""), opts.digits, opts).reverse()
+                        };
                     }
                     return currentResult;
                 },
@@ -2399,16 +2402,21 @@
                         initialValue = initialValue.replace(Inputmask.escapeRegex(radixPoint), "."), isFinite(initialValue) && (initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor), 
                         initialValue = initialValue.toString().replace(".", radixPoint);
                     }
-                    return 0 === opts.digits && -1 !== initialValue.indexOf(Inputmask.escapeRegex(radixPoint)) && (initialValue = initialValue.substring(0, initialValue.indexOf(Inputmask.escapeRegex(radixPoint)))), 
-                    alignDigits(initialValue.toString().split(""), digits, opts).join("");
+                    if (0 === opts.digits && -1 !== initialValue.indexOf(Inputmask.escapeRegex(radixPoint)) && (initialValue = initialValue.substring(0, initialValue.indexOf(Inputmask.escapeRegex(radixPoint)))), 
+                    null !== opts.min || null !== opts.max) {
+                        var numberValue = initialValue.toString().replace(radixPoint, ".");
+                        null !== opts.min && numberValue < opts.min ? initialValue = opts.min.toString().replace(".", radixPoint) : null !== opts.max && numberValue > opts.max && (initialValue = opts.max.toString().replace(".", radixPoint));
+                    }
+                    return alignDigits(initialValue.toString().split(""), digits, opts).join("");
                 },
                 onBeforeWrite: function onBeforeWrite(e, buffer, caretPos, opts) {
-                    function stripBuffer(buffer) {
-                        if (!1 !== opts.__financeInput) {
+                    function stripBuffer(buffer, stripRadix) {
+                        if (!1 !== opts.__financeInput || stripRadix) {
                             var position = $.inArray(opts.radixPoint, buffer);
                             -1 !== position && buffer.splice(position, 1);
                         }
                         if ("" !== opts.groupSeparator) for (;-1 !== (position = buffer.indexOf(opts.groupSeparator)); ) buffer.splice(position, 1);
+                        return buffer;
                     }
                     var result, leadingzeroes = checkForLeadingZeroes(buffer, opts);
                     if (leadingzeroes) {
@@ -2424,11 +2432,26 @@
                     if (e) switch (e.type) {
                       case "blur":
                       case "checkval":
-                        "" !== opts.radixPoint && buffer[0] === opts.radixPoint && (result && result.buffer ? result.buffer.shift() : (buffer.shift(), 
-                        stripBuffer(buffer), result = {
+                        if (null !== opts.min) {
+                            var unmasked = opts.onUnMask(buffer.slice().reverse().join(""), void 0, $.extend({}, opts, {
+                                unmaskAsNumber: !0
+                            }));
+                            if (null !== opts.min && unmasked < opts.min) return {
+                                refreshFromBuffer: !0,
+                                buffer: alignDigits(opts.min.toString().replace(".", opts.radixPoint).split(""), opts.digits, opts).reverse()
+                            };
+                        }
+                        if ("" !== opts.radixPoint && buffer[0] === opts.radixPoint) result && result.buffer ? result.buffer.shift() : (buffer.shift(), 
+                        result = {
                             refreshFromBuffer: !0,
-                            buffer: buffer
-                        }));
+                            buffer: stripBuffer(buffer)
+                        }); else if (buffer[buffer.length - 1] === opts.negationSymbol.front) {
+                            var nmbrMtchs = new RegExp("(^" + ("" != opts.negationSymbol.front ? Inputmask.escapeRegex(opts.negationSymbol.front) + "?" : "") + Inputmask.escapeRegex(opts.prefix) + ")(.*)(" + Inputmask.escapeRegex(opts.suffix) + ("" != opts.negationSymbol.back ? Inputmask.escapeRegex(opts.negationSymbol.back) + "?" : "") + "$)").exec(stripBuffer(buffer.slice(), !0).reverse().join("")), number = nmbrMtchs ? nmbrMtchs[2] : "";
+                            0 == number && (result = {
+                                refreshFromBuffer: !0,
+                                buffer: [ 0 ]
+                            });
+                        }
                     }
                     return result;
                 },
@@ -2443,13 +2466,26 @@
                         return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step)), 
                         $input.trigger("setvalue"), !1;
                     }
-                    if (!(e.shiftKey || e.keyCode !== Inputmask.keyCode.DELETE && e.keyCode !== Inputmask.keyCode.BACKSPACE && e.keyCode !== Inputmask.keyCode.BACKSPACE_SAFARI || !0 !== opts._radixDance || opts.digitsOptional)) {
-                        var radixPos = $.inArray(opts.radixPoint, buffer);
-                        if (-1 !== radixPos && (caretPos.begin < radixPos || e.keyCode === Inputmask.keyCode.DELETE && caretPos.begin === radixPos)) {
-                            e.keyCode !== Inputmask.keyCode.BACKSPACE && e.keyCode !== Inputmask.keyCode.BACKSPACE_SAFARI || caretPos.begin++;
+                    if (!e.shiftKey && (e.keyCode === Inputmask.keyCode.DELETE || e.keyCode === Inputmask.keyCode.BACKSPACE || e.keyCode === Inputmask.keyCode.BACKSPACE_SAFARI)) {
+                        if (buffer[e.keyCode === Inputmask.keyCode.DELETE ? caretPos.begin - 1 : caretPos.end] === opts.negationSymbol.front) {
                             var bffr = buffer.slice().reverse();
-                            return bffr.splice(bffr.length - caretPos.begin, 1), $input.trigger("setvalue", [ alignDigits(bffr, opts.digits, opts).join(""), caretPos.begin ]), 
-                            !1;
+                            return "" !== opts.negationSymbol.front && bffr.shift(), "" !== opts.negationSymbol.back && bffr.pop(), 
+                            $input.trigger("setvalue", [ bffr.join(""), caretPos.begin ]), !1;
+                        }
+                        if (!0 === opts._radixDance) {
+                            var radixPos = $.inArray(opts.radixPoint, buffer);
+                            if (opts.digitsOptional) {
+                                if (0 === radixPos) {
+                                    var bffr = buffer.slice().reverse();
+                                    return bffr.pop(), $input.trigger("setvalue", [ bffr.join(""), caretPos.begin ]), 
+                                    !1;
+                                }
+                            } else if (-1 !== radixPos && (caretPos.begin < radixPos || e.keyCode === Inputmask.keyCode.DELETE && caretPos.begin === radixPos)) {
+                                e.keyCode !== Inputmask.keyCode.BACKSPACE && e.keyCode !== Inputmask.keyCode.BACKSPACE_SAFARI || caretPos.begin++;
+                                var bffr = buffer.slice().reverse();
+                                return bffr.splice(bffr.length - caretPos.begin, 1), $input.trigger("setvalue", [ alignDigits(bffr, opts.digits, opts).join(""), caretPos.begin ]), 
+                                !1;
+                            }
                         }
                     }
                 }

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


+ 111 - 75
dist/jquery.inputmask.js

@@ -3,7 +3,7 @@
  * https://github.com/RobinHerbots/Inputmask
  * Copyright (c) 2010 - 2019 Robin Herbots
  * Licensed under the MIT license
- * Version: 5.0.0-beta.235
+ * Version: 5.0.0-beta.238
  */
 !function webpackUniversalModuleDefinition(root, factory) {
     if ("object" == typeof exports && "object" == typeof module) module.exports = factory(require("jquery")); else if ("function" == typeof define && define.amd) define([ "jquery" ], factory); else {
@@ -888,8 +888,8 @@
                 if (opts.skipOptionalPartCharacter = "", !0 === start) resetMaskSet(), maskset.tests = {}, 
                 start = 0, end = buffer.length; else for (i = start; i < end; i++) delete maskset.validPositions[i];
                 for (p = start, i = start; i < end; i++) {
-                    var valResult = isValid(p, buffer[i], !opts.negationSymbol || [ i ] !== opts.negationSymbol.front, !opts.negationSymbol || [ i ] !== opts.negationSymbol.front);
-                    !1 !== valResult && (p = void 0 !== valResult.caret ? valResult.caret : valResult.pos + 1);
+                    var valResult = isValid(p, buffer[i], !opts.negationSymbol || buffer[i] !== opts.negationSymbol.front, !opts.negationSymbol || buffer[i] !== opts.negationSymbol.front);
+                    !1 !== valResult && (p = void 0 !== valResult.caret && valResult.caret > valResult.pos ? valResult.caret : valResult.pos + 1);
                 }
                 opts.skipOptionalPartCharacter = skipOptionalPartCharacter;
             }
@@ -924,17 +924,10 @@
                 }
                 return isMatch;
             }
-            function alternate(pos, c, strict, fromIsValid, rAltPos) {
-                var validPsClone = $.extend(!0, {}, maskset.validPositions), lastAlt, alternation, isValidRslt = !1, returnRslt = !1, altPos, prevAltPos, i, validPos, decisionPos, lAltPos = void 0 !== rAltPos ? rAltPos : getLastValidPosition();
-                function insertPosition(insert) {
-                    if (insert && isValidRslt && void 0 !== c) {
-                        var targetLvp = getLastValidPosition(pos) + 1;
-                        for (i = decisionPos; i < getLastValidPosition() + 1; i++) validPos = maskset.validPositions[i], 
-                        (void 0 === validPos || 1 == validPos.match.static) && i < pos + posOffset && posOffset++;
-                        pos += posOffset, isValidRslt = returnRslt = isValid(targetLvp < pos ? targetLvp : pos, c, strict, fromIsValid, !0);
-                    }
-                }
-                if (-1 === lAltPos && void 0 === rAltPos) lastAlt = 0, prevAltPos = getTest(lastAlt), 
+            function alternate(maskPos, c, strict, fromIsValid, rAltPos, selection) {
+                var validPsClone = $.extend(!0, {}, maskset.validPositions), tstClone = $.extend(!0, {}, maskset.tests), lastAlt, alternation, isValidRslt = !1, returnRslt = !1, altPos, prevAltPos, i, validPos, decisionPos, lAltPos = void 0 !== rAltPos ? rAltPos : getLastValidPosition(), nextPos, input, begin, end;
+                if (selection && (begin = selection.begin, end = selection.end, selection.begin > selection.end && (begin = selection.end, 
+                end = selection.begin)), -1 === lAltPos && void 0 === rAltPos) lastAlt = 0, prevAltPos = getTest(lastAlt), 
                 alternation = prevAltPos.alternation; else for (;0 <= lAltPos; lAltPos--) if (altPos = maskset.validPositions[lAltPos], 
                 altPos && void 0 !== altPos.alternation) {
                     if (prevAltPos && prevAltPos.locator[altPos.alternation] !== altPos.locator[altPos.alternation]) break;
@@ -942,26 +935,23 @@
                 }
                 if (void 0 !== alternation) {
                     decisionPos = parseInt(lastAlt), maskset.excludes[decisionPos] = maskset.excludes[decisionPos] || [], 
-                    !0 !== pos && maskset.excludes[decisionPos].push(getDecisionTaker(prevAltPos));
-                    var validInputsClone = [], staticInputsBeforePos = 0;
-                    for (i = decisionPos; i < getLastValidPosition(void 0, !0) + 1; i++) validPos = maskset.validPositions[i], 
-                    validPos && !0 !== validPos.generatedInput ? validInputsClone.push(validPos.input) : i < pos && staticInputsBeforePos++, 
+                    !0 !== maskPos && maskset.excludes[decisionPos].push(getDecisionTaker(prevAltPos));
+                    var validInputs = [], resultPos = -1;
+                    for (i = decisionPos; i < getLastValidPosition(void 0, !0) + 1; i++) -1 === resultPos && maskPos <= i && void 0 !== c && (validInputs.push(c), 
+                    resultPos = validInputs.length - 1), validPos = maskset.validPositions[i], validPos && !0 !== validPos.generatedInput && (void 0 === selection || i < begin || end <= i) && validInputs.push(validPos.input), 
                     delete maskset.validPositions[i];
-                    for (;void 0 !== maskset.excludes[decisionPos] && maskset.excludes[decisionPos].length < 10; ) {
-                        var posOffset = -1 * staticInputsBeforePos, validInputs = validInputsClone.slice();
-                        for (maskset.tests[decisionPos] = void 0, resetMaskSet(!0), isValidRslt = !0, insertPosition(0 === pos); 0 < validInputs.length; ) {
-                            var input = validInputs.shift();
-                            if (!(isValidRslt = isValid(isValidRslt.caret || getLastValidPosition(void 0, !0) + 1, input, !1, fromIsValid, !0))) break;
-                        }
-                        if (insertPosition(0 < pos), isValidRslt) break;
+                    for (-1 === resultPos && void 0 !== c && (validInputs.push(c), resultPos = validInputs.length - 1); void 0 !== maskset.excludes[decisionPos] && maskset.excludes[decisionPos].length < 10; ) {
+                        for (maskset.tests[decisionPos] = void 0, resetMaskSet(!0), isValidRslt = !0, i = 0; i < validInputs.length && (nextPos = isValidRslt.caret || getLastValidPosition(void 0, !0) + 1, 
+                        input = validInputs[i], isValidRslt = isValid(nextPos, input, !1, fromIsValid, !0)); i++) i === resultPos && (returnRslt = isValidRslt);
+                        if (isValidRslt) break;
                         if (resetMaskSet(), prevAltPos = getTest(decisionPos), maskset.validPositions = $.extend(!0, {}, validPsClone), 
-                        !maskset.excludes[decisionPos]) {
-                            returnRslt = alternate(pos, c, strict, fromIsValid, decisionPos - 1);
+                        maskset.tests = $.extend(!0, {}, tstClone), !maskset.excludes[decisionPos]) {
+                            returnRslt = alternate(maskPos, c, strict, fromIsValid, decisionPos - 1, selection);
                             break;
                         }
                         var decisionTaker = getDecisionTaker(prevAltPos);
                         if (-1 !== maskset.excludes[decisionPos].indexOf(decisionTaker)) {
-                            returnRslt = alternate(pos, c, strict, fromIsValid, decisionPos - 1);
+                            returnRslt = alternate(maskPos, c, strict, fromIsValid, decisionPos - 1, selection);
                             break;
                         }
                         for (maskset.excludes[decisionPos].push(decisionTaker), i = decisionPos; i < getLastValidPosition(void 0, !0) + 1; i++) delete maskset.validPositions[i];
@@ -1011,9 +1001,9 @@
                             var elem = void 0 !== rslt.c ? rslt.c : c, validatedPos = position;
                             return elem = elem === opts.skipOptionalPartCharacter && !0 === test.static ? getPlaceholder(position, test, !0) || test.def : elem, 
                             rslt = processCommandObject(rslt), !0 !== rslt && void 0 !== rslt.pos && rslt.pos !== position && (validatedPos = rslt.pos), 
-                            !0 !== rslt && void 0 === rslt.pos && void 0 === rslt.c ? !1 : (revalidateMask(pos, $.extend({}, tst, {
+                            !0 !== rslt && void 0 === rslt.pos && void 0 === rslt.c ? !1 : (!1 === revalidateMask(pos, $.extend({}, tst, {
                                 input: casing(elem, test, validatedPos)
-                            }), fromIsValid, validatedPos) || (rslt = !1), !1);
+                            }), fromIsValid, validatedPos) && (rslt = !1), !1);
                         }
                     }), rslt;
                 }
@@ -1041,7 +1031,7 @@
                             };
                         }
                     } else result = !1;
-                    !1 !== result || !1 === opts.keepStatic || null != opts.regex && !isComplete(getBuffer()) || strict || !0 === fromAlternate || (result = alternate(maskPos, c, strict, fromIsValid)), 
+                    !1 !== result || !1 === opts.keepStatic || null != opts.regex && !isComplete(getBuffer()) || strict || !0 === fromAlternate || (result = alternate(maskPos, c, strict, fromIsValid, void 0, pos)), 
                     !0 === result && (result = {
                         pos: maskPos
                     });
@@ -1075,21 +1065,20 @@
             function revalidateMask(pos, validTest, fromIsValid, validatedPos) {
                 function IsEnclosedStatic(pos, valids, selection) {
                     var posMatch = valids[pos];
-                    if (void 0 === posMatch || (!0 !== posMatch.match.static || !0 === posMatch.match.optionality) && posMatch.input !== opts.radixPoint) return !1;
+                    if (void 0 === posMatch || !0 !== posMatch.match.static || !0 === posMatch.match.optionality || void 0 !== valids[0] && void 0 !== valids[0].alternation) return !1;
                     var prevMatch = selection.begin <= pos - 1 ? valids[pos - 1] && !0 === valids[pos - 1].match.static && valids[pos - 1] : valids[pos - 1], nextMatch = selection.end > pos + 1 ? valids[pos + 1] && !0 === valids[pos + 1].match.static && valids[pos + 1] : valids[pos + 1];
                     return prevMatch && nextMatch;
                 }
-                var begin = void 0 !== pos.begin ? pos.begin : pos, end = void 0 !== pos.end ? pos.end : pos;
+                var offset = 0, begin = void 0 !== pos.begin ? pos.begin : pos, end = void 0 !== pos.end ? pos.end : pos;
                 if (pos.begin > pos.end && (begin = pos.end, end = pos.begin), void 0 === validTest && !1 === opts.insertMode && end < maskset.maskLength && (0 === begin && 0 === end || (begin += 1, 
                 end += 1)), validatedPos = void 0 !== validatedPos ? validatedPos : begin, begin !== end || opts.insertMode && void 0 !== maskset.validPositions[validatedPos] && void 0 === fromIsValid || void 0 === validTest) {
                     var positionsClone = $.extend(!0, {}, maskset.validPositions), lvp = void 0 === validTest && !1 === opts.insertMode ? 1 < end ? end - 1 : end : getLastValidPosition(void 0, !0), i;
                     for (maskset.p = begin, i = lvp; begin <= i; i--) delete maskset.validPositions[i], 
                     void 0 === validTest && delete maskset.tests[i + 1];
-                    var valid = !0, j = validatedPos, posMatch = j;
+                    var valid = !0, j = validatedPos, posMatch = j, t;
                     if (i = j, validTest && (maskset.validPositions[validatedPos] = $.extend(!0, {}, validTest), 
                     posMatch++, j++, begin < end && i++), validTest || opts.insertMode) for (;i <= lvp; i++) {
-                        var t = positionsClone[i];
-                        if (void 0 !== t && !0 !== t.generatedInput && (end <= i || begin <= i && IsEnclosedStatic(i, positionsClone, {
+                        if (void 0 !== (t = positionsClone[i]) && !0 !== t.generatedInput && (end <= i || begin <= i && IsEnclosedStatic(i, positionsClone, {
                             begin: begin,
                             end: end
                         }))) {
@@ -1098,8 +1087,11 @@
                                     "+" === t.match.def && getBuffer(!0);
                                     var result = isValid(posMatch, t.input, "+" !== t.match.def, "+" !== t.match.def);
                                     if (valid = !1 !== result, j = (result.pos || posMatch) + 1, !valid) break;
-                                } else valid = !0 === t.generatedInput;
-                                if (valid) break;
+                                } else valid = !1;
+                                if (valid) {
+                                    void 0 === validTest && t.match.static && i === pos.begin && offset++;
+                                    break;
+                                }
                                 if (!valid && posMatch > maskset.maskLength) break;
                                 posMatch++;
                             }
@@ -1110,11 +1102,12 @@
                     if (!valid) return maskset.validPositions = $.extend(!0, {}, positionsClone), resetMaskSet(!0), 
                     !1;
                 } else validTest && (maskset.validPositions[validatedPos] = $.extend(!0, {}, validTest));
-                return resetMaskSet(!0), !0;
+                return resetMaskSet(!0), offset;
             }
-            function isMask(pos, strict) {
+            function isMask(pos, strict, fuzzy) {
                 var test = getTestTemplate(pos).match;
-                if ("" === test.def && (test = getTest(pos).match), 1 != test.static) return test.fn;
+                if ("" === test.def && (test = getTest(pos).match), !0 !== test.static) return test.fn;
+                if (!0 === fuzzy && void 0 !== maskset.validPositions[pos] && !0 !== maskset.validPositions[pos].generatedInput) return !0;
                 if (!0 !== strict && -1 < pos) {
                     var tests = getTests(pos);
                     return tests.length > 1 + ("" === tests[tests.length - 1].match.def ? 1 : 0);
@@ -1122,13 +1115,13 @@
                 return !1;
             }
             function seekNext(pos, newBlock) {
-                for (var position = pos + 1; "" !== getTest(position).match.def && (!0 === newBlock && (!0 !== getTest(position).match.newBlockMarker || !isMask(position)) || !0 !== newBlock && !isMask(position)); ) position++;
+                for (var position = pos + 1; "" !== getTest(position).match.def && (!0 === newBlock && (!0 !== getTest(position).match.newBlockMarker || !isMask(position, void 0, !0)) || !0 !== newBlock && !isMask(position, void 0, !0)); ) position++;
                 return position;
             }
             function seekPrevious(pos, newBlock) {
                 var position = pos, tests;
                 if (position <= 0) return 0;
-                for (;0 < --position && (!0 === newBlock && !0 !== getTest(position).match.newBlockMarker || !0 !== newBlock && !isMask(position) && (tests = getTests(position), 
+                for (;0 < --position && (!0 === newBlock && !0 !== getTest(position).match.newBlockMarker || !0 !== newBlock && !isMask(position, void 0, !0) && (tests = getTests(position), 
                 tests.length < 2 || 2 === tests.length && "" === tests[1].match.def)); ) ;
                 return position;
             }
@@ -1283,7 +1276,7 @@
                         caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, !0);
                     } else k === Inputmask.keyCode.HOME && !e.shiftKey || k === Inputmask.keyCode.PAGE_UP ? (e.preventDefault(), 
                     caret(input, 0, e.shiftKey ? pos.begin : 0, !0)) : (opts.undoOnEscape && k === Inputmask.keyCode.ESCAPE || 90 === k && e.ctrlKey) && !0 !== e.altKey ? (checkVal(input, !0, !1, undoValue.split("")), 
-                    $input.trigger("click")) : k !== Inputmask.keyCode.INSERT || e.shiftKey || e.ctrlKey ? !0 === opts.tabThrough && k === Inputmask.keyCode.TAB ? (!0 === e.shiftKey ? (!0 === getTest(pos.begin).match.static && (pos.begin = seekNext(pos.begin)), 
+                    $input.trigger("click")) : !0 === opts.tabThrough && k === Inputmask.keyCode.TAB ? (!0 === e.shiftKey ? (!0 === getTest(pos.begin).match.static && (pos.begin = seekNext(pos.begin)), 
                     pos.end = seekPrevious(pos.begin, !0), pos.begin = seekPrevious(pos.end, !0)) : (pos.begin = seekNext(pos.begin, !0), 
                     pos.end = seekNext(pos.begin, !0), pos.end < maskset.maskLength && pos.end--), pos.begin < maskset.maskLength && (e.preventDefault(), 
                     caret(input, pos.begin, pos.end))) : e.shiftKey || (!1 === opts.insertMode ? k === Inputmask.keyCode.RIGHT ? setTimeout(function() {
@@ -1295,7 +1288,7 @@
                     }, 0) : !0 === opts.colorMask && (k !== Inputmask.keyCode.RIGHT && k !== Inputmask.keyCode.LEFT || setTimeout(function() {
                         var caretPos = caret(input, void 0, void 0, !0);
                         renderColorMask(input, caretPos);
-                    }, 0))) : (opts.insertMode = !opts.insertMode, caret(input, pos.begin, pos.end));
+                    }, 0)));
                     ignorable = -1 !== $.inArray(k, opts.ignorables);
                 },
                 keypressEvent: function keypressEvent(e, checkval, writeOut, strict, ndx) {
@@ -1605,20 +1598,23 @@
                     var pend = pos.end;
                     pos.end = pos.begin, pos.begin = pend;
                 }
+                var offset;
                 if (k === Inputmask.keyCode.BACKSPACE || k === Inputmask.keyCode.DELETE && !1 === opts.insertMode ? pos.end - pos.begin < 1 && (pos.begin = seekPrevious(pos.begin), 
-                void 0 !== maskset.validPositions[pos.begin] && maskset.validPositions[pos.begin].input === opts.groupSeparator && pos.begin--) : k === Inputmask.keyCode.DELETE && pos.begin === pos.end && (pos.end = isMask(pos.end, !0) && maskset.validPositions[pos.end] && maskset.validPositions[pos.end].input !== opts.radixPoint ? pos.end + 1 : seekNext(pos.end) + 1, 
+                void 0 !== maskset.validPositions[pos.begin] && maskset.validPositions[pos.begin].input === opts.groupSeparator && pos.begin--) : k === Inputmask.keyCode.DELETE && pos.begin === pos.end && (pos.end = isMask(pos.end, !0, !0) ? pos.end + 1 : seekNext(pos.end) + 1, 
                 void 0 !== maskset.validPositions[pos.begin] && maskset.validPositions[pos.begin].input === opts.groupSeparator && pos.end++), 
-                revalidateMask(pos), !0 !== strict && !1 !== opts.keepStatic || null !== opts.regex && -1 !== getTest(pos.begin).match.def.indexOf("|")) {
-                    var result = alternate(!0);
-                    if (result) {
-                        var newPos = void 0 !== result.caret ? result.caret : result.pos ? seekNext(result.pos.begin ? result.pos.begin : result.pos) : getLastValidPosition(-1, !0);
-                        (k !== Inputmask.keyCode.DELETE || pos.begin > newPos) && pos.begin;
+                !1 !== (offset = revalidateMask(pos))) {
+                    if (!0 !== strict && !1 !== opts.keepStatic || null !== opts.regex && -1 !== getTest(pos.begin).match.def.indexOf("|")) {
+                        var result = alternate(!0);
+                        if (result) {
+                            var newPos = void 0 !== result.caret ? result.caret : result.pos ? seekNext(result.pos.begin ? result.pos.begin : result.pos) : getLastValidPosition(-1, !0);
+                            (k !== Inputmask.keyCode.DELETE || pos.begin > newPos) && pos.begin;
+                        }
                     }
+                    var lvp = getLastValidPosition(pos.end, !0);
+                    lvp < pos.begin ? maskset.p = !1 === opts.insertMode ? seekPrevious(lvp + 1) : seekNext(lvp) : !0 !== strict && (maskset.p = k === Inputmask.keyCode.DELETE ? pos.begin + offset : pos.begin, 
+                    !1 === opts.insertMode && k === Inputmask.keyCode.DELETE && (maskset.p = pos.end + 1, 
+                    void 0 === maskset.validPositions[maskset.p] && getLastValidPosition(maskset.maskLength, !0) < maskset.p && (maskset.p = seekPrevious(lvp + 1))));
                 }
-                var lvp = getLastValidPosition(pos.end, !0);
-                lvp < pos.begin ? maskset.p = !1 === opts.insertMode ? seekPrevious(lvp + 1) : seekNext(lvp) : !0 !== strict && (maskset.p = pos.begin, 
-                !1 === opts.insertMode && k === Inputmask.keyCode.DELETE && (maskset.p = pos.end + 1, 
-                void 0 === maskset.validPositions[maskset.p] && getLastValidPosition(maskset.maskLength, !0) < maskset.p && (maskset.p = seekPrevious(lvp + 1))));
             }
             function initializeColorMask(input) {
                 var computedStyle = (input.ownerDocument.defaultView || window).getComputedStyle(input, null);
@@ -2059,7 +2055,7 @@
                     var result = currentResult, dateParts = analyseMask(buffer.join(""), opts.inputFormat, opts);
                     return result && dateParts.date.getTime() == dateParts.date.getTime() && (result = isValidDate(dateParts, result), 
                     result = result && isDateInRange(dateParts, opts)), pos && result && currentResult.pos !== pos ? {
-                        buffer: parse(opts.inputFormat, dateParts, opts),
+                        buffer: parse(opts.inputFormat, dateParts, opts).split(""),
                         refreshFromBuffer: {
                             start: pos,
                             end: currentResult.pos
@@ -2092,7 +2088,7 @@
             return escapedTxt;
         }
         function alignDigits(buffer, digits, opts) {
-            if (0 < digits && !opts.digitsOptional && 0 < buffer.length) {
+            if (0 < digits && (!opts.digitsOptional || !1 !== opts.__financeInput) && 0 < buffer.length) {
                 var radixPosition = $.inArray(opts.radixPoint, buffer);
                 -1 === radixPosition && (buffer.push(opts.radixPoint), radixPosition = buffer.length - 1);
                 for (var i = 1; i <= digits; i++) buffer[radixPosition + i] = buffer[radixPosition + i] || "0";
@@ -2111,7 +2107,7 @@
         function findValid(symbol, maskset) {
             var ret = -1;
             return $.each(maskset.validPositions, function(ndx, tst) {
-                if (tst.match.def === symbol) return ret = parseInt(ndx), !1;
+                if (tst && tst.match.def === symbol) return ret = parseInt(ndx), !1;
             }), ret;
         }
         function parseMinMaxOptions(opts) {
@@ -2212,11 +2208,12 @@
                     }
                 },
                 preValidation: function preValidation(buffer, pos, c, isSelection, opts, maskset, caretPos) {
+                    if (!1 !== opts.__financeInput && c === opts.radixPoint) return !1;
                     var radixPos = $.inArray(opts.radixPoint, buffer);
                     if (pos = hanndleRadixDance(pos, c, radixPos, opts), "-" !== c && c !== opts.negationSymbol.front) return -1 !== radixPos && !0 === opts._radixDance && !1 === isSelection && c === opts.radixPoint && void 0 !== opts.digits && (isNaN(opts.digits) || 0 < parseInt(opts.digits)) && radixPos !== pos ? {
                         caret: opts._radixDance && pos === radixPos - 1 ? radixPos + 1 : radixPos
                     } : {
-                        rewritePosition: isSelection && caretPos.end < radixPos && !1 === opts.__financeInput ? radixPos : pos
+                        rewritePosition: isSelection && opts.digitsOptional ? caretPos.end : pos
                     };
                     if (!0 !== opts.allowMinus) return !1;
                     var isNegative = !1, front = findValid("+", maskset), back = findValid("-", maskset);
@@ -2241,8 +2238,14 @@
                         var unmasked = opts.onUnMask(buffer.slice().reverse().join(""), void 0, $.extend({}, opts, {
                             unmaskAsNumber: !0
                         }));
-                        if (null !== opts.min && unmasked < opts.min && unmasked.toString().length >= opts.min.toString().length) return !1;
-                        if (null !== opts.max && unmasked > opts.max) return !1;
+                        if (null !== opts.min && unmasked < opts.min && (unmasked.toString().length >= opts.min.toString().length || unmasked < 0)) return {
+                            refreshFromBuffer: !0,
+                            buffer: alignDigits(opts.min.toString().replace(".", opts.radixPoint).split(""), opts.digits, opts).reverse()
+                        };
+                        if (null !== opts.max && unmasked > opts.max) return {
+                            refreshFromBuffer: !0,
+                            buffer: alignDigits(opts.max.toString().replace(".", opts.radixPoint).split(""), opts.digits, opts).reverse()
+                        };
                     }
                     return currentResult;
                 },
@@ -2277,16 +2280,21 @@
                         initialValue = initialValue.replace(Inputmask.escapeRegex(radixPoint), "."), isFinite(initialValue) && (initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor), 
                         initialValue = initialValue.toString().replace(".", radixPoint);
                     }
-                    return 0 === opts.digits && -1 !== initialValue.indexOf(Inputmask.escapeRegex(radixPoint)) && (initialValue = initialValue.substring(0, initialValue.indexOf(Inputmask.escapeRegex(radixPoint)))), 
-                    alignDigits(initialValue.toString().split(""), digits, opts).join("");
+                    if (0 === opts.digits && -1 !== initialValue.indexOf(Inputmask.escapeRegex(radixPoint)) && (initialValue = initialValue.substring(0, initialValue.indexOf(Inputmask.escapeRegex(radixPoint)))), 
+                    null !== opts.min || null !== opts.max) {
+                        var numberValue = initialValue.toString().replace(radixPoint, ".");
+                        null !== opts.min && numberValue < opts.min ? initialValue = opts.min.toString().replace(".", radixPoint) : null !== opts.max && numberValue > opts.max && (initialValue = opts.max.toString().replace(".", radixPoint));
+                    }
+                    return alignDigits(initialValue.toString().split(""), digits, opts).join("");
                 },
                 onBeforeWrite: function onBeforeWrite(e, buffer, caretPos, opts) {
-                    function stripBuffer(buffer) {
-                        if (!1 !== opts.__financeInput) {
+                    function stripBuffer(buffer, stripRadix) {
+                        if (!1 !== opts.__financeInput || stripRadix) {
                             var position = $.inArray(opts.radixPoint, buffer);
                             -1 !== position && buffer.splice(position, 1);
                         }
                         if ("" !== opts.groupSeparator) for (;-1 !== (position = buffer.indexOf(opts.groupSeparator)); ) buffer.splice(position, 1);
+                        return buffer;
                     }
                     var result, leadingzeroes = checkForLeadingZeroes(buffer, opts);
                     if (leadingzeroes) {
@@ -2302,11 +2310,26 @@
                     if (e) switch (e.type) {
                       case "blur":
                       case "checkval":
-                        "" !== opts.radixPoint && buffer[0] === opts.radixPoint && (result && result.buffer ? result.buffer.shift() : (buffer.shift(), 
-                        stripBuffer(buffer), result = {
+                        if (null !== opts.min) {
+                            var unmasked = opts.onUnMask(buffer.slice().reverse().join(""), void 0, $.extend({}, opts, {
+                                unmaskAsNumber: !0
+                            }));
+                            if (null !== opts.min && unmasked < opts.min) return {
+                                refreshFromBuffer: !0,
+                                buffer: alignDigits(opts.min.toString().replace(".", opts.radixPoint).split(""), opts.digits, opts).reverse()
+                            };
+                        }
+                        if ("" !== opts.radixPoint && buffer[0] === opts.radixPoint) result && result.buffer ? result.buffer.shift() : (buffer.shift(), 
+                        result = {
                             refreshFromBuffer: !0,
-                            buffer: buffer
-                        }));
+                            buffer: stripBuffer(buffer)
+                        }); else if (buffer[buffer.length - 1] === opts.negationSymbol.front) {
+                            var nmbrMtchs = new RegExp("(^" + ("" != opts.negationSymbol.front ? Inputmask.escapeRegex(opts.negationSymbol.front) + "?" : "") + Inputmask.escapeRegex(opts.prefix) + ")(.*)(" + Inputmask.escapeRegex(opts.suffix) + ("" != opts.negationSymbol.back ? Inputmask.escapeRegex(opts.negationSymbol.back) + "?" : "") + "$)").exec(stripBuffer(buffer.slice(), !0).reverse().join("")), number = nmbrMtchs ? nmbrMtchs[2] : "";
+                            0 == number && (result = {
+                                refreshFromBuffer: !0,
+                                buffer: [ 0 ]
+                            });
+                        }
                     }
                     return result;
                 },
@@ -2321,13 +2344,26 @@
                         return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step)), 
                         $input.trigger("setvalue"), !1;
                     }
-                    if (!(e.shiftKey || e.keyCode !== Inputmask.keyCode.DELETE && e.keyCode !== Inputmask.keyCode.BACKSPACE && e.keyCode !== Inputmask.keyCode.BACKSPACE_SAFARI || !0 !== opts._radixDance || opts.digitsOptional)) {
-                        var radixPos = $.inArray(opts.radixPoint, buffer);
-                        if (-1 !== radixPos && (caretPos.begin < radixPos || e.keyCode === Inputmask.keyCode.DELETE && caretPos.begin === radixPos)) {
-                            e.keyCode !== Inputmask.keyCode.BACKSPACE && e.keyCode !== Inputmask.keyCode.BACKSPACE_SAFARI || caretPos.begin++;
+                    if (!e.shiftKey && (e.keyCode === Inputmask.keyCode.DELETE || e.keyCode === Inputmask.keyCode.BACKSPACE || e.keyCode === Inputmask.keyCode.BACKSPACE_SAFARI)) {
+                        if (buffer[e.keyCode === Inputmask.keyCode.DELETE ? caretPos.begin - 1 : caretPos.end] === opts.negationSymbol.front) {
                             var bffr = buffer.slice().reverse();
-                            return bffr.splice(bffr.length - caretPos.begin, 1), $input.trigger("setvalue", [ alignDigits(bffr, opts.digits, opts).join(""), caretPos.begin ]), 
-                            !1;
+                            return "" !== opts.negationSymbol.front && bffr.shift(), "" !== opts.negationSymbol.back && bffr.pop(), 
+                            $input.trigger("setvalue", [ bffr.join(""), caretPos.begin ]), !1;
+                        }
+                        if (!0 === opts._radixDance) {
+                            var radixPos = $.inArray(opts.radixPoint, buffer);
+                            if (opts.digitsOptional) {
+                                if (0 === radixPos) {
+                                    var bffr = buffer.slice().reverse();
+                                    return bffr.pop(), $input.trigger("setvalue", [ bffr.join(""), caretPos.begin ]), 
+                                    !1;
+                                }
+                            } else if (-1 !== radixPos && (caretPos.begin < radixPos || e.keyCode === Inputmask.keyCode.DELETE && caretPos.begin === radixPos)) {
+                                e.keyCode !== Inputmask.keyCode.BACKSPACE && e.keyCode !== Inputmask.keyCode.BACKSPACE_SAFARI || caretPos.begin++;
+                                var bffr = buffer.slice().reverse();
+                                return bffr.splice(bffr.length - caretPos.begin, 1), $input.trigger("setvalue", [ alignDigits(bffr, opts.digits, opts).join(""), caretPos.begin ]), 
+                                !1;
+                            }
                         }
                     }
                 }

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


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

@@ -300,7 +300,7 @@ Inputmask.extendAliases({
 
 			if (pos && result && currentResult.pos !== pos) {
 				return {
-					buffer: parse(opts.inputFormat, dateParts, opts),
+					buffer: parse(opts.inputFormat, dateParts, opts).split(""),
 					refreshFromBuffer: {start: pos, end: currentResult.pos}
 				};
 			}

+ 71 - 16
lib/extensions/inputmask.numeric.extensions.js

@@ -27,7 +27,7 @@ function autoEscape(txt, opts) {
 }
 
 function alignDigits(buffer, digits, opts) {
-	if (digits > 0 && !opts.digitsOptional && buffer.length > 0) {
+	if (digits > 0 && (!opts.digitsOptional || opts.__financeInput !== false) && buffer.length > 0) {
 		var radixPosition = $.inArray(opts.radixPoint, buffer);
 		if (radixPosition === -1) {
 			buffer.push(opts.radixPoint);
@@ -64,7 +64,7 @@ function findValidator(symbol, maskset) {
 function findValid(symbol, maskset) {
 	var ret = -1;
 	$.each(maskset.validPositions, function (ndx, tst) {
-		if (tst.match.def === symbol) {
+		if (tst && tst.match.def === symbol) {
 			ret = parseInt(ndx);
 			return false;
 		}
@@ -161,6 +161,8 @@ function genMask(opts) {
 	opts.greedy = false; //enforce greedy false
 
 	parseMinMaxOptions(opts);
+
+	// console.log(mask);
 	return mask;
 }
 
@@ -253,6 +255,7 @@ Inputmask.extendAliases({
 			}
 		},
 		preValidation: function (buffer, pos, c, isSelection, opts, maskset, caretPos) {
+			if (opts.__financeInput !== false && c === opts.radixPoint) return false;
 			var radixPos = $.inArray(opts.radixPoint, buffer);
 			pos = hanndleRadixDance(pos, c, radixPos, opts);
 			if (c === "-" || c === opts.negationSymbol.front) {
@@ -279,18 +282,25 @@ Inputmask.extendAliases({
 				};
 			}
 
-			return {rewritePosition: (isSelection && (caretPos.end < radixPos) && opts.__financeInput === false) ? radixPos : pos};
+			return {rewritePosition: (isSelection && opts.digitsOptional) ? caretPos.end : pos};
 		},
 		postValidation: function (buffer, pos, currentResult, opts, maskset) {
 			if (opts.min !== null || opts.max !== null) {
 				var unmasked = opts.onUnMask(buffer.slice().reverse().join(""), undefined, $.extend({}, opts, {
 					unmaskAsNumber: true
 				}));
-				if (opts.min !== null && unmasked < opts.min && unmasked.toString().length >= opts.min.toString().length) {
-					return false;
+				if (opts.min !== null && unmasked < opts.min && (unmasked.toString().length >= opts.min.toString().length || unmasked < 0)) {
+					return {
+						refreshFromBuffer: true,
+						buffer: alignDigits(opts.min.toString().replace(".", opts.radixPoint).split(""), opts.digits, opts).reverse()
+					};
 				}
+
 				if (opts.max !== null && unmasked > opts.max) {
-					return false;
+					return {
+						refreshFromBuffer: true,
+						buffer: alignDigits(opts.max.toString().replace(".", opts.radixPoint).split(""), opts.digits, opts).reverse()
+					};
 				}
 			}
 
@@ -359,11 +369,21 @@ Inputmask.extendAliases({
 			if (opts.digits === 0 && initialValue.indexOf(Inputmask.escapeRegex(radixPoint)) !== -1) {
 				initialValue = initialValue.substring(0, initialValue.indexOf(Inputmask.escapeRegex(radixPoint)));
 			}
+
+			if (opts.min !== null || opts.max !== null) {
+				var numberValue = initialValue.toString().replace(radixPoint, ".");
+				if (opts.min !== null && numberValue < opts.min) {
+					initialValue = opts.min.toString().replace(".", radixPoint);
+				} else if (opts.max !== null && numberValue > opts.max) {
+					initialValue = opts.max.toString().replace(".", radixPoint);
+				}
+			}
+
 			return alignDigits(initialValue.toString().split(""), digits, opts).join("");
 		},
 		onBeforeWrite: function (e, buffer, caretPos, opts) {
-			function stripBuffer(buffer) {
-				if (opts.__financeInput !== false) {
+			function stripBuffer(buffer, stripRadix) {
+				if (opts.__financeInput !== false || stripRadix) {
 					var position = $.inArray(opts.radixPoint, buffer);
 					if (position !== -1) {
 						buffer.splice(position, 1);
@@ -374,6 +394,8 @@ Inputmask.extendAliases({
 						buffer.splice(position, 1);
 					}
 				}
+
+				return buffer;
 			}
 
 			var result,
@@ -395,16 +417,36 @@ Inputmask.extendAliases({
 				switch (e.type) {
 					case "blur":
 					case "checkval":
+						if (opts.min !== null) {
+							var unmasked = opts.onUnMask(buffer.slice().reverse().join(""), undefined, $.extend({}, opts, {
+								unmaskAsNumber: true
+							}));
+							if (opts.min !== null && unmasked < opts.min) {
+								return {
+									refreshFromBuffer: true,
+									buffer: alignDigits(opts.min.toString().replace(".", opts.radixPoint).split(""), opts.digits, opts).reverse()
+								};
+							}
+						}
 						if (opts.radixPoint !== "" && buffer[0] === opts.radixPoint) {
 							if (result && result.buffer) {
 								result.buffer.shift();
 							} else {
 								buffer.shift();
-								stripBuffer(buffer);
 								result =
-									{refreshFromBuffer: true, buffer: buffer};
+									{refreshFromBuffer: true, buffer: stripBuffer(buffer)};
+							}
+						} else {
+							if (buffer[buffer.length - 1] === opts.negationSymbol.front) {
+								var nmbrMtchs = new RegExp("(^" + (opts.negationSymbol.front != "" ? Inputmask.escapeRegex(opts.negationSymbol.front) + "?" : "") + Inputmask.escapeRegex(opts.prefix) + ")(.*)(" + Inputmask.escapeRegex(opts.suffix) + (opts.negationSymbol.back != "" ? Inputmask.escapeRegex(opts.negationSymbol.back) + "?" : "") + "$)").exec(stripBuffer(buffer.slice(), true).reverse().join("")),
+									number = nmbrMtchs ? nmbrMtchs[2] : "";
+								if (number == 0) {
+									result = {refreshFromBuffer: true, buffer: [0]};
+								}
 							}
 						}
+
+
 				}
 			}
 			return result;
@@ -424,15 +466,28 @@ Inputmask.extendAliases({
 				}
 			}
 			if (!e.shiftKey && (e.keyCode === Inputmask.keyCode.DELETE || e.keyCode === Inputmask.keyCode.BACKSPACE || e.keyCode === Inputmask.keyCode.BACKSPACE_SAFARI)) {
-				if (opts._radixDance === true && !opts.digitsOptional) {
+				if (buffer[e.keyCode === Inputmask.keyCode.DELETE ? caretPos.begin - 1 : caretPos.end] === opts.negationSymbol.front) {
+					var bffr = buffer.slice().reverse();
+					if (opts.negationSymbol.front !== "") bffr.shift();
+					if (opts.negationSymbol.back !== "") bffr.pop();
+					$input.trigger("setvalue", [bffr.join(""), caretPos.begin]);
+					return false;
+				} else if (opts._radixDance === true) {
 					var radixPos = $.inArray(opts.radixPoint, buffer);
-					if (radixPos !== -1 && (caretPos.begin < radixPos || (e.keyCode === Inputmask.keyCode.DELETE && caretPos.begin === radixPos))) {
-						if (e.keyCode === Inputmask.keyCode.BACKSPACE || e.keyCode === Inputmask.keyCode.BACKSPACE_SAFARI) {
-							caretPos.begin++;
+					if (!opts.digitsOptional) {
+						if (radixPos !== -1 && (caretPos.begin < radixPos || (e.keyCode === Inputmask.keyCode.DELETE && caretPos.begin === radixPos))) {
+							if (e.keyCode === Inputmask.keyCode.BACKSPACE || e.keyCode === Inputmask.keyCode.BACKSPACE_SAFARI) {
+								caretPos.begin++;
+							}
+							var bffr = buffer.slice().reverse();
+							bffr.splice(bffr.length - caretPos.begin, 1);
+							$input.trigger("setvalue", [alignDigits(bffr, opts.digits, opts).join(""), caretPos.begin]);
+							return false;
 						}
+					} else if (radixPos === 0) {
 						var bffr = buffer.slice().reverse();
-						bffr.splice(bffr.length - caretPos.begin, 1);
-						$input.trigger("setvalue", [alignDigits(bffr, opts.digits, opts).join(""), caretPos.begin]);
+						bffr.pop();
+						$input.trigger("setvalue", [bffr.join(""), caretPos.begin]);
 						return false;
 					}
 				}

+ 1 - 1
package.json

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

+ 1 - 1
qunit/tests_dynamic.js

@@ -334,7 +334,7 @@ export default function (qunit, Inputmask) {
 		$("#testmask").Type("some.body@mail.com");
 		$.caret(testmask, 9);
 		$("#testmask").SendKey(Inputmask.keyCode.DELETE);
-		assert.equal(testmask.value, "some.body@ail.com", "Result " + testmask.value);
+		assert.equal($.caret(testmask).begin, "some.body@".length, "Result " + $.caret(testmask).begin);
 	});
 
 	qunit.test("email mask -123@mail.com - 123 => info", function (assert) {

+ 76 - 140
qunit/tests_numeric.js

@@ -279,7 +279,7 @@ export default function (qunit, Inputmask) {
 		testmask.focus();
 		setTimeout(function () {
 			$("#testmask").Type("00000");
-			assert.equal($("#testmask")[0].inputmask._valueGet(), "0", "Result " + testmask.value);
+			assert.equal(testmask.value, "0", "Result " + testmask.value);
 			done();
 		}, 0);
 
@@ -549,7 +549,7 @@ export default function (qunit, Inputmask) {
 		$("#testmask").SendKey(Inputmask.keyCode.DELETE);
 		$("#testmask").SendKey(Inputmask.keyCode.DELETE);
 		$("#testmask").SendKey(Inputmask.keyCode.DELETE);
-		$("#testmask").Type("789");
+		$("#testmask").Type(".789");
 
 		assert.equal(testmask.value, "12345.789", "Result " + testmask.value);
 
@@ -569,54 +569,6 @@ export default function (qunit, Inputmask) {
 
 	});
 
-	qunit.test("inputmask(\"decimal, { repeat: 15 }\") - maxlength 10", function (assert) {
-		var $fixture = $("#qunit-fixture");
-		$fixture.append("<input type=\"text\" id=\"testmask\" maxlength=\"10\" />");
-		var testmask = document.getElementById("testmask");
-		Inputmask("decimal", {
-			repeat: 15
-		}).mask(testmask);
-
-		testmask.focus();
-
-		$("#testmask").Type("123456789012345");
-
-		assert.equal(testmask.value, "1234567890", "Result " + testmask.value);
-
-	});
-
-	qunit.test("inputmask(\"decimal, { repeat: 5 }\") - maxlength 10", function (assert) {
-		var $fixture = $("#qunit-fixture");
-		$fixture.append("<input type=\"text\" id=\"testmask\" maxlength=\"10\" />");
-		var testmask = document.getElementById("testmask");
-		Inputmask("decimal", {
-			repeat: 5
-		}).mask(testmask);
-
-		testmask.focus();
-
-		$("#testmask").Type("123456789012345");
-
-		assert.equal(testmask.value, "12345", "Result " + testmask.value);
-
-	});
-
-	qunit.test("inputmask(\"decimal, { repeat: 5}\") - maxlength 10", function (assert) {
-		var $fixture = $("#qunit-fixture");
-		$fixture.append("<input type=\"text\" id=\"testmask\" maxlength=\"10\" />");
-		var testmask = document.getElementById("testmask");
-		Inputmask("decimal", {
-			repeat: 5,
-		}).mask(testmask);
-
-		testmask.focus();
-
-		$("#testmask").Type("123456789012345");
-
-		assert.equal(testmask.value, "12345.6789", "Result " + testmask.value);
-
-	});
-
 	qunit.test("inputmask(\"decimal\")", function (assert) {
 		var $fixture = $("#qunit-fixture");
 		$fixture.append("<input type=\"text\" id=\"testmask\" />");
@@ -721,9 +673,7 @@ export default function (qunit, Inputmask) {
 		$fixture.append("<input type=\"text\" id=\"testmask2\" />");
 		var testmask2 = document.getElementById("testmask2");
 		Inputmask("integer", {
-			autoGroup: true,
-			groupSeparator: ",",
-			groupSize: 3
+			groupSeparator: ","
 		}).mask(testmask);
 		Inputmask("(999)-999-9999").mask(testmask2);
 
@@ -743,9 +693,7 @@ export default function (qunit, Inputmask) {
 		Inputmask("decimal", {
 			radixPoint: ".",
 			groupSeparator: ",",
-			groupSize: 3,
 			digits: 2,
-			autoGroup: true,
 			allowMinus: true
 		}).mask(testmask);
 
@@ -765,9 +713,7 @@ export default function (qunit, Inputmask) {
 		Inputmask("decimal", {
 			radixPoint: ".",
 			groupSeparator: ",",
-			groupSize: 3,
 			digits: 2,
-			autoGroup: true,
 			allowMinus: true
 		}).mask(testmask);
 
@@ -805,9 +751,7 @@ export default function (qunit, Inputmask) {
 		Inputmask("decimal", {
 			radixPoint: ".",
 			groupSeparator: ",",
-			groupSize: 3,
 			digits: 2,
-			autoGroup: true,
 			allowMinus: true
 		}).mask(testmask);
 
@@ -827,9 +771,7 @@ export default function (qunit, Inputmask) {
 		Inputmask("decimal", {
 			radixPoint: ".",
 			groupSeparator: ",",
-			groupSize: 3,
 			digits: 2,
-			autoGroup: true,
 			allowMinus: true
 		}).mask(testmask);
 
@@ -887,7 +829,7 @@ export default function (qunit, Inputmask) {
 		}).mask(testmask);
 
 		testmask.focus();
-		$("#testmask").Type("123.1");
+		$("#testmask").val("123.1");
 		$(testmask).trigger("blur");
 		setTimeout(function () {
 			assert.equal(testmask.value, "123.100", "Result " + testmask.value);
@@ -952,10 +894,8 @@ export default function (qunit, Inputmask) {
 		var testmask = document.getElementById("testmask");
 		Inputmask("decimal", {
 			groupSeparator: ".",
-			autoGroup: true,
 			digits: 2,
 			radixPoint: ",",
-			groupSize: 3
 		}).mask(testmask);
 
 		$("#testmask").val("-5000,77");
@@ -971,10 +911,8 @@ export default function (qunit, Inputmask) {
 		var testmask = document.getElementById("testmask");
 		Inputmask("decimal", {
 			groupSeparator: ".",
-			autoGroup: true,
 			digits: 2,
 			radixPoint: ",",
-			groupSize: 3
 		}).mask(testmask);
 
 		$("#testmask").val("-0");
@@ -990,16 +928,32 @@ export default function (qunit, Inputmask) {
 		$fixture.append("<input type=\"text\" id=\"testmask\" />");
 		var testmask = document.getElementById("testmask");
 		Inputmask("integer", {
-			placeholder: "0"
+			placeholder: "0",
 		}).mask(testmask);
 
-		$("#testmask").val("-5.000,77");
+		testmask.value = -5000.77;
 		$(testmask).trigger("blur");
 
 		assert.equal(testmask.value, "-5001", "Result " + testmask.value);
 
 	});
 
+	qunit.test("inputmask(\"integer\") - 5.000,77 - DrSammyD", function (assert) {
+		var $fixture = $("#qunit-fixture");
+		$fixture.append("<input type=\"text\" id=\"testmask\" />");
+		var testmask = document.getElementById("testmask");
+		Inputmask("integer", {
+			placeholder: "0",
+			radixPoint: ","
+		}).mask(testmask);
+
+		$("#testmask").val("5.000,77");
+		$(testmask).trigger("blur");
+
+		assert.equal(testmask.value, "5001", "Result " + testmask.value);
+
+	});
+
 	qunit.test("inputmask(\"decimal\ placeholder :\"\" digitsoptional: false) - 123 - loostro", function (assert) {
 		var done = assert.async(),
 			$fixture = $("#qunit-fixture");
@@ -1154,7 +1108,7 @@ export default function (qunit, Inputmask) {
 			$("#testmask").Type("1234.56");
 			$.caret(testmask, 0, 10);
 			$("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
-			assert.equal($("#testmask")[0].inputmask._valueGet(), "$ 0.00", "Result " + $("#testmask")[0].inputmask._valueGet());
+			assert.equal(testmask.inputmask._valueGet(true), "$ 0.00", "Result " + testmask.inputmask._valueGet(true));
 			done();
 		}, 5);
 	});
@@ -1194,7 +1148,7 @@ export default function (qunit, Inputmask) {
 			$("#testmask").Type("1234.56");
 			$.caret(testmask, 0, 7);
 			$("#testmask").SendKey("1");
-			assert.equal($("#testmask")[0].inputmask._valueGet(), "$ 1.56", "Result " + $("#testmask")[0].inputmask._valueGet());
+			assert.equal(testmask.value, "$ 1.56", "Result " + testmask.value);
 			done();
 		}, 5);
 	});
@@ -1212,7 +1166,7 @@ export default function (qunit, Inputmask) {
 			$("#testmask").Type("123.56");
 			$.caret(testmask, 0, 5);
 			$("#testmask").SendKey("1");
-			assert.equal($("#testmask")[0].inputmask._valueGet(), "$ 1.56", "Result " + $("#testmask")[0].inputmask._valueGet());
+			assert.equal(testmask.value, "$ 1.56", "Result " + testmask.value);
 			done();
 		}, 5);
 	});
@@ -1232,7 +1186,7 @@ export default function (qunit, Inputmask) {
 			$("#testmask").Type("123.56");
 			$.caret(testmask, 0, 4);
 			$("#testmask").SendKey("1");
-			assert.equal($("#testmask")[0].inputmask._valueGet(), "$1.56", "Result " + $("#testmask")[0].inputmask._valueGet());
+			assert.equal(testmask.value, "$1.56", "Result " + testmask.value);
 			done();
 		}, 5);
 	});
@@ -1247,11 +1201,13 @@ export default function (qunit, Inputmask) {
 		}).mask(testmask);
 
 		testmask.focus();
-		$(testmask).trigger("blur");
 		setTimeout(function () {
-			assert.equal($("#testmask")[0].inputmask._valueGet(), "$ 1,000.00", "Result " + $("#testmask")[0].inputmask._valueGet());
-			done();
-		}, 5);
+			$("#testmask").trigger("blur");
+			setTimeout(function () {
+				assert.equal(testmask.value, "$ 1,000.00", "Result " + testmask.value);
+				done();
+			}, 0);
+		}, 0);
 	});
 
 	qunit.test("currency alias - max 1000 - type 1234", function (assert) {
@@ -1269,7 +1225,7 @@ export default function (qunit, Inputmask) {
 			$("#testmask").Type("1234");
 			$("#testmask").trigger("blur");
 			setTimeout(function () {
-				assert.equal($("#testmask")[0].inputmask._valueGet(), "$ 1,000.00", "Result " + $("#testmask")[0].inputmask._valueGet());
+				assert.equal(testmask.value, "$ 1,000.00", "Result " + testmask.value);
 				done();
 			}, 0);
 		}, 5);
@@ -1288,7 +1244,7 @@ export default function (qunit, Inputmask) {
 			$("#testmask").Type("1010");
 			$.caret(testmask, 3);
 			$("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
-			assert.equal($("#testmask")[0].inputmask._valueGet(), "$ 10.00", "Result " + $("#testmask")[0].inputmask._valueGet());
+			assert.equal(testmask.value, "$ 10.00", "Result " + testmask.value);
 			done();
 		}, 0);
 	});
@@ -1306,7 +1262,7 @@ export default function (qunit, Inputmask) {
 			$("#testmask").Type("1010");
 			$.caret(testmask, 6);
 			$("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
-			assert.equal($("#testmask")[0].inputmask._valueGet(), "$ 100.00", "Result " + $("#testmask")[0].inputmask._valueGet());
+			assert.equal(testmask.value, "$ 100.00", "Result " + testmask.value);
 			done();
 		}, 0);
 	});
@@ -1324,14 +1280,14 @@ export default function (qunit, Inputmask) {
 			$("#testmask").Type("-1234");
 			$.caret(testmask, 0);
 			$("#testmask").SendKey(Inputmask.keyCode.DELETE);
-			assert.equal($("#testmask")[0].inputmask._valueGet(), "$ 1,234.00", "Result " + $("#testmask")[0].inputmask._valueGet());
+			assert.equal(testmask.value, "$ 1,234.00", "Result " + testmask.value);
 			done();
 		}, 0);
 	});
 
 	qunit.test("decimal alias - type 12345.12 add 6 in front - freeze - DatXN", function (assert) {
 		var $fixture = $("#qunit-fixture");
-		$fixture.append("<input type=\"text\" id=\"testmask\" />");
+		$fixture.append("<input type=\"text\" id=\"testmask\" maxlength='8' />");
 		var testmask = document.getElementById("testmask");
 		Inputmask("decimal", {
 			digits: 2,
@@ -1343,7 +1299,7 @@ export default function (qunit, Inputmask) {
 		$("#testmask").Type("12345.12");
 		$.caret(testmask, 0);
 		$("#testmask").SendKey("6");
-		assert.equal($("#testmask")[0].inputmask._valueGet(), "12345.12", "Result " + $("#testmask")[0].inputmask._valueGet());
+		assert.equal(testmask.value, "12345.12", "Result " + testmask.value);
 
 	});
 
@@ -1355,9 +1311,7 @@ export default function (qunit, Inputmask) {
 			allowMinus: true,
 			digits: 2,
 			radixPoint: ",",
-			autoGroup: true,
 			groupSeparator: " ",
-			groupSize: 3,
 			rightAlign: false
 		}).mask(testmask);
 
@@ -1366,7 +1320,7 @@ export default function (qunit, Inputmask) {
 		$("#testmask").Type("123456789");
 		$.caret(testmask, 9);
 		$("#testmask").SendKey(",");
-		assert.equal($("#testmask")[0].inputmask._valueGet(), "1 234 567,89", "Result " + $("#testmask")[0].inputmask._valueGet());
+		assert.equal(testmask.value, "1 234 567,89", "Result " + testmask.value);
 
 	});
 
@@ -1378,9 +1332,7 @@ export default function (qunit, Inputmask) {
 			allowMinus: true,
 			digits: 2,
 			radixPoint: ",",
-			autoGroup: true,
 			groupSeparator: " ",
-			groupSize: 3,
 			rightAlign: false
 		}).mask(testmask);
 
@@ -1390,7 +1342,7 @@ export default function (qunit, Inputmask) {
 		$.caret(testmask, 9);
 		$("#testmask").SendKey(",");
 		$("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
-		assert.equal($("#testmask")[0].inputmask._valueGet(), "1 234 567,89", "Result " + $("#testmask")[0].inputmask._valueGet());
+		assert.equal(testmask.value, "123 456 789", "Result " + testmask.value);
 
 	});
 
@@ -1402,9 +1354,7 @@ export default function (qunit, Inputmask) {
 			allowMinus: true,
 			digits: 2,
 			radixPoint: ",",
-			autoGroup: true,
 			groupSeparator: " ",
-			groupSize: 3,
 			rightAlign: false
 		}).mask(testmask);
 
@@ -1413,7 +1363,7 @@ export default function (qunit, Inputmask) {
 		$("#testmask").Type("1234567890");
 		$.caret(testmask, 11);
 		$("#testmask").SendKey(",");
-		assert.equal($("#testmask")[0].inputmask._valueGet(), "12 345 678,90", "Result " + $("#testmask")[0].inputmask._valueGet());
+		assert.equal(testmask.value, "12 345 678,90", "Result " + testmask.value);
 
 	});
 
@@ -1425,9 +1375,7 @@ export default function (qunit, Inputmask) {
 			allowMinus: true,
 			digits: 2,
 			radixPoint: ",",
-			autoGroup: true,
 			groupSeparator: " ",
-			groupSize: 3,
 			rightAlign: false
 		}).mask(testmask);
 
@@ -1437,8 +1385,7 @@ export default function (qunit, Inputmask) {
 		$.caret(testmask, 11);
 		$("#testmask").SendKey(",");
 		$("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
-		assert.equal($("#testmask")[0].inputmask._valueGet(), "12 345 678,90", "Result " + $("#testmask")[0].inputmask._valueGet());
-
+		assert.equal(testmask.value, "1 234 567 890", "Result " + testmask.value);
 	});
 
 	qunit.test("numeric alias - value=\"-1234\" minvalue = 1000", function (assert) {
@@ -1451,7 +1398,7 @@ export default function (qunit, Inputmask) {
 			max: 3000
 		}).mask(testmask);
 		testmask.blur();
-		assert.equal(testmask.inputmask._valueGet(), "1000", "Result " + testmask.inputmask._valueGet());
+		assert.equal(testmask.value, "1000", "Result " + testmask.value);
 	});
 
 	qunit.test("numeric alias - value=\"-1234\" minvalue = -1000", function (assert) {
@@ -1465,7 +1412,7 @@ export default function (qunit, Inputmask) {
 		}).mask(testmask);
 
 		testmask.blur();
-		assert.equal(testmask.inputmask._valueGet(), "-1000", "Result " + testmask.inputmask._valueGet());
+		assert.equal(testmask.value, "-1000", "Result " + testmask.value);
 	});
 
 	qunit.test("numeric alias - value=\"1000\" minvalue = 1000", function (assert) {
@@ -1478,7 +1425,7 @@ export default function (qunit, Inputmask) {
 			max: 3000
 		}).mask(testmask);
 
-		assert.equal($("#testmask")[0].inputmask._valueGet(), "1000", "Result " + $("#testmask")[0].inputmask._valueGet());
+		assert.equal(testmask.value, "1000", "Result " + testmask.value);
 
 	});
 
@@ -1492,7 +1439,7 @@ export default function (qunit, Inputmask) {
 			max: 3000
 		}).mask(testmask);
 
-		assert.equal($("#testmask")[0].inputmask._valueGet(), "-1000", "Result " + $("#testmask")[0].inputmask._valueGet());
+		assert.equal(testmask.value, "-1000", "Result " + testmask.value);
 
 	});
 
@@ -1501,14 +1448,13 @@ export default function (qunit, Inputmask) {
 		$fixture.append("<input type=\"text\" id=\"testmask\" />");
 		var testmask = document.getElementById("testmask");
 		Inputmask("decimal", {
-			autoGroup: true,
 			groupSeparator: ",",
 			suffix: "%"
 		}).mask(testmask);
 		$("#testmask").Type("123.123");
 		$.caret(testmask, 4, 7);
 		$("#testmask").Type("4");
-		assert.equal($("#testmask")[0].inputmask._valueGet(), "123.4%", "Result " + $("#testmask")[0].inputmask._valueGet());
+		assert.equal(testmask.value, "123.4%", "Result " + testmask.value);
 
 	});
 
@@ -1526,7 +1472,7 @@ export default function (qunit, Inputmask) {
 		$("#testmask").trigger("click");
 		setTimeout(function () {
 			$("#testmask").Type("12");
-			assert.equal($("#testmask")[0].inputmask._valueGet(), "12.__", "Result " + $("#testmask")[0].inputmask._valueGet());
+			assert.equal(testmask.value, "12.__", "Result " + testmask.value);
 			done();
 		}, 0);
 	});
@@ -1542,7 +1488,7 @@ export default function (qunit, Inputmask) {
 			$("#testmask").Type("123.123");
 			$.caret(testmask, 0, testmask.value.length);
 			$("#testmask").SendKey(Inputmask.keyCode.DELETE);
-			assert.equal($("#testmask")[0].inputmask._valueGet(), "", "Result " + $("#testmask")[0].inputmask._valueGet());
+			assert.equal(testmask.value, "", "Result " + testmask.value);
 			done();
 		}, 0);
 	});
@@ -1581,7 +1527,7 @@ export default function (qunit, Inputmask) {
 		}).mask(testmask);
 		$.caret(testmask, 0, 1);
 		$("#testmask").Type("1");
-		assert.equal($("#testmask")[0].inputmask._valueGet(), "1.12", "Result " + $("#testmask")[0].inputmask._valueGet());
+		assert.equal(testmask.value, "1.12", "Result " + testmask.value);
 	});
 	qunit.test("numeric alias - digits 2 select 0 type 1 - gharlan", function (assert) {
 		var $fixture = $("#qunit-fixture");
@@ -1592,7 +1538,7 @@ export default function (qunit, Inputmask) {
 		}).mask(testmask);
 		$.caret(testmask, 0, 1);
 		$("#testmask").Type("1");
-		assert.equal($("#testmask")[0].inputmask._valueGet(), "1.00", "Result " + $("#testmask")[0].inputmask._valueGet());
+		assert.equal(testmask.value, "1.00", "Result " + testmask.value);
 	});
 	qunit.test("decimal alias - value 20,00 select 2 type 5 - schmulschubiak", function (assert) {
 		var $fixture = $("#qunit-fixture");
@@ -1600,16 +1546,14 @@ export default function (qunit, Inputmask) {
 		var testmask = document.getElementById("testmask");
 		Inputmask("decimal", {
 			radixPoint: ",",
-			autoGroup: true,
 			groupSeparator: " ",
-			groupSize: 3,
 			allowMinus: false,
 			digits: 2,
 			rightAlign: false
 		}).mask(testmask);
 		$.caret(testmask, 0, 1);
 		$("#testmask").Type("5");
-		assert.equal($("#testmask")[0].inputmask._valueGet(), "50,00", "Result " + $("#testmask")[0].inputmask._valueGet());
+		assert.equal(testmask.value, "50,00", "Result " + testmask.value);
 	});
 	qunit.test("currency numericInput true - type 10020 - jaisonerick", function (assert) {
 		var done = assert.async(),
@@ -1727,7 +1671,6 @@ export default function (qunit, Inputmask) {
 		var testmask = document.getElementById("testmask");
 		Inputmask("decimal", {
 			radixPoint: ",",
-			repeat: 10,
 			digits: "2",
 			autoUnmask: true,
 			suffix: " €"
@@ -1735,7 +1678,7 @@ export default function (qunit, Inputmask) {
 		testmask.focus();
 		$.caret(testmask, 1);
 		$("#testmask").Type("52");
-		assert.equal($("#testmask")[0].inputmask._valueGet(), "52 €", "Result " + $("#testmask")[0].inputmask._valueGet());
+		assert.equal(testmask.value, "52 €", "Result " + testmask.value);
 	});
 
 	qunit.test("numeric + numericInput #1328 - douglasdtc", function (assert) {
@@ -1744,7 +1687,6 @@ export default function (qunit, Inputmask) {
 		var testmask = document.getElementById("testmask");
 		Inputmask("numeric", {
 			"groupSeparator": ".",
-			"groupSize": 3,
 			"radixPoint": ",",
 			"numericInput": true,
 			"digits": 2
@@ -1777,7 +1719,7 @@ export default function (qunit, Inputmask) {
 		$.caret(testmask, 0, 5);
 		$("#testmask").Type("0");
 
-		assert.equal(testmask.inputmask._valueGet(), "$ 0.00", "Result " + testmask.inputmask._valueGet());
+		assert.equal(testmask.value, "$ 0.00", "Result " + testmask.value);
 	});
 
 	qunit.test("numeric + groupSeparator: \"  \" backspace, - krajcot", function (assert) {
@@ -1787,14 +1729,13 @@ export default function (qunit, Inputmask) {
 		Inputmask("currency", {
 			digits: 0,
 			groupSeparator: " ",
-			autoGroup: true
 		}).mask(testmask);
 		testmask.focus();
 		$("#testmask").Type("1");
 		$.caret(testmask, 3);
 		$("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
 
-		assert.equal(testmask.inputmask._valueGet(), "$ 0", "Result " + testmask.inputmask._valueGet());
+		assert.equal(testmask.value, "$ 0", "Result " + testmask.value);
 	});
 
 	qunit.test("numeric + groupSeparator: \"  \" delete, - krajcot", function (assert) {
@@ -1803,15 +1744,14 @@ export default function (qunit, Inputmask) {
 		var testmask = document.getElementById("testmask");
 		Inputmask("currency", {
 			digits: 0,
-			groupSeparator: " ",
-			autoGroup: true
+			groupSeparator: " "
 		}).mask(testmask);
 		testmask.focus();
 		$("#testmask").Type("1");
 		$.caret(testmask, 2);
 		$("#testmask").SendKey(Inputmask.keyCode.DELETE);
 
-		assert.equal(testmask.inputmask._valueGet(), "$ 0", "Result " + testmask.inputmask._valueGet());
+		assert.equal(testmask.value, "$ 0", "Result " + testmask.value);
 	});
 
 	qunit.test("minvalue, - serGlazkov", function (assert) {
@@ -1820,7 +1760,7 @@ export default function (qunit, Inputmask) {
 		var testmask = document.getElementById("testmask");
 		Inputmask({
 			alias: "integer",
-			autoUnmask: true,
+			autoUnmask: false,
 			rightAlign: false,
 			min: 18,
 			max: 80,
@@ -1832,24 +1772,27 @@ export default function (qunit, Inputmask) {
 		$.caret(testmask, 1);
 		$("#testmask").SendKey(Inputmask.keyCode.DELETE);
 		$("#testmask").Type("1");
-		assert.equal(testmask.inputmask._valueGet(), "31 %", "Result " + testmask.inputmask._valueGet());
+		assert.equal(testmask.value, "31 %", "Result " + testmask.value);
 	});
 
 	qunit.test("groupseparator ' ' - krajcot", function (assert) {
-		var $fixture = $("#qunit-fixture");
+		var done = assert.async(),
+			$fixture = $("#qunit-fixture");
 		$fixture.append("<input type=\"text\" id=\"testmask\" />");
 		var testmask = document.getElementById("testmask");
 		Inputmask("currency", {
 			groupSeparator: " ",
-			autoGroup: true,
 			suffix: " €",
 			prefix: "",
 			digits: 0,
 			inputEventOnly: false
 		}).mask(testmask);
 		testmask.focus();
-		testmask.blur();
-		assert.equal(testmask.inputmask._valueGet(), "0 €", "Result " + testmask.inputmask._valueGet());
+		$("#testmask").Type("0");
+		setTimeout(function () {
+			assert.equal(testmask.value, "0 €", "Result " + testmask.value);
+			done();
+		}, 0);
 	});
 
 	qunit.test("decimal set 0.50", function (assert) {
@@ -1859,7 +1802,6 @@ export default function (qunit, Inputmask) {
 		Inputmask("decimal", {
 			radixPoint: ",",
 			groupSeparator: ".",
-			autoGroup: true,
 			digits: 2,
 			removeMaskOnSubmit: false,
 			enforceDigitsOnBlur: true,
@@ -1868,7 +1810,7 @@ export default function (qunit, Inputmask) {
 
 		$(testmask).val("0.50");
 		testmask.blur();
-		assert.equal(testmask.inputmask._valueGet(), "0,50", "Result " + testmask.inputmask._valueGet());
+		assert.equal(testmask.value, "0,50", "Result " + testmask.value);
 	});
 
 	qunit.test("decimal set 1.000", function (assert) {
@@ -1878,14 +1820,13 @@ export default function (qunit, Inputmask) {
 		Inputmask("decimal", {
 			radixPoint: ",",
 			groupSeparator: ".",
-			autoGroup: true,
 			digits: 2,
 			removeMaskOnSubmit: false
 		}).mask(testmask);
 
 		$(testmask).val("1.000");
 
-		assert.equal(testmask.inputmask._valueGet(), "1.000", "Result " + testmask.inputmask._valueGet());
+		assert.equal(testmask.value, "1.000", "Result " + testmask.value);
 	});
 	qunit.test("decimal set 1234.56", function (assert) {
 		var $fixture = $("#qunit-fixture");
@@ -1894,7 +1835,6 @@ export default function (qunit, Inputmask) {
 		Inputmask("decimal", {
 			radixPoint: ",",
 			groupSeparator: ".",
-			autoGroup: true,
 			digits: 2,
 			removeMaskOnSubmit: false,
 			inputType: "number"
@@ -1902,7 +1842,7 @@ export default function (qunit, Inputmask) {
 
 		$(testmask).val("1234.56");
 
-		assert.equal(testmask.inputmask._valueGet(), "1.234,56", "Result " + testmask.inputmask._valueGet());
+		assert.equal(testmask.value, "1.234,56", "Result " + testmask.value);
 	});
 
 	qunit.test("currency  set 100.00 - NurGuz", function (assert) {
@@ -1913,7 +1853,7 @@ export default function (qunit, Inputmask) {
 
 		$(testmask).val("100.00");
 
-		assert.equal(testmask.inputmask._valueGet(), "$ 100,00", "Result " + testmask.inputmask._valueGet());
+		assert.equal(testmask.value, "$ 100,00", "Result " + testmask.value);
 	});
 
 	qunit.test("decimal suffix: years => yers - marcelokohl", function (assert) {
@@ -1930,7 +1870,7 @@ export default function (qunit, Inputmask) {
 
 		$(testmask).val("1");
 
-		assert.equal(testmask.inputmask._valueGet(), "1 years", "Result " + testmask.inputmask._valueGet());
+		assert.equal(testmask.value, "1 years", "Result " + testmask.value);
 	});
 
 	qunit.test("decimal type 38700 delete 7 type 8 - Borzák Attila", function (assert) {
@@ -1938,14 +1878,14 @@ export default function (qunit, Inputmask) {
 		$fixture.append("<input type=\"text\" id=\"testmask\" />");
 		var testmask = document.getElementById("testmask");
 		Inputmask("decimal",
-			{autoGroup: true, groupSeparator: ","}).mask(testmask);
+			{groupSeparator: ","}).mask(testmask);
 
 		$(testmask).Type("38800");
 		$.caret(testmask, 3);
 		$("#testmask").SendKey(Inputmask.keyCode.DELETE);
 		$("#testmask").Type("8");
 
-		assert.equal(testmask.inputmask._valueGet(), "38,800", "Result " + testmask.inputmask._valueGet());
+		assert.equal(testmask.value, "38,800", "Result " + testmask.value);
 	});
 
 	qunit.test("decimal type 100. delete - Borzák Attila", function (assert) {
@@ -1953,12 +1893,12 @@ export default function (qunit, Inputmask) {
 		$fixture.append("<input type=\"text\" id=\"testmask\" />");
 		var testmask = document.getElementById("testmask");
 		Inputmask("decimal",
-			{autoGroup: true, groupSeparator: ","}).mask(testmask);
+			{groupSeparator: ","}).mask(testmask);
 
 		$(testmask).Type("100.");
 		$("#testmask").SendKey(Inputmask.keyCode.BACKSPACE);
 
-		assert.equal(testmask.inputmask._valueGet(), "100", "Result " + testmask.inputmask._valueGet());
+		assert.equal(testmask.value, "100", "Result " + testmask.value);
 	});
 
 	qunit.test("Currency digits and delete #1351 - kousenlsn", function (assert) {
@@ -1978,7 +1918,7 @@ export default function (qunit, Inputmask) {
 		$("#testmask").SendKey(Inputmask.keyCode.DELETE);
 		$("#testmask").SendKey(Inputmask.keyCode.DELETE);
 
-		assert.equal(testmask.inputmask._valueGet(), "0.00", "Result " + testmask.inputmask._valueGet());
+		assert.equal(testmask.value, "0.00", "Result " + testmask.value);
 	});
 
 	qunit.test("numeric + (negationSymbol = parentheses) + (clearIncomplete = true) + type -123. then blur", function (assert) {
@@ -1987,8 +1927,6 @@ export default function (qunit, Inputmask) {
 		var testmask = document.getElementById("testmask");
 		Inputmask("numeric", {
 			rightAlign: false,
-			autoGroup: true,
-			groupSize: 3,
 			digits: 3,
 			enforceDigitsOnBlur: true,
 			groupSeparator: ",",
@@ -2017,7 +1955,6 @@ export default function (qunit, Inputmask) {
 			showMaskOnFocus: false,
 			placeholder: "0",
 			digitsOptional: false,
-			autoGroup: true,
 			clearMaskOnLostFocus: false
 		}).mask(testmask);
 
@@ -2036,7 +1973,6 @@ export default function (qunit, Inputmask) {
 			groupSeparator: ".",
 			radixPoint: ",",
 			placeholder: "0",
-			autoGroup: true,
 			autoUnmask: true,
 			removeMaskOnSubmit: true,
 			inputType: "number"

+ 0 - 1
qunit/tests_numericinput.js

@@ -355,7 +355,6 @@ export default function (qunit, Inputmask) {
             rightAlign: false,
             showMaskOnHover: false,
             numericInput: true,
-            allowPlus: false,
             rightAlignNumerics: false,
             greedy: false
         }).mask(testmask);

+ 1 - 1
qunit/tests_option.js

@@ -9,7 +9,7 @@ export default function (qunit, Inputmask) {
 		Inputmask({alias: "decimal", suffix: ""}).mask("testmask");
 		testmask.inputmask.option({suffix: "%"});
 
-		$("#testmask").Type("123.45");
+		$("#testmask").val("123.45");
 		assert.equal(testmask.value, "123.45%", "Result " + testmask.value);
 	});
 };