Browse Source

enhance caret positioning in colormask

Robin Herbots 8 years ago
parent
commit
0308246398
48 changed files with 488 additions and 104 deletions
  1. 1 1
      bower.json
  2. 1 1
      component.json
  3. 1 1
      composer.json
  4. 3 7
      css/inputmask.css
  5. 1 1
      dist/inputmask/bindings/inputmask.binding.js
  6. 1 1
      dist/inputmask/dependencyLibs/inputmask.dependencyLib.jqlite.js
  7. 1 1
      dist/inputmask/dependencyLibs/inputmask.dependencyLib.jquery.js
  8. 1 1
      dist/inputmask/dependencyLibs/inputmask.dependencyLib.js
  9. 1 1
      dist/inputmask/global/document.js
  10. 1 1
      dist/inputmask/global/window.js
  11. 1 1
      dist/inputmask/inputmask.date.extensions.js
  12. 1 1
      dist/inputmask/inputmask.extensions.js
  13. 15 15
      dist/inputmask/inputmask.js
  14. 1 1
      dist/inputmask/inputmask.numeric.extensions.js
  15. 1 1
      dist/inputmask/inputmask.phone.extensions.js
  16. 1 1
      dist/inputmask/jquery.inputmask.js
  17. 1 1
      dist/inputmask/phone-codes/phone-be.js
  18. 1 1
      dist/inputmask/phone-codes/phone-ca.js
  19. 379 0
      dist/inputmask/phone-codes/phone-mx.js
  20. 1 1
      dist/inputmask/phone-codes/phone-nl.js
  21. 1 1
      dist/inputmask/phone-codes/phone-ru.js
  22. 1 1
      dist/inputmask/phone-codes/phone-uk.js
  23. 1 1
      dist/inputmask/phone-codes/phone-us.js
  24. 1 1
      dist/inputmask/phone-codes/phone.js
  25. 16 16
      dist/jquery.inputmask.bundle.js
  26. 1 1
      dist/min/inputmask/bindings/inputmask.binding.min.js
  27. 1 1
      dist/min/inputmask/dependencyLibs/inputmask.dependencyLib.jqlite.min.js
  28. 1 1
      dist/min/inputmask/dependencyLibs/inputmask.dependencyLib.jquery.min.js
  29. 1 1
      dist/min/inputmask/dependencyLibs/inputmask.dependencyLib.min.js
  30. 1 1
      dist/min/inputmask/global/document.min.js
  31. 1 1
      dist/min/inputmask/global/window.min.js
  32. 1 1
      dist/min/inputmask/inputmask.date.extensions.min.js
  33. 1 1
      dist/min/inputmask/inputmask.extensions.min.js
  34. 2 2
      dist/min/inputmask/inputmask.min.js
  35. 1 1
      dist/min/inputmask/inputmask.numeric.extensions.min.js
  36. 1 1
      dist/min/inputmask/inputmask.phone.extensions.min.js
  37. 1 1
      dist/min/inputmask/jquery.inputmask.min.js
  38. 1 1
      dist/min/inputmask/phone-codes/phone-be.min.js
  39. 1 1
      dist/min/inputmask/phone-codes/phone-ca.min.js
  40. 9 0
      dist/min/inputmask/phone-codes/phone-mx.min.js
  41. 1 1
      dist/min/inputmask/phone-codes/phone-nl.min.js
  42. 1 1
      dist/min/inputmask/phone-codes/phone-ru.min.js
  43. 1 1
      dist/min/inputmask/phone-codes/phone-uk.min.js
  44. 1 1
      dist/min/inputmask/phone-codes/phone-us.min.js
  45. 1 1
      dist/min/inputmask/phone-codes/phone.min.js
  46. 2 2
      dist/min/jquery.inputmask.bundle.min.js
  47. 22 22
      js/inputmask.js
  48. 1 1
      package.json

+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
   "name": "inputmask",
