Browse Source

Input freezes after changing decimal value symbol twice #2731

Robin Herbots 1 year ago
parent
commit
5aa3581d34

+ 1 - 0
Changelog.md

@@ -16,6 +16,7 @@
 - Enhance resolving of the ndxInitializer to determine the alternating tests.
 - Enhance resolving of the ndxInitializer to determine the alternating tests.
 
 
 ### Fixed
 ### Fixed
+- Input freezes after changing decimal value symbol twice #2731
 - Poor performance on decimal input mask #1505
 - Poor performance on decimal input mask #1505
 - TypeError: Cannot read properties of null (reading 'charAt') at m.onBeforeMask #2789
 - TypeError: Cannot read properties of null (reading 'charAt') at m.onBeforeMask #2789
 - Cursor moves to start when there is a 0 in the decimal, How to stop this behavior? #2784
 - Cursor moves to start when there is a 0 in the decimal, How to stop this behavior? #2784

+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "inputmask",
   "name": "inputmask",
-  "version": "5.0.9-beta.70",
+  "version": "5.0.9-beta.71",
   "main": [
   "main": [
 	  "./index.js",
 	  "./index.js",
     "./css/inputmask.css"
     "./css/inputmask.css"

+ 1 - 1
composer.json

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

+ 3 - 3
dist/colormask.js

@@ -3,7 +3,7 @@
  * https://github.com/RobinHerbots/Inputmask
  * https://github.com/RobinHerbots/Inputmask
  * Copyright (c) 2010 - 2024 Robin Herbots
  * Copyright (c) 2010 - 2024 Robin Herbots
  * Licensed under the MIT license
  * Licensed under the MIT license
- * Version: 5.0.9-beta.70
+ * Version: 5.0.9-beta.71
  */
  */
 !function(e, t) {
 !function(e, t) {
     if ("object" == typeof exports && "object" == typeof module) module.exports = t(); else if ("function" == typeof define && define.amd) define([], t); else {
     if ("object" == typeof exports && "object" == typeof module) module.exports = t(); else if ("function" == typeof define && define.amd) define([], t); else {
@@ -1840,7 +1840,7 @@
                             }(t, n, c, r, a), "-" === n || n === a.negationSymbol.front) {
                             }(t, n, c, r, a), "-" === n || n === a.negationSymbol.front) {
                                 if (!0 !== a.allowMinus) return !1;
                                 if (!0 !== a.allowMinus) return !1;
                                 var d = !1, h = p("+", r), v = p("-", r);
                                 var d = !1, h = p("+", r), v = p("-", r);
-                                return -1 !== h && (d = [ h, v ]), !1 !== d ? {
+                                return -1 !== h && (d = [ h ], -1 !== v && d.push(v)), !1 !== d ? {
                                     remove: d,
                                     remove: d,
                                     caret: u - a.negationSymbol.back.length
                                     caret: u - a.negationSymbol.back.length
                                 } : {
                                 } : {
@@ -3228,7 +3228,7 @@
                 }, t.getLastValidPosition = s, t.isMask = c, t.resetMaskSet = function(e) {
                 }, t.getLastValidPosition = s, t.isMask = c, t.resetMaskSet = function(e) {
                     var t = this.maskset;
                     var t = this.maskset;
                     t.buffer = void 0, !0 !== e && (t.validPositions = [], t.p = 0);
                     t.buffer = void 0, !0 !== e && (t.validPositions = [], t.p = 0);
-                    !1 === e && (t.tests = {});
+                    !1 === e && (t.tests = {}, t.jitOffset = {});
                 }, t.seekNext = u, t.seekPrevious = function(e, t) {
                 }, t.seekNext = u, t.seekPrevious = function(e, t) {
                     var n = this, i = e - 1;
                     var n = this, i = e - 1;
                     if (e <= 0) return 0;
                     if (e <= 0) return 0;

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


+ 3 - 3
dist/inputmask.js

@@ -3,7 +3,7 @@
  * https://github.com/RobinHerbots/Inputmask
  * https://github.com/RobinHerbots/Inputmask
  * Copyright (c) 2010 - 2024 Robin Herbots
  * Copyright (c) 2010 - 2024 Robin Herbots
  * Licensed under the MIT license
  * Licensed under the MIT license
- * Version: 5.0.9-beta.70
+ * Version: 5.0.9-beta.71
  */
  */
 !function(e, t) {
 !function(e, t) {
     if ("object" == typeof exports && "object" == typeof module) module.exports = t(); else if ("function" == typeof define && define.amd) define([], t); else {
     if ("object" == typeof exports && "object" == typeof module) module.exports = t(); else if ("function" == typeof define && define.amd) define([], t); else {
@@ -1725,7 +1725,7 @@
                             }(t, n, c, r, a), "-" === n || n === a.negationSymbol.front) {
                             }(t, n, c, r, a), "-" === n || n === a.negationSymbol.front) {
                                 if (!0 !== a.allowMinus) return !1;
                                 if (!0 !== a.allowMinus) return !1;
                                 var d = !1, h = p("+", r), v = p("-", r);
                                 var d = !1, h = p("+", r), v = p("-", r);
-                                return -1 !== h && (d = [ h, v ]), !1 !== d ? {
+                                return -1 !== h && (d = [ h ], -1 !== v && d.push(v)), !1 !== d ? {
                                     remove: d,
                                     remove: d,
                                     caret: u - a.negationSymbol.back.length
                                     caret: u - a.negationSymbol.back.length
                                 } : {
                                 } : {
@@ -3113,7 +3113,7 @@
                 }, t.getLastValidPosition = s, t.isMask = c, t.resetMaskSet = function(e) {
                 }, t.getLastValidPosition = s, t.isMask = c, t.resetMaskSet = function(e) {
                     var t = this.maskset;
                     var t = this.maskset;
                     t.buffer = void 0, !0 !== e && (t.validPositions = [], t.p = 0);
                     t.buffer = void 0, !0 !== e && (t.validPositions = [], t.p = 0);
-                    !1 === e && (t.tests = {});
+                    !1 === e && (t.tests = {}, t.jitOffset = {});
                 }, t.seekNext = u, t.seekPrevious = function(e, t) {
                 }, t.seekNext = u, t.seekPrevious = function(e, t) {
                     var n = this, i = e - 1;
                     var n = this, i = e - 1;
                     if (e <= 0) return 0;
                     if (e <= 0) return 0;

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


+ 3 - 3
dist/jquery.inputmask.js

@@ -3,7 +3,7 @@
  * https://github.com/RobinHerbots/Inputmask
  * https://github.com/RobinHerbots/Inputmask
  * Copyright (c) 2010 - 2024 Robin Herbots
  * Copyright (c) 2010 - 2024 Robin Herbots
  * Licensed under the MIT license
  * Licensed under the MIT license
- * Version: 5.0.9-beta.70
+ * Version: 5.0.9-beta.71
  */
  */
 !function(e, t) {
 !function(e, t) {
     if ("object" == typeof exports && "object" == typeof module) module.exports = t(require("jquery")); else if ("function" == typeof define && define.amd) define([ "jquery" ], t); else {
     if ("object" == typeof exports && "object" == typeof module) module.exports = t(require("jquery")); else if ("function" == typeof define && define.amd) define([ "jquery" ], t); else {
@@ -1554,7 +1554,7 @@
                             }(t, n, c, r, a), "-" === n || n === a.negationSymbol.front) {
                             }(t, n, c, r, a), "-" === n || n === a.negationSymbol.front) {
                                 if (!0 !== a.allowMinus) return !1;
                                 if (!0 !== a.allowMinus) return !1;
                                 var d = !1, h = p("+", r), m = p("-", r);
                                 var d = !1, h = p("+", r), m = p("-", r);
-                                return -1 !== h && (d = [ h, m ]), !1 !== d ? {
+                                return -1 !== h && (d = [ h ], -1 !== m && d.push(m)), !1 !== d ? {
                                     remove: d,
                                     remove: d,
                                     caret: u - a.negationSymbol.back.length
                                     caret: u - a.negationSymbol.back.length
                                 } : {
                                 } : {
@@ -3010,7 +3010,7 @@
                 }, t.getLastValidPosition = l, t.isMask = c, t.resetMaskSet = function(e) {
                 }, t.getLastValidPosition = l, t.isMask = c, t.resetMaskSet = function(e) {
                     var t = this.maskset;
                     var t = this.maskset;
                     t.buffer = void 0, !0 !== e && (t.validPositions = [], t.p = 0);
                     t.buffer = void 0, !0 !== e && (t.validPositions = [], t.p = 0);
-                    !1 === e && (t.tests = {});
+                    !1 === e && (t.tests = {}, t.jitOffset = {});
                 }, t.seekNext = u, t.seekPrevious = function(e, t) {
                 }, t.seekNext = u, t.seekPrevious = function(e, t) {
                     var n = this, i = e - 1;
                     var n = this, i = e - 1;
                     if (e <= 0) return 0;
                     if (e <= 0) return 0;

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


+ 2 - 0
inputmask-pages/src/assets/Changelog.md

@@ -16,6 +16,8 @@
 - Enhance resolving of the ndxInitializer to determine the alternating tests.
 - Enhance resolving of the ndxInitializer to determine the alternating tests.
 
 
 ### Fixed
 ### Fixed
+- Input freezes after changing decimal value symbol twice #2731
+- Poor performance on decimal input mask #1505
 - TypeError: Cannot read properties of null (reading 'charAt') at m.onBeforeMask #2789
 - TypeError: Cannot read properties of null (reading 'charAt') at m.onBeforeMask #2789
 - Cursor moves to start when there is a 0 in the decimal, How to stop this behavior? #2784
 - Cursor moves to start when there is a 0 in the decimal, How to stop this behavior? #2784
 - Unexpected character removed #2765
 - Unexpected character removed #2765

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

@@ -389,7 +389,8 @@ Inputmask.extendAliases({
           front = findValid("+", maskset),
           front = findValid("+", maskset),
           back = findValid("-", maskset);
           back = findValid("-", maskset);
         if (front !== -1) {
         if (front !== -1) {
-          isNegative = [front, back];
+          isNegative = [front];
+          if (back !== -1) isNegative.push(back);
         }
         }
 
 
         return isNegative !== false
         return isNegative !== false

+ 1 - 0
lib/positioning.js

@@ -425,6 +425,7 @@ function resetMaskSet(soft) {
   }
   }
   if (soft === false) {
   if (soft === false) {
     maskset.tests = {};
     maskset.tests = {};
+    maskset.jitOffset = {};
   }
   }
 }
 }
 
 

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "inputmask",
   "name": "inputmask",
-  "version": "5.0.9-beta.70",
+  "version": "5.0.9-beta.71",
   "description": "Inputmask is a javascript library which creates an input mask.  Inputmask can run against vanilla javascript, jQuery and jqlite.",
   "description": "Inputmask is a javascript library which creates an input mask.  Inputmask can run against vanilla javascript, jQuery and jqlite.",
   "main": "dist/inputmask.js",
   "main": "dist/inputmask.js",
   "exports": {
   "exports": {