vendor: 16,231 bytes, lines 1-252
1/*! 2* jquery.inputmask.bundle.js 3* https://github.com/RobinHerbots/jquery.inputmask 4* Copyright (c) 2010 - 2016 Robin Herbots 5* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) 6* Version: 3.2.8-36 7*/ 8!function($) { 9 function Inputmask(alias, options) { 10 return this instanceof Inputmask ? ($.isPlainObject(alias) ? options = alias : (options = options || {}, 11 options.alias = alias), this.el = void 0, this.opts = $.extend(!0, {}, this.defaults, options), 12 this.noMasksCache = options && void 0 !== options.definitions, this.userOptions = options || {}, 13 this.events = {}, void resolveAlias(this.opts.alias, options, this.opts)) : new Inputmask(alias, options); 14 } 15 function isInputEventSupported(eventName) { 16 var el = document.createElement("input"), evName = "on" + eventName, isSupported = evName in el; 17 return isSupported || (el.setAttribute(evName, "return;"), isSupported = "function" == typeof el[evName]), 18 el = null, isSupported; 19 } 20 function isElementTypeSupported(input, opts) { 21 var elementType = input.getAttribute("type"), isSupported = "INPUT" === input.tagName && -1 !== $.inArray(elementType, opts.supportsInputType) || input.isContentEditable || "TEXTAREA" === input.tagName; 22 if (!isSupported && "INPUT" === input.tagName) { 23 var el = document.createElement("input"); 24 el.setAttribute("type", elementType), isSupported = "text" === el.type, el = null; 25 } 26 return isSupported; 27 } 28 function resolveAlias(aliasStr, options, opts) { 29 var aliasDefinition = opts.aliases[aliasStr]; 30 return aliasDefinition ? (aliasDefinition.alias && resolveAlias(aliasDefinition.alias, void 0, opts), 31 $.extend(!0, opts, aliasDefinition), $.extend(!0, opts, options), !0) : (null === opts.mask && (opts.mask = aliasStr), 32 !1); 33 } 34 function importAttributeOptions(npt, opts, userOptions) { 35 function importOption(option, optionData) { 36 optionData = void 0 !== optionData ? optionData : npt.getAttribute("data-inputmask-" + option), 37 null !== optionData && ("string" == typeof optionData && (0 === option.indexOf("on") ? optionData = window[optionData] : "false" === optionData ? optionData = !1 : "true" === optionData && (optionData = !0)), 38 userOptions[option] = optionData); 39 } 40 var option, dataoptions, optionData, p, attrOptions = npt.getAttribute("data-inputmask"); 41 if (attrOptions && "" !== attrOptions && (attrOptions = attrOptions.replace(new RegExp("'", "g"), '"'), 42 dataoptions = JSON.parse("{" + attrOptions + "}")), dataoptions) { 43 optionData = void 0; 44 for (p in dataoptions) if ("alias" === p.toLowerCase()) { 45 optionData = dataoptions[p]; 46 break; 47 } 48 } 49 importOption("alias", optionData), userOptions.alias && resolveAlias(userOptions.alias, userOptions, opts); 50 for (option in opts) { 51 if (dataoptions) { 52 optionData = void 0; 53 for (p in dataoptions) if (p.toLowerCase() === option.toLowerCase()) { 54 optionData = dataoptions[p]; 55 break; 56 } 57 } 58 importOption(option, optionData); 59 } 60 return $.extend(!0, opts, userOptions), opts; 61 } 62 function generateMaskSet(opts, nocache) { 63 function analyseMask(mask) { 64 function MaskToken(isGroup, isOptional, isQuantifier, isAlternator) { 65 this.matches = [], this.isGroup = isGroup || !1, this.isOptional = isOptional || !1, 66 this.isQuantifier = isQuantifier || !1, this.isAlternator = isAlternator || !1, 67 this.quantifier = { 68 min: 1, 69 max: 1 70 }; 71 } 72 function insertTestDefinition(mtoken, element, position) { 73 var maskdef = opts.definitions[element]; 74 position = void 0 !== position ? position : mtoken.matches.length; 75 var prevMatch = mtoken.matches[position - 1]; 76 if (maskdef && !escaped) { 77 maskdef.placeholder = $.isFunction(maskdef.placeholder) ? maskdef.placeholder(opts) : maskdef.placeholder; 78 for (var prevalidators = maskdef.prevalidator, prevalidatorsL = prevalidators ? prevalidators.length : 0, i = 1; i < maskdef.cardinality; i++) { 79 var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator.validator, cardinality = prevalidator.cardinality; 80 mtoken.matches.splice(position++, 0, { 81 fn: validator ? "string" == typeof validator ? new RegExp(validator) : new function() { 82 this.test = validator; 83 }() : new RegExp("."), 84 cardinality: cardinality ? cardinality : 1, 85 optionality: mtoken.isOptional, 86 newBlockMarker: void 0 === prevMatch || prevMatch.def !== (maskdef.definitionSymbol || element), 87 casing: maskdef.casing, 88 def: maskdef.definitionSymbol || element, 89 placeholder: maskdef.placeholder, 90 mask: element 91 }), prevMatch = mtoken.matches[position - 1]; 92 } 93 mtoken.matches.splice(position++, 0, { 94 fn: maskdef.validator ? "string" == typeof maskdef.validator ? new RegExp(maskdef.validator) : new function() { 95 this.test = maskdef.validator; 96 }() : new RegExp("."), 97 cardinality: maskdef.cardinality, 98 optionality: mtoken.isOptional, 99 newBlockMarker: void 0 === prevMatch || prevMatch.def !== (maskdef.definitionSymbol || element), 100 casing: maskdef.casing, 101 def: maskdef.definitionSymbol || element, 102 placeholder: maskdef.placeholder, 103 mask: element 104 }); 105 } else mtoken.matches.splice(position++, 0, { 106 fn: null, 107 cardinality: 0, 108 optionality: mtoken.isOptional, 109 newBlockMarker: void 0 === prevMatch || prevMatch.def !== element, 110 casing: null, 111 def: opts.staticDefinitionSymbol || element, 112 placeholder: void 0 !== opts.staticDefinitionSymbol ? element : void 0, 113 mask: element 114 }), escaped = !1; 115 } 116 function verifyGroupMarker(lastMatch, isOpenGroup) { 117 lastMatch.isGroup && (lastMatch.isGroup = !1, insertTestDefinition(lastMatch, opts.groupmarker.start, 0), 118 isOpenGroup !== !0 && insertTestDefinition(lastMatch, opts.groupmarker.end)); 119 } 120 function maskCurrentToken(m, currentToken, lastMatch, extraCondition) { 121 currentToken.matches.length > 0 && (void 0 === extraCondition || extraCondition) && (lastMatch = currentToken.matches[currentToken.matches.length - 1], 122 verifyGroupMarker(lastMatch)), insertTestDefinition(currentToken, m); 123 } 124 function defaultCase() { 125 if (openenings.length > 0) { 126 if (currentOpeningToken = openenings[openenings.length - 1], maskCurrentToken(m, currentOpeningToken, lastMatch, !currentOpeningToken.isAlternator), 127 currentOpeningToken.isAlternator) { 128 alternator = openenings.pop(); 129 for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1; 130 openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1], 131 currentOpeningToken.matches.push(alternator)) : currentToken.matches.push(alternator); 132 } 133 } else maskCurrentToken(m, currentToken, lastMatch); 134 } 135 function reverseTokens(maskToken) { 136 function reverseStatic(st) { 137 return st === opts.optionalmarker.start ? st = opts.optionalmarker.end : st === opts.optionalmarker.end ? st = opts.optionalmarker.start : st === opts.groupmarker.start ? st = opts.groupmarker.end : st === opts.groupmarker.end && (st = opts.groupmarker.start), 138 st; 139 } 140 maskToken.matches = maskToken.matches.reverse(); 141 for (var match in maskToken.matches) { 142 var intMatch = parseInt(match); 143 if (maskToken.matches[match].isQuantifier && maskToken.matches[intMatch + 1] && maskToken.matches[intMatch + 1].isGroup) { 144 var qt = maskToken.matches[match]; 145 maskToken.matches.splice(match, 1), maskToken.matches.splice(intMatch + 1, 0, qt); 146 } 147 void 0 !== maskToken.matches[match].matches ? maskToken.matches[match] = reverseTokens(maskToken.matches[match]) : maskToken.matches[match] = reverseStatic(maskToken.matches[match]); 148 } 149 return maskToken; 150 } 151 for (var match, m, openingToken, currentOpeningToken, alternator, lastMatch, groupToken, tokenizer = /(?:[?*+]|\{[0-9\+\*]+(?:,[0-9\+\*]*)?\})|[^.?*+^${[]()|\\]+|./g, escaped = !1, currentToken = new MaskToken(), openenings = [], maskTokens = []; match = tokenizer.exec(mask); ) if (m = match[0], 152 escaped) defaultCase(); else switch (m.charAt(0)) { 153 case opts.escapeChar: 154 escaped = !0; 155 break; 156 157 case opts.optionalmarker.end: 158 case opts.groupmarker.end: 159 if (openingToken = openenings.pop(), void 0 !== openingToken) if (openenings.length > 0) { 160 if (currentOpeningToken = openenings[openenings.length - 1], currentOpeningToken.matches.push(openingToken), 161 currentOpeningToken.isAlternator) { 162 alternator = openenings.pop(); 163 for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1; 164 openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1], 165 currentOpeningToken.matches.push(alternator)) : currentToken.matches.push(alternator); 166 } 167 } else currentToken.matches.push(openingToken); else defaultCase(); 168 break; 169 170 case opts.optionalmarker.start: 171 openenings.push(new MaskToken(!1, !0)); 172 break; 173 174 case opts.groupmarker.start: 175 openenings.push(new MaskToken(!0)); 176 break; 177 178 case opts.quantifiermarker.start: 179 var quantifier = new MaskToken(!1, !1, !0); 180 m = m.replace(/[{}]/g, ""); 181 var mq = m.split(","), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]); 182 if (("*" === mq1 || "+" === mq1) && (mq0 = "*" === mq1 ? 0 : 1), quantifier.quantifier = { 183 min: mq0, 184 max: mq1 185 }, openenings.length > 0) { 186 var matches = openenings[openenings.length - 1].matches; 187 match = matches.pop(), match.isGroup || (groupToken = new MaskToken(!0), groupToken.matches.push(match), 188 match = groupToken), matches.push(match), matches.push(quantifier); 189 } else match = currentToken.matches.pop(), match.isGroup || (groupToken = new MaskToken(!0), 190 groupToken.matches.push(match), match = groupToken), currentToken.matches.push(match), 191 currentToken.matches.push(quantifier); 192 break; 193 194 case opts.alternatormarker: 195 openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1], 196 lastMatch = currentOpeningToken.matches.pop()) : lastMatch = currentToken.matches.pop(), 197 lastMatch.isAlternator ? openenings.push(lastMatch) : (alternator = new MaskToken(!1, !1, !1, !0), 198 alternator.matches.push(lastMatch), openenings.push(alternator)); 199 break; 200 201 default: 202 defaultCase(); 203 } 204 for (;openenings.length > 0; ) openingToken = openenings.pop(), verifyGroupMarker(openingToken, !0), 205 currentToken.matches.push(openingToken); 206 return currentToken.matches.length > 0 && (lastMatch = currentToken.matches[currentToken.matches.length - 1], 207 verifyGroupMarker(lastMatch), maskTokens.push(currentToken)), opts.numericInput && reverseTokens(maskTokens[0]), 208 maskTokens; 209 } 210 function generateMask(mask, metadata) { 211 if (null === mask || "" === mask) return void 0; 212 if (1 === mask.length && opts.greedy === !1 && 0 !== opts.repeat && (opts.placeholder = ""), 213 opts.repeat > 0 || "*" === opts.repeat || "+" === opts.repeat) { 214 var repeatStart = "*" === opts.repeat ? 0 : "+" === opts.repeat ? 1 : opts.repeat; 215 mask = opts.groupmarker.start + mask + opts.groupmarker.end + opts.quantifiermarker.start + repeatStart + "," + opts.repeat + opts.quantifiermarker.end; 216 } 217 var masksetDefinition; 218 return void 0 === Inputmask.prototype.masksCache[mask] || nocache === !0 ? (masksetDefinition = { 219 mask: mask, 220 maskToken: analyseMask(mask), 221 validPositions: {}, 222 _buffer: void 0, 223 buffer: void 0, 224 tests: {}, 225 metadata: metadata 226 }, nocache !== !0 && (Inputmask.prototype.masksCache[opts.numericInput ? mask.split("").reverse().join("") : mask] = masksetDefinition, 227 masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[opts.numericInput ? mask.split("").reverse().join("") : mask]))) : masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[opts.numericInput ? mask.split("").reverse().join("") : mask]), 228 masksetDefinition; 229 } 230 function preProcessMask(mask) { 231 return mask = mask.toString(); 232 } 233 var ms; 234 if ($.isFunction(opts.mask) && (opts.mask = opts.mask(opts)), $.isArray(opts.mask)) { 235 if (opts.mask.length > 1) { 236 opts.keepStatic = null === opts.keepStatic ? !0 : opts.keepStatic; 237 var altMask = "("; 238 return $.each(opts.numericInput ? opts.mask.reverse() : opts.mask, function(ndx, msk) { 239 altMask.length > 1 && (altMask += ")|("), altMask += preProcessMask(void 0 === msk.mask || $.isFunction(msk.mask) ? msk : msk.mask); 240 }), altMask += ")", generateMask(altMask, opts.mask); 241 } 242 opts.mask = opts.mask.pop(); 243 } 244 return opts.mask && (ms = void 0 === opts.mask.mask || $.isFunction(opts.mask.mask) ? generateMask(preProcessMask(opts.mask), opts.mask) : generateMask(preProcessMask(opts.mask.mask), opts.mask)), 245 ms; 246 } 247 function maskScope(actionObj, maskset, opts) { 248 function getMaskTemplate(baseOnInput, minimalPos, includeInput) { 249 minimalPos = minimalPos || 0; 250 var ndxIntlzr, test, testPos, maskTemplate = [], pos = 0, lvp = getLastValidPosition(); 251 do { 252 if (baseOnInput === !0 && getMaskSet().validPositions[pos]) {
253 var validPos = getMaskSet().validPositions[pos]; 254 test = validPos.match, ndxIntlzr = validPos.locator.slice(), maskTemplate.push(includeInput === !0 ? validPos.input : getPlaceholder(pos, test)); 255 } else testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), test = testPos.match, 256 ndxIntlzr = testPos.locator.slice(), (opts.jitMasking === !1 || lvp > pos || isFinite(opts.jitMasking) && opts.jitMasking > pos) && maskTemplate.push(getPlaceholder(pos, test)); 257 pos++; 258 } while ((void 0 === maxLength || maxLength > pos - 1) && null !== test.fn || null === test.fn && "" !== test.def || minimalPos >= pos); 259 return "" === maskTemplate[maskTemplate.length - 1] && maskTemplate.pop(), maskTemplate; 260 } 261 function getMaskSet() { 262 return maskset; 263 } 264 function resetMaskSet(soft) { 265 var maskset = getMaskSet(); 266 maskset.buffer = void 0, soft !== !0 && (maskset.tests = {}, maskset._buffer = void 0, 267 maskset.validPositions = {}, maskset.p = 0); 268 } 269 function getLastValidPosition(closestTo, strict) { 270 var before = -1, after = -1, valids = getMaskSet().validPositions; 271 void 0 === closestTo && (closestTo = -1); 272 for (var posNdx in valids) { 273 var psNdx = parseInt(posNdx); 274 valids[psNdx] && (strict || null !== valids[psNdx].match.fn) && (closestTo >= psNdx && (before = psNdx), 275 psNdx >= closestTo && (after = psNdx)); 276 } 277 return -1 !== before && closestTo - before > 1 || closestTo > after ? before : after; 278 } 279 function setValidPosition(pos, validTest, fromSetValid, isSelection) { 280 if (isSelection || opts.insertMode && void 0 !== getMaskSet().validPositions[pos] && void 0 === fromSetValid) { 281 var i, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), lvp = getLastValidPosition(); 282 for (i = pos; lvp >= i; i++) delete getMaskSet().validPositions[i]; 283 getMaskSet().validPositions[pos] = validTest; 284 var j, valid = !0, vps = getMaskSet().validPositions; 285 for (i = j = pos; lvp >= i; i++) { 286 var t = positionsClone[i]; 287 if (void 0 !== t) for (var posMatch = j, prevPosMatch = -1; posMatch < getMaskLength() && (null == t.match.fn && vps[i] && (vps[i].match.optionalQuantifier === !0 || vps[i].match.optionality === !0) || null != t.match.fn); ) if (null === t.match.fn || !opts.keepStatic && vps[i] && (void 0 !== vps[i + 1] && getTests(i + 1, vps[i].locator.slice(), i).length > 1 || void 0 !== vps[i].alternation) ? posMatch++ : posMatch = seekNext(j), 288 positionCanMatchDefinition(posMatch, t.match.def)) { 289 var result = isValid(posMatch, t.input, !0, !0); 290 if (valid = result !== !1, j = result.caret || result.insert ? getLastValidPosition() : posMatch, 291 valid) break; 292 } else { 293 if (valid = null == t.match.fn, prevPosMatch === posMatch) break; 294 prevPosMatch = posMatch; 295 } 296 if (!valid) break; 297 } 298 if (!valid) return getMaskSet().validPositions = $.extend(!0, {}, positionsClone), 299 resetMaskSet(!0), !1; 300 } else getMaskSet().validPositions[pos] = validTest; 301 return resetMaskSet(!0), !0; 302 } 303 function stripValidPositions(start, end, nocheck, strict) { 304 function IsEnclosedStatic(pos) { 305 var posMatch = getMaskSet().validPositions[pos]; 306 if (void 0 !== posMatch && null === posMatch.match.fn) { 307 var prevMatch = getMaskSet().validPositions[pos - 1], nextMatch = getMaskSet().validPositions[pos + 1]; 308 return void 0 !== prevMatch && void 0 !== nextMatch; 309 } 310 return !1; 311 } 312 var i, startPos = start; 313 for (getMaskSet().p = start, i = end - 1; i >= startPos; i--) void 0 !== getMaskSet().validPositions[i] && (nocheck === !0 || !IsEnclosedStatic(i) && opts.canClearPosition(getMaskSet(), i, getLastValidPosition(), str
vendor: 5,631 bytes, lines 313-381
313ict, opts) !== !1) && delete getMaskSet().validPositions[i]; 314 for (resetMaskSet(!0), i = startPos + 1; i <= getLastValidPosition(); ) { 315 for (;void 0 !== getMaskSet().validPositions[startPos]; ) startPos++; 316 var s = getMaskSet().validPositions[startPos]; 317 if (startPos > i && (i = startPos + 1), void 0 === getMaskSet().validPositions[i] && isMask(i) || void 0 !== s) i++; else { 318 var t = getTestTemplate(i); 319 positionCanMatchDefinition(startPos, t.match.def) ? isValid(startPos, t.input || getPlaceholder(i), !0) !== !1 && (delete getMaskSet().validPositions[i], 320 i++) : isMask(i) || (i++, startPos--), startPos++; 321 } 322 } 323 resetMaskSet(!0); 324 } 325 function getTestTemplate(pos, ndxIntlzr, tstPs) { 326 var testPos = getMaskSet().validPositions[pos]; 327 if (void 0 === testPos) for (var testPositions = getTests(pos, ndxIntlzr, tstPs), lvp = getLastValidPosition(), lvTest = getMaskSet().validPositions[lvp] || getTests(0)[0], lvTestAltArr = void 0 !== lvTest.alternation ? lvTest.locator[lvTest.alternation].toString().split(",") : [], ndx = 0; ndx < testPositions.length && (testPos = testPositions[ndx], 328 !(testPos.match && (opts.greedy && testPos.match.optionalQuantifier !== !0 || (testPos.match.optionality === !1 || testPos.match.newBlockMarker === !1) && testPos.match.optionalQuantifier !== !0) && (void 0 === lvTest.alternation || lvTest.alternation !== testPos.alternation || void 0 !== testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(","), lvTestAltArr)))); ndx++) ; 329 return testPos; 330 } 331 function getTest(pos) { 332 return getMaskSet().validPositions[pos] ? getMaskSet().validPositions[pos].match : getTests(pos)[0].match; 333 } 334 function positionCanMatchDefinition(pos, def) { 335 for (var valid = !1, tests = getTests(pos), tndx = 0; tndx < tests.length; tndx++) if (tests[tndx].match && tests[tndx].match.def === def) { 336 valid = !0; 337 break; 338 } 339 return valid; 340 } 341 function selectBestMatch(pos, alternateNdx) { 342 var bestMatch, indexPos; 343 return (getMaskSet().tests[pos] || getMaskSet().validPositions[pos]) && $.each(getMaskSet().tests[pos] || [ getMaskSet().validPositions[pos] ], function(ndx, lmnt) { 344 var ndxPos = lmnt.alternation ? lmnt.locator[lmnt.alternation].toString().indexOf(alternateNdx) : -1; 345 (void 0 === indexPos || indexPos > ndxPos) && -1 !== ndxPos && (bestMatch = lmnt, 346 indexPos = ndxPos); 347 }), bestMatch; 348 } 349 function getTests(pos, ndxIntlzr, tstPs) { 350 function resolveTestFromToken(maskToken, ndxInitializer, loopNdx, quantifierRecurse) { 351 function handleMatch(match, loopNdx, quantifierRecurse) { 352 function isFirstMatch(latestMatch, tokenGroup) { 353 var firstMatch = 0 === $.inArray(latestMatch, tokenGroup.matches); 354 return firstMatch || $.each(tokenGroup.matches, function(ndx, match) { 355 return match.isQuantifier === !0 && (firstMatch = isFirstMatch(latestMatch, tokenGroup.matches[ndx - 1])) ? !1 : void 0; 356 }), firstMatch; 357 } 358 function resolveNdxInitializer(pos, alternateNdx) { 359 var bestMatch = selectBestMatch(pos, alternateNdx); 360 return bestMatch ? bestMatch.locator.slice(bestMatch.alternation + 1) : []; 361 } 362 if (testPos > 1e4) throw "Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. " + getMaskSet().mask; 363 if (testPos === pos && void 0 === match.matches) return matches.push({ 364 match: match, 365 locator: loopNdx.reverse(), 366 cd: cacheDependency 367 }), !0; 368 if (void 0 !== match.matches) { 369 if (match.isGroup && quantifierRecurse !== match) { 370 if (match = handleMatch(maskToken.matches[$.inArray(match, maskToken.matches) + 1], loopNdx)) return !0; 371 } else if (match.isOptional) { 372 var optionalToken = match; 373 if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse)) { 374 if (latestMatch = matches[matches.length - 1].match, !isFirstMatch(latestMatch, optionalToken)) return !0; 375 insertStop = !0, testPos = pos; 376 } 377 } else if (match.isAlternator) { 378 var maltMatches, alternateToken = match, malternateMatches = [], currentMatches = matches.slice(), loopNdxCnt = loopNdx.length, altIndex = ndxInitializer.length > 0 ? ndxInitializer.shift() : -1; 379 if (-1 === altIndex || "string" == typeof altIndex) { 380 var amndx, currentPos = testPos, ndxInitializerClone = ndxInitializer.slice(), altIndexArr = []; 381 if ("string" == typeof altIndex) altIndexArr = altIndex.split(","); else for (amndx = 0;
381 amndx < alternateToken.matches.length; amndx++) altIndexArr.push(amndx); 382 for (var ndx = 0; ndx < altIndexArr.length; ndx++) { 383 if (amndx = parseInt(altIndexArr[ndx]), matches = [], ndxInitializer = resolveNdxInitializer(testPos, amndx), 384 match = handleMatch(alternateToken.matches[amndx] || maskToken.matches[amndx], [ amndx ].concat(loopNdx), quantifierRecurse) || match, 385 match !== !0 && void 0 !== match && altIndexArr[altIndexArr.length - 1] < alternateToken.matches.length) { 386 var ntndx = $.inArray(match, maskToken.matches) + 1; 387 maskToken.matches.length > ntndx && (match = handleMatch(maskToken.matches[ntndx], [ ntndx ].concat(loopNdx.slice(1, loopNdx.length)), quantifierRecurse), 388 match && (altIndexArr.push(ntndx.toString()), $.each(matches, function(ndx, lmnt) { 389 lmnt.alternation = loopNdx.length - 1; 390 }))); 391 } 392 maltMatches = matches.slice(), testPos = currentPos, matches = []; 393 for (var i = 0; i < ndxInitializerClone.length; i++) ndxInitializer[i] = ndxInitializerClone[i]; 394 for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) { 395 var altMatch = maltMatches[ndx1]; 396 altMatch.alternation = altMatch.alternation || loopNdxCnt; 397 for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) { 398 var altMatch2 = malternateMatches[ndx2]; 399 if (altMatch.match.def === altMatch2.match.def && ("string" != typeof altIndex || -1 !== $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr))) { 400 altMatch.match.mask === altMatch2.match.mask && (maltMatches.splice(ndx1, 1), ndx1--), 401 -1 === altMatch2.locator[altMatch.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) && (altMatch2.locator[altMatch.alternation] = altMatch2.locator[altMatch.alternation] + "," + altMatch.locator[altMatch.alternation], 402 altMatch2.alternation = altMatch.alternation); 403 break; 404 } 405 } 406 } 407 malternateMatches = malternateMatches.concat(maltMatches); 408 } 409 "string" == typeof altIndex && (malternateMatches = $.map(malternateMatches, function(lmnt, ndx) { 410 if (isFinite(ndx)) { 411 var mamatch, alternation = lmnt.alternation, altLocArr = lmnt.locator[alternation].toString().split(","); 412 lmnt.locator[alternation] = void 0, lmnt.alternation = void 0; 413 for (var alndx = 0; alndx < altLocArr.length; alndx++) mamatch = -1 !== $.inArray(altLocArr[alndx], altIndexArr), 414 mamatch && (void 0 !== lmnt.locator[alternation] ? (lmnt.locator[alternation] += ",", 415 lmnt.locator[alternation] += altLocArr[alndx]) : lmnt.locator[alternation] = parseInt(altLocArr[alndx]), 416 lmnt.alternation = alternation); 417 if (void 0 !== lmnt.locator[alternation]) return lmnt; 418 } 419 })), matches = currentMatches.concat(malternateMatches), testPos = pos, insertStop = matches.length > 0;
420 } else match = handleMatch(alternateToken.matches[altIndex] || maskToken.matches[altIndex], [ altIndex ].concat(loopNdx), quantifierRecurse); 421 if (match) return !0; 422 } else if (match.isQuantifier && quantifierRecurse !== maskToken.matches[$.inArray(match, maskToken.matches) - 1]) for (var qt = match, qndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max) && pos >= testPos; qndx++) { 423 var tokenGroup = maskToken.matches[$.inArray(qt, maskToken.matches) - 1]; 424 if (match = handleMatch(tokenGroup, [ qndx ].concat(loopNdx), tokenGroup)) { 425 if (latestMatch = matches[matches.length - 1].match, latestMatch.optionalQuantifier = qndx > qt.quantifier.min - 1, 426 isFirstMatch(latestMatch, tokenGroup)) { 427 if (qndx > qt.quantifier.min - 1) { 428 insertStop = !0, testPos = pos; 429 break; 430 } 431 return !0; 432 } 433 return !0; 434 } 435 } else if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse)) return !0; 436 } else testPos++; 437 } 438 for (var tndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; tndx < maskToken.matches.length; tndx++) if (maskToken.matches[tndx].isQuantifier !== !0) { 439 var match = handleMatch(maskToken.matches[tndx], [ tndx ].concat(loopNdx), quantifierRecurse); 440 if (match && testPos === pos) return match; 441 if (testPos > pos) break; 442 } 443 } 444 function mergeLocators(tests) { 445 var test = tests[0] || tests; 446 return test.locator.slice(); 447 } 448 var latestMatch, maskTokens = getMaskSet().maskToken, testPos = ndxIntlzr ? tstPs : 0, ndxInitializer = ndxIntlzr || [ 0 ], matches = [], insertStop = !1, cacheDependency = ndxIntlzr ? ndxIntlzr.join("") : ""; 449 if (pos > -1) { 450 if (void 0 === ndxIntlzr) { 451 for (var test, previousPos = pos - 1; void 0 === (test = getMaskSet().validPositions[previousPos] || getMaskSet().tests[previousPos]) && previousPos > -1; ) previousPos--; 452 void 0 !== test && previousPos > -1 && (ndxInitializer = mergeLocators(test), cacheDependency = ndxInitializer.join(""), 453 test = test[0] || test, testPos = previousPos); 454 } 455 if (getMaskSet().tests[pos] && getMaskSet().tests[pos][0].cd === cacheDependency) return getMaskSet().tests[pos]; 456 for (var mtndx = ndxInitializer.shift(); mtndx < maskTokens.length; mtndx++) { 457 var match = resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [ mtndx ]); 458 if (match && testPos === pos || testPos > pos) break; 459 } 460 } 461 return (0 === matches.length || insertStop) && matches.push({ 462 match: { 463 fn: null, 464 cardinality: 0, 465 optionality: !0, 466 casing: null, 467 def: "" 468 }, 469 locator: [] 470 }), getMaskSet().tests[pos] = $.extend(!0, [], matches), getMaskSet().tests[pos]; 471 } 472 function getBufferTemplate() { 473 return void 0 === getMaskSet()._buffer && (getMaskSet()._buffer = getMaskTemplate(!1, 1)), 474 getMaskSet()._buffer; 475 } 476 function getBuffer(noCache) { 477 if (void 0 === getMaskSet().buffer || noCache === !0) { 478 if (noCache === !0) for (var testNdx in getMaskSet().tests) void 0 === getMaskSet().validPositions[testNdx] && delete getMaskSet().tests[testNdx]; 479 getMaskSet().buffer = getMaskTemplate(!0, getLastValidPosition(), !0); 480 } 481 return getMaskSet().buffer; 482 } 483 function refreshFromBuffer(start, end, buffer) { 484 var i; 485 if (buffer = buffer, start === !0) resetMaskSet(), start = 0, end = buffer.length; else for (i = start; end > i; i++) delete getMaskSet().validPositions[i], 486 delete getMaskSet().tests[i]; 487 for (i = start; end > i; i++) resetMaskSet(!0), buffer[i] !== opts.skipOptionalPartCharacter && isValid(i, buffer[i], !0, !0); 488 } 489 function casing(elem, test) { 490 switch (test.casing) { 491 case "upper": 492 elem = elem.toUpperCase(); 493 break; 494 495 case "lower": 496 elem = elem.toLowerCase(); 497 } 498 return elem; 499 } 500 function checkAlternationMatch(altArr1, altArr2) { 501 for (var altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1), isMatch = !1, alndx = 0; alndx < altArr1.length;
501 alndx++) if (-1 !== $.inArray(altArr1[alndx], altArrC)) { 502 isMatch = !0; 503 break; 504 } 505 return isMatch; 506 } 507 function isValid(pos, c, strict, fromSetValid) { 508 function isSelection(posObj) { 509 return isRTL ? posObj.begin - posObj.end > 1 || posObj.begin - posObj.end === 1 && opts.insertMode : posObj.end - posObj.begin > 1 || posObj.end - posObj.begin === 1 && opts.insertMode; 510 } 511 function _isValid(position, c, strict, fromSetValid) { 512 var rslt = !1; 513 return $.each(getTests(position), function(ndx, tst) { 514 for (var test = tst.match, loopend = c ? 1 : 0, chrs = "", i = test.cardinality; i > loopend; i--) chrs += getBufferElement(position - (i - 1)); 515 if (c && (chrs += c), getBuffer(!0), rslt = null != test.fn ? test.fn.test(chrs, getMaskSet(), position, strict, opts, isSelection(pos)) : c !== test.def && c !== opts.skipOptionalPartCharacter || "" === test.def ? !1 : { 516 c: test.placeholder || test.def, 517 pos: position 518 }, rslt !== !1) { 519 var elem = void 0 !== rslt.c ? rslt.c : c; 520 elem = elem === opts.skipOptionalPartCharacter && null === test.fn ? test.placeholder || test.def : elem; 521 var validatedPos = position, possibleModifiedBuffer = getBuffer(); 522 if (void 0 !== rslt.remove && ($.isArray(rslt.remove) || (rslt.remove = [ rslt.remove ]), 523 $.each(rslt.remove.sort(function(a, b) { 524 return b - a; 525 }), function(ndx, lmnt) { 526 stripValidPositions(lmnt, lmnt + 1, !0); 527 })), void 0 !== rslt.insert && ($.isArray(rslt.insert) || (rslt.insert = [ rslt.insert ]), 528 $.each(rslt.insert.sort(function(a, b) { 529 return a - b; 530 }), function(ndx, lmnt) { 531 isValid(lmnt.pos, lmnt.c, !1, fromSetValid); 532 })), rslt.refreshFromBuffer) { 533 var refresh = rslt.refreshFromBuffer; 534 if (strict = !0, refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, possibleModifiedBuffer), 535 void 0 === rslt.pos && void 0 === rslt.c) return rslt.pos = getLastValidPosition(), 536 !1; 537 if (validatedPos = void 0 !== rslt.pos ? rslt.pos : position, validatedPos !== position) return rslt = $.extend(rslt, isValid(validatedPos, elem, !0, fromSetValid)), 538 !1; 539 } else if (rslt !== !0 && void 0 !== rslt.pos && rslt.pos !== position && (validatedPos = rslt.pos, 540 refreshFromBuffer(position, validatedPos, getBuffer().slice()), validatedPos !== position)) return rslt = $.extend(rslt, isValid(validatedPos, elem, !0)), 541 !1; 542 return rslt !== !0 && void 0 === rslt.pos && void 0 === rslt.c ? !1 : (ndx > 0 && resetMaskSet(!0), 543 setValidPosition(validatedPos, $.extend({}, tst, { 544 input: casing(elem, test) 545 }), fromSetValid, isSelection(pos)) || (rslt = !1), !1); 546 } 547 }), rslt; 548 } 549 function alternate(pos, c, strict, fromSetValid) { 550 for (var lastAlt, alternation, isValidRslt, altPos, i, validPos, validPsClone = $.extend(!0, {}, getMaskSet().validPositions), testsClone = $.extend(!0, {}, getMaskSet().tests), lAlt = getLastValidPosition(); lAlt >= 0 && (altPos = getMaskSet().validPositions[lAlt], 551 !altPos || void 0 === altPos.alternation || (lastAlt = lAlt, alternation = getMaskSet().validPositions[lastAlt].alternation, 552 getTestTemplate(lastAlt).locator[altPos.alternation] === altPos.locator[altPos.alternation])); lAlt--) ; 553 if (void 0 !== alternation) { 554 lastAlt = parseInt(lastAlt); 555 for (var decisionPos in getMaskSet().validPositions) if (decisionPos = parseInt(decisionPos), 556 altPos = getMaskSet().validPositions[decisionPos], decisionPos >= lastAlt && void 0 !== altPos.alternation) { 557 var altNdxs; 558 0 === lastAlt ? (altNdxs = [], $.each(getMaskSet().tests[lastAlt], function(ndx, test) { 559 void 0 !== test.locator[alternation] && (altNdxs = altNdxs.concat(test.locator[alternation].toString().split(","))); 560 })) : altNdxs = getMaskSet().validPositions[lastAlt].locator[alternation].toString().split(","); 561 var decisionTaker = void 0 !== altPos.locator[alternation] ? altPos.locator[alternation] : altNdxs[0]; 562 decisionTaker.length > 0 && (decisionTaker = decisionTaker.split(",")[0]); 563 for (var mndx = 0; mndx < altNdxs.length; mndx++) {
564 var validInputs = [], staticInputsBeforePos = 0, staticInputsBeforePosAlternate = 0; 565 if (decisionTaker < altNdxs[mndx]) { 566 for (var possibilityPos, possibilities, dp = decisionPos; dp >= 0; dp--) if (possibilityPos = getMaskSet().validPositions[dp], 567 void 0 !== possibilityPos) { 568 var bestMatch = selectBestMatch(dp, altNdxs[mndx]); 569 getMaskSet().validPositions[dp].match.def !== bestMatch.match.def && (validInputs.push(getMaskSet().validPositions[dp].input), 570 getMaskSet().validPositions[dp] = bestMatch, getMaskSet().validPositions[dp].input = getPlaceholder(dp), 571 null === getMaskSet().validPositions[dp].match.fn && staticInputsBeforePosAlternate++, 572 possibilityPos = bestMatch), possibilities = possibilityPos.locator[alternation], 573 possibilityPos.locator[alternation] = parseInt(altNdxs[mndx]); 574 break; 575 } 576 if (decisionTaker !== possibilityPos.locator[alternation]) { 577 for (i = decisionPos + 1; i < getLastValidPosition(void 0, !0) + 1; i++) validPos = getMaskSet().validPositions[i], 578 validPos && null != validPos.match.fn ? validInputs.push(validPos.input) : pos > i && staticInputsBeforePos++, 579 delete getMaskSet().validPositions[i], delete getMaskSet().tests[i]; 580 for (resetMaskSet(!0), opts.keepStatic = !opts.keepStatic, isValidRslt = !0; validInputs.length > 0; ) { 581 var input = validInputs.shift(); 582 if (input !== opts.skipOptionalPartCharacter && !(isValidRslt = isValid(getLastValidPosition(void 0, !0) + 1, input, !1, fromSetValid))) break; 583 } 584 if (possibilityPos.alternation = alternation, possibilityPos.locator[alternation] = possibilities, 585 isValidRslt) { 586 var targetLvp = getLastValidPosition(pos) + 1; 587 for (i = decisionPos + 1; i < getLastValidPosition() + 1; i++) validPos = getMaskSet().validPositions[i], 588 (void 0 === validPos || null == validPos.match.fn) && pos > i && staticInputsBeforePosAlternate++; 589 pos += staticInputsBeforePosAlternate - staticInputsBeforePos, isValidRslt = isValid(pos > targetLvp ? targetLvp : pos, c, strict, fromSetValid); 590 } 591 if (opts.keepStatic = !opts.keepStatic, isValidRslt) return isValidRslt; 592 resetMaskSet(), getMaskSet().validPositions = $.extend(!0, {}, validPsClone), getMaskSet().tests = $.extend(!0, {}, testsClone); 593 } 594 } 595 } 596 break; 597 } 598 } 599 return !1; 600 } 601 function trackbackAlternations(originalPos, newPos) { 602 for (var vp = getMaskSet().validPositions[newPos], targetLocator = vp.locator, tll = targetLocator.length, ps = originalPos; newPos > ps; ps++) if (void 0 === getMaskSet().validPositions[ps] && !isMask(ps, !0)) { 603 var tests = getTests(ps), bestMatch = tests[0], equality = -1; 604 $.each(tests, function(ndx, tst) { 605 for (var i = 0; tll > i && (void 0 !== tst.locator[i] && checkAlternationMatch(tst.locator[i].toString().split(","), targetLocator[i].toString().split(","))); i++) i > equality && (equality = i, 606 bestMatch = tst); 607 }), setValidPosition(ps, $.extend({}, bestMatch, { 608 input: bestMatch.match.placeholder || bestMatch.match.def 609 }), !0); 610 } 611 }
612 strict = strict === !0; 613 var maskPos = pos; 614 void 0 !== pos.begin && (maskPos = isRTL && !isSelection(pos) ? pos.end : pos.begin); 615 for (var result = !1, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), pndx = maskPos - 1; pndx > -1 && !getMaskSet().validPositions[pndx]; pndx--) ; 616 var testTemplate; 617 for (pndx++; maskPos > pndx; pndx++) void 0 === getMaskSet().validPositions[pndx] && (opts.jitMasking === !1 || opts.jitMasking > pndx) && ((testTemplate = getTestTemplate(pndx)).match.def === opts.radixPointDefinitionSymbol || !isMask(pndx, !0) || $.inArray(opts.radixPoint, getBuffer()) < pndx && testTemplate.match.fn && testTemplate.match.fn.test(getPlaceholder(pndx), getMaskSet(), pndx, !1, opts)) && _isValid(getLastValidPosition(pndx, !0) + 1, testTemplate.match.placeholder || (null == testTemplate.match.fn ? testTemplate.match.def : "" !== getPlaceholder(pndx) ? getPlaceholder(pndx) : getBuffer()[pndx]), !0, fromSetValid); 618 if (isSelection(pos) && (handleRemove(void 0, Inputmask.keyCode.DELETE, pos), maskPos = getMaskSet().p), 619 maskPos < getMaskLength() && (result = _isValid(maskPos, c, strict, fromSetValid), 620 (!strict || fromSetValid === !0) && result === !1)) { 621 var currentPosValid = getMaskSet().validPositions[maskPos]; 622 if (!currentPosValid || null !== currentPosValid.match.fn || currentPosValid.match.def !== c && c !== opts.skipOptionalPartCharacter) { 623 if ((opts.insertMode || void 0 === getMaskSet().validPositions[seekNext(maskPos)]) && !isMask(maskPos, !0)) { 624 var staticChar = getTestTemplate(maskPos).match; 625 staticChar = staticChar.placeholder || staticChar.def, _isValid(maskPos, staticChar, strict, fromSetValid); 626 for (var nPos = maskPos + 1, snPos = seekNext(maskPos); snPos >= nPos; nPos++) if (result = _isValid(nPos, c, strict, fromSetValid), 627 result !== !1) { 628 trackbackAlternations(maskPos, nPos), maskPos = nPos; 629 break; 630 } 631 } 632 } else result = { 633 caret: seekNext(maskPos) 634 }; 635 } 636 return result === !1 && opts.keepStatic && (result = alternate(maskPos, c, strict, fromSetValid)), 637 result === !0 && (result = { 638 pos: maskPos 639 }), $.isFunction(opts.postValidation) && result !== !1 && !strict && fromSetValid !== !0 && (result = opts.postValidation(getBuffer(!0), result, opts) ? result : !1), 640 void 0 === result.pos && (result.pos = maskPos), result === !1 && (resetMaskSet(!0), 641 getMaskSet().validPositions = $.extend(!0, {}, positionsClone)), result; 642 } 643 function isMask(pos, strict) { 644 var test; 645 if (strict ? (test = getTestTemplate(pos).match, "" === test.def && (test = getTest(pos))) : test = getTest(pos), 646 null != test.fn) return test.fn; 647 if (strict !== !0 && pos > -1 && !opts.keepStatic && void 0 === getMaskSet().validPositions[pos]) { 648 var tests = getTests(pos); 649 return tests.length > 2; 650 } 651 return !1; 652 } 653 function getMaskLength() { 654 var maskLength; 655 maxLength = void 0 !== el ? el.maxLength : void 0, -1 === maxLength && (maxLength = void 0); 656 var pos, lvp = getLastValidPosition(), testPos = getMaskSet().validPositions[lvp], ndxIntlzr = void 0 !== testPos ? testPos.locator.slice() : void 0; 657 for (pos = lvp + 1; void 0 === testPos || null !== testPos.match.fn || null === testPos.match.fn && "" !== testPos.match.def; pos++) testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), 658 ndxIntlzr = testPos.locator.slice(); 659 var lastTest = getTest(pos - 1); 660 return maskLength = "" !== lastTest.def ? pos : pos - 1, void 0 === maxLength || maxLength > maskLength ? maskLength : maxLength; 661 } 662 function seekNext(pos, newBlock) { 663 var maskL = getMaskLength(); 664 if (pos >= maskL) return maskL; 665 for (var position = pos; ++position < maskL && (newBlock === !0 && (getTest(position).newBlockMarker !== !0 || !isMask(position)) || newBlock !== !0 && !isMask(position) && (opts.nojumps !== !0 || opts.nojumpsThreshold > position)); ) ; 666 return position; 667 } 668 function seekPrevious(pos, newBlock) { 669 var position = pos; 670 if (0 >= position) return 0; 671 for (;
vendor: 31,178 bytes, lines 671-1075
671--position > 0 && (newBlock === !0 && getTest(position).newBlockMarker !== !0 || newBlock !== !0 && !isMask(position)); ) ; 672 return position; 673 } 674 function getBufferElement(position) { 675 return void 0 === getMaskSet().validPositions[position] ? getPlaceholder(position) : getMaskSet().validPositions[position].input; 676 } 677 function writeBuffer(input, buffer, caretPos, event, triggerInputEvent) { 678 if (event && $.isFunction(opts.onBeforeWrite)) { 679 var result = opts.onBeforeWrite(event, buffer, caretPos, opts); 680 if (result) { 681 if (result.refreshFromBuffer) { 682 var refresh = result.refreshFromBuffer; 683 refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer || buffer), 684 buffer = getBuffer(!0); 685 } 686 void 0 !== caretPos && (caretPos = void 0 !== result.caret ? result.caret : caretPos); 687 } 688 } 689 input.inputmask._valueSet(buffer.join("")), void 0 === caretPos || void 0 !== event && "blur" === event.type || caret(input, caretPos), 690 triggerInputEvent === !0 && (skipInputEvent = !0, $(input).trigger("input")); 691 } 692 function getPlaceholder(pos, test) { 693 if (test = test || getTest(pos), void 0 !== test.placeholder) return test.placeholder; 694 if (null === test.fn) { 695 if (pos > -1 && !opts.keepStatic && void 0 === getMaskSet().validPositions[pos]) { 696 var prevTest, tests = getTests(pos), staticAlternations = 0; 697 if (tests.length > 2) for (var i = 0; i < tests.length; i++) if (tests[i].match.optionality !== !0 && tests[i].match.optionalQuantifier !== !0 && (null === tests[i].match.fn || void 0 === prevTest || tests[i].match.fn.test(prevTest.match.def, getMaskSet(), pos, !0, opts) !== !1) && (staticAlternations++, 698 null === tests[i].match.fn && (prevTest = tests[i]), staticAlternations > 1)) return opts.placeholder.charAt(pos % opts.placeholder.length); 699 } 700 return test.def; 701 } 702 return opts.placeholder.charAt(pos % opts.placeholder.length); 703 } 704 function checkVal(input, writeOut, strict, nptvl) { 705 function isTemplateMatch() { 706 var isMatch = !1, charCodeNdx = getBufferTemplate().slice(initialNdx, seekNext(initialNdx)).join("").indexOf(charCodes); 707 if (-1 !== charCodeNdx && !isMask(initialNdx)) { 708 isMatch = !0; 709 for (var bufferTemplateArr = getBufferTemplate().slice(initialNdx, initialNdx + charCodeNdx), i = 0; i < bufferTemplateArr.length; i++) if (" " !== bufferTemplateArr[i]) { 710 isMatch = !1; 711 break; 712 } 713 } 714 return isMatch; 715 } 716 var result, inputValue = nptvl.slice(), charCodes = "", initialNdx = 0; 717 if (resetMaskSet(), getMaskSet().p = seekNext(-1), !strict) if (opts.autoUnmask !== !0) { 718 var staticInput = getBufferTemplate().slice(0, seekNext(-1)).join(""), matches = inputValue.join("").match(new RegExp("^" + Inputmask.escapeRegex(staticInput), "g")); 719 matches && matches.length > 0 && (inputValue.splice(0, matches.length * staticInput.length), 720 initialNdx = seekNext(initialNdx)); 721 } else initialNdx = seekNext(initialNdx); 722 $.each(inputValue, function(ndx, charCode) { 723 if (void 0 !== charCode) { 724 var keypress = new $.Event("keypress"); 725 keypress.which = charCode.charCodeAt(0), charCodes += charCode; 726 var lvp = getLastValidPosition(void 0, !0), lvTest = getMaskSet().validPositions[lvp], nextTest = getTestTemplate(lvp + 1, lvTest ? lvTest.locator.slice() : void 0, lvp); 727 if (!isTemplateMatch() || strict || opts.autoUnmask) { 728 var pos = strict ? ndx : null == nextTest.match.fn && nextTest.match.optionality && lvp + 1 < getMaskSet().p ? lvp + 1 : getMaskSet().p; 729 result = keypressEvent.call(input, keypress, !0, !1, strict, pos), initialNdx = pos + 1, 730 charCodes = ""; 731 } else result = keypressEvent.call(input, keypress, !0, !1, !0, lvp + 1); 732 if (!strict && $.isFunction(opts.onBeforeWrite) && (result = opts.onBeforeWrite(keypress, getBuffer(), result.forwardPosition, opts), 733 result && result.refreshFromBuffer)) { 734 var refresh = result.refreshFromBuffer; 735 refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer), 736 resetMaskSet(!0), result.caret && (getMaskSet().p = result.caret); 737 } 738 } 739 }), writeOut && writeBuffer(input, getBuffer(), document.activeElement === input ? seekNext(getLastValidPosition(0)) : void 0, new $.Event("checkval")); 740 } 741 function unmaskedvalue(input) { 742 if (input && void 0 === input.inputmask) return input.value; 743 var umValue = [], vps = getMaskSet().validPositions; 744 for (var pndx in vps) vps[pndx].match && null != vps[pndx].match.fn && umValue.push(vps[pndx].input); 745 var unmaskedValue = 0 === umValue.length ? null : (isRTL ? umValue.reverse() : umValue).join(""); 746 if (null !== unmaskedValue) { 747 var bufferValue = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(""); 748 $.isFunction(opts.onUnMask) && (unmaskedValue = opts.onUnMask(bufferValue, unmaskedValue, opts) || unmaskedValue); 749 } 750 return unmaskedValue; 751 } 752 function caret(input, begin, end, notranslate) { 753 function translatePosition(pos) { 754 if (notranslate !== !0 && isRTL && "number" == typeof pos && (!opts.greedy || "" !== opts.placeholder)) { 755 var bffrLght = getBuffer().join("").length; 756 pos = bffrLght - pos; 757 } 758 return pos; 759 } 760 var range; 761 if ("number" != typeof begin) return input.setSelectionRange ? (begin = input.selectionStart, 762 end = input.selectionEnd) : window.getSelection ? (range = window.getSelection().getRangeAt(0), 763 (range.commonAncestorContainer.parentNode === input || range.commonAncestorContainer === input) && (begin = range.startOffset, 764 end = range.endOffset)) : document.selection && document.selection.createRange && (range = document.selection.createRange(), 765 begin = 0 - range.duplicate().moveStart("character", -input.inputmask._valueGet().length), 766 end = begin + range.text.length), { 767 begin: translatePosition(begin), 768 end: translatePosition(end) 769 }; 770 begin = translatePosition(begin), end = translatePosition(end), end = "number" == typeof end ? end : begin; 771 var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end; 772 if (input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0, mobile || opts.insertMode !== !1 || begin !== end || end++, 773 input.setSelectionRange) input.selectionStart = begin, input.selectionEnd = end; else if (window.getSelection) { 774 if (range = document.createRange(), void 0 === input.firstChild || null === input.firstChild) { 775 var textNode = document.createTextNode(""); 776 input.appendChild(textNode); 777 } 778 range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length), 779 range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length), 780 range.collapse(!0); 781 var sel = window.getSelection(); 782 sel.removeAllRanges(), sel.addRange(range); 783 } else input.createTextRange && (range = input.createTextRange(), range.collapse(!0), 784 range.moveEnd("character", end), range.moveStart("character", begin), range.select()); 785 } 786 function determineLastRequiredPosition(returnDefinition) { 787 var pos, testPos, buffer = getBuffer(), bl = buffer.length, lvp = getLastValidPosition(), positions = {}, lvTest = getMaskSet().validPositions[lvp], ndxIntlzr = void 0 !== lvTest ? lvTest.locator.slice() : void 0; 788 for (pos = lvp + 1; pos < buffer.length; pos++) testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), 789 ndxIntlzr = testPos.locator.slice(), positions[pos] = $.extend(!0, {}, testPos); 790 var lvTestAlt = lvTest && void 0 !== lvTest.alternation ? lvTest.locator[lvTest.alternation] : void 0; 791 for (pos = bl - 1; pos > lvp && (testPos = positions[pos], (testPos.match.optionality || testPos.match.optionalQuantifier || lvTestAlt && (lvTestAlt !== positions[pos].locator[lvTest.alternation] && null != testPos.match.fn || null === testPos.match.fn && testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(","), lvTestAlt.toString().split(",")) && "" !== getTests(pos)[0].def)) && buffer[pos] === getPlaceholder(pos, testPos.match)); pos--) bl--; 792 return returnDefinition ? { 793 l: bl, 794 def: positions[bl] ? positions[bl].match : void 0 795 } : bl; 796 } 797 function clearOptionalTail(buffer) { 798 for (var rl = determineLastRequiredPosition(), lmib = buffer.length - 1; lmib > rl && !isMask(lmib); lmib--) ; 799 return buffer.splice(rl, lmib + 1 - rl), buffer; 800 } 801 function isComplete(buffer) { 802 if ($.isFunction(opts.isComplete)) return opts.isComplete(buffer, opts); 803 if ("*" === opts.repeat) return void 0; 804 var complete = !1, lrp = determineLastRequiredPosition(!0), aml = seekPrevious(lrp.l); 805 if (void 0 === lrp.def || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) { 806 complete = !0; 807 for (var i = 0; aml >= i; i++) { 808 var test = getTestTemplate(i).match; 809 if (null !== test.fn && void 0 === getMaskSet().validPositions[i] && test.optionality !== !0 && test.optionalQuantifier !== !0 || null === test.fn && buffer[i] !== getPlaceholder(i, test)) { 810 complete = !1; 811 break; 812 } 813 } 814 } 815 return complete; 816 } 817 function patchValueProperty(npt) { 818 function patchValhook(type) { 819 if ($.valHooks && (void 0 === $.valHooks[type] || $.valHooks[type].inputmaskpatch !== !0)) { 820 var valhookGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function(elem) { 821 return elem.value; 822 }, valhookSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function(elem, value) { 823 return elem.value = value, elem; 824 }; 825 $.valHooks[type] = { 826 get: function(elem) { 827 if (elem.inputmask) { 828 if (elem.inputmask.opts.autoUnmask) return elem.inputmask.unmaskedvalue(); 829 var result = valhookGet(elem); 830 return -1 !== getLastValidPosition() || opts.nullable !== !0 ? result : ""; 831 } 832 return valhookGet(elem); 833 }, 834 set: function(elem, value) { 835 var result, $elem = $(elem); 836 return result = valhookSet(elem, value), elem.inputmask && $elem.trigger("setvalue"), 837 result; 838 }, 839 inputmaskpatch: !0 840 }; 841 } 842 } 843 function getter() { 844 return this.inputmask ? this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : -1 !== getLastValidPosition() || opts.nullable !== !0 ? document.activeElement === this && opts.clearMaskOnLostFocus ? (isRTL ? clearOptionalTail(getBuffer().slice()).reverse() : clearOptionalTail(getBuffer().slice())).join("") : valueGet.call(this) : "" : valueGet.call(this); 845 } 846 function setter(value) { 847 valueSet.call(this, value), this.inputmask && $(this).trigger("setvalue"); 848 } 849 function installNativeValueSetFallback(npt) { 850 EventRuler.on(npt, "mouseenter", function(event) { 851 var $input = $(this), input = this, value = input.inputmask._valueGet(); 852 value !== getBuffer().join("") && $input.trigger("setvalue"); 853 }); 854 } 855 var valueGet, valueSet; 856 if (!npt.inputmask.__valueGet) { 857 if (Object.getOwnPropertyDescriptor) { 858 var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), "value") : void 0; 859 valueProperty && valueProperty.get && valueProperty.set ? (valueGet = valueProperty.get, 860 valueSet = valueProperty.set, Object.defineProperty(npt, "value", { 861 get: getter, 862 set: setter, 863 configurable: !0 864 })) : "INPUT" !== npt.tagName && (valueGet = function() { 865 return this.textContent; 866 }, valueSet = function(value) { 867 this.textContent = value; 868 }, Object.defineProperty(npt, "value", { 869 get: getter, 870 set: setter, 871 configurable: !0 872 })); 873 } else document.__lookupGetter__ && npt.__lookupGetter__("value") && (valueGet = npt.__lookupGetter__("value"), 874 valueSet = npt.__lookupSetter__("value"), npt.__defineGetter__("value", getter), 875 npt.__defineSetter__("value", setter)); 876 void 0 === valueGet && (valueGet = function() { 877 return npt.value; 878 }, valueSet = function(value) { 879 npt.value = value; 880 }, patchValhook(npt.type), installNativeValueSetFallback(npt)), npt.inputmask.__valueGet = valueGet, 881 npt.inputmask._valueGet = function(overruleRTL) { 882 return isRTL && overruleRTL !== !0 ? valueGet.call(this.el).split("").reverse().join("") : valueGet.call(this.el); 883 }, npt.inputmask.__valueSet = valueSet, npt.inputmask._valueSet = function(value, overruleRTL) { 884 valueSet.call(this.el, null === value || void 0 === value ? "" : overruleRTL !== !0 && isRTL ? value.split("").reverse().join("") : value); 885 }; 886 } 887 } 888 function handleRemove(input, k, pos, strict) { 889 function generalize() { 890 if (opts.keepStatic) { 891 resetMaskSet(!0); 892 var lastAlt, validInputs = [], positionsClone = $.extend(!0, {}, getMaskSet().validPositions); 893 for (lastAlt = getLastValidPosition(); lastAlt >= 0; lastAlt--) { 894 var validPos = getMaskSet().validPositions[lastAlt]; 895 if (validPos && (null != validPos.match.fn && validInputs.push(validPos.input), 896 delete getMaskSet().validPositions[lastAlt], void 0 !== validPos.alternation && validPos.locator[validPos.alternation] === getTestTemplate(lastAlt).locator[validPos.alternation])) break; 897 } 898 if (lastAlt > -1) for (;validInputs.length > 0; ) { 899 getMaskSet().p = seekNext(getLastValidPosition()); 900 var keypress = new $.Event("keypress"); 901 keypress.which = validInputs.pop().charCodeAt(0), keypressEvent.call(input, keypress, !0, !1, !1, getMaskSet().p); 902 } else getMaskSet().validPositions = $.extend(!0, {}, positionsClone); 903 } 904 } 905 if ((opts.numericInput || isRTL) && (k === Inputmask.keyCode.BACKSPACE ? k = Inputmask.keyCode.DELETE : k === Inputmask.keyCode.DELETE && (k = Inputmask.keyCode.BACKSPACE), 906 isRTL)) { 907 var pend = pos.end; 908 pos.end = pos.begin, pos.begin = pend; 909 } 910 k === Inputmask.keyCode.BACKSPACE && (pos.end - pos.begin < 1 || opts.insertMode === !1) ? (pos.begin = seekPrevious(pos.begin), 911 void 0 === getMaskSet().validPositions[pos.begin] || getMaskSet().validPositions[pos.begin].input !== opts.groupSeparator && getMaskSet().validPositions[pos.begin].input !== opts.radixPoint || pos.begin--) : k === Inputmask.keyCode.DELETE && pos.begin === pos.end && (pos.end = isMask(pos.end) ? pos.end + 1 : seekNext(pos.end) + 1, 912 void 0 === getMaskSet().validPositions[pos.begin] || getMaskSet().validPositions[pos.begin].input !== opts.groupSeparator && getMaskSet().validPositions[pos.begin].input !== opts.radixPoint || pos.end++), 913 stripValidPositions(pos.begin, pos.end, !1, strict), strict !== !0 && generalize(); 914 var lvp = getLastValidPosition(pos.begin); 915 lvp < pos.begin ? (-1 === lvp && resetMaskSet(), getMaskSet().p = seekNext(lvp)) : strict !== !0 && (getMaskSet().p = pos.begin); 916 } 917 function keydownEvent(e) { 918 var input = this, $input = $(input), k = e.keyCode, pos = caret(input); 919 if (k === Inputmask.keyCode.BACKSPACE || k === Inputmask.keyCode.DELETE || iphone && k === Inputmask.keyCode.BACKSPACE_SAFARI || e.ctrlKey && k === Inputmask.keyCode.X && !isInputEventSupported("cut")) e.preventDefault(), 920 handleRemove(input, k, pos), writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join("")), 921 input.inputmask._valueGet() === getBufferTemplate().join("") ? $input.trigger("cleared") : isComplete(getBuffer()) === !0 && $input.trigger("complete"), 922 opts.showTooltip && (input.title = opts.tooltip || getMaskSet().mask); else if (k === Inputmask.keyCode.END || k === Inputmask.keyCode.PAGE_DOWN) { 923 e.preventDefault(); 924 var caretPos = seekNext(getLastValidPosition()); 925 opts.insertMode || caretPos !== getMaskLength() || e.shiftKey || caretPos--, caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, !0); 926 } else k === Inputmask.keyCode.HOME && !e.shiftKey || k === Inputmask.keyCode.PAGE_UP ? (e.preventDefault(), 927 caret(input, 0, e.shiftKey ? pos.begin : 0, !0)) : (opts.undoOnEscape && k === Inputmask.keyCode.ESCAPE || 90 === k && e.ctrlKey) && e.altKey !== !0 ? (checkVal(input, !0, !1, undoValue.split("")), 928 $input.trigger("click")) : k !== Inputmask.keyCode.INSERT || e.shiftKey || e.ctrlKey ? opts.tabThrough === !0 && k === Inputmask.keyCode.TAB ? (e.shiftKey === !0 ? (null === getTest(pos.begin).fn && (pos.begin = seekNext(pos.begin)), 929 pos.end = seekPrevious(pos.begin, !0), pos.begin = seekPrevious(pos.end, !0)) : (pos.begin = seekNext(pos.begin, !0), 930 pos.end = seekNext(pos.begin, !0), pos.end < getMaskLength() && pos.end--), pos.begin < getMaskLength() && (e.preventDefault(), 931 caret(input, pos.begin, pos.end))) : opts.insertMode !== !1 || e.shiftKey || (k === Inputmask.keyCode.RIGHT ? setTimeout(function() { 932 var caretPos = caret(input); 933 caret(input, caretPos.begin); 934 }, 0) : k === Inputmask.keyCode.LEFT && setTimeout(function() { 935 var caretPos = caret(input); 936 caret(input, isRTL ? caretPos.begin + 1 : caretPos.begin - 1); 937 }, 0)) : (opts.insertMode = !opts.insertMode, caret(input, opts.insertMode || pos.begin !== getMaskLength() ? pos.begin : pos.begin - 1)); 938 opts.onKeyDown.call(this, e, getBuffer(), caret(input).begin, opts), ignorable = -1 !== $.inArray(k, opts.ignorables); 939 } 940 function keypressEvent(e, checkval, writeOut, strict, ndx) { 941 var input = this, $input = $(input), k = e.which || e.charCode || e.keyCode; 942 if (!(checkval === !0 || e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable)) return k === Inputmask.keyCode.ENTER && undoValue !== getBuffer().join("") && (undoValue = getBuffer().join(""), 943 setTimeout(function() { 944 $input.trigger("change"); 945 }, 0)), !0; 946 if (k) { 947 46 === k && e.shiftKey === !1 && "," === opts.radixPoint && (k = 44); 948 var forwardPosition, pos = checkval ? { 949 begin: ndx, 950 end: ndx 951 } : caret(input), c = String.fromCharCode(k); 952 getMaskSet().writeOutBuffer = !0; 953 var valResult = isValid(pos, c, strict); 954 if (valResult !== !1) { 955 var p = valResult.pos; 956 if (resetMaskSet(!0), void 0 !== valResult.caret) forwardPosition = valResult.caret; else { 957 var vps = getMaskSet().validPositions; 958 forwardPosition = !opts.keepStatic && (void 0 !== vps[p + 1] && getTests(p + 1, vps[p].locator.slice(), p).length > 1 || void 0 !== vps[p].alternation) ? p + 1 : seekNext(p); 959 } 960 getMaskSet().p = forwardPosition; 961 } 962 if (writeOut !== !1) { 963 var self = this; 964 if (setTimeout(function() { 965 opts.onKeyValidation.call(self, k, valResult, opts); 966 }, 0), getMaskSet().writeOutBuffer && valResult !== !1) { 967 var buffer = getBuffer(); 968 writeBuffer(input, buffer, opts.numericInput && void 0 === valResult.caret ? seekPrevious(forwardPosition) : forwardPosition, e, checkval !== !0), 969 checkval !== !0 && setTimeout(function() { 970 isComplete(buffer) === !0 && $input.trigger("complete"); 971 }, 0); 972 } 973 } 974 if (opts.showTooltip && (input.title = opts.tooltip || getMaskSet().mask), e.preventDefault(), 975 checkval) return valResult.forwardPosition = forwardPosition, valResult; 976 } 977 } 978 function pasteEvent(e) { 979 var tempValue, input = this, ev = e.originalEvent || e, $input = $(input), inputValue = input.inputmask._valueGet(!0), caretPos = caret(input); 980 isRTL && (tempValue = caretPos.end, caretPos.end = caretPos.begin, caretPos.begin = tempValue); 981 var valueBeforeCaret = inputValue.substr(0, caretPos.begin), valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length); 982 valueBeforeCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(0, caretPos.begin).join("") && (valueBeforeCaret = ""), 983 valueAfterCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(caretPos.end).join("") && (valueAfterCaret = ""), 984 isRTL && (tempValue = valueBeforeCaret, valueBeforeCaret = valueAfterCaret, valueAfterCaret = tempValue), 985 window.clipboardData && window.clipboardData.getData ? inputValue = valueBeforeCaret + window.clipboardData.getData("Text") + valueAfterCaret : ev.clipboardData && ev.clipboardData.getData && (inputValue = valueBeforeCaret + ev.clipboardData.getData("text/plain") + valueAfterCaret); 986 var pasteValue = inputValue; 987 if ($.isFunction(opts.onBeforePaste)) { 988 if (pasteValue = opts.onBeforePaste(inputValue, opts), pasteValue === !1) return e.preventDefault(); 989 pasteValue || (pasteValue = inputValue); 990 } 991 return checkVal(input, !1, !1, isRTL ? pasteValue.split("").reverse() : pasteValue.toString().split("")), 992 writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()), e, !0), isComplete(getBuffer()) === !0 && $input.trigger("complete"), 993 e.preventDefault(); 994 } 995 function inputFallBackEvent(e) { 996 var input = this, inputValue = input.inputmask._valueGet(); 997 if (getBuffer().join("") !== inputValue) { 998 var caretPos = caret(input); 999 if (inputValue = inputValue.replace(new RegExp("(" + Inputmask.escapeRegex(getBufferTemplate().join("")) + ")*"), ""), 1000 iemobile) { 1001 var inputChar = inputValue.replace(getBuffer().join(""), ""); 1002 if (1 === inputChar.length) { 1003 var keypress = new $.Event("keypress"); 1004 return keypress.which = inputChar.charCodeAt(0), keypressEvent.call(input, keypress, !0, !0, !1, getMaskSet().validPositions[caretPos.begin - 1] ? caretPos.begin : caretPos.begin - 1), 1005 !1; 1006 } 1007 } 1008 if (caretPos.begin > inputValue.length && (caret(input, inputValue.length), caretPos = caret(input)), 1009 getBuffer().length - inputValue.length !== 1 || inputValue.charAt(caretPos.begin) === getBuffer()[caretPos.begin] || inputValue.charAt(caretPos.begin + 1) === getBuffer()[caretPos.begin] || isMask(caretPos.begin)) { 1010 for (var lvp = getLastValidPosition() + 1, bufferTemplate = getBuffer().slice(lvp).join(""); null === inputValue.match(Inputmask.escapeRegex(bufferTemplate) + "$"); ) bufferTemplate = bufferTemplate.slice(1); 1011 inputValue = inputValue.replace(bufferTemplate, ""), inputValue = inputValue.split(""), 1012 checkVal(input, !0, !1, inputValue), isComplete(getBuffer()) === !0 && $(input).trigger("complete"); 1013 } else e.keyCode = Inputmask.keyCode.BACKSPACE, keydownEvent.call(input, e); 1014 e.preventDefault(); 1015 } 1016 } 1017 function setValueEvent(e) { 1018 var input = this, value = input.inputmask._valueGet(); 1019 checkVal(input, !0, !1, ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(value, opts) || value : value).split("")), 1020 undoValue = getBuffer().join(""), (opts.clearMaskOnLostFocus || opts.clearIncomplete) && input.inputmask._valueGet() === getBufferTemplate().join("") && input.inputmask._valueSet(""); 1021 } 1022 function focusEvent(e) { 1023 var input = this, nptValue = input.inputmask._valueGet(); 1024 opts.showMaskOnFocus && (!opts.showMaskOnHover || opts.showMaskOnHover && "" === nptValue) ? input.inputmask._valueGet() !== getBuffer().join("") && writeBuffer(input, getBuffer(), seekNext(getLastValidPosition())) : mouseEnter === !1 && caret(input, seekNext(getLastValidPosition())), 1025 opts.positionCaretOnTab === !0 && setTimeout(function() { 1026 caret(input, seekNext(getLastValidPosition())); 1027 }, 0), undoValue = getBuffer().join(""); 1028 } 1029 function mouseleaveEvent(e) { 1030 var input = this; 1031 if (mouseEnter = !1, opts.clearMaskOnLostFocus && document.activeElement !== input) { 1032 var buffer = getBuffer().slice(), nptValue = input.inputmask._valueGet(); 1033 nptValue !== input.getAttribute("placeholder") && "" !== nptValue && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join("") ? buffer = [] : clearOptionalTail(buffer), 1034 writeBuffer(input, buffer)); 1035 } 1036 } 1037 function clickEvent(e) { 1038 function doRadixFocus(clickPos) { 1039 if (opts.radixFocus && "" !== opts.radixPoint) { 1040 var vps = getMaskSet().validPositions; 1041 if (void 0 === vps[clickPos] || vps[clickPos].input === getPlaceholder(clickPos)) { 1042 if (clickPos < seekNext(-1)) return !0; 1043 var radixPos = $.inArray(opts.radixPoint, getBuffer()); 1044 if (-1 !== radixPos) { 1045 for (var vp in vps) if (vp > radixPos && vps[vp].input !== getPlaceholder(vp)) return !1; 1046 return !0; 1047 } 1048 } 1049 } 1050 return !1; 1051 } 1052 var input = this; 1053 setTimeout(function() { 1054 if (document.activeElement === input) { 1055 var selectedCaret = caret(input); 1056 if (selectedCaret.begin === selectedCaret.end) if (doRadixFocus(selectedCaret.begin)) caret(input, opts.numericInput ? seekNext($.inArray(opts.radixPoint, getBuffer())) : $.inArray(opts.radixPoint, getBuffer())); else { 1057 var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, !0), lastPosition = seekNext(lvclickPosition); 1058 if (lastPosition > clickPosition) caret(input, isMask(clickPosition) || isMask(clickPosition - 1) ? clickPosition : seekNext(clickPosition)); else { 1059 var placeholder = getPlaceholder(lastPosition); 1060 ("" !== placeholder && getBuffer()[lastPosition] !== placeholder || !isMask(lastPosition, !0) && getTest(lastPosition).def === placeholder) && (lastPosition = seekNext(lastPosition)), 1061 caret(input, lastPosition); 1062 } 1063 } 1064 } 1065 }, 0); 1066 } 1067 function dblclickEvent(e) { 1068 var input = this; 1069 setTimeout(function() { 1070 caret(input, 0, seekNext(getLastValidPosition())); 1071 }, 0); 1072 } 1073 function cutEvent(e) { 1074 var input = this, $input = $(input), pos = caret(input), ev = e.originalEvent || e, clipboardData = window.clipboardData || ev.clipboardData, clipData = isRTL ? getBuffer().slice(pos.end, pos.begin) : getBuffer().slice(pos.begin, pos.end); 1075 clipboardData.setData("text", isRTL ? clipData.reverse().join("") : clip
1075Data.join("")), 1076 document.execCommand && document.execCommand("copy"), handleRemove(input, Inputmask.keyCode.DELETE, pos), 1077 writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join("")), 1078 input.inputmask._valueGet() === getBufferTemplate().join("") && $input.trigger("cleared"), 1079 opts.showTooltip && (input.title = opts.tooltip || getMaskSet().mask); 1080 } 1081 function blurEvent(e) { 1082 var $input = $(this), input = this; 1083 if (input.inputmask) { 1084 var nptValue = input.inputmask._valueGet(), buffer = getBuffer().slice(); 1085 undoValue !== buffer.join("") && setTimeout(function() { 1086 $input.trigger("change"), undoValue = buffer.join(""); 1087 }, 0), "" !== nptValue && (opts.clearMaskOnLostFocus && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join("") ? buffer = [] : clearOptionalTail(buffer)), 1088 isComplete(buffer) === !1 && (setTimeout(function() { 1089 $input.trigger("incomplete"); 1090 }, 0), opts.clearIncomplete && (resetMaskSet(), buffer = opts.clearMaskOnLostFocus ? [] : getBufferTemplate().slice())), 1091 writeBuffer(input, buffer, void 0, e)); 1092 } 1093 } 1094 function mouseenterEvent(e) { 1095 var input = this; 1096 mouseEnter = !0, document.activeElement !== input && opts.showMaskOnHover && input.inputmask._valueGet() !== getBuffer().join("") && writeBuffer(input, getBuffer()); 1097 } 1098 function submitEvent(e) { 1099 undoValue !== getBuffer().join("") && $el.trigger("change"), opts.clearMaskOnLostFocus && -1 === getLastValidPosition() && el.inputmask._valueGet && el.inputmask._valueGet() === getBufferTemplate().join("") && el.inputmask._valueSet(""), 1100 opts.removeMaskOnSubmit && (el.inputmask._valueSet(el.inputmask.unmaskedvalue(), !0), 1101 setTimeout(function() { 1102 writeBuffer(el, getBuffer()); 1103 }, 0)); 1104 } 1105 function resetEvent(e) { 1106 setTimeout(function() { 1107 $el.trigger("setvalue"); 1108 }, 0); 1109 } 1110 function mask(elem) { 1111 if (el = elem, $el = $(el), opts.showTooltip && (el.title = opts.tooltip || getMaskSet().mask), 1112 ("rtl" === el.dir || opts.rightAlign) && (el.style.textAlign = "right"), ("rtl" === el.dir || opts.numericInput) && (el.dir = "ltr", 1113 el.removeAttribute("dir"), el.inputmask.isRTL = !0, isRTL = !0), EventRuler.off(el), 1114 patchValueProperty(el), isElementTypeSupported(el, opts) && (EventRuler.on(el, "submit", submitEvent), 1115 EventRuler.on(el, "reset", resetEvent), EventRuler.on(el, "mouseenter", mouseenterEvent), 1116 EventRuler.on(el, "blur", blurEvent), EventRuler.on(el, "focus", focusEvent), EventRuler.on(el, "mouseleave", mouseleaveEvent), 1117 EventRuler.on(el, "click", clickEvent), EventRuler.on(el, "dblclick", dblclickEvent), 1118 EventRuler.on(el, "paste", pasteEvent), EventRuler.on(el, "dragdrop", pasteEvent), 1119 EventRuler.on(el, "drop", pasteEvent), EventRuler.on(el, "cut", cutEvent), EventRuler.on(el, "complete", opts.oncomplete), 1120 EventRuler.on(el, "incomplete", opts.onincomplete), EventRuler.on(el, "cleared", opts.oncleared), 1121 EventRuler.on(el, "keydown", keydownEvent), EventRuler.on(el, "keypress", keypressEvent), 1122 EventRuler.on(el, "input", inputFallBackEvent)), EventRuler.on(el, "setvalue", setValueEvent), 1123 "" !== el.inputmask._valueGet() || opts.clearMaskOnLostFocus === !1 || document.activeElement === el) { 1124 var initialValue = $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(el.inputmask._valueGet(), opts) || el.inputmask._valueGet() : el.inputmask._valueGet(); 1125 checkVal(el, !0, !1, initialValue.split("")); 1126 var buffer = getBuffer().slice(); 1127 undoValue = buffer.join(""), isComplete(buffer) === !1 && opts.clearIncomplete && resetMaskSet(), 1128 opts.clearMaskOnLostFocus && document.activeElement !== el && (-1 === getLastValidPosition() ? buffer = [] : clearOptionalTail(buffer)), 1129 writeBuffer(el, buffer), document.activeElement === el && caret(el, seekNext(getLastValidPosition())); 1130 } 1131 }
1132 var undoValue, el, $el, maxLength, valueBuffer, isRTL = !1, skipKeyPressEvent = !1, skipInputEvent = !1, ignorable = !1, mouseEnter = !0, EventRuler = { 1133 on: function(input, eventName, eventHandler) { 1134 var ev = function(e) { 1135 if (void 0 === this.inputmask && "FORM" !== this.nodeName) { 1136 var imOpts = $.data(this, "_inputmask_opts"); 1137 imOpts ? new Inputmask(imOpts).mask(this) : EventRuler.off(this); 1138 } else { 1139 if ("setvalue" === e.type || !(this.disabled || this.readOnly && !("keydown" === e.type && e.ctrlKey && 67 === e.keyCode || opts.tabThrough === !1 && e.keyCode === Inputmask.keyCode.TAB))) { 1140 switch (e.type) { 1141 case "input": 1142 if (skipInputEvent === !0) return skipInputEvent = !1, e.preventDefault(); 1143 break; 1144 1145 case "keydown": 1146 skipKeyPressEvent = !1, skipInputEvent = !1; 1147 break; 1148 1149 case "keypress": 1150 if (skipKeyPressEvent === !0) return e.preventDefault(); 1151 skipKeyPressEvent = !0; 1152 break; 1153 1154 case "click": 1155 if (iemobile) { 1156 var that = this; 1157 return setTimeout(function() { 1158 eventHandler.apply(that, arguments); 1159 }, 0), !1; 1160 } 1161 } 1162 var returnVal = eventHandler.apply(this, arguments); 1163 return returnVal === !1 && (e.preventDefault(), e.stopPropagation()), returnVal; 1164 } 1165 e.preventDefault(); 1166 } 1167 }; 1168 input.inputmask.events[eventName] = input.inputmask.events[eventName] || [], input.inputmask.events[eventName].push(ev), 1169 -1 !== $.inArray(eventName, [ "submit", "reset" ]) ? null != input.form && $(input.form).on(eventName, ev) : $(input).on(eventName, ev); 1170 }, 1171 off: function(input, event) { 1172 if (input.inputmask && input.inputmask.events) { 1173 var events; 1174 event ? (events = [], events[event] = input.inputmask.events[event]) : events = input.inputmask.events, 1175 $.each(events, function(eventName, evArr) { 1176 for (;evArr.length > 0; ) { 1177 var ev = evArr.pop(); 1178 -1 !== $.inArray(eventName, [ "submit", "reset" ]) ? null != input.form && $(input.form).off(eventName, ev) : $(input).off(eventName, ev); 1179 } 1180 delete input.inputmask.events[eventName]; 1181 }); 1182 } 1183 } 1184 }; 1185 if (void 0 !== actionObj) switch (actionObj.action) { 1186 case "isComplete": 1187 return el = actionObj.el, isComplete(getBuffer()); 1188 1189 case "unmaskedvalue": 1190 return el = actionObj.el, void 0 !== el && void 0 !== el.inputmask ? (maskset = el.inputmask.maskset, 1191 opts = el.inputmask.opts, isRTL = el.inputmask.isRTL) : (valueBuffer = actionObj.value, 1192 opts.numericInput && (isRTL = !0), valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(valueBuffer, opts) || valueBuffer : valueBuffer).split(""), 1193 checkVal(void 0, !1, !1, isRTL ? valueBuffer.reverse() : valueBuffer), $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite(void 0, getBuffer(), 0, opts)), 1194 unmaskedvalue(el); 1195 1196 case "mask": 1197 el = actionObj.el, maskset = el.inputmask.maskset, opts = el.inputmask.opts, isRTL = el.inputmask.isRTL, 1198 undoValue = getBuffer().join(""), mask(el); 1199 break; 1200 1201 case "format": 1202 return opts.numericInput && (isRTL = !0), valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(actionObj.value, opts) || actionObj.value : actionObj.value).split(""), 1203 checkVal(void 0, !1, !1, isRTL ? valueBuffer.reverse() : valueBuffer), $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite(void 0, getBuffer(), 0, opts), 1204 actionObj.metadata ? { 1205 value: isRTL ? getBuffer().slice().reverse().join("") : getBuffer().join(""), 1206 metadata: maskScope({ 1207 action: "getmetadata" 1208 }, maskset, opts) 1209 } : isRTL ? getBuffer().slice().reverse().join("") : getBuffer().join(""); 1210 1211 case "isValid": 1212 opts.numericInput && (isRTL = !0), actionObj.value ? (valueBuffer = actionObj.value.split(""), 1213 checkVal(void 0, !1, !0, isRTL ? valueBuffer.reverse() : valueBuffer)) : actionObj.value = getBuffer().join(""); 1214 for (var buffer = getBuffer(), rl = determineLastRequiredPosition(), lmib = buffer.length - 1; lmib > rl && !isMask(lmib); lmib--) ; 1215 return buffer.splice(rl, lmib + 1 - rl), isComplete(buffer) && actionObj.value === getBuffer().join(""); 1216 1217 case "getemptymask": 1218 return getBufferTemplate().join(""); 1219 1220 case "remove": 1221 el = actionObj.el, $el = $(el), maskset = el.inputmask.maskset, opts = el.inputmask.opts, 1222 el.inputmask._valueSet(unmaskedvalue(el)), EventRuler.off(el); 1223 var valueProperty;
1224 Object.getOwnPropertyDescriptor && Object.getPrototypeOf ? (valueProperty = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), "value"), 1225 valueProperty && el.inputmask.__valueGet && Object.defineProperty(el, "value", { 1226 get: el.inputmask.__valueGet, 1227 set: el.inputmask.__valueSet, 1228 configurable: !0 1229 })) : document.__lookupGetter__ && el.__lookupGetter__("value") && el.inputmask.__valueGet && (el.__defineGetter__("value", el.inputmask.__valueGet), 1230 el.__defineSetter__("value", el.inputmask.__valueSet)), el.inputmask = void 0; 1231 break; 1232 1233 case "getmetadata": 1234 if ($.isArray(maskset.metadata)) { 1235 for (var alternation, lvp = getLastValidPosition(void 0, !0), firstAlt = lvp; firstAlt >= 0; firstAlt--) if (getMaskSet().validPositions[firstAlt] && void 0 !== getMaskSet().validPositions[firstAlt].alternation) { 1236 alternation = getMaskSet().validPositions[firstAlt].alternation; 1237 break; 1238 } 1239 return void 0 !== alternation ? maskset.metadata[getMaskSet().validPositions[firstAlt].locator[alternation]] : []; 1240 } 1241 return maskset.metadata; 1242 } 1243 } 1244 Inputmask.prototype = { 1245 defaults: { 1246 placeholder: "_", 1247 optionalmarker: { 1248 start: "[", 1249 end: "]" 1250 }, 1251 quantifiermarker: { 1252 start: "{", 1253 end: "}" 1254 }, 1255 groupmarker: { 1256 start: "(", 1257 end: ")" 1258 }, 1259 alternatormarker: "|", 1260 escapeChar: "\\", 1261 mask: null, 1262 oncomplete: $.noop, 1263 onincomplete: $.noop, 1264 oncleared: $.noop, 1265 repeat: 0, 1266 greedy: !0, 1267 autoUnmask: !1, 1268 removeMaskOnSubmit: !1, 1269 clearMaskOnLostFocus: !0, 1270 insertMode: !0, 1271 clearIncomplete: !1, 1272 aliases: {}, 1273 alias: null, 1274 onKeyDown: $.noop, 1275 onBeforeMask: null, 1276 onBeforePaste: function(pastedValue, opts) { 1277 return $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(pastedValue, opts) : pastedValue; 1278 }, 1279 onBeforeWrite: null, 1280 onUnMask: null, 1281 showMaskOnFocus: !0, 1282 showMaskOnHover: !0, 1283 onKeyValidation: $.noop, 1284 skipOptionalPartCharacter: " ", 1285 showTooltip: !1, 1286 tooltip: void 0, 1287 numericInput: !1, 1288 rightAlign: !1, 1289 undoOnEscape: !0, 1290 radixPoint: "", 1291 radixPointDefinitionSymbol: void 0, 1292 groupSeparator: "", 1293 radixFocus: !1, 1294 nojumps: !1, 1295 nojumpsThreshold: 0, 1296 keepStatic: null, 1297 positionCaretOnTab: !1, 1298 tabThrough: !1, 1299 supportsInputType: [ "text", "tel", "password" ], 1300 definitions: { 1301 "9": { 1302 validator: "[0-9]", 1303 cardinality: 1, 1304 definitionSymbol: "*" 1305 }, 1306 a: { 1307 validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]", 1308 cardinality: 1, 1309 definitionSymbol: "*" 1310 }, 1311 "*": { 1312 validator: "[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]", 1313 cardinality: 1 1314 } 1315 }, 1316 ignorables: [ 8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123 ], 1317 isComplete: null, 1318 canClearPosition: $.noop, 1319 postValidation: null, 1320 staticDefinitionSymbol: void 0, 1321 jitMasking: !1, 1322 nullable: !0 1323 }, 1324 masksCache: {}, 1325 mask: function(elems) { 1326 var that = this; 1327 return "string" == typeof elems && (elems = document.getElementById(elems) || document.querySelectorAll(elems)), 1328 elems = elems.nodeName ? [ elems ] : elems, $.each(elems, function(ndx, el) { 1329 var scopedOpts = $.extend(!0, {}, that.opts); 1330 importAttributeOptions(el, scopedOpts, $.extend(!0, {}, that.userOptions)); 1331 var maskset = generateMaskSet(scopedOpts, that.noMasksCache); 1332 void 0 !== maskset && (void 0 !== el.inputmask && el.inputmask.remove(), el.inputmask = new Inputmask(), 1333 el.inputmask.opts = scopedOpts, el.inputmask.noMasksCache = that.noMasksCache, el.
1333inputmask.userOptions = $.extend(!0, {}, that.userOptions), 1334 el.inputmask.el = el, el.inputmask.maskset = maskset, el.inputmask.isRTL = !1, $.data(el, "_inputmask_opts", scopedOpts), 1335 maskScope({ 1336 action: "mask", 1337 el: el 1338 })); 1339 }), elems && elems[0] ? elems[0].inputmask || this : this; 1340 }, 1341 option: function(options) { 1342 return "string" == typeof options ? this.opts[options] : "object" == typeof options ? ($.extend(this.opts, options), 1343 $.extend(this.userOptions, options), this.el && (void 0 !== options.mask || void 0 !== options.alias ? this.mask(this.el) : ($.data(this.el, "_inputmask_opts", this.opts), 1344 maskScope({ 1345 action: "mask", 1346 el: this.el 1347 }))), this) : void 0; 1348 }, 1349 unmaskedvalue: function(value) { 1350 return maskScope({ 1351 action: "unmaskedvalue", 1352 el: this.el, 1353 value: value 1354 }, this.el && this.el.inputmask ? this.el.inputmask.maskset : generateMaskSet(this.opts, this.noMasksCache), this.opts); 1355 }, 1356 remove: function() { 1357 return this.el ? (maskScope({ 1358 action: "remove", 1359 el: this.el 1360 }), this.el.inputmask = void 0, this.el) : void 0; 1361 }, 1362 getemptymask: function() { 1363 return maskScope({ 1364 action: "getemptymask" 1365 }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts); 1366 }, 1367 hasMaskedValue: function() { 1368 return !this.opts.autoUnmask; 1369 }, 1370 isComplete: function() { 1371 return maskScope({ 1372 action: "isComplete",
1373 el: this.el 1374 }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts); 1375 }, 1376 getmetadata: function() { 1377 return maskScope({ 1378 action: "getmetadata" 1379 }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts); 1380 }, 1381 isValid: function(value) { 1382 return maskScope({ 1383 action: "isValid", 1384 value: value 1385 }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts); 1386 }, 1387 format: function(value, metadata) { 1388 return maskScope({ 1389 action: "format", 1390 value: value, 1391 metadata: metadata 1392 }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts); 1393 } 1394 }, Inputmask.extendDefaults = function(options) { 1395 $.extend(!0, Inputmask.prototype.defaults, options); 1396 }, Inputmask.extendDefinitions = function(definition) { 1397 $.extend(!0, Inputmask.prototype.defaults.definitions, definition); 1398 }, Inputmask.extendAliases = function(alias) { 1399 $.extend(!0, Inputmask.prototype.defaults.aliases, alias); 1400 }, Inputmask.format = function(value, options, metadata) { 1401 return Inputmask(options).format(value, metadata); 1402 }, Inputmask.unmask = function(value, options) { 1403 return Inputmask(options).unmaskedvalue(value); 1404 }, Inputmask.isValid = function(value, options) { 1405 return Inputmask(options).isValid(value); 1406 }, Inputmask.remove = function(elems) { 1407 $.each(elems, function(ndx, el) { 1408 el.inputmask && el.inputmask.remove(); 1409 }); 1410 }, Inputmask.escapeRegex = function(str) { 1411 var specials = [ "/", ".", "*", "+", "?", "|", "(", ")", "[", "]", "{", "}", "\\", "$", "^" ]; 1412 return str.replace(new RegExp("(\\" + specials.join("|\\") + ")", "gim"), "\\$1"); 1413 }, Inputmask.keyCode = { 1414 ALT: 18, 1415 BACKSPACE: 8, 1416 BACKSPACE_SAFARI: 127, 1417 CAPS_LOCK: 20, 1418 COMMA: 188, 1419 COMMAND: 91, 1420 COMMAND_LEFT: 91, 1421 COMMAND_RIGHT: 93, 1422 CONTROL: 17, 1423 DELETE: 46, 1424 DOWN: 40, 1425 END: 35, 1426 ENTER: 13, 1427 ESCAPE: 27, 1428 HOME: 36, 1429 INSERT: 45, 1430 LEFT: 37, 1431 MENU: 93, 1432 NUMPAD_ADD: 107, 1433 NUMPAD_DECIMAL: 110, 1434 NUMPAD_DIVIDE: 111, 1435 NUMPAD_ENTER: 108, 1436 NUMPAD_MULTIPLY: 106, 1437 NUMPAD_SUBTRACT: 109, 1438 PAGE_DOWN: 34, 1439 PAGE_UP: 33, 1440 PERIOD: 190, 1441 RIGHT: 39, 1442 SHIFT: 16, 1443 SPACE: 32, 1444 TAB: 9, 1445 UP: 38, 1446 WINDOWS: 91, 1447 X: 88 1448 }; 1449 var ua = navigator.userAgent, mobile = /mobile/i.test(ua), iemobile = /iemobile/i.test(ua), iphone = /iphone/i.test(ua) && !iemobile; 1450 /android.*safari.*/i.test(ua) && !iemobile; 1451 return window.Inputmask = Inputmask, Inputmask; 1452}(jQuery), function($, Inputmask) { 1453 return void 0 === $.fn.inputmask && ($.fn.inputmask = function(fn, options) { 1454 var nptmask, input = this[0]; 1455 if (void 0 === options && (options = {}), "string" == typeof fn) switch (fn) { 1456 case "unmaskedvalue": 1457 return input && input.inputmask ? input.inputmask.unmaskedvalue() : $(input).val(); 1458 1459 case "remove": 1460 return this.each(function() { 1461 this.inputmask && this.inputmask.remove(); 1462 }); 1463 1464 case "getemptymask": 1465 return input && input.inputmask ? input.inputmask.getemptymask() : ""; 1466 1467 case "hasMaskedValue": 1468 return input && input.inputmask ? input.inputmask.hasMaskedValue() : !1; 1469 1470 case "isComplete": 1471 return input && input.inputmask ? input.inputmask.isComplete() : !0; 1472 1473 case "getmetadata": 1474 return input && input.inputmask ? input.inputmask.getmetadata() : void 0; 1475 1476 case "setvalue": 1477 $(input).val(options), input && void 0 !== input.inputmask && $(input).triggerHandler("setvalue"); 1478 break; 1479 1480 case "option": 1481 if ("string" != typeof options) return this.each(function() { 1482 return void 0 !== this.inputmask ? this.inputmask.option(options) : void 0; 1483 }); 1484 if (input && void 0 !== input.inputmask) return input.inputmask.option(options); 1485 break; 1486 1487 default: 1488 return options.alias = fn, nptmask = new Inputmask(options), this.each(function() { 1489 nptmask.mask(this); 1490 }); 1491 } else { 1492 if ("object" == typeof fn) return nptmask = new Inputmask(fn), void 0 === fn.mask && void 0 === fn.alias ? this.each(function() { 1493 return void 0 !== this.inputmask ? this.inputmask.option(fn) : void nptmask.mask(this); 1494 }) : this.each(function() { 1495 nptmask.mask(this); 1496 }); 1497 if (void 0 === fn) return this.each(function() { 1498 nptmask = new Inputmask(options), nptmask.mask(this); 1499 }); 1500 } 1501 }), $.fn.inputmask; 1502}(jQuery, Inputmask), function($, Inputmask) { 1503 return Inputmask.extendDefinitions({ 1504 h: { 1505 validator: "[01][0-9]|2[0-3]", 1506 cardinality: 2, 1507 prevalidator: [ { 1508 validator: "[0-2]", 1509 cardinality: 1 1510 } ] 1511 }, 1512 s: { 1513 validator: "[0-5][0-9]", 1514 cardinality: 2, 1515 prevalidator: [ { 1516 validator: "[0-5]", 1517 cardinality: 1 1518 } ] 1519 }, 1520 d: { 1521 validator: "0[1-9]|[12][0-9]|3[01]", 1522 cardinality: 2, 1523 prevalidator: [ { 1524 validator: "[0-3]", 1525 cardinality: 1 1526 } ] 1527 }, 1528 m: { 1529 validator: "0[1-9]|1[012]", 1530 cardinality: 2, 1531 prevalidator: [ { 1532 validator: "[01]", 1533 cardinality: 1 1534 } ] 1535 }, 1536 y: { 1537 validator: "(19|20)\\d{2}", 1538 cardinality: 4, 1539 prevalidator: [ { 1540 validator: "[12]", 1541 cardinality: 1 1542 }, { 1543 validator: "(19|20)", 1544 cardinality: 2 1545 }, { 1546 validator: "(19|20)\\d", 1547 cardinality: 3 1548 } ] 1549 } 1550 }), Inputmask.extendAliases({ 1551 "dd/mm/yyyy": { 1552 mask: "1/2/y", 1553 placeholder: "jj/mm/aaaa", 1554 regex: { 1555 val1pre: new RegExp("[0-3]"),
1556 val1: new RegExp("0[1-9]|[12][0-9]|3[01]"), 1557 val2pre: function(separator) { 1558 var escapedSeparator = Inputmask.escapeRegex.call(this, separator); 1559 return new RegExp("((0[1-9]|[12][0-9]|3[01])" + escapedSeparator + "[01])"); 1560 }, 1561 val2: function(separator) { 1562 var escapedSeparator = Inputmask.escapeRegex.call(this, separator); 1563 return new RegExp("((0[1-9]|[12][0-9])" + escapedSeparator + "(0[1-9]|1[012]))|(30" + escapedSeparator + "(0[13-9]|1[012]))|(31" + escapedSeparator + "(0[13578]|1[02]))"); 1564 } 1565 }, 1566 leapday: "29/02/", 1567 separator: "/", 1568 yearrange: { 1569 minyear: 1900, 1570 maxyear: 2099 1571 }, 1572 isInYearRange: function(chrs, minyear, maxyear) { 1573 if (isNaN(chrs)) return !1; 1574 var enteredyear = parseInt(chrs.concat(minyear.toString().slice(chrs.length))), enteredyear2 = parseInt(chrs.concat(maxyear.toString().slice(chrs.length))); 1575 return (isNaN(enteredyear) ? !1 : enteredyear >= minyear && maxyear >= enteredyear) || (isNaN(enteredyear2) ? !1 : enteredyear2 >= minyear && maxyear >= enteredyear2); 1576 }, 1577 determinebaseyear: function(minyear, maxyear, hint) { 1578 var currentyear = new Date().getFullYear(); 1579 if (minyear > currentyear) return minyear; 1580 if (currentyear > maxyear) { 1581 for (var maxYearPrefix = maxyear.toString().slice(0, 2), maxYearPostfix = maxyear.toString().slice(2, 4); maxYearPrefix + hint > maxyear; ) maxYearPrefix--; 1582 var maxxYear = maxYearPrefix + maxYearPostfix; 1583 return minyear > maxxYear ? minyear : maxxYear; 1584 } 1585 if (currentyear >= minyear && maxyear >= currentyear) { 1586 for (var currentYearPrefix = currentyear.toString().slice(0, 2); currentYearPrefix + hint > maxyear; ) currentYearPrefix--; 1587 var currentYearAndHint = currentYearPrefix + hint; 1588 return minyear > currentYearAndHint ? minyear : currentYearAndHint; 1589 } 1590 return currentyear; 1591 }, 1592 onKeyDown: function(e, buffer, caretPos, opts) { 1593 var $input = $(this); 1594 if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) { 1595 var today = new Date(); 1596 $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString()), 1597 $input.trigger("setvalue"); 1598 } 1599 }, 1600 getFrontValue: function(mask, buffer, opts) { 1601 for (var start = 0, length = 0, i = 0; i < mask.length && "2" !== mask.charAt(i); i++) { 1602 var definition = opts.definitions[mask.charAt(i)];
1603 definition ? (start += length, length = definition.cardinality) : length++; 1604 } 1605 return buffer.join("").substr(start, length); 1606 }, 1607 definitions: { 1608 "1": { 1609 validator: function(chrs, maskset, pos, strict, opts) { 1610 var isValid = opts.regex.val1.test(chrs); 1611 return strict || isValid || chrs.charAt(1) !== opts.separator && -1 === "-./".indexOf(chrs.charAt(1)) || !(isValid = opts.regex.val1.test("0" + chrs.charAt(0))) ? isValid : (maskset.buffer[pos - 1] = "0", 1612 { 1613 refreshFromBuffer: { 1614 start: pos - 1, 1615 end: pos 1616 }, 1617 pos: pos, 1618 c: chrs.charAt(0) 1619 }); 1620 }, 1621 cardinality: 2, 1622 prevalidator: [ { 1623 validator: function(chrs, maskset, pos, strict, opts) { 1624 var pchrs = chrs; 1625 isNaN(maskset.buffer[pos + 1]) || (pchrs += maskset.buffer[pos + 1]); 1626 var isValid = 1 === pchrs.length ? opts.regex.val1pre.test(pchrs) : opts.regex.val1.test(pchrs); 1627 if (!strict && !isValid) { 1628 if (isValid = opts.regex.val1.test(chrs + "0")) return maskset.buffer[pos] = chrs, 1629 maskset.buffer[++pos] = "0", { 1630 pos: pos, 1631 c: "0" 1632 }; 1633 if (isValid = opts.regex.val1.test("0" + chrs)) return maskset.buffer[pos] = "0", 1634 pos++, { 1635 pos: pos 1636 }; 1637 } 1638 return isValid; 1639 }, 1640 cardinality: 1 1641 } ] 1642 }, 1643 "2": { 1644 validator: function(chrs, maskset, pos, strict, opts) { 1645 var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts); 1646 -1 !== frontValue.indexOf(opts.placeholder[0]) && (frontValue = "01" + opts.separator); 1647 var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs); 1648 if (!strict && !isValid && (chrs.charAt(1) === opts.separator || -1 !== "-./".indexOf(chrs.charAt(1))) && (isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs.charAt(0)))) return maskset.buffer[pos - 1] = "0", 1649 { 1650 refreshFromBuffer: { 1651 start: pos - 1, 1652 end: pos 1653 }, 1654 pos: pos, 1655 c: chrs.charAt(0) 1656 }; 1657 if (opts.mask.indexOf("2") === opts.mask.length - 1 && isValid) { 1658 var dayMonthValue = maskset.buffer.join("").substr(4, 4) + chrs; 1659 if (dayMonthValue !== opts.leapday) return !0; 1660 var year = parseInt(maskset.buffer.join("").substr(0, 4), 10); 1661 return year % 4 === 0 ? year % 100 === 0 ? year % 400 === 0 ? !0 : !1 : !0 : !1; 1662 } 1663 return isValid; 1664 }, 1665 cardinality: 2, 1666 prevalidator: [ { 1667 validator: function(chrs, maskset, pos, strict, opts) { 1668 isNaN(maskset.buffer[pos + 1]) || (chrs += maskset.buffer[pos + 1]); 1669 var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts); 1670 -1 !== frontValue.indexOf(opts.placeholder[0]) && (frontValue = "01" + opts.separator); 1671 var isValid = 1 === chrs.length ? opts.regex.val2pre(opts.separator).test(frontValue + chrs) : opts.regex.val2(opts.separator).test(frontValue + chrs); 1672 return strict || isValid || !(isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs)) ? isValid : (maskset.buffer[pos] = "0", 1673 pos++, { 1674 pos: pos 1675 }); 1676 }, 1677 cardinality: 1 1678 } ] 1679 }, 1680 y: { 1681 validator: function(chrs, maskset, pos, strict, opts) { 1682 if (opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) { 1683 var dayMonthValue = maskset.buffer.join("").substr(0, 6); 1684 if (dayMonthValue !== opts.leapday) return !0; 1685 var year = parseInt(chrs, 10); 1686 return year % 4 === 0 ? year % 100 === 0 ? year % 400 === 0 ? !0 : !1 : !0 : !1; 1687 } 1688 return !1; 1689 }, 1690 cardinality: 4, 1691 prevalidator: [ { 1692 validator: function(chrs, maskset, pos, strict, opts) { 1693 var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear); 1694 if (!strict && !isValid) { 1695 var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 1); 1696 if (isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(0), 1697 { 1698 pos: pos 1699 }; 1700 if (yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 2), 1701 isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(0), 1702 maskset.buffer[pos++] = yearPrefix.charAt(1), { 1703 pos: pos 1704 }; 1705 } 1706 return isValid; 1707 }, 1708 cardinality: 1 1709 }, { 1710 validator: function(chrs, maskset, pos, strict, opts) { 1711 var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear); 1712 if (!strict && !isValid) { 1713 var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2); 1714 if (isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(1), 1715 { 1716 pos: pos 1717 }; 1718 if (yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2), 1719 opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) { 1720 var dayMonthValue = maskset.buffer.join("").substr(0, 6); 1721 if (dayMonthValue !== opts.leapday) isValid = !0; else { 1722 var year = parseInt(chrs, 10); 1723 isValid = year % 4 === 0 ? year % 100 === 0 ? year % 400 === 0 ? !0 : !1 : !0 : !1; 1724 } 1725 } else isValid = !1; 1726 if (isValid) return maskset.buffer[pos - 1] = yearPrefix.charAt(0), maskset.buffer[pos++] = yearPrefix.charAt(1), 1727 maskset.buffer[pos++] = chrs.charAt(0), { 1728 refreshFromBuffer: { 1729 start: pos - 3, 1730 end: pos 1731 }, 1732 pos: pos 1733 }; 1734 } 1735 return isValid; 1736 }, 1737 cardinality: 2 1738 }, { 1739 validator: function(chrs, maskset, pos, strict, opts) { 1740 return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear); 1741 }, 1742 cardinality: 3 1743 } ] 1744 } 1745 }, 1746 insertMode: !1, 1747 autoUnmask: !1 1748 }, 1749 "mm/dd/yyyy": { 1750 placeholder: "mm/dd/yyyy", 1751 alias: "dd/mm/yyyy", 1752 regex: { 1753 val2pre: function(separator) { 1754 var escapedSeparator = Inputmask.escapeRegex.call(this, separator); 1755 return new RegExp("((0[13-9]|1[012])" + escapedSeparator + "[0-3])|(02" + escapedSeparator + "[0-2])"); 1756 }, 1757 val2: function(separator) { 1758 var escapedSeparator = Inputmask.escapeRegex.call(this, separator); 1759 return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[13-9]|1[012])" + escapedSeparator + "30)|((0[13578]|1[02])" + escapedSeparator + "31)"); 1760 }, 1761 val1pre: new RegExp("[01]"),
vendor: 6,847 bytes, lines 1762-1920
1762 val1: new RegExp("0[1-9]|1[012]") 1763 }, 1764 leapday: "02/29/", 1765 onKeyDown: function(e, buffer, caretPos, opts) { 1766 var $input = $(this); 1767 if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) { 1768 var today = new Date(); 1769 $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()), 1770 $input.trigger("setvalue"); 1771 } 1772 } 1773 }, 1774 "yyyy/mm/dd": { 1775 mask: "y/1/2", 1776 placeholder: "yyyy/mm/dd", 1777 alias: "mm/dd/yyyy", 1778 leapday: "/02/29", 1779 onKeyDown: function(e, buffer, caretPos, opts) { 1780 var $input = $(this); 1781 if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) { 1782 var today = new Date(); 1783 $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString()), 1784 $input.trigger("setvalue"); 1785 } 1786 } 1787 }, 1788 "dd.mm.yyyy": { 1789 mask: "1.2.y", 1790 placeholder: "dd.mm.yyyy", 1791 leapday: "29.02.", 1792 separator: ".", 1793 alias: "dd/mm/yyyy" 1794 }, 1795 "dd-mm-yyyy": { 1796 mask: "1-2-y", 1797 placeholder: "dd-mm-yyyy", 1798 leapday: "29-02-", 1799 separator: "-", 1800 alias: "dd/mm/yyyy" 1801 }, 1802 "mm.dd.yyyy": { 1803 mask: "1.2.y", 1804 placeholder: "mm.dd.yyyy", 1805 leapday: "02.29.", 1806 separator: ".", 1807 alias: "mm/dd/yyyy" 1808 }, 1809 "mm-dd-yyyy": { 1810 mask: "1-2-y", 1811 placeholder: "mm-dd-yyyy", 1812 leapday: "02-29-", 1813 separator: "-", 1814 alias: "mm/dd/yyyy" 1815 }, 1816 "yyyy.mm.dd": { 1817 mask: "y.1.2", 1818 placeholder: "yyyy.mm.dd", 1819 leapday: ".02.29", 1820 separator: ".", 1821 alias: "yyyy/mm/dd" 1822 }, 1823 "yyyy-mm-dd": { 1824 mask: "y-1-2", 1825 placeholder: "yyyy-mm-dd", 1826 leapday: "-02-29", 1827 separator: "-", 1828 alias: "yyyy/mm/dd" 1829 }, 1830 datetime: { 1831 mask: "1/2/y h:s", 1832 placeholder: "dd/mm/yyyy hh:mm", 1833 alias: "dd/mm/yyyy", 1834 regex: { 1835 hrspre: new RegExp("[012]"), 1836 hrs24: new RegExp("2[0-4]|1[3-9]"), 1837 hrs: new RegExp("[01][0-9]|2[0-4]"), 1838 ampm: new RegExp("^[a|p|A|P][m|M]"), 1839 mspre: new RegExp("[0-5]"), 1840 ms: new RegExp("[0-5][0-9]") 1841 }, 1842 timeseparator: ":", 1843 hourFormat: "24", 1844 definitions: { 1845 h: { 1846 validator: function(chrs, maskset, pos, strict, opts) { 1847 if ("24" === opts.hourFormat && 24 === parseInt(chrs, 10)) return maskset.buffer[pos - 1] = "0", 1848 maskset.buffer[pos] = "0", { 1849 refreshFromBuffer: { 1850 start: pos - 1, 1851 end: pos 1852 }, 1853 c: "0" 1854 }; 1855 var isValid = opts.regex.hrs.test(chrs); 1856 if (!strict && !isValid && (chrs.charAt(1) === opts.timeseparator || -1 !== "-.:".indexOf(chrs.charAt(1))) && (isValid = opts.regex.hrs.test("0" + chrs.charAt(0)))) return maskset.buffer[pos - 1] = "0", 1857 maskset.buffer[pos] = chrs.charAt(0), pos++, { 1858 refreshFromBuffer: { 1859 start: pos - 2, 1860 end: pos 1861 }, 1862 pos: pos, 1863 c: opts.timeseparator 1864 }; 1865 if (isValid && "24" !== opts.hourFormat && opts.regex.hrs24.test(chrs)) { 1866 var tmp = parseInt(chrs, 10); 1867 return 24 === tmp ? (maskset.buffer[pos + 5] = "a", maskset.buffer[pos + 6] = "m") : (maskset.buffer[pos + 5] = "p", 1868 maskset.buffer[pos + 6] = "m"), tmp -= 12, 10 > tmp ? (maskset.buffer[pos] = tmp.toString(), 1869 maskset.buffer[pos - 1] = "0") : (maskset.buffer[pos] = tmp.toString().charAt(1), 1870 maskset.buffer[pos - 1] = tmp.toString().charAt(0)), { 1871 refreshFromBuffer: { 1872 start: pos - 1, 1873 end: pos + 6 1874 }, 1875 c: maskset.buffer[pos] 1876 }; 1877 } 1878 return isValid; 1879 }, 1880 cardinality: 2, 1881 prevalidator: [ { 1882 validator: function(chrs, maskset, pos, strict, opts) { 1883 var isValid = opts.regex.hrspre.test(chrs); 1884 return strict || isValid || !(isValid = opts.regex.hrs.test("0" + chrs)) ? isValid : (maskset.buffer[pos] = "0", 1885 pos++, { 1886 pos: pos 1887 }); 1888 }, 1889 cardinality: 1 1890 } ] 1891 }, 1892 s: { 1893 validator: "[0-5][0-9]", 1894 cardinality: 2, 1895 prevalidator: [ { 1896 validator: function(chrs, maskset, pos, strict, opts) { 1897 var isValid = opts.regex.mspre.test(chrs); 1898 return strict || isValid || !(isValid = opts.regex.ms.test("0" + chrs)) ? isValid : (maskset.buffer[pos] = "0", 1899 pos++, { 1900 pos: pos 1901 }); 1902 }, 1903 cardinality: 1 1904 } ] 1905 }, 1906 t: { 1907 validator: function(chrs, maskset, pos, strict, opts) { 1908 return opts.regex.ampm.test(chrs + "m"); 1909 }, 1910 casing: "lower", 1911 cardinality: 1 1912 } 1913 }, 1914 insertMode: !1, 1915 autoUnmask: !1 1916 }, 1917 datetime12: { 1918 mask: "1/2/y h:s t\\m", 1919 placeholder: "dd/mm/yyyy hh:mm xm", 1920 alias: "datetime",
vendor: 5,904 bytes, lines 1921-2074
1921 hourFormat: "12" 1922 }, 1923 "mm/dd/yyyy hh:mm xm": { 1924 mask: "1/2/y h:s t\\m", 1925 placeholder: "mm/dd/yyyy hh:mm xm", 1926 alias: "datetime12", 1927 regex: { 1928 val2pre: function(separator) { 1929 var escapedSeparator = Inputmask.escapeRegex.call(this, separator); 1930 return new RegExp("((0[13-9]|1[012])" + escapedSeparator + "[0-3])|(02" + escapedSeparator + "[0-2])"); 1931 }, 1932 val2: function(separator) { 1933 var escapedSeparator = Inputmask.escapeRegex.call(this, separator); 1934 return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[13-9]|1[012])" + escapedSeparator + "30)|((0[13578]|1[02])" + escapedSeparator + "31)"); 1935 }, 1936 val1pre: new RegExp("[01]"), 1937 val1: new RegExp("0[1-9]|1[012]") 1938 }, 1939 leapday: "02/29/", 1940 onKeyDown: function(e, buffer, caretPos, opts) { 1941 var $input = $(this); 1942 if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) { 1943 var today = new Date(); 1944 $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()), 1945 $input.trigger("setvalue"); 1946 } 1947 } 1948 }, 1949 "hh:mm t": { 1950 mask: "h:s t\\m", 1951 placeholder: "hh:mm xm", 1952 alias: "datetime", 1953 hourFormat: "12" 1954 }, 1955 "h:s t": { 1956 mask: "h:s t\\m", 1957 placeholder: "hh:mm xm", 1958 alias: "datetime", 1959 hourFormat: "12" 1960 }, 1961 "hh:mm:ss": { 1962 mask: "h:s:s", 1963 placeholder: "hh:mm:ss", 1964 alias: "datetime", 1965 autoUnmask: !1 1966 }, 1967 "hh:mm": { 1968 mask: "h:s", 1969 placeholder: "hh:mm", 1970 alias: "datetime", 1971 autoUnmask: !1 1972 }, 1973 date: { 1974 alias: "dd/mm/yyyy" 1975 }, 1976 "mm/yyyy": { 1977 mask: "1/y", 1978 placeholder: "mm/yyyy", 1979 leapday: "donotuse", 1980 separator: "/", 1981 alias: "mm/dd/yyyy" 1982 }, 1983 shamsi: { 1984 regex: { 1985 val2pre: function(separator) { 1986 var escapedSeparator = Inputmask.escapeRegex.call(this, separator); 1987 return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "[0-3])"); 1988 }, 1989 val2: function(separator) { 1990 var escapedSeparator = Inputmask.escapeRegex.call(this, separator); 1991 return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[1-9]|1[012])" + escapedSeparator + "30)|((0[1-6])" + escapedSeparator + "31)"); 1992 }, 1993 val1pre: new RegExp("[01]"), 1994 val1: new RegExp("0[1-9]|1[012]") 1995 }, 1996 yearrange: { 1997 minyear: 1300, 1998 maxyear: 1499 1999 }, 2000 mask: "y/1/2", 2001 leapday: "/12/30", 2002 placeholder: "yyyy/mm/dd", 2003 alias: "mm/dd/yyyy", 2004 clearIncomplete: !0 2005 } 2006 }), Inputmask; 2007}(jQuery, Inputmask), function($, Inputmask) { 2008 return Inputmask.extendDefinitions({ 2009 A: { 2010 validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]", 2011 cardinality: 1, 2012 casing: "upper" 2013 }, 2014 "&": { 2015 validator: "[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]", 2016 cardinality: 1, 2017 casing: "upper" 2018 }, 2019 "#": { 2020 validator: "[0-9A-Fa-f]", 2021 cardinality: 1, 2022 casing: "upper" 2023 } 2024 }), Inputmask.extendAliases({ 2025 url: { 2026 definitions: { 2027 i: { 2028 validator: ".", 2029 cardinality: 1 2030 } 2031 }, 2032 mask: "(\\http://)|(\\http\\s://)|(ftp://)|(ftp\\s://)i{+}", 2033 insertMode: !1, 2034 autoUnmask: !1 2035 }, 2036 ip: { 2037 mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]", 2038 definitions: { 2039 i: { 2040 validator: function(chrs, maskset, pos, strict, opts) { 2041 return pos - 1 > -1 && "." !== maskset.buffer[pos - 1] ? (chrs = maskset.buffer[pos - 1] + chrs, 2042 chrs = pos - 2 > -1 && "." !== maskset.buffer[pos - 2] ? maskset.buffer[pos - 2] + chrs : "0" + chrs) : chrs = "00" + chrs, 2043 new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs); 2044 }, 2045 cardinality: 1 2046 } 2047 }, 2048 onUnMask: function(maskedValue, unmaskedValue, opts) { 2049 return maskedValue; 2050 } 2051 }, 2052 email: { 2053 mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}[.-{1,63}][.-{1,63}][.-{1,63}]", 2054 greedy: !1, 2055 onBeforePaste: function(pastedValue, opts) { 2056 return pastedValue = pastedValue.toLowerCase(), pastedValue.replace("mailto:", ""); 2057 }, 2058 definitions: { 2059 "*": { 2060 validator: "[0-9A-Za-z!#$%&'*+/=?^_`{|}~-]", 2061 cardinality: 1, 2062 casing: "lower" 2063 }, 2064 "-": { 2065 validator: "[0-9A-Za-z-]", 2066 cardinality: 1, 2067 casing: "lower" 2068 } 2069 }, 2070 onUnMask: function(maskedValue, unmaskedValue, opts) { 2071 return maskedValue; 2072 } 2073 }, 2074 mac: {
2075 mask: "##:##:##:##:##:##" 2076 }, 2077 vin: { 2078 mask: "V{13}9{4}", 2079 definitions: { 2080 V: { 2081 validator: "[A-HJ-NPR-Za-hj-npr-z\\d]", 2082 cardinality: 1, 2083 casing: "upper" 2084 } 2085 }, 2086 clearIncomplete: !0, 2087 autoUnmask: !0 2088 } 2089 }), Inputmask; 2090}(jQuery, Inputmask), function($, Inputmask) { 2091 return Inputmask.extendAliases({ 2092 numeric: { 2093 mask: function(opts) { 2094 function autoEscape(txt) { 2095 for (var escapedTxt = "", i = 0; i < txt.length; i++) escapedTxt += opts.definitions[txt.charAt(i)] || opts.optionalmarker.start === txt.charAt(i) || opts.optionalmarker.end === txt.charAt(i) || opts.quantifiermarker.start === txt.charAt(i) || opts.quantifiermarker.end === txt.charAt(i) || opts.groupmarker.start === txt.charAt(i) || opts.groupmarker.end === txt.charAt(i) || opts.alternatormarker === txt.charAt(i) ? "\\" + txt.charAt(i) : txt.charAt(i); 2096 return escapedTxt; 2097 } 2098 if (0 !== opts.repeat && isNaN(opts.integerDigits) && (opts.integerDigits = opts.repeat), 2099 opts.repeat = 0, opts.groupSeparator === opts.radixPoint && ("." === opts.radixPoint ? opts.groupSeparator = "," : "," === opts.radixPoint ? opts.groupSeparator = "." : opts.groupSeparator = ""), 2100 " " === opts.groupSeparator && (opts.skipOptionalPartCharacter = void 0), opts.autoGroup = opts.autoGroup && "" !== opts.groupSeparator, 2101 opts.autoGroup && ("string" == typeof opts.groupSize && isFinite(opts.groupSize) && (opts.groupSize = parseInt(opts.groupSize)), 2102 isFinite(opts.integerDigits))) { 2103 var seps = Math.floor(opts.integerDigits / opts.groupSize), mod = opts.integerDigits % opts.groupSize; 2104 opts.integerDigits = parseInt(opts.integerDigits) + (0 === mod ? seps - 1 : seps), 2105 opts.integerDigits < 1 && (opts.integerDigits = "*"); 2106 } 2107 opts.placeholder.length > 1 && (opts.placeholder = opts.placeholder.charAt(0)), 2108 opts.radixFocus = opts.radixFocus && "" !== opts.placeholder && opts.integerOptional === !0, 2109 opts.definitions[";"] = opts.definitions["~"], opts.definitions[";"].definitionSymbol = "~", 2110 opts.numericInput === !0 && (opts.radixFocus = !1, opts.digitsOptional = !1, isNaN(opts.digits) && (opts.digits = 2), 2111 opts.decimalProtect = !1); 2112 var mask = autoEscape(opts.prefix); 2113 return mask += "[+]", mask += opts.integerOptional === !0 ? "~{1," + opts.integerDigits + "}" : "~{" + opts.integerDigits + "}", 2114 void 0 !== opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0) && (opts.decimalProtect && (opts.radixPointDefinitionSymbol = ":"), 2115 mask += opts.digitsOptional ? "[" + (opts.decimalProtect ? ":" : opts.radixPoint) + ";{1," + opts.digits + "}]" : (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}"), 2116 mask += "[-]", mask += autoEscape(opts.suffix), opts.greedy = !1, mask; 2117 }, 2118 placeholder: "", 2119 greedy: !1, 2120 digits: "*", 2121 digitsOptional: !0, 2122 radixPoint: ".", 2123 radixFocus: !0, 2124 groupSize: 3, 2125 groupSeparator: "", 2126 autoGroup: !1, 2127 allowPlus: !0, 2128 allowMinus: !0, 2129 negationSymbol: { 2130 front: "-", 2131 back: "" 2132 }, 2133 integerDigits: "+", 2134 integerOptional: !0, 2135 prefix: "", 2136 suffix: "", 2137 rightAlign: !0, 2138 decimalProtect: !0, 2139 min: null, 2140 max: null, 2141 step: 1, 2142 insertMode: !0, 2143 autoUnmask: !1, 2144 unmaskAsNumber: !1, 2145 postFormat: function(buffer, pos, opts) { 2146 opts.numericInput === !0 && (buffer = buffer.reverse(), isFinite(pos) && (pos = buffer.join("").length - pos - 1)); 2147 var i, l, suffixStripped = !1; 2148 buffer.length >= opts.suffix.length && buffer.join("").indexOf(opts.suffix) === buffer.length - opts.suffix.length && (buffer.length = buffer.length - opts.suffix.length, 2149 suffixStripped = !0), pos = pos >= buffer.length ? buffer.length - 1 : pos < opts.prefix.length ? opts.prefix.length : pos; 2150 var needsRefresh = !1, charAtPos = buffer[pos], cbuf = buffer.slice(); 2151 charAtPos === opts.groupSeparator && (cbuf.splice(pos--, 1), charAtPos = cbuf[pos]
2151), 2152 charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back && (cbuf[pos] = "?"); 2153 var bufVal = cbuf.join(""), bufValOrigin = bufVal; 2154 if (bufVal.length > 0 && opts.autoGroup || -1 !== bufVal.indexOf(opts.groupSeparator)) { 2155 var escapedGroupSeparator = Inputmask.escapeRegex(opts.groupSeparator); 2156 needsRefresh = 0 === bufVal.indexOf(opts.groupSeparator), bufVal = bufVal.replace(new RegExp(escapedGroupSeparator, "g"), ""); 2157 var radixSplit = bufVal.split(opts.radixPoint); 2158 if (bufVal = "" === opts.radixPoint ? bufVal : radixSplit[0], bufVal !== opts.prefix + "?0" && bufVal.length >= opts.groupSize + opts.prefix.length) for (var reg = new RegExp("([-+]?[\\d?]+)([\\d?]{" + opts.groupSize + "})"); reg.test(bufVal) && "" !== opts.groupSeparator; ) bufVal = bufVal.replace(reg, "$1" + opts.groupSeparator + "$2"), 2159 bufVal = bufVal.replace(opts.groupSeparator + opts.groupSeparator, opts.groupSeparator); 2160 "" !== opts.radixPoint && radixSplit.length > 1 && (bufVal += opts.radixPoint + radixSplit[1]); 2161 } 2162 for (needsRefresh = bufValOrigin !== bufVal, buffer.length = bufVal.length, i = 0, 2163 l = bufVal.length; l > i; i++) buffer[i] = bufVal.charAt(i); 2164 var newPos = $.inArray("?", buffer); 2165 if (-1 === newPos && (newPos = $.inArray(charAtPos, buffer)), buffer[newPos] = charAtPos, 2166 !needsRefresh && suffixStripped) for (i = 0, l = opts.suffix.length; l > i; i++) buffer.push(opts.suffix.charAt(i)); 2167 return newPos = opts.numericInput && isFinite(pos) ? buffer.join("").length - newPos - 1 : newPos, 2168 opts.numericInput && (buffer = buffer.reverse(), $.inArray(opts.radixPoint, buffer) < newPos && buffer.join("").length - opts.suffix.length !== newPos && (newPos -= 1)), 2169 { 2170 pos: newPos, 2171 refreshFromBuffer: needsRefresh, 2172 buffer: buffer 2173 }; 2174 }, 2175 onBeforeWrite: function(e, buffer, caretPos, opts) { 2176 var rslt; 2177 if (e && ("blur" === e.type || "checkval" === e.type || "keydown" === e.type)) { 2178 var maskedValue = opts.numericInput ? buffer.slice().reverse().join("") : buffer.join(""), processValue = maskedValue.replace(opts.prefix, ""); 2179 processValue = processValue.replace(opts.suffix, ""), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 2180 "," === opts.radixPoint && (processValue = processValue.replace(opts.radixPoint, ".")); 2181 var isNegative = processValue.match(new RegExp("[-" + Inputmask.escapeRegex(opts.negationSymbol.front) + "]", "g")); 2182 if (isNegative = null !== isNegative && 1 === isNegative.length, processValue = processValue.replace(new RegExp("[-" + Inputmask.escapeRegex(opts.negationSymbol.front) + "]", "g"), ""), 2183 processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + "$"), ""), 2184 processValue = processValue === opts.negationSymbol.front ? processValue + "0" : processValue, 2185 "" !== processValue && isFinite(processValue)) { 2186 var floatValue = parseFloat(processValue), signedFloatValue = isNegative ? -1 * floatValue : floatValue; 2187 if (null !== opts.min && isFinite(opts.min) && signedFloatValue < parseFloat(opts.min) ? (floatValue = Math.abs(opts.min), 2188 isNegative = opts.min < 0) : null !== opts.max && isFinite(opts.max) && signedFloatValue > parseFloat(opts.max) && (floatValue = Math.abs(opts.max), 2189 isNegative = opts.max < 0), processValue = floatValue.toString().replace(".", opts.radixPoint).split(""), 2190 isFinite(opts.digits)) { 2191 var radixPosition = $.inArray(opts.radixPoint, processValue), rpb = $.inArray(opts.radixPoint, maskedValue); 2192 -1 === radixPosition && (processValue.push(opts.radixPoint), radixPosition = processValue.length - 1); 2193 for (var i = 1; i <= opts.digits; i++) opts.digitsOptional || void 0 !== processValue[radixPosition + i] && processValue[radixPosition + i] !== opts.placeholder.charAt(0) ? -1 !== rpb && void 0 !== maskedValue[rpb + i] && (processValue[radixPosition + i] = processValue[radixPosition + i] || maskedValue[rpb + i]) : processValue[radixPosition + i] = "0"; 2194 processValue[processValue.length - 1] === opts.radixPoint && delete processValue[processValue.length - 1]; 2195 } 2196 if (floatValue.toString() !== processValue && floatValue.toString() + "." !== processValue || isNegative) return !isNegative || 0 === floatValue && "blur" === e.type || (processValue.unshift(opts.negationSymbol.front), 2197 processValue.push(opts.negationSymbol.back)), processValue = (opts.prefix + processValue.join("")).split(""), 2198 opts.numericInput && (processValue = processValue.reverse()), rslt = opts.postFormat(processValue, opts.numericInput ? caretPos : caretPos - 1, opts), 2199 rslt.buffer && (rslt.refreshFromBuffer = rslt.buffer.join("") !== buffer.join("")), 2200 rslt; 2201 } 2202 } 2203 return opts.autoGroup ? (rslt = opts.postFormat(buffer, opts.numericInput ? caretPos : caretPos - 1, opts), 2204 rslt.caret = caretPos <= opts.prefix.length ? rslt.pos : rslt.pos + 1, rslt)
2204: void 0; 2205 }, 2206 regex: { 2207 integerPart: function(opts) { 2208 return new RegExp("[" + Inputmask.escapeRegex(opts.negationSymbol.front) + "+]?\\d+"); 2209 }, 2210 integerNPart: function(opts) { 2211 return new RegExp("[\\d" + Inputmask.escapeRegex(opts.groupSeparator) + Inputmask.escapeRegex(opts.placeholder.charAt(0)) + "]+"); 2212 } 2213 }, 2214 signHandler: function(chrs, maskset, pos, strict, opts) { 2215 if (!strict && opts.allowMinus && "-" === chrs || opts.allowPlus && "+" === chrs) { 2216 var matchRslt = maskset.buffer.join("").match(opts.regex.integerPart(opts)); 2217 if (matchRslt && matchRslt[0].length > 0) return maskset.buffer[matchRslt.index] === ("-" === chrs ? "+" : opts.negationSymbol.front) ? "-" === chrs ? "" !== opts.negationSymbol.back ? { 2218 pos: matchRslt.index, 2219 c: opts.negationSymbol.front, 2220 remove: matchRslt.index, 2221 caret: pos, 2222 insert: { 2223 pos: maskset.buffer.length - opts.suffix.length - 1, 2224 c: opts.negationSymbol.back 2225 } 2226 } : { 2227 pos: matchRslt.index, 2228 c: opts.negationSymbol.front, 2229 remove: matchRslt.index, 2230 caret: pos 2231 } : "" !== opts.negationSymbol.back ? { 2232 pos: matchRslt.index, 2233 c: "+", 2234 remove: [ matchRslt.index, maskset.buffer.length - opts.suffix.length - 1 ], 2235 caret: pos 2236 } : { 2237 pos: matchRslt.index, 2238 c: "+", 2239 remove: matchRslt.index, 2240 caret: pos 2241 } : maskset.buffer[matchRslt.index] === ("-" === chrs ? opts.negationSymbol.front : "+") ? "-" === chrs && "" !== opts.negationSymbol.back ? { 2242 remove: [ matchRslt.index, maskset.buffer.length - opts.suffix.length - 1 ], 2243 caret: pos - 1 2244 } : { 2245 remove: matchRslt.index, 2246 caret: pos - 1 2247 } : "-" === chrs ? "" !== opts.negationSymbol.back ? { 2248 pos: matchRslt.index, 2249 c: opts.negationSymbol.front, 2250 caret: pos + 1, 2251 insert: { 2252 pos: maskset.buffer.length - opts.suffix.length, 2253 c: opts.negationSymbol.back 2254 } 2255 } : { 2256 pos: matchRslt.index, 2257 c: opts.negationSymbol.front, 2258 caret: pos + 1 2259 } : { 2260 pos: matchRslt.index, 2261 c: chrs, 2262 caret: pos + 1 2263 }; 2264 } 2265 return !1; 2266 }, 2267 radixHandler: function(chrs, maskset, pos, strict, opts) { 2268 if (!strict && opts.numericInput !== !0 && chrs === opts.radixPoint && void 0 !== opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0)) { 2269 var radixPos = $.inArray(opts.radixPoint, maskset.buffer), integerValue = maskset.buffer.join("").match(opts.regex.integerPart(opts)); 2270 if (-1 !== radixPos && maskset.validPositions[radixPos]) return maskset.validPositions[radixPos - 1] ? { 2271 caret: radixPos + 1 2272 } : { 2273 pos: integerValue.index, 2274 c: integerValue[0], 2275 caret: radixPos + 1 2276 }; 2277 if (!integerValue || "0" === integerValue[0] && integerValue.index + 1 !== pos) return maskset.buffer[integerValue ? integerValue.index : pos] = "0", 2278 { 2279 pos: (integerValue ? integerValue.index : pos) + 1, 2280 c: opts.radixPoint 2281 }; 2282 } 2283 return !1; 2284 }, 2285 leadingZeroHandler: function(chrs, maskset, pos, strict, opts, isSelection) { 2286 if (!strict) if (opts.numericInput === !0) { 2287 var buffer = maskset.buffer.slice("").reverse(), char = buffer[opts.prefix.length]; 2288 if ("0" === char) return { 2289 pos: pos, 2290 remove: buffer.length - opts.prefix.length - 1 2291 }; 2292 } else { 2293 var radixPosition = $.inArray(opts.radixPoint, maskset.buffer), matchRslt = maskset.buffer.slice(0, -1 !== radixPosition ? radixPosition : void 0).join("").match(opts.regex.integerNPart(opts)); 2294 if (matchRslt && (-1 === radixPosition || radixPosition >= pos)) { 2295 var decimalPart = -1 === radixPosition ? 0 : parseInt(maskset.buffer.slice(radixPosition + 1).join("")); 2296 if (0 === matchRslt[0].indexOf("" !== opts.placeholder ? opts.placeholder.charAt(0) : "0") && (matchRslt.index + 1 === pos || isSelection !== !0 && 0 === decimalPart)) return maskset.buffer.splice(matchRslt.index, 1), 2297 pos = matchRslt.index, { 2298 pos: pos, 2299 remove: matchRslt.index 2300 }; 2301 if ("0" === chrs && pos <= matchRslt.index && matchRslt[0] !== opts.groupSeparator) return !1; 2302 } 2303 } 2304 return !0; 2305 }, 2306 definitions: { 2307 "~": { 2308 validator: function(chrs, maskset, pos, strict, opts, isSelection) { 2309 var isValid = opts.signHandler(chrs, maskset, pos, strict, opts); 2310 if (!isValid && (isValid = opts.radixHandler(chrs, maskset, pos, strict, opts), 2311 !isValid && (isValid = strict ? new RegExp("[0-9" + Inputmask.escapeRegex(opts.groupSeparator) + "]").test(chrs) : new RegExp("[0-9]").test(chrs), 2312 isValid === !0 && (isValid = opts.leadingZeroHandler(chrs, maskset, pos, strict, opts, isSelection), 2313 isValid === !0)))) { 2314 var radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
vendor: 7,853 bytes, lines 2315-2432
2315 isValid = -1 !== radixPosition && (opts.digitsOptional === !1 || maskset.validPositions[pos]) && opts.numericInput !== !0 && pos > radixPosition && !strict ? { 2316 pos: pos, 2317 remove: pos 2318 } : { 2319 pos: pos 2320 }; 2321 } 2322 return isValid; 2323 }, 2324 cardinality: 1 2325 }, 2326 "+": { 2327 validator: function(chrs, maskset, pos, strict, opts) { 2328 var isValid = opts.signHandler(chrs, maskset, pos, strict, opts); 2329 return !isValid && (strict && opts.allowMinus && chrs === opts.negationSymbol.front || opts.allowMinus && "-" === chrs || opts.allowPlus && "+" === chrs) && (isValid = strict || "-" !== chrs ? !0 : "" !== opts.negationSymbol.back ? { 2330 pos: pos, 2331 c: "-" === chrs ? opts.negationSymbol.front : "+", 2332 caret: pos + 1, 2333 insert: { 2334 pos: maskset.buffer.length, 2335 c: opts.negationSymbol.back 2336 } 2337 } : { 2338 pos: pos, 2339 c: "-" === chrs ? opts.negationSymbol.front : "+", 2340 caret: pos + 1 2341 }), isValid; 2342 }, 2343 cardinality: 1, 2344 placeholder: "" 2345 }, 2346 "-": { 2347 validator: function(chrs, maskset, pos, strict, opts) { 2348 var isValid = opts.signHandler(chrs, maskset, pos, strict, opts); 2349 return !isValid && strict && opts.allowMinus && chrs === opts.negationSymbol.back && (isValid = !0), 2350 isValid; 2351 }, 2352 cardinality: 1, 2353 placeholder: "" 2354 }, 2355 ":": { 2356 validator: function(chrs, maskset, pos, strict, opts) { 2357 var isValid = opts.signHandler(chrs, maskset, pos, strict, opts); 2358 if (!isValid) { 2359 var radix = "[" + Inputmask.escapeRegex(opts.radixPoint) + "]"; 2360 isValid = new RegExp(radix).test(chrs), isValid && maskset.validPositions[pos] && maskset.validPositions[pos].match.placeholder === opts.radixPoint && (isValid = { 2361 caret: pos + 1 2362 }); 2363 } 2364 return isValid ? { 2365 c: opts.radixPoint 2366 } : isValid; 2367 }, 2368 cardinality: 1, 2369 placeholder: function(opts) { 2370 return opts.radixPoint; 2371 } 2372 } 2373 }, 2374 onUnMask: function(maskedValue, unmaskedValue, opts) { 2375 var processValue = maskedValue.replace(opts.prefix, ""); 2376 return processValue = processValue.replace(opts.suffix, ""), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 2377 opts.unmaskAsNumber ? ("" !== opts.radixPoint && -1 !== processValue.indexOf(opts.radixPoint) && (processValue = processValue.replace(Inputmask.escapeRegex.call(this, opts.radixPoint), ".")), 2378 Number(processValue)) : processValue; 2379 }, 2380 isComplete: function(buffer, opts) { 2381 var maskedValue = buffer.join(""), bufClone = buffer.slice(); 2382 if (opts.postFormat(bufClone, 0, opts), bufClone.join("") !== maskedValue) return !1; 2383 var processValue = maskedValue.replace(opts.prefix, ""); 2384 return processValue = processValue.replace(opts.suffix, ""), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 2385 "," === opts.radixPoint && (processValue = processValue.replace(Inputmask.escapeRegex(opts.radixPoint), ".")), 2386 isFinite(processValue); 2387 }, 2388 onBeforeMask: function(initialValue, opts) { 2389 if ("" !== opts.radixPoint && isFinite(initialValue)) initialValue = initialValue.toString().replace(".", opts.radixPoint); else { 2390 var kommaMatches = initialValue.match(/,/g), dotMatches = initialValue.match(/\./g); 2391 dotMatches && kommaMatches ? dotMatches.length > kommaMatches.length ? (initialValue = initialValue.replace(/\./g, ""), 2392 initialValue = initialValue.replace(",", opts.radixPoint)) : kommaMatches.length > dotMatches.length ? (initialValue = initialValue.replace(/,/g, ""), 2393 initialValue = initialValue.replace(".", opts.radixPoint)) : initialValue = initialValue.indexOf(".") < initialValue.indexOf(",") ? initialValue.replace(/\./g, "") : initialValue = initialValue.replace(/,/g, "") : initialValue = initialValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""); 2394 } 2395 if (0 === opts.digits && (-1 !== initialValue.indexOf(".") ? initialValue = initialValue.substring(0, initialValue.indexOf(".")) : -1 !== initialValue.indexOf(",") && (initialValue = initialValue.substring(0, initialValue.indexOf(",")))), 2396 "" !== opts.radixPoint && isFinite(opts.digits) && -1 !== initialValue.indexOf(opts.radixPoint)) { 2397 var valueParts = initialValue.split(opts.radixPoint), decPart = valueParts[1].match(new RegExp("\\d*"))[0]; 2398 if (parseInt(opts.digits) < decPart.toString().length) { 2399 var digitsFactor = Math.pow(10, parseInt(opts.digits)); 2400 initialValue = initialValue.replace(Inputmask.escapeRegex(opts.radixPoint), "."), 2401 initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor, 2402 initialValue = initialValue.toString().replace(".", opts.radixPoint); 2403 } 2404 } 2405 return initialValue.toString(); 2406 }, 2407 canClearPosition: function(maskset, position, lvp, strict, opts) { 2408 var positionInput = maskset.validPositions[position].input, canClear = positionInput !== opts.radixPoint || null !== maskset.validPositions[position].match.fn && opts.decimalProtect === !1 || isFinite(positionInput) || position === lvp || positionInput === opts.groupSeparator || positionInput === opts.negationSymbol.front || positionInput === opts.negationSymbol.back; 2409 return canClear; 2410 }, 2411 onKeyDown: function(e, buffer, caretPos, opts) { 2412 var $input = $(this); 2413 if (e.ctrlKey) switch (e.keyCode) { 2414 case Inputmask.keyCode.UP: 2415 $input.val(parseFloat(this.inputmask.unmaskedvalue()) + parseInt(opts.step)), $input.trigger("setvalue"); 2416 break; 2417 2418 case Inputmask.keyCode.DOWN: 2419 $input.val(parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step)), $input.trigger("setvalue"); 2420 } 2421 } 2422 }, 2423 currency: { 2424 prefix: "$ ", 2425 groupSeparator: ",", 2426 alias: "numeric", 2427 placeholder: "0", 2428 autoGroup: !0, 2429 digits: 2, 2430 digitsOptional: !1, 2431 clearMaskOnLostFocus: !1 2432 },
vendor: 9,822 bytes, lines 2433-2601
2433 decimal: { 2434 alias: "numeric" 2435 }, 2436 integer: { 2437 alias: "numeric", 2438 digits: 0, 2439 radixPoint: "" 2440 }, 2441 percentage: { 2442 alias: "numeric", 2443 digits: 2, 2444 radixPoint: ".", 2445 placeholder: "0", 2446 autoGroup: !1, 2447 min: 0, 2448 max: 100, 2449 suffix: " %", 2450 allowPlus: !1, 2451 allowMinus: !1 2452 } 2453 }), Inputmask; 2454}(jQuery, Inputmask), function($, Inputmask) { 2455 return Inputmask.extendAliases({ 2456 phone: { 2457 url: "phone-codes/phone-codes.js", 2458 countrycode: "", 2459 phoneCodeCache: {}, 2460 mask: function(opts) { 2461 if (void 0 === opts.phoneCodeCache[opts.url]) { 2462 var maskList = []; 2463 opts.definitions["#"] = opts.definitions[9], $.ajax({ 2464 url: opts.url, 2465 async: !1, 2466 type: "get", 2467 dataType: "json", 2468 success: function(response) { 2469 maskList = response; 2470 }, 2471 error: function(xhr, ajaxOptions, thrownError) { 2472 alert(thrownError + " - " + opts.url); 2473 } 2474 }), opts.phoneCodeCache[opts.url] = maskList.sort(function(a, b) { 2475 return (a.mask || a) < (b.mask || b) ? -1 : 1; 2476 }); 2477 } 2478 return opts.phoneCodeCache[opts.url]; 2479 }, 2480 keepStatic: !1, 2481 nojumps: !0, 2482 nojumpsThreshold: 1, 2483 onBeforeMask: function(value, opts) { 2484 var processedValue = value.replace(/^0{1,2}/, "").replace(/[\s]/g, ""); 2485 return (processedValue.indexOf(opts.countrycode) > 1 || -1 === processedValue.indexOf(opts.countrycode)) && (processedValue = "+" + opts.countrycode + processedValue), 2486 processedValue; 2487 } 2488 }, 2489 phonebe: { 2490 alias: "phone", 2491 url: "phone-codes/phone-be.js", 2492 countrycode: "32", 2493 nojumpsThreshold: 4 2494 } 2495 }), Inputmask; 2496}(jQuery, Inputmask), function($, Inputmask) { 2497 return Inputmask.extendAliases({ 2498 Regex: { 2499 mask: "r", 2500 greedy: !1, 2501 repeat: "*", 2502 regex: null, 2503 regexTokens: null, 2504 tokenizer: /\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g, 2505 quantifierFilter: /[0-9]+[^,]/, 2506 isComplete: function(buffer, opts) { 2507 return new RegExp(opts.regex).test(buffer.join("")); 2508 }, 2509 definitions: { 2510 r: { 2511 validator: function(chrs, maskset, pos, strict, opts) { 2512 function RegexToken(isGroup, isQuantifier) { 2513 this.matches = [], this.isGroup = isGroup || !1, this.isQuantifier = isQuantifier || !1, 2514 this.quantifier = { 2515 min: 1, 2516 max: 1 2517 }, this.repeaterPart = void 0; 2518 } 2519 function analyseRegex() { 2520 var match, m, currentToken = new RegexToken(), opengroups = []; 2521 for (opts.regexTokens = []; match = opts.tokenizer.exec(opts.regex); ) switch (m = match[0], 2522 m.charAt(0)) { 2523 case "(": 2524 opengroups.push(new RegexToken(!0)); 2525 break; 2526 2527 case ")": 2528 groupToken = opengroups.pop(), opengroups.length > 0 ? opengroups[opengroups.length - 1].matches.push(groupToken) : currentToken.matches.push(groupToken); 2529 break; 2530 2531 case "{": 2532 case "+": 2533 case "*": 2534 var quantifierToken = new RegexToken(!1, !0); 2535 m = m.replace(/[{}]/g, ""); 2536 var mq = m.split(","), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]); 2537 if (quantifierToken.quantifier = { 2538 min: mq0, 2539 max: mq1 2540 }, opengroups.length > 0) { 2541 var matches = opengroups[opengroups.length - 1].matches; 2542 match = matches.pop(), match.isGroup || (groupToken = new RegexToken(!0), groupToken.matches.push(match), 2543 match = groupToken), matches.push(match), matches.push(quantifierToken); 2544 } else match = currentToken.matches.pop(), match.isGroup || (groupToken = new RegexToken(!0), 2545 groupToken.matches.push(match), match = groupToken), currentToken.matches.push(match), 2546 currentToken.matches.push(quantifierToken); 2547 break; 2548 2549 default: 2550 opengroups.length > 0 ? opengroups[opengroups.length - 1].matches.push(m) : currentToken.matches.push(m); 2551 } 2552 currentToken.matches.length > 0 && opts.regexTokens.push(currentToken); 2553 } 2554 function validateRegexToken(token, fromGroup) { 2555 var isvalid = !1; 2556 fromGroup && (regexPart += "(", openGroupCount++); 2557 for (var mndx = 0; mndx < token.matches.length; mndx++) { 2558 var matchToken = token.matches[mndx]; 2559 if (matchToken.isGroup === !0) isvalid = validateRegexToken(matchToken, !0); else if (matchToken.isQuantifier === !0) { 2560 var crrntndx = $.inArray(matchToken, token.matches), matchGroup = token.matches[crrntndx - 1], regexPartBak = regexPart; 2561 if (isNaN(matchToken.quantifier.max)) { 2562 for (;matchToken.repeaterPart && matchToken.repeaterPart !== regexPart && matchToken.repeaterPart.length > regexPart.length && !(isvalid = validateRegexToken(matchGroup, !0)); ) ; 2563 isvalid = isvalid || validateRegexToken(matchGroup, !0), isvalid && (matchToken.repeaterPart = regexPart), 2564 regexPart = regexPartBak + matchToken.quantifier.max; 2565 } else { 2566 for (var i = 0, qm = matchToken.quantifier.max - 1; qm > i && !(isvalid = validateRegexToken(matchGroup, !0)); i++) ; 2567 regexPart = regexPartBak + "{" + matchToken.quantifier.min + "," + matchToken.quantifier.max + "}"; 2568 } 2569 } else if (void 0 !== matchToken.matches) for (var k = 0; k < matchToken.length && !(isvalid = validateRegexToken(matchToken[k], fromGroup)); k++) ; else { 2570 var testExp; 2571 if ("[" == matchToken.charAt(0)) { 2572 testExp = regexPart, testExp += matchToken; 2573 for (var j = 0; openGroupCount > j; j++) testExp += ")"; 2574 var exp = new RegExp("^(" + testExp + ")$"); 2575 isvalid = exp.test(bufferStr); 2576 } else for (var l = 0, tl = matchToken.length; tl > l; l++) if ("\\" !== matchToken.charAt(l)) { 2577 testExp = regexPart, testExp += matchToken.substr(0, l + 1), testExp = testExp.replace(/\|$/, ""); 2578 for (var j = 0; openGroupCount > j; j++) testExp += ")"; 2579 var exp = new RegExp("^(" + testExp + ")$"); 2580 if (isvalid = exp.test(bufferStr)) break; 2581 } 2582 regexPart += matchToken; 2583 } 2584 if (isvalid) break; 2585 } 2586 return fromGroup && (regexPart += ")", openGroupCount--), isvalid; 2587 } 2588 var bufferStr, groupToken, cbuffer = maskset.buffer.slice(), regexPart = "", isValid = !1, openGroupCount = 0; 2589 null === opts.regexTokens && analyseRegex(), cbuffer.splice(pos, 0, chrs), bufferStr = cbuffer.join(""); 2590 for (var i = 0; i < opts.regexTokens.length; i++) { 2591 var regexToken = opts.regexTokens[i]; 2592 if (isValid = validateRegexToken(regexToken, regexToken.isGroup)) break; 2593 } 2594 return isValid; 2595 }, 2596 cardinality: 1 2597 } 2598 } 2599 } 2600 }), Inputmask; 2601}(jQuery, Inputmask);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.