-  "version": "4.0.0-69",
+  "version": "4.0.0-71",
   "main": [
 	  "./dist/inputmask/inputmask.js",
 	  "./dist/inputmask/inputmask.extensions.js",

+ 1 - 1
component.json

@@ -2,7 +2,7 @@
 	"name": "inputmask",
 	"repository": "robinherbots/Inputmask",
 	"description": "Inputmask is a javascript library which creates an input mask.  Inputmask can run against vanilla javascript, jQuery and jqlite.",
-	"version": "4.0.0-69",
+	"version": "4.0.0-71",
 	"keywords": [
 		"jquery",
 		"plugins",

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

+ 3 - 7
css/inputmask.css

@@ -1,8 +1,8 @@
-span.im-caret {
-    animation: 1s blink step-end infinite;
+mark.im-caret {
+    animation: 1s blink step-end infinite !important;
 }
 
-span.im-caret-select {
+mark.im-caret-select {
     background-color: rgba(0, 0, 0, 0.25);
 }
 
@@ -23,8 +23,6 @@ div.im-colormask {
     display: inline-block;
     border-style: inset;
     border-width: 2px;
-    -webkit-appearance: textfield;
-    -moz-appearance: textfield;
     appearance: textfield;
 }
 
@@ -34,8 +32,6 @@ div.im-colormask > input {
     background-color: transparent;
     color: transparent;
     caret-color: transparent;
-    -webkit-appearance: caret;
-    -moz-appearance: caret;
     appearance: caret;
     border-style: none;
     left: 0; /*calculated*/

+ 1 - 1
dist/inputmask/bindings/inputmask.binding.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {

+ 1 - 1
dist/inputmask/dependencyLibs/inputmask.dependencyLib.jqlite.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {

+ 1 - 1
dist/inputmask/dependencyLibs/inputmask.dependencyLib.jquery.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {

+ 1 - 1
dist/inputmask/dependencyLibs/inputmask.dependencyLib.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {

+ 1 - 1
dist/inputmask/global/document.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 "function" == typeof define && define.amd ? define(function() {

+ 1 - 1
dist/inputmask/global/window.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 "function" == typeof define && define.amd ? define(function() {

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

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {

+ 1 - 1
dist/inputmask/inputmask.extensions.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {

+ 15 - 15
dist/inputmask/inputmask.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {
@@ -726,15 +726,14 @@
             });
         }
         function renderColorMask(input, caretPos, clear) {
-            function handleStatic() {
-                isStatic || null !== test.fn && testPos.input !== undefined ? isStatic && (null !== test.fn && testPos.input !== undefined || "" === test.def) && (isStatic = !1, 
-                maskTemplate += "</span>") : (isStatic = !0, maskTemplate += "<span class='im-static'>");
+            function setEntry(entry) {
+                if (entry === undefined && (entry = ""), isStatic || null !== test.fn && testPos.input !== undefined) if (isStatic && (null !== test.fn && testPos.input !== undefined || "" === test.def)) {
+                    isStatic = !1;
+                    var mtl = maskTemplate.length;
+                    maskTemplate[mtl - 1] = maskTemplate[mtl - 1] + "</span>", maskTemplate.push(entry);
+                } else maskTemplate.push(entry); else isStatic = !0, maskTemplate.push("<span class='im-static'>" + entry);
             }
-            function handleCaret(force) {
-                !0 !== force && pos !== caretPos.begin || document.activeElement !== input || (caretPos.begin === caretPos.end ? maskTemplate += '<span class="im-caret" style="border-right-width: 1px;border-right-style: solid;">' : maskTemplate += '<span class="im-caret-select">'), 
-                !0 !== force && pos !== caretPos.end || document.activeElement !== input || (maskTemplate += "</span>");
-            }
-            var test, testPos, ndxIntlzr, maskTemplate = "", isStatic = !1, pos = 0;
+            var test, testPos, ndxIntlzr, maskTemplate = [], isStatic = !1, pos = 0;
             if (colorMask !== undefined) {
                 var buffer = getBuffer();
                 if (caretPos === undefined ? caretPos = caret(input) : caretPos.begin === undefined && (caretPos = {
@@ -743,15 +742,16 @@
                 }), !0 !== clear) {
                     var lvp = getLastValidPosition();
                     do {
-                        handleCaret(), getMaskSet().validPositions[pos] ? (testPos = getMaskSet().validPositions[pos], 
-                        test = testPos.match, ndxIntlzr = testPos.locator.slice(), handleStatic(), maskTemplate += buffer[pos]) : (testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), 
-                        test = testPos.match, ndxIntlzr = testPos.locator.slice(), (!1 === opts.jitMasking || pos < lvp || "number" == typeof opts.jitMasking && isFinite(opts.jitMasking) && opts.jitMasking > pos) && (handleStatic(), 
-                        maskTemplate += getPlaceholder(pos, test))), pos++;
+                        getMaskSet().validPositions[pos] ? (testPos = getMaskSet().validPositions[pos], 
+                        test = testPos.match, ndxIntlzr = testPos.locator.slice(), setEntry(buffer[pos])) : (testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), 
+                        test = testPos.match, ndxIntlzr = testPos.locator.slice(), (!1 === opts.jitMasking || pos < lvp || "number" == typeof opts.jitMasking && isFinite(opts.jitMasking) && opts.jitMasking > pos) && setEntry(getPlaceholder(pos, test))), 
+                        pos++;
                     } while ((maxLength === undefined || pos < maxLength) && (null !== test.fn || "" !== test.def) || lvp > pos || isStatic);
-                    -1 === maskTemplate.indexOf("im-caret") && handleCaret(!0), isStatic && handleStatic();
+                    isStatic && setEntry(), document.activeElement === input && (maskTemplate.splice(caretPos.begin, 0, caretPos.begin === caretPos.end ? '<mark class="im-caret" style="border-right-width: 1px;border-right-style: solid;">' : '<mark class="im-caret-select">'), 
+                    maskTemplate.splice(caretPos.end + 1, 0, "</mark>"));
                 }
                 var template = colorMask.getElementsByTagName("div")[0];
-                template.innerHTML = maskTemplate, input.inputmask.positionColorMask(input, template);
+                template.innerHTML = maskTemplate.join(""), input.inputmask.positionColorMask(input, template);
             }
         }
         maskset = maskset || this.maskset, opts = opts || this.opts;

+ 1 - 1
dist/inputmask/inputmask.numeric.extensions.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {

+ 1 - 1
dist/inputmask/inputmask.phone.extensions.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {

+ 1 - 1
dist/inputmask/jquery.inputmask.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {

+ 1 - 1
dist/inputmask/phone-codes/phone-be.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {

+ 1 - 1
dist/inputmask/phone-codes/phone-ca.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {

+ 379 - 0
dist/inputmask/phone-codes/phone-mx.js

@@ -0,0 +1,379 @@
+/*!
+* phone-codes/phone-mx.js
+* https://github.com/RobinHerbots/Inputmask
+* Copyright (c) 2010 - 2017 Robin Herbots
+* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
+* Version: 4.0.0-71
+*/
+
+!function(factory) {
+    "function" == typeof define && define.amd ? define([ "../inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("../inputmask")) : factory(window.Inputmask);
+}(function(Inputmask) {
+    return Inputmask.extendAliases({
+        phonemx: {
+            alias: "abstractphone",
+            countrycode: "52",
+            phoneCodes: [ {
+                mask: "+52 (744) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Acapulco"
+            }, {
+                mask: "+52 (449) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Aguascalientes"
+            }, {
+                mask: "+52 (833) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Altamira"
+            }, {
+                mask: "+52 (81) ####-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Apodaca"
+            }, {
+                mask: "+52 (624) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Cabo San Lucas"
+            }, {
+                mask: "+52 (981) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Campeche"
+            }, {
+                mask: "+52 (998) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Cancún"
+            }, {
+                mask: "+52 (461) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Celaya"
+            }, {
+                mask: "+52 (983) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Chetumal"
+            }, {
+                mask: "+52 (614) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Chihuahua"
+            }, {
+                mask: "+52 (747) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Chilpancingo De Los Bravo"
+            }, {
+                mask: "+52 (877) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Ciudad Acuña"
+            }, {
+                mask: "+52 (656) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Ciudad Juárez"
+            }, {
+                mask: "+52 (871) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Ciudad Lerdo"
+            }, {
+                mask: "+52 (833) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Ciudad Madero"
+            }, {
+                mask: "+52 (644) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Ciudad Obregón"
+            }, {
+                mask: "+52 (834) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Ciudad Victoria"
+            }, {
+                mask: "+52 (312) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Colima"
+            }, {
+                mask: "+52 (963) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Comitán"
+            }, {
+                mask: "+52 (271) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Córdoba"
+            }, {
+                mask: "+52 (777) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Cuernavaca"
+            }, {
+                mask: "+52 (667) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Culiacán Rosales"
+            }, {
+                mask: "+52 (646) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Ensenada"
+            }, {
+                mask: "+52 (871) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Gómez Palacio"
+            }, {
+                mask: "+52 (33) ####-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Guadalajara"
+            }, {
+                mask: "+52 (473) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Guanajuato"
+            }, {
+                mask: "+52 (662) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Hermosillo"
+            }, {
+                mask: "+52 (715) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Heroica Zitácuaro"
+            }, {
+                mask: "+52 (777) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Jiutepec"
+            }, {
+                mask: "+52 (612) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "La Paz (Baja California Sur)"
+            }, {
+                mask: "+52 (477) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "León"
+            }, {
+                mask: "+52 (314) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Manzanillo"
+            }, {
+                mask: "+52 (868) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Matamoros"
+            }, {
+                mask: "+52 (999) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Mérida"
+            }, {
+                mask: "+52 (686) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Mexicali"
+            }, {
+                mask: "+52 (55) ####-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "México D.F."
+            }, {
+                mask: "+52 (81) ####-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Monterrey"
+            }, {
+                mask: "+52 (443) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Morelia"
+            }, {
+                mask: "+52 (867) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Nuevo Laredo"
+            }, {
+                mask: "+52 (951) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Oaxaca De Juárez"
+            }, {
+                mask: "+52 (771) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Pachuca De Soto"
+            }, {
+                mask: "+52 (984) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Playa Del Carmen"
+            }, {
+                mask: "+52 (222) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Puebla"
+            }, {
+                mask: "+52 (322) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Puerto Vallarta"
+            }, {
+                mask: "+52 (899) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Reynosa"
+            }, {
+                mask: "+52 (464) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Salamanca"
+            }, {
+                mask: "+52 (844) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Saltillo"
+            }, {
+                mask: "+52 (967) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "San Cristóbal De Las Casas"
+            }, {
+                mask: "+52 (444) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "San Luis Potosí"
+            }, {
+                mask: "+52 (81) ####-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "San Nicolás De Los Garza"
+            }, {
+                mask: "+52 (615) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Santa Rosalía"
+            }, {
+                mask: "+52 (442) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Santiago De Querétaro"
+            }, {
+                mask: "+52 (833) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Tampico"
+            }, {
+                mask: "+52 (665) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Tecate"
+            }, {
+                mask: "+52 (311) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Tepic"
+            }, {
+                mask: "+52 (664) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Tijuana"
+            }, {
+                mask: "+52 (246) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Tlaxcala De Xicohténcatl"
+            }, {
+                mask: "+52 (612) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Todos Santos"
+            }, {
+                mask: "+52 (722) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Toluca De Lerdo"
+            }, {
+                mask: "+52 (871) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Torreón"
+            }, {
+                mask: "+52 (984) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Tulúm"
+            }, {
+                mask: "+52 (961) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Tuxtla Gutiérrez"
+            }, {
+                mask: "+52 (452) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Uruapan"
+            }, {
+                mask: "+52 (985) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Valladolid"
+            }, {
+                mask: "+52 (457) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Valparaíso"
+            }, {
+                mask: "+52 (229) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Veracruz"
+            }, {
+                mask: "+52 (618) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Victoria De Durango"
+            }, {
+                mask: "+52 (993) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Villahermosa"
+            }, {
+                mask: "+52 (228) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Xalapa-Enríquez"
+            }, {
+                mask: "+52 (492) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Zacatecas"
+            }, {
+                mask: "+52 (351) ###-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Zamora"
+            }, {
+                mask: "+52 (33) ####-####",
+                cc: "MX",
+                cd: "Mexico",
+                city: "Zapopan"
+            } ]
+        }
+    }), Inputmask;
+});

+ 1 - 1
dist/inputmask/phone-codes/phone-nl.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {

+ 1 - 1
dist/inputmask/phone-codes/phone-ru.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {

+ 1 - 1
dist/inputmask/phone-codes/phone-uk.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {

+ 1 - 1
dist/inputmask/phone-codes/phone-us.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {

+ 1 - 1
dist/inputmask/phone-codes/phone.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(factory) {

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


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


File diff suppressed because it is too large
+ 1 - 1
dist/min/inputmask/dependencyLibs/inputmask.dependencyLib.jqlite.min.js


+ 1 - 1
dist/min/inputmask/dependencyLibs/inputmask.dependencyLib.jquery.min.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 !function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e(require("jquery")):window.dependencyLib=e(jQuery)}(function(e){return e});

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


+ 1 - 1
dist/min/inputmask/global/document.min.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 "function"==typeof define&&define.amd?define(function(){return document}):"object"==typeof exports&&(module.exports=document);

+ 1 - 1
dist/min/inputmask/global/window.min.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/Inputmask
 * Copyright (c) 2010 - 2017 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 4.0.0-69
+* Version: 4.0.0-71
 */
 
 "function"==typeof define&&define.amd?define(function(){return window}):"object"==typeof exports&&(module.exports=window);

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


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


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


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


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


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


File diff suppressed because it is too large
+ 1 - 1
dist/min/inputmask/phone-codes/phone-be.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/min/inputmask/phone-codes/phone-ca.min.js


File diff suppressed because it is too large
+ 9 - 0
dist/min/inputmask/phone-codes/phone-mx.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/min/inputmask/phone-codes/phone-nl.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/min/inputmask/phone-codes/phone-ru.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/min/inputmask/phone-codes/phone-uk.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/min/inputmask/phone-codes/phone-us.min.js


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


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


+ 22 - 22
js/inputmask.js

@@ -2852,29 +2852,32 @@
         }
 
         function renderColorMask(input, caretPos, clear) {
-            var maskTemplate = "",
+            var maskTemplate = [],
                 isStatic = false,
                 test, testPos, ndxIntlzr, pos = 0;
 
-            function handleStatic() {
+
+            function setEntry(entry) {
+                if (entry === undefined) entry = "";
                 if (!isStatic && (test.fn === null || testPos.input === undefined)) {
                     isStatic = true;
-                    maskTemplate += "<span class='im-static'>"
+                    maskTemplate.push("<span class='im-static'>" + entry);
                 } else if (isStatic && ((test.fn !== null && testPos.input !== undefined) || test.def === "")) {
                     isStatic = false;
-                    maskTemplate += "</span>"
-                }
+                    var mtl = maskTemplate.length;
+                    maskTemplate[mtl - 1] = maskTemplate[mtl - 1] + "</span>";
+                    maskTemplate.push(entry);
+                } else
+                    maskTemplate.push(entry);
             }
 
-            function handleCaret(force) {
-                if ((force === true || pos === caretPos.begin) && document.activeElement === input) {
-                    if (caretPos.begin === caretPos.end)
-                        maskTemplate += '<span class="im-caret" style="border-right-width: 1px;border-right-style: solid;">';
-                    else
-                        maskTemplate += '<span class="im-caret-select">';
-                }
-                if ((force === true || pos === caretPos.end) && document.activeElement === input) {
-                    maskTemplate += "</span>";
+            function setCaret() {
+                if (document.activeElement === input) {
+                    maskTemplate.splice(caretPos.begin, 0,
+                        caretPos.begin === caretPos.end ?
+                            '<mark class="im-caret" style="border-right-width: 1px;border-right-style: solid;">' :
+                            '<mark class="im-caret-select">');
+                    maskTemplate.splice(caretPos.end + 1, 0, "</mark>");
                 }
             }
 
@@ -2892,30 +2895,27 @@
                 if (clear !== true) {
                     var lvp = getLastValidPosition();
                     do {
-                        handleCaret();
                         if (getMaskSet().validPositions[pos]) {
                             testPos = getMaskSet().validPositions[pos];
                             test = testPos.match;
                             ndxIntlzr = testPos.locator.slice();
-                            handleStatic();
-                            maskTemplate += buffer[pos];
+                            setEntry(buffer[pos]);
                         } else {
                             testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);
                             test = testPos.match;
                             ndxIntlzr = testPos.locator.slice();
                             if (opts.jitMasking === false || pos < lvp || (typeof opts.jitMasking === "number" && isFinite(opts.jitMasking) && opts.jitMasking > pos)) {
-                                handleStatic();
-                                maskTemplate += getPlaceholder(pos, test);
+                                setEntry(getPlaceholder(pos, test));
                             }
                         }
                         pos++;
                     } while ((maxLength === undefined || pos < maxLength) && (test.fn !== null || test.def !== "") || lvp > pos || isStatic);
-                    if (maskTemplate.indexOf("im-caret") === -1) handleCaret(true);
-                    if (isStatic) handleStatic();
+                    if (isStatic) setEntry();
+                    setCaret();
                 }
 
                 var template = colorMask.getElementsByTagName("div")[0];
-                template.innerHTML = maskTemplate;
+                template.innerHTML = maskTemplate.join("");
                 input.inputmask.positionColorMask(input, template);
             }
         }

+ 1 - 1
package.json

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