4005 lines
150 KiB
JavaScript
4005 lines
150 KiB
JavaScript
/*!
|
||
* inputmask.js
|
||
* https://github.com/RobinHerbots/Inputmask
|
||
* Copyright (c) 2010 - 2017 Robin Herbots
|
||
* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
|
||
* Version: 3.3.11
|
||
*/
|
||
|
||
!(function (factory) {
|
||
"function" == typeof define && define.amd
|
||
? define(
|
||
[
|
||
"./dependencyLibs/inputmask.dependencyLib",
|
||
"./global/window",
|
||
"./global/document",
|
||
],
|
||
factory
|
||
)
|
||
: "object" == typeof exports
|
||
? (module.exports = factory(
|
||
require("./dependencyLibs/inputmask.dependencyLib"),
|
||
require("./global/window"),
|
||
require("./global/document")
|
||
))
|
||
: (window.Inputmask = factory(
|
||
window.dependencyLib || jQuery,
|
||
window,
|
||
document
|
||
));
|
||
})(function ($, window, document, undefined) {
|
||
function Inputmask(alias, options, internal) {
|
||
if (!(this instanceof Inputmask))
|
||
return new Inputmask(alias, options, internal);
|
||
(this.el = undefined),
|
||
(this.events = {}),
|
||
(this.maskset = undefined),
|
||
(this.refreshValue = !1),
|
||
!0 !== internal &&
|
||
($.isPlainObject(alias)
|
||
? (options = alias)
|
||
: ((options = options || {}).alias = alias),
|
||
(this.opts = $.extend(!0, {}, this.defaults, options)),
|
||
(this.noMasksCache = options && options.definitions !== undefined),
|
||
(this.userOptions = options || {}),
|
||
(this.isRTL = this.opts.numericInput),
|
||
resolveAlias(this.opts.alias, options, this.opts));
|
||
}
|
||
function resolveAlias(aliasStr, options, opts) {
|
||
var aliasDefinition = Inputmask.prototype.aliases[aliasStr];
|
||
return aliasDefinition
|
||
? (aliasDefinition.alias &&
|
||
resolveAlias(aliasDefinition.alias, undefined, opts),
|
||
$.extend(!0, opts, aliasDefinition),
|
||
$.extend(!0, opts, options),
|
||
!0)
|
||
: (null === opts.mask && (opts.mask = aliasStr), !1);
|
||
}
|
||
function generateMaskSet(opts, nocache) {
|
||
function generateMask(mask, metadata, opts) {
|
||
var regexMask = !1;
|
||
if (
|
||
((null !== mask && "" !== mask) ||
|
||
((regexMask = null !== opts.regex)
|
||
? (mask = (mask = opts.regex).replace(/^(\^)(.*)(\$)$/, "$2"))
|
||
: ((regexMask = !0), (mask = ".*"))),
|
||
1 === mask.length &&
|
||
!1 === opts.greedy &&
|
||
0 !== opts.repeat &&
|
||
(opts.placeholder = ""),
|
||
opts.repeat > 0 || "*" === opts.repeat || "+" === opts.repeat)
|
||
) {
|
||
var repeatStart =
|
||
"*" === opts.repeat ? 0 : "+" === opts.repeat ? 1 : opts.repeat;
|
||
mask =
|
||
opts.groupmarker.start +
|
||
mask +
|
||
opts.groupmarker.end +
|
||
opts.quantifiermarker.start +
|
||
repeatStart +
|
||
"," +
|
||
opts.repeat +
|
||
opts.quantifiermarker.end;
|
||
}
|
||
var masksetDefinition,
|
||
maskdefKey = regexMask
|
||
? "regex_" + opts.regex
|
||
: opts.numericInput
|
||
? mask.split("").reverse().join("")
|
||
: mask;
|
||
return (
|
||
Inputmask.prototype.masksCache[maskdefKey] === undefined ||
|
||
!0 === nocache
|
||
? ((masksetDefinition = {
|
||
mask: mask,
|
||
maskToken: Inputmask.prototype.analyseMask(mask, regexMask, opts),
|
||
validPositions: {},
|
||
_buffer: undefined,
|
||
buffer: undefined,
|
||
tests: {},
|
||
metadata: metadata,
|
||
maskLength: undefined,
|
||
}),
|
||
!0 !== nocache &&
|
||
((Inputmask.prototype.masksCache[maskdefKey] = masksetDefinition),
|
||
(masksetDefinition = $.extend(
|
||
!0,
|
||
{},
|
||
Inputmask.prototype.masksCache[maskdefKey]
|
||
))))
|
||
: (masksetDefinition = $.extend(
|
||
!0,
|
||
{},
|
||
Inputmask.prototype.masksCache[maskdefKey]
|
||
)),
|
||
masksetDefinition
|
||
);
|
||
}
|
||
if (
|
||
($.isFunction(opts.mask) && (opts.mask = opts.mask(opts)),
|
||
$.isArray(opts.mask))
|
||
) {
|
||
if (opts.mask.length > 1) {
|
||
opts.keepStatic = null === opts.keepStatic || opts.keepStatic;
|
||
var altMask = opts.groupmarker.start;
|
||
return (
|
||
$.each(
|
||
opts.numericInput ? opts.mask.reverse() : opts.mask,
|
||
function (ndx, msk) {
|
||
altMask.length > 1 &&
|
||
(altMask +=
|
||
opts.groupmarker.end +
|
||
opts.alternatormarker +
|
||
opts.groupmarker.start),
|
||
msk.mask === undefined || $.isFunction(msk.mask)
|
||
? (altMask += msk)
|
||
: (altMask += msk.mask);
|
||
}
|
||
),
|
||
(altMask += opts.groupmarker.end),
|
||
generateMask(altMask, opts.mask, opts)
|
||
);
|
||
}
|
||
opts.mask = opts.mask.pop();
|
||
}
|
||
return opts.mask &&
|
||
opts.mask.mask !== undefined &&
|
||
!$.isFunction(opts.mask.mask)
|
||
? generateMask(opts.mask.mask, opts.mask, opts)
|
||
: generateMask(opts.mask, opts.mask, opts);
|
||
}
|
||
function maskScope(actionObj, maskset, opts) {
|
||
function getMaskTemplate(baseOnInput, minimalPos, includeMode) {
|
||
minimalPos = minimalPos || 0;
|
||
var ndxIntlzr,
|
||
test,
|
||
testPos,
|
||
maskTemplate = [],
|
||
pos = 0,
|
||
lvp = getLastValidPosition();
|
||
do {
|
||
!0 === baseOnInput && getMaskSet().validPositions[pos]
|
||
? ((test = (testPos = getMaskSet().validPositions[pos]).match),
|
||
(ndxIntlzr = testPos.locator.slice()),
|
||
maskTemplate.push(
|
||
!0 === includeMode
|
||
? testPos.input
|
||
: !1 === includeMode
|
||
? test.nativeDef
|
||
: getPlaceholder(pos, test)
|
||
))
|
||
: ((test = (testPos = getTestTemplate(pos, ndxIntlzr, pos - 1))
|
||
.match),
|
||
(ndxIntlzr = testPos.locator.slice()),
|
||
(!1 === opts.jitMasking ||
|
||
pos < lvp ||
|
||
("number" == typeof opts.jitMasking &&
|
||
isFinite(opts.jitMasking) &&
|
||
opts.jitMasking > pos)) &&
|
||
maskTemplate.push(
|
||
!1 === includeMode ? test.nativeDef : getPlaceholder(pos, test)
|
||
)),
|
||
pos++;
|
||
} while (((maxLength === undefined || pos < maxLength) && (null !== test.fn || "" !== test.def)) || minimalPos > pos);
|
||
return (
|
||
"" === maskTemplate[maskTemplate.length - 1] && maskTemplate.pop(),
|
||
(getMaskSet().maskLength = pos + 1),
|
||
maskTemplate
|
||
);
|
||
}
|
||
function getMaskSet() {
|
||
return maskset;
|
||
}
|
||
function resetMaskSet(soft) {
|
||
var maskset = getMaskSet();
|
||
(maskset.buffer = undefined),
|
||
!0 !== soft && ((maskset.validPositions = {}), (maskset.p = 0));
|
||
}
|
||
function getLastValidPosition(closestTo, strict, validPositions) {
|
||
var before = -1,
|
||
after = -1,
|
||
valids = validPositions || getMaskSet().validPositions;
|
||
closestTo === undefined && (closestTo = -1);
|
||
for (var posNdx in valids) {
|
||
var psNdx = parseInt(posNdx);
|
||
valids[psNdx] &&
|
||
(strict || !0 !== valids[psNdx].generatedInput) &&
|
||
(psNdx <= closestTo && (before = psNdx),
|
||
psNdx >= closestTo && (after = psNdx));
|
||
}
|
||
return (-1 !== before && closestTo - before > 1) || after < closestTo
|
||
? before
|
||
: after;
|
||
}
|
||
function stripValidPositions(start, end, nocheck, strict) {
|
||
var i,
|
||
startPos = start,
|
||
positionsClone = $.extend(!0, {}, getMaskSet().validPositions),
|
||
needsValidation = !1;
|
||
for (getMaskSet().p = start, i = end - 1; i >= startPos; i--)
|
||
getMaskSet().validPositions[i] !== undefined &&
|
||
((!0 !== nocheck &&
|
||
((!getMaskSet().validPositions[i].match.optionality &&
|
||
(function (pos) {
|
||
var posMatch = getMaskSet().validPositions[pos];
|
||
if (posMatch !== undefined && null === posMatch.match.fn) {
|
||
var prevMatch = getMaskSet().validPositions[pos - 1],
|
||
nextMatch = getMaskSet().validPositions[pos + 1];
|
||
return prevMatch !== undefined && nextMatch !== undefined;
|
||
}
|
||
return !1;
|
||
})(i)) ||
|
||
!1 ===
|
||
opts.canClearPosition(
|
||
getMaskSet(),
|
||
i,
|
||
getLastValidPosition(),
|
||
strict,
|
||
opts
|
||
))) ||
|
||
delete getMaskSet().validPositions[i]);
|
||
for (resetMaskSet(!0), i = startPos + 1; i <= getLastValidPosition(); ) {
|
||
for (; getMaskSet().validPositions[startPos] !== undefined; )
|
||
startPos++;
|
||
if (
|
||
(i < startPos && (i = startPos + 1),
|
||
getMaskSet().validPositions[i] === undefined && isMask(i))
|
||
)
|
||
i++;
|
||
else {
|
||
var t = getTestTemplate(i);
|
||
!1 === needsValidation &&
|
||
positionsClone[startPos] &&
|
||
positionsClone[startPos].match.def === t.match.def
|
||
? ((getMaskSet().validPositions[startPos] = $.extend(
|
||
!0,
|
||
{},
|
||
positionsClone[startPos]
|
||
)),
|
||
(getMaskSet().validPositions[startPos].input = t.input),
|
||
delete getMaskSet().validPositions[i],
|
||
i++)
|
||
: positionCanMatchDefinition(startPos, t.match.def)
|
||
? !1 !== isValid(startPos, t.input || getPlaceholder(i), !0) &&
|
||
(delete getMaskSet().validPositions[i],
|
||
i++,
|
||
(needsValidation = !0))
|
||
: isMask(i) || (i++, startPos--),
|
||
startPos++;
|
||
}
|
||
}
|
||
resetMaskSet(!0);
|
||
}
|
||
function determineTestTemplate(tests, guessNextBest) {
|
||
for (
|
||
var testPos,
|
||
testPositions = tests,
|
||
lvp = getLastValidPosition(),
|
||
lvTest = getMaskSet().validPositions[lvp] || getTests(0)[0],
|
||
lvTestAltArr =
|
||
lvTest.alternation !== undefined
|
||
? lvTest.locator[lvTest.alternation].toString().split(",")
|
||
: [],
|
||
ndx = 0;
|
||
ndx < testPositions.length &&
|
||
(!(
|
||
(testPos = testPositions[ndx]).match &&
|
||
((opts.greedy && !0 !== testPos.match.optionalQuantifier) ||
|
||
((!1 === testPos.match.optionality ||
|
||
!1 === testPos.match.newBlockMarker) &&
|
||
!0 !== testPos.match.optionalQuantifier)) &&
|
||
(lvTest.alternation === undefined ||
|
||
lvTest.alternation !== testPos.alternation ||
|
||
(testPos.locator[lvTest.alternation] !== undefined &&
|
||
checkAlternationMatch(
|
||
testPos.locator[lvTest.alternation].toString().split(","),
|
||
lvTestAltArr
|
||
)))
|
||
) ||
|
||
(!0 === guessNextBest &&
|
||
(null !== testPos.match.fn ||
|
||
/[0-9a-bA-Z]/.test(testPos.match.def))));
|
||
ndx++
|
||
);
|
||
return testPos;
|
||
}
|
||
function getTestTemplate(pos, ndxIntlzr, tstPs) {
|
||
return (
|
||
getMaskSet().validPositions[pos] ||
|
||
determineTestTemplate(
|
||
getTests(pos, ndxIntlzr ? ndxIntlzr.slice() : ndxIntlzr, tstPs)
|
||
)
|
||
);
|
||
}
|
||
function getTest(pos) {
|
||
return getMaskSet().validPositions[pos]
|
||
? getMaskSet().validPositions[pos]
|
||
: getTests(pos)[0];
|
||
}
|
||
function positionCanMatchDefinition(pos, def) {
|
||
for (
|
||
var valid = !1, tests = getTests(pos), tndx = 0;
|
||
tndx < tests.length;
|
||
tndx++
|
||
)
|
||
if (tests[tndx].match && tests[tndx].match.def === def) {
|
||
valid = !0;
|
||
break;
|
||
}
|
||
return valid;
|
||
}
|
||
function getTests(pos, ndxIntlzr, tstPs) {
|
||
function resolveTestFromToken(
|
||
maskToken,
|
||
ndxInitializer,
|
||
loopNdx,
|
||
quantifierRecurse
|
||
) {
|
||
function handleMatch(match, loopNdx, quantifierRecurse) {
|
||
function isFirstMatch(latestMatch, tokenGroup) {
|
||
var firstMatch = 0 === $.inArray(latestMatch, tokenGroup.matches);
|
||
return (
|
||
firstMatch ||
|
||
$.each(tokenGroup.matches, function (ndx, match) {
|
||
if (
|
||
!0 === match.isQuantifier &&
|
||
(firstMatch = isFirstMatch(
|
||
latestMatch,
|
||
tokenGroup.matches[ndx - 1]
|
||
))
|
||
)
|
||
return !1;
|
||
}),
|
||
firstMatch
|
||
);
|
||
}
|
||
function resolveNdxInitializer(pos, alternateNdx, targetAlternation) {
|
||
var bestMatch, indexPos;
|
||
if (
|
||
getMaskSet().validPositions[pos - 1] &&
|
||
targetAlternation &&
|
||
getMaskSet().tests[pos]
|
||
)
|
||
for (
|
||
var vpAlternation =
|
||
getMaskSet().validPositions[pos - 1].locator,
|
||
tpAlternation = getMaskSet().tests[pos][0].locator,
|
||
i = 0;
|
||
i < targetAlternation;
|
||
i++
|
||
)
|
||
if (vpAlternation[i] !== tpAlternation[i])
|
||
return vpAlternation.slice(targetAlternation + 1);
|
||
return (
|
||
(getMaskSet().tests[pos] || getMaskSet().validPositions[pos]) &&
|
||
$.each(
|
||
getMaskSet().tests[pos] || [getMaskSet().validPositions[pos]],
|
||
function (ndx, lmnt) {
|
||
var alternation =
|
||
targetAlternation !== undefined
|
||
? targetAlternation
|
||
: lmnt.alternation,
|
||
ndxPos =
|
||
lmnt.locator[alternation] !== undefined
|
||
? lmnt.locator[alternation]
|
||
.toString()
|
||
.indexOf(alternateNdx)
|
||
: -1;
|
||
(indexPos === undefined || ndxPos < indexPos) &&
|
||
-1 !== ndxPos &&
|
||
((bestMatch = lmnt), (indexPos = ndxPos));
|
||
}
|
||
),
|
||
bestMatch
|
||
? bestMatch.locator.slice(
|
||
(targetAlternation !== undefined
|
||
? targetAlternation
|
||
: bestMatch.alternation) + 1
|
||
)
|
||
: targetAlternation !== undefined
|
||
? resolveNdxInitializer(pos, alternateNdx)
|
||
: undefined
|
||
);
|
||
}
|
||
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
|
||
);
|
||
if (testPos === pos && match.matches === undefined)
|
||
return (
|
||
matches.push({
|
||
match: match,
|
||
locator: loopNdx.reverse(),
|
||
cd: cacheDependency,
|
||
}),
|
||
!0
|
||
);
|
||
if (match.matches !== undefined) {
|
||
if (match.isGroup && quantifierRecurse !== match) {
|
||
if (
|
||
(match = handleMatch(
|
||
maskToken.matches[$.inArray(match, maskToken.matches) + 1],
|
||
loopNdx
|
||
))
|
||
)
|
||
return !0;
|
||
} else if (match.isOptional) {
|
||
var optionalToken = match;
|
||
if (
|
||
(match = resolveTestFromToken(
|
||
match,
|
||
ndxInitializer,
|
||
loopNdx,
|
||
quantifierRecurse
|
||
))
|
||
) {
|
||
if (
|
||
((latestMatch = matches[matches.length - 1].match),
|
||
!isFirstMatch(latestMatch, optionalToken))
|
||
)
|
||
return !0;
|
||
(insertStop = !0), (testPos = pos);
|
||
}
|
||
} else if (match.isAlternator) {
|
||
var maltMatches,
|
||
alternateToken = match,
|
||
malternateMatches = [],
|
||
currentMatches = matches.slice(),
|
||
loopNdxCnt = loopNdx.length,
|
||
altIndex =
|
||
ndxInitializer.length > 0 ? ndxInitializer.shift() : -1;
|
||
if (-1 === altIndex || "string" == typeof altIndex) {
|
||
var amndx,
|
||
currentPos = testPos,
|
||
ndxInitializerClone = ndxInitializer.slice(),
|
||
altIndexArr = [];
|
||
if ("string" == typeof altIndex)
|
||
altIndexArr = altIndex.split(",");
|
||
else
|
||
for (
|
||
amndx = 0;
|
||
amndx < alternateToken.matches.length;
|
||
amndx++
|
||
)
|
||
altIndexArr.push(amndx);
|
||
for (var ndx = 0; ndx < altIndexArr.length; ndx++) {
|
||
if (
|
||
((amndx = parseInt(altIndexArr[ndx])),
|
||
(matches = []),
|
||
(ndxInitializer =
|
||
resolveNdxInitializer(testPos, amndx, loopNdxCnt) ||
|
||
ndxInitializerClone.slice()),
|
||
!0 !==
|
||
(match =
|
||
handleMatch(
|
||
alternateToken.matches[amndx] ||
|
||
maskToken.matches[amndx],
|
||
[amndx].concat(loopNdx),
|
||
quantifierRecurse
|
||
) || match) &&
|
||
match !== undefined &&
|
||
altIndexArr[altIndexArr.length - 1] <
|
||
alternateToken.matches.length)
|
||
) {
|
||
var ntndx = $.inArray(match, maskToken.matches) + 1;
|
||
maskToken.matches.length > ntndx &&
|
||
(match = handleMatch(
|
||
maskToken.matches[ntndx],
|
||
[ntndx].concat(loopNdx.slice(1, loopNdx.length)),
|
||
quantifierRecurse
|
||
)) &&
|
||
(altIndexArr.push(ntndx.toString()),
|
||
$.each(matches, function (ndx, lmnt) {
|
||
lmnt.alternation = loopNdx.length - 1;
|
||
}));
|
||
}
|
||
(maltMatches = matches.slice()),
|
||
(testPos = currentPos),
|
||
(matches = []);
|
||
for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) {
|
||
var altMatch = maltMatches[ndx1],
|
||
dropMatch = !1;
|
||
altMatch.alternation = altMatch.alternation || loopNdxCnt;
|
||
for (
|
||
var ndx2 = 0;
|
||
ndx2 < malternateMatches.length;
|
||
ndx2++
|
||
) {
|
||
var altMatch2 = malternateMatches[ndx2];
|
||
if (
|
||
"string" != typeof altIndex ||
|
||
-1 !==
|
||
$.inArray(
|
||
altMatch.locator[altMatch.alternation].toString(),
|
||
altIndexArr
|
||
)
|
||
) {
|
||
if (
|
||
(function (source, target) {
|
||
return (
|
||
source.match.nativeDef ===
|
||
target.match.nativeDef ||
|
||
source.match.def === target.match.nativeDef ||
|
||
source.match.nativeDef === target.match.def
|
||
);
|
||
})(altMatch, altMatch2)
|
||
) {
|
||
(dropMatch = !0),
|
||
altMatch.alternation === altMatch2.alternation &&
|
||
-1 ===
|
||
altMatch2.locator[altMatch2.alternation]
|
||
.toString()
|
||
.indexOf(
|
||
altMatch.locator[altMatch.alternation]
|
||
) &&
|
||
((altMatch2.locator[altMatch2.alternation] =
|
||
altMatch2.locator[altMatch2.alternation] +
|
||
"," +
|
||
altMatch.locator[altMatch.alternation]),
|
||
(altMatch2.alternation = altMatch.alternation)),
|
||
altMatch.match.nativeDef === altMatch2.match.def &&
|
||
((altMatch.locator[altMatch.alternation] =
|
||
altMatch2.locator[altMatch2.alternation]),
|
||
malternateMatches.splice(
|
||
malternateMatches.indexOf(altMatch2),
|
||
1,
|
||
altMatch
|
||
));
|
||
break;
|
||
}
|
||
if (altMatch.match.def === altMatch2.match.def) {
|
||
dropMatch = !1;
|
||
break;
|
||
}
|
||
if (
|
||
(function (source, target) {
|
||
return (
|
||
null === source.match.fn &&
|
||
null !== target.match.fn &&
|
||
target.match.fn.test(
|
||
source.match.def,
|
||
getMaskSet(),
|
||
pos,
|
||
!1,
|
||
opts,
|
||
!1
|
||
)
|
||
);
|
||
})(altMatch, altMatch2) ||
|
||
(function (source, target) {
|
||
return (
|
||
null !== source.match.fn &&
|
||
null !== target.match.fn &&
|
||
target.match.fn.test(
|
||
source.match.def.replace(/[\[\]]/g, ""),
|
||
getMaskSet(),
|
||
pos,
|
||
!1,
|
||
opts,
|
||
!1
|
||
)
|
||
);
|
||
})(altMatch, altMatch2)
|
||
) {
|
||
altMatch.alternation === altMatch2.alternation &&
|
||
-1 ===
|
||
altMatch.locator[altMatch.alternation]
|
||
.toString()
|
||
.indexOf(
|
||
altMatch2.locator[altMatch2.alternation]
|
||
.toString()
|
||
.split("")[0]
|
||
) &&
|
||
((altMatch.na =
|
||
altMatch.na ||
|
||
altMatch.locator[
|
||
altMatch.alternation
|
||
].toString()),
|
||
-1 ===
|
||
altMatch.na.indexOf(
|
||
altMatch.locator[altMatch.alternation]
|
||
.toString()
|
||
.split("")[0]
|
||
) &&
|
||
(altMatch.na =
|
||
altMatch.na +
|
||
"," +
|
||
altMatch.locator[altMatch2.alternation]
|
||
.toString()
|
||
.split("")[0]),
|
||
(dropMatch = !0),
|
||
(altMatch.locator[altMatch.alternation] =
|
||
altMatch2.locator[altMatch2.alternation]
|
||
.toString()
|
||
.split("")[0] +
|
||
"," +
|
||
altMatch.locator[altMatch.alternation]),
|
||
malternateMatches.splice(
|
||
malternateMatches.indexOf(altMatch2),
|
||
0,
|
||
altMatch
|
||
));
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
dropMatch || malternateMatches.push(altMatch);
|
||
}
|
||
}
|
||
"string" == typeof altIndex &&
|
||
(malternateMatches = $.map(
|
||
malternateMatches,
|
||
function (lmnt, ndx) {
|
||
if (isFinite(ndx)) {
|
||
var alternation = lmnt.alternation,
|
||
altLocArr = lmnt.locator[alternation]
|
||
.toString()
|
||
.split(",");
|
||
(lmnt.locator[alternation] = undefined),
|
||
(lmnt.alternation = undefined);
|
||
for (var alndx = 0; alndx < altLocArr.length; alndx++)
|
||
-1 !== $.inArray(altLocArr[alndx], altIndexArr) &&
|
||
(lmnt.locator[alternation] !== undefined
|
||
? ((lmnt.locator[alternation] += ","),
|
||
(lmnt.locator[alternation] += altLocArr[alndx]))
|
||
: (lmnt.locator[alternation] = parseInt(
|
||
altLocArr[alndx]
|
||
)),
|
||
(lmnt.alternation = alternation));
|
||
if (lmnt.locator[alternation] !== undefined)
|
||
return lmnt;
|
||
}
|
||
}
|
||
)),
|
||
(matches = currentMatches.concat(malternateMatches)),
|
||
(testPos = pos),
|
||
(insertStop = matches.length > 0),
|
||
(match = malternateMatches.length > 0),
|
||
(ndxInitializer = ndxInitializerClone.slice());
|
||
} else
|
||
match = handleMatch(
|
||
alternateToken.matches[altIndex] ||
|
||
maskToken.matches[altIndex],
|
||
[altIndex].concat(loopNdx),
|
||
quantifierRecurse
|
||
);
|
||
if (match) return !0;
|
||
} 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) &&
|
||
testPos <= pos;
|
||
qndx++
|
||
) {
|
||
var tokenGroup =
|
||
maskToken.matches[$.inArray(qt, maskToken.matches) - 1];
|
||
if (
|
||
(match = handleMatch(
|
||
tokenGroup,
|
||
[qndx].concat(loopNdx),
|
||
tokenGroup
|
||
))
|
||
) {
|
||
if (
|
||
((latestMatch = matches[matches.length - 1].match),
|
||
(latestMatch.optionalQuantifier =
|
||
qndx > qt.quantifier.min - 1),
|
||
isFirstMatch(latestMatch, tokenGroup))
|
||
) {
|
||
if (qndx > qt.quantifier.min - 1) {
|
||
(insertStop = !0), (testPos = pos);
|
||
break;
|
||
}
|
||
return !0;
|
||
}
|
||
return !0;
|
||
}
|
||
}
|
||
else if (
|
||
(match = resolveTestFromToken(
|
||
match,
|
||
ndxInitializer,
|
||
loopNdx,
|
||
quantifierRecurse
|
||
))
|
||
)
|
||
return !0;
|
||
} else testPos++;
|
||
}
|
||
for (
|
||
var tndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0;
|
||
tndx < maskToken.matches.length;
|
||
tndx++
|
||
)
|
||
if (!0 !== maskToken.matches[tndx].isQuantifier) {
|
||
var match = handleMatch(
|
||
maskToken.matches[tndx],
|
||
[tndx].concat(loopNdx),
|
||
quantifierRecurse
|
||
);
|
||
if (match && testPos === pos) return match;
|
||
if (testPos > pos) break;
|
||
}
|
||
}
|
||
function filterTests(tests) {
|
||
if (
|
||
opts.keepStatic &&
|
||
pos > 0 &&
|
||
tests.length >
|
||
1 + ("" === tests[tests.length - 1].match.def ? 1 : 0) &&
|
||
!0 !== tests[0].match.optionality &&
|
||
!0 !== tests[0].match.optionalQuantifier &&
|
||
null === tests[0].match.fn &&
|
||
!/[0-9a-bA-Z]/.test(tests[0].match.def)
|
||
) {
|
||
if (getMaskSet().validPositions[pos - 1] === undefined)
|
||
return [determineTestTemplate(tests)];
|
||
if (
|
||
getMaskSet().validPositions[pos - 1].alternation ===
|
||
tests[0].alternation
|
||
)
|
||
return [determineTestTemplate(tests)];
|
||
if (getMaskSet().validPositions[pos - 1])
|
||
return [determineTestTemplate(tests)];
|
||
}
|
||
return tests;
|
||
}
|
||
var latestMatch,
|
||
maskTokens = getMaskSet().maskToken,
|
||
testPos = ndxIntlzr ? tstPs : 0,
|
||
ndxInitializer = ndxIntlzr ? ndxIntlzr.slice() : [0],
|
||
matches = [],
|
||
insertStop = !1,
|
||
cacheDependency = ndxIntlzr ? ndxIntlzr.join("") : "";
|
||
if (pos > -1) {
|
||
if (ndxIntlzr === undefined) {
|
||
for (
|
||
var test, previousPos = pos - 1;
|
||
(test =
|
||
getMaskSet().validPositions[previousPos] ||
|
||
getMaskSet().tests[previousPos]) === undefined &&
|
||
previousPos > -1;
|
||
|
||
)
|
||
previousPos--;
|
||
test !== undefined &&
|
||
previousPos > -1 &&
|
||
((ndxInitializer = (function (tests) {
|
||
var locator = [];
|
||
return (
|
||
$.isArray(tests) || (tests = [tests]),
|
||
tests.length > 0 &&
|
||
(tests[0].alternation === undefined
|
||
? 0 ===
|
||
(locator = determineTestTemplate(
|
||
tests.slice()
|
||
).locator.slice()).length &&
|
||
(locator = tests[0].locator.slice())
|
||
: $.each(tests, function (ndx, tst) {
|
||
if ("" !== tst.def)
|
||
if (0 === locator.length)
|
||
locator = tst.locator.slice();
|
||
else
|
||
for (var i = 0; i < locator.length; i++)
|
||
tst.locator[i] &&
|
||
-1 ===
|
||
locator[i]
|
||
.toString()
|
||
.indexOf(tst.locator[i]) &&
|
||
(locator[i] += "," + tst.locator[i]);
|
||
})),
|
||
locator
|
||
);
|
||
})(test)),
|
||
(cacheDependency = ndxInitializer.join("")),
|
||
(testPos = previousPos));
|
||
}
|
||
if (
|
||
getMaskSet().tests[pos] &&
|
||
getMaskSet().tests[pos][0].cd === cacheDependency
|
||
)
|
||
return filterTests(getMaskSet().tests[pos]);
|
||
for (
|
||
var mtndx = ndxInitializer.shift();
|
||
mtndx < maskTokens.length &&
|
||
!(
|
||
(resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [mtndx]) &&
|
||
testPos === pos) ||
|
||
testPos > pos
|
||
);
|
||
mtndx++
|
||
);
|
||
}
|
||
return (
|
||
(0 === matches.length || insertStop) &&
|
||
matches.push({
|
||
match: {
|
||
fn: null,
|
||
cardinality: 0,
|
||
optionality: !0,
|
||
casing: null,
|
||
def: "",
|
||
placeholder: "",
|
||
},
|
||
locator: [],
|
||
cd: cacheDependency,
|
||
}),
|
||
ndxIntlzr !== undefined && getMaskSet().tests[pos]
|
||
? filterTests($.extend(!0, [], matches))
|
||
: ((getMaskSet().tests[pos] = $.extend(!0, [], matches)),
|
||
filterTests(getMaskSet().tests[pos]))
|
||
);
|
||
}
|
||
function getBufferTemplate() {
|
||
return (
|
||
getMaskSet()._buffer === undefined &&
|
||
((getMaskSet()._buffer = getMaskTemplate(!1, 1)),
|
||
getMaskSet().buffer === undefined &&
|
||
(getMaskSet().buffer = getMaskSet()._buffer.slice())),
|
||
getMaskSet()._buffer
|
||
);
|
||
}
|
||
function getBuffer(noCache) {
|
||
return (
|
||
(getMaskSet().buffer !== undefined && !0 !== noCache) ||
|
||
(getMaskSet().buffer = getMaskTemplate(
|
||
!0,
|
||
getLastValidPosition(),
|
||
!0
|
||
)),
|
||
getMaskSet().buffer
|
||
);
|
||
}
|
||
function refreshFromBuffer(start, end, buffer) {
|
||
var i, p;
|
||
if (!0 === start) resetMaskSet(), (start = 0), (end = buffer.length);
|
||
else for (i = start; i < end; i++) delete getMaskSet().validPositions[i];
|
||
for (p = start, i = start; i < end; i++)
|
||
if ((resetMaskSet(!0), buffer[i] !== opts.skipOptionalPartCharacter)) {
|
||
var valResult = isValid(p, buffer[i], !0, !0);
|
||
!1 !== valResult &&
|
||
(resetMaskSet(!0),
|
||
(p =
|
||
valResult.caret !== undefined
|
||
? valResult.caret
|
||
: valResult.pos + 1));
|
||
}
|
||
}
|
||
function casing(elem, test, pos) {
|
||
switch (opts.casing || test.casing) {
|
||
case "upper":
|
||
elem = elem.toUpperCase();
|
||
break;
|
||
|
||
case "lower":
|
||
elem = elem.toLowerCase();
|
||
break;
|
||
|
||
case "title":
|
||
var posBefore = getMaskSet().validPositions[pos - 1];
|
||
elem =
|
||
0 === pos ||
|
||
(posBefore &&
|
||
posBefore.input === String.fromCharCode(Inputmask.keyCode.SPACE))
|
||
? elem.toUpperCase()
|
||
: elem.toLowerCase();
|
||
break;
|
||
|
||
default:
|
||
if ($.isFunction(opts.casing)) {
|
||
var args = Array.prototype.slice.call(arguments);
|
||
args.push(getMaskSet().validPositions),
|
||
(elem = opts.casing.apply(this, args));
|
||
}
|
||
}
|
||
return elem;
|
||
}
|
||
function checkAlternationMatch(altArr1, altArr2, na) {
|
||
for (
|
||
var naNdx,
|
||
altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1),
|
||
isMatch = !1,
|
||
naArr = na !== undefined ? na.split(",") : [],
|
||
i = 0;
|
||
i < naArr.length;
|
||
i++
|
||
)
|
||
-1 !== (naNdx = altArr1.indexOf(naArr[i])) && altArr1.splice(naNdx, 1);
|
||
for (var alndx = 0; alndx < altArr1.length; alndx++)
|
||
if (-1 !== $.inArray(altArr1[alndx], altArrC)) {
|
||
isMatch = !0;
|
||
break;
|
||
}
|
||
return isMatch;
|
||
}
|
||
function isValid(
|
||
pos,
|
||
c,
|
||
strict,
|
||
fromSetValid,
|
||
fromAlternate,
|
||
validateOnly
|
||
) {
|
||
function isSelection(posObj) {
|
||
var selection = isRTL
|
||
? posObj.begin - posObj.end > 1 || posObj.begin - posObj.end == 1
|
||
: posObj.end - posObj.begin > 1 || posObj.end - posObj.begin == 1;
|
||
return selection &&
|
||
0 === posObj.begin &&
|
||
posObj.end === getMaskSet().maskLength
|
||
? "full"
|
||
: selection;
|
||
}
|
||
function _isValid(position, c, strict) {
|
||
var rslt = !1;
|
||
return (
|
||
$.each(getTests(position), function (ndx, tst) {
|
||
for (
|
||
var test = tst.match,
|
||
loopend = c ? 1 : 0,
|
||
chrs = "",
|
||
i = test.cardinality;
|
||
i > loopend;
|
||
i--
|
||
)
|
||
chrs += getBufferElement(position - (i - 1));
|
||
if (
|
||
(c && (chrs += c),
|
||
getBuffer(!0),
|
||
!1 !==
|
||
(rslt =
|
||
null != test.fn
|
||
? test.fn.test(
|
||
chrs,
|
||
getMaskSet(),
|
||
position,
|
||
strict,
|
||
opts,
|
||
isSelection(pos)
|
||
)
|
||
: (c === test.def ||
|
||
c === opts.skipOptionalPartCharacter) &&
|
||
"" !== test.def && {
|
||
c: getPlaceholder(position, test, !0) || test.def,
|
||
pos: position,
|
||
}))
|
||
) {
|
||
var elem = rslt.c !== undefined ? rslt.c : c;
|
||
elem =
|
||
elem === opts.skipOptionalPartCharacter && null === test.fn
|
||
? getPlaceholder(position, test, !0) || test.def
|
||
: elem;
|
||
var validatedPos = position,
|
||
possibleModifiedBuffer = getBuffer();
|
||
if (
|
||
(rslt.remove !== undefined &&
|
||
($.isArray(rslt.remove) || (rslt.remove = [rslt.remove]),
|
||
$.each(
|
||
rslt.remove.sort(function (a, b) {
|
||
return b - a;
|
||
}),
|
||
function (ndx, lmnt) {
|
||
stripValidPositions(lmnt, lmnt + 1, !0);
|
||
}
|
||
)),
|
||
rslt.insert !== undefined &&
|
||
($.isArray(rslt.insert) || (rslt.insert = [rslt.insert]),
|
||
$.each(
|
||
rslt.insert.sort(function (a, b) {
|
||
return a - b;
|
||
}),
|
||
function (ndx, lmnt) {
|
||
isValid(lmnt.pos, lmnt.c, !0, fromSetValid);
|
||
}
|
||
)),
|
||
rslt.refreshFromBuffer)
|
||
) {
|
||
var refresh = rslt.refreshFromBuffer;
|
||
if (
|
||
(refreshFromBuffer(
|
||
!0 === refresh ? refresh : refresh.start,
|
||
refresh.end,
|
||
possibleModifiedBuffer
|
||
),
|
||
rslt.pos === undefined && rslt.c === undefined)
|
||
)
|
||
return (rslt.pos = getLastValidPosition()), !1;
|
||
if (
|
||
(validatedPos =
|
||
rslt.pos !== undefined ? rslt.pos : position) !== position
|
||
)
|
||
return (
|
||
(rslt = $.extend(
|
||
rslt,
|
||
isValid(validatedPos, elem, !0, fromSetValid)
|
||
)),
|
||
!1
|
||
);
|
||
} else if (
|
||
!0 !== rslt &&
|
||
rslt.pos !== undefined &&
|
||
rslt.pos !== position &&
|
||
((validatedPos = rslt.pos),
|
||
refreshFromBuffer(position, validatedPos, getBuffer().slice()),
|
||
validatedPos !== position)
|
||
)
|
||
return (
|
||
(rslt = $.extend(rslt, isValid(validatedPos, elem, !0))), !1
|
||
);
|
||
return (
|
||
(!0 === rslt ||
|
||
rslt.pos !== undefined ||
|
||
rslt.c !== undefined) &&
|
||
(ndx > 0 && resetMaskSet(!0),
|
||
setValidPosition(
|
||
validatedPos,
|
||
$.extend({}, tst, {
|
||
input: casing(elem, test, validatedPos),
|
||
}),
|
||
fromSetValid,
|
||
isSelection(pos)
|
||
) || (rslt = !1),
|
||
!1)
|
||
);
|
||
}
|
||
}),
|
||
rslt
|
||
);
|
||
}
|
||
function setValidPosition(pos, validTest, fromSetValid, isSelection) {
|
||
if (
|
||
isSelection ||
|
||
(opts.insertMode &&
|
||
getMaskSet().validPositions[pos] !== undefined &&
|
||
fromSetValid === undefined)
|
||
) {
|
||
var i,
|
||
positionsClone = $.extend(!0, {}, getMaskSet().validPositions),
|
||
lvp = getLastValidPosition(undefined, !0);
|
||
for (i = pos; i <= lvp; i++) delete getMaskSet().validPositions[i];
|
||
getMaskSet().validPositions[pos] = $.extend(!0, {}, validTest);
|
||
var j,
|
||
valid = !0,
|
||
vps = getMaskSet().validPositions,
|
||
needsValidation = !1,
|
||
initialLength = getMaskSet().maskLength;
|
||
for (i = j = pos; i <= lvp; i++) {
|
||
var t = positionsClone[i];
|
||
if (t !== undefined)
|
||
for (
|
||
var posMatch = j;
|
||
posMatch < getMaskSet().maskLength &&
|
||
((null === t.match.fn &&
|
||
vps[i] &&
|
||
(!0 === vps[i].match.optionalQuantifier ||
|
||
!0 === vps[i].match.optionality)) ||
|
||
null != t.match.fn);
|
||
|
||
) {
|
||
if (
|
||
(posMatch++,
|
||
!1 === needsValidation &&
|
||
positionsClone[posMatch] &&
|
||
positionsClone[posMatch].match.def === t.match.def)
|
||
)
|
||
(getMaskSet().validPositions[posMatch] = $.extend(
|
||
!0,
|
||
{},
|
||
positionsClone[posMatch]
|
||
)),
|
||
(getMaskSet().validPositions[posMatch].input = t.input),
|
||
fillMissingNonMask(posMatch),
|
||
(j = posMatch),
|
||
(valid = !0);
|
||
else if (positionCanMatchDefinition(posMatch, t.match.def)) {
|
||
var result = isValid(posMatch, t.input, !0, !0);
|
||
(valid = !1 !== result),
|
||
(j =
|
||
result.caret || result.insert
|
||
? getLastValidPosition()
|
||
: posMatch),
|
||
(needsValidation = !0);
|
||
} else if (
|
||
!(valid = !0 === t.generatedInput) &&
|
||
posMatch >= getMaskSet().maskLength - 1
|
||
)
|
||
break;
|
||
if (
|
||
(getMaskSet().maskLength < initialLength &&
|
||
(getMaskSet().maskLength = initialLength),
|
||
valid)
|
||
)
|
||
break;
|
||
}
|
||
if (!valid) break;
|
||
}
|
||
if (!valid)
|
||
return (
|
||
(getMaskSet().validPositions = $.extend(!0, {}, positionsClone)),
|
||
resetMaskSet(!0),
|
||
!1
|
||
);
|
||
} else getMaskSet().validPositions[pos] = $.extend(!0, {}, validTest);
|
||
return resetMaskSet(!0), !0;
|
||
}
|
||
function fillMissingNonMask(maskPos) {
|
||
for (
|
||
var pndx = maskPos - 1;
|
||
pndx > -1 && !getMaskSet().validPositions[pndx];
|
||
pndx--
|
||
);
|
||
var testTemplate, testsFromPos;
|
||
for (pndx++; pndx < maskPos; pndx++)
|
||
getMaskSet().validPositions[pndx] === undefined &&
|
||
(!1 === opts.jitMasking || opts.jitMasking > pndx) &&
|
||
("" ===
|
||
(testsFromPos = getTests(
|
||
pndx,
|
||
getTestTemplate(pndx - 1).locator,
|
||
pndx - 1
|
||
).slice())[testsFromPos.length - 1].match.def &&
|
||
testsFromPos.pop(),
|
||
(testTemplate = determineTestTemplate(testsFromPos)) &&
|
||
(testTemplate.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
|
||
))) &&
|
||
!1 !==
|
||
(result = _isValid(
|
||
pndx,
|
||
getPlaceholder(pndx, testTemplate.match, !0) ||
|
||
(null == testTemplate.match.fn
|
||
? testTemplate.match.def
|
||
: "" !== getPlaceholder(pndx)
|
||
? getPlaceholder(pndx)
|
||
: getBuffer()[pndx]),
|
||
!0
|
||
)) &&
|
||
(getMaskSet().validPositions[result.pos || pndx].generatedInput =
|
||
!0));
|
||
}
|
||
strict = !0 === strict;
|
||
var maskPos = pos;
|
||
pos.begin !== undefined &&
|
||
(maskPos = isRTL && !isSelection(pos) ? pos.end : pos.begin);
|
||
var result = !0,
|
||
positionsClone = $.extend(!0, {}, getMaskSet().validPositions);
|
||
if (
|
||
($.isFunction(opts.preValidation) &&
|
||
!strict &&
|
||
!0 !== fromSetValid &&
|
||
!0 !== validateOnly &&
|
||
(result = opts.preValidation(
|
||
getBuffer(),
|
||
maskPos,
|
||
c,
|
||
isSelection(pos),
|
||
opts
|
||
)),
|
||
!0 === result)
|
||
) {
|
||
if (
|
||
(fillMissingNonMask(maskPos),
|
||
isSelection(pos) &&
|
||
(handleRemove(undefined, Inputmask.keyCode.DELETE, pos, !0, !0),
|
||
(maskPos = getMaskSet().p)),
|
||
maskPos < getMaskSet().maskLength &&
|
||
(maxLength === undefined || maskPos < maxLength) &&
|
||
((result = _isValid(maskPos, c, strict)),
|
||
(!strict || !0 === fromSetValid) &&
|
||
!1 === result &&
|
||
!0 !== validateOnly))
|
||
) {
|
||
var currentPosValid = getMaskSet().validPositions[maskPos];
|
||
if (
|
||
!currentPosValid ||
|
||
null !== currentPosValid.match.fn ||
|
||
(currentPosValid.match.def !== c &&
|
||
c !== opts.skipOptionalPartCharacter)
|
||
) {
|
||
if (
|
||
(opts.insertMode ||
|
||
getMaskSet().validPositions[seekNext(maskPos)] === undefined) &&
|
||
!isMask(maskPos, !0)
|
||
)
|
||
for (
|
||
var nPos = maskPos + 1, snPos = seekNext(maskPos);
|
||
nPos <= snPos;
|
||
nPos++
|
||
)
|
||
if (!1 !== (result = _isValid(nPos, c, strict))) {
|
||
!(function (originalPos, newPos) {
|
||
var vp = getMaskSet().validPositions[newPos];
|
||
if (vp)
|
||
for (
|
||
var targetLocator = vp.locator,
|
||
tll = targetLocator.length,
|
||
ps = originalPos;
|
||
ps < newPos;
|
||
ps++
|
||
)
|
||
if (
|
||
getMaskSet().validPositions[ps] === undefined &&
|
||
!isMask(ps, !0)
|
||
) {
|
||
var tests = getTests(ps).slice(),
|
||
bestMatch = determineTestTemplate(tests, !0),
|
||
equality = -1;
|
||
"" === tests[tests.length - 1].match.def &&
|
||
tests.pop(),
|
||
$.each(tests, function (ndx, tst) {
|
||
for (var i = 0; i < tll; i++) {
|
||
if (
|
||
tst.locator[i] === undefined ||
|
||
!checkAlternationMatch(
|
||
tst.locator[i].toString().split(","),
|
||
targetLocator[i].toString().split(","),
|
||
tst.na
|
||
)
|
||
) {
|
||
var targetAI = targetLocator[i],
|
||
bestMatchAI = bestMatch.locator[i],
|
||
tstAI = tst.locator[i];
|
||
targetAI - bestMatchAI >
|
||
Math.abs(targetAI - tstAI) &&
|
||
(bestMatch = tst);
|
||
break;
|
||
}
|
||
equality < i &&
|
||
((equality = i), (bestMatch = tst));
|
||
}
|
||
}),
|
||
((bestMatch = $.extend({}, bestMatch, {
|
||
input:
|
||
getPlaceholder(ps, bestMatch.match, !0) ||
|
||
bestMatch.match.def,
|
||
})).generatedInput = !0),
|
||
setValidPosition(ps, bestMatch, !0),
|
||
(getMaskSet().validPositions[newPos] = undefined),
|
||
_isValid(newPos, vp.input, !0);
|
||
}
|
||
})(maskPos, result.pos !== undefined ? result.pos : nPos),
|
||
(maskPos = nPos);
|
||
break;
|
||
}
|
||
} else
|
||
result = {
|
||
caret: seekNext(maskPos),
|
||
};
|
||
}
|
||
!1 === result &&
|
||
opts.keepStatic &&
|
||
!strict &&
|
||
!0 !== fromAlternate &&
|
||
(result = (function (pos, c, strict) {
|
||
var lastAlt,
|
||
alternation,
|
||
altPos,
|
||
prevAltPos,
|
||
i,
|
||
validPos,
|
||
altNdxs,
|
||
decisionPos,
|
||
validPsClone = $.extend(!0, {}, getMaskSet().validPositions),
|
||
isValidRslt = !1,
|
||
lAltPos = getLastValidPosition();
|
||
for (
|
||
prevAltPos = getMaskSet().validPositions[lAltPos];
|
||
lAltPos >= 0;
|
||
lAltPos--
|
||
)
|
||
if (
|
||
(altPos = getMaskSet().validPositions[lAltPos]) &&
|
||
altPos.alternation !== undefined
|
||
) {
|
||
if (
|
||
((lastAlt = lAltPos),
|
||
(alternation =
|
||
getMaskSet().validPositions[lastAlt].alternation),
|
||
prevAltPos.locator[altPos.alternation] !==
|
||
altPos.locator[altPos.alternation])
|
||
)
|
||
break;
|
||
prevAltPos = altPos;
|
||
}
|
||
if (alternation !== undefined) {
|
||
decisionPos = parseInt(lastAlt);
|
||
var decisionTaker =
|
||
prevAltPos.locator[prevAltPos.alternation || alternation] !==
|
||
undefined
|
||
? prevAltPos.locator[prevAltPos.alternation || alternation]
|
||
: altNdxs[0];
|
||
decisionTaker.length > 0 &&
|
||
(decisionTaker = decisionTaker.split(",")[0]);
|
||
var possibilityPos = getMaskSet().validPositions[decisionPos],
|
||
prevPos = getMaskSet().validPositions[decisionPos - 1];
|
||
$.each(
|
||
getTests(
|
||
decisionPos,
|
||
prevPos ? prevPos.locator : undefined,
|
||
decisionPos - 1
|
||
),
|
||
function (ndx, test) {
|
||
altNdxs = test.locator[alternation]
|
||
? test.locator[alternation].toString().split(",")
|
||
: [];
|
||
for (var mndx = 0; mndx < altNdxs.length; mndx++) {
|
||
var validInputs = [],
|
||
staticInputsBeforePos = 0,
|
||
staticInputsBeforePosAlternate = 0,
|
||
verifyValidInput = !1;
|
||
if (
|
||
decisionTaker < altNdxs[mndx] &&
|
||
(test.na === undefined ||
|
||
-1 === $.inArray(altNdxs[mndx], test.na.split(",")) ||
|
||
-1 === $.inArray(decisionTaker.toString(), altNdxs))
|
||
) {
|
||
getMaskSet().validPositions[decisionPos] = $.extend(
|
||
!0,
|
||
{},
|
||
test
|
||
);
|
||
var possibilities =
|
||
getMaskSet().validPositions[decisionPos].locator;
|
||
for (
|
||
getMaskSet().validPositions[decisionPos].locator[
|
||
alternation
|
||
] = parseInt(altNdxs[mndx]),
|
||
null == test.match.fn
|
||
? (possibilityPos.input !== test.match.def &&
|
||
((verifyValidInput = !0),
|
||
!0 !== possibilityPos.generatedInput &&
|
||
validInputs.push(possibilityPos.input)),
|
||
staticInputsBeforePosAlternate++,
|
||
(getMaskSet().validPositions[
|
||
decisionPos
|
||
].generatedInput = !/[0-9a-bA-Z]/.test(
|
||
test.match.def
|
||
)),
|
||
(getMaskSet().validPositions[decisionPos].input =
|
||
test.match.def))
|
||
: (getMaskSet().validPositions[decisionPos].input =
|
||
possibilityPos.input),
|
||
i = decisionPos + 1;
|
||
i < getLastValidPosition(undefined, !0) + 1;
|
||
i++
|
||
)
|
||
(validPos = getMaskSet().validPositions[i]) &&
|
||
!0 !== validPos.generatedInput &&
|
||
/[0-9a-bA-Z]/.test(validPos.input)
|
||
? validInputs.push(validPos.input)
|
||
: i < pos && staticInputsBeforePos++,
|
||
delete getMaskSet().validPositions[i];
|
||
for (
|
||
verifyValidInput &&
|
||
validInputs[0] === test.match.def &&
|
||
validInputs.shift(),
|
||
resetMaskSet(!0),
|
||
isValidRslt = !0;
|
||
validInputs.length > 0;
|
||
|
||
) {
|
||
var input = validInputs.shift();
|
||
if (
|
||
input !== opts.skipOptionalPartCharacter &&
|
||
!(isValidRslt = isValid(
|
||
getLastValidPosition(undefined, !0) + 1,
|
||
input,
|
||
!1,
|
||
fromSetValid,
|
||
!0
|
||
))
|
||
)
|
||
break;
|
||
}
|
||
if (isValidRslt) {
|
||
getMaskSet().validPositions[decisionPos].locator =
|
||
possibilities;
|
||
var targetLvp = getLastValidPosition(pos) + 1;
|
||
for (
|
||
i = decisionPos + 1;
|
||
i < getLastValidPosition() + 1;
|
||
i++
|
||
)
|
||
((validPos = getMaskSet().validPositions[i]) ===
|
||
undefined ||
|
||
null == validPos.match.fn) &&
|
||
i <
|
||
pos +
|
||
(staticInputsBeforePosAlternate -
|
||
staticInputsBeforePos) &&
|
||
staticInputsBeforePosAlternate++;
|
||
isValidRslt = isValid(
|
||
(pos +=
|
||
staticInputsBeforePosAlternate -
|
||
staticInputsBeforePos) > targetLvp
|
||
? targetLvp
|
||
: pos,
|
||
c,
|
||
strict,
|
||
fromSetValid,
|
||
!0
|
||
);
|
||
}
|
||
if (isValidRslt) return !1;
|
||
resetMaskSet(),
|
||
(getMaskSet().validPositions = $.extend(
|
||
!0,
|
||
{},
|
||
validPsClone
|
||
));
|
||
}
|
||
}
|
||
}
|
||
);
|
||
}
|
||
return isValidRslt;
|
||
})(maskPos, c, strict)),
|
||
!0 === result &&
|
||
(result = {
|
||
pos: maskPos,
|
||
});
|
||
}
|
||
if (
|
||
$.isFunction(opts.postValidation) &&
|
||
!1 !== result &&
|
||
!strict &&
|
||
!0 !== fromSetValid &&
|
||
!0 !== validateOnly
|
||
) {
|
||
var postResult = opts.postValidation(getBuffer(!0), result, opts);
|
||
if (postResult.refreshFromBuffer && postResult.buffer) {
|
||
var refresh = postResult.refreshFromBuffer;
|
||
refreshFromBuffer(
|
||
!0 === refresh ? refresh : refresh.start,
|
||
refresh.end,
|
||
postResult.buffer
|
||
);
|
||
}
|
||
result = !0 === postResult ? result : postResult;
|
||
}
|
||
return (
|
||
result && result.pos === undefined && (result.pos = maskPos),
|
||
(!1 !== result && !0 !== validateOnly) ||
|
||
(resetMaskSet(!0),
|
||
(getMaskSet().validPositions = $.extend(!0, {}, positionsClone))),
|
||
result
|
||
);
|
||
}
|
||
function isMask(pos, strict) {
|
||
var test = getTestTemplate(pos).match;
|
||
if (("" === test.def && (test = getTest(pos).match), null != test.fn))
|
||
return test.fn;
|
||
if (!0 !== strict && pos > -1) {
|
||
var tests = getTests(pos);
|
||
return (
|
||
tests.length > 1 + ("" === tests[tests.length - 1].match.def ? 1 : 0)
|
||
);
|
||
}
|
||
return !1;
|
||
}
|
||
function seekNext(pos, newBlock) {
|
||
var maskL = getMaskSet().maskLength;
|
||
if (pos >= maskL) return maskL;
|
||
var position = pos;
|
||
for (
|
||
getTests(maskL + 1).length > 1 &&
|
||
(getMaskTemplate(!0, maskL + 1, !0), (maskL = getMaskSet().maskLength));
|
||
++position < maskL &&
|
||
((!0 === newBlock &&
|
||
(!0 !== getTest(position).match.newBlockMarker ||
|
||
!isMask(position))) ||
|
||
(!0 !== newBlock && !isMask(position)));
|
||
|
||
);
|
||
return position;
|
||
}
|
||
function seekPrevious(pos, newBlock) {
|
||
var tests,
|
||
position = pos;
|
||
if (position <= 0) return 0;
|
||
for (
|
||
;
|
||
--position > 0 &&
|
||
((!0 === newBlock && !0 !== getTest(position).match.newBlockMarker) ||
|
||
(!0 !== newBlock &&
|
||
!isMask(position) &&
|
||
((tests = getTests(position)).length < 2 ||
|
||
(2 === tests.length && "" === tests[1].match.def))));
|
||
|
||
);
|
||
return position;
|
||
}
|
||
function getBufferElement(position) {
|
||
return getMaskSet().validPositions[position] === undefined
|
||
? getPlaceholder(position)
|
||
: getMaskSet().validPositions[position].input;
|
||
}
|
||
function writeBuffer(input, buffer, caretPos, event, triggerInputEvent) {
|
||
if (event && $.isFunction(opts.onBeforeWrite)) {
|
||
var result = opts.onBeforeWrite.call(
|
||
inputmask,
|
||
event,
|
||
buffer,
|
||
caretPos,
|
||
opts
|
||
);
|
||
if (result) {
|
||
if (result.refreshFromBuffer) {
|
||
var refresh = result.refreshFromBuffer;
|
||
refreshFromBuffer(
|
||
!0 === refresh ? refresh : refresh.start,
|
||
refresh.end,
|
||
result.buffer || buffer
|
||
),
|
||
(buffer = getBuffer(!0));
|
||
}
|
||
caretPos !== undefined &&
|
||
(caretPos = result.caret !== undefined ? result.caret : caretPos);
|
||
}
|
||
}
|
||
input !== undefined &&
|
||
(input.inputmask._valueSet(buffer.join("")),
|
||
caretPos === undefined || (event !== undefined && "blur" === event.type)
|
||
? renderColorMask(input, caretPos, 0 === buffer.length)
|
||
: android && event && "input" === event.type
|
||
? setTimeout(function () {
|
||
caret(input, caretPos);
|
||
}, 0)
|
||
: caret(input, caretPos),
|
||
!0 === triggerInputEvent &&
|
||
((skipInputEvent = !0), $(input).trigger("input")));
|
||
}
|
||
function getPlaceholder(pos, test, returnPL) {
|
||
if (
|
||
(test = test || getTest(pos).match).placeholder !== undefined ||
|
||
!0 === returnPL
|
||
)
|
||
return $.isFunction(test.placeholder)
|
||
? test.placeholder(opts)
|
||
: test.placeholder;
|
||
if (null === test.fn) {
|
||
if (pos > -1 && getMaskSet().validPositions[pos] === undefined) {
|
||
var prevTest,
|
||
tests = getTests(pos),
|
||
staticAlternations = [];
|
||
if (
|
||
tests.length >
|
||
1 + ("" === tests[tests.length - 1].match.def ? 1 : 0)
|
||
)
|
||
for (var i = 0; i < tests.length; i++)
|
||
if (
|
||
!0 !== tests[i].match.optionality &&
|
||
!0 !== tests[i].match.optionalQuantifier &&
|
||
(null === tests[i].match.fn ||
|
||
prevTest === undefined ||
|
||
!1 !==
|
||
tests[i].match.fn.test(
|
||
prevTest.match.def,
|
||
getMaskSet(),
|
||
pos,
|
||
!0,
|
||
opts
|
||
)) &&
|
||
(staticAlternations.push(tests[i]),
|
||
null === tests[i].match.fn && (prevTest = tests[i]),
|
||
staticAlternations.length > 1 &&
|
||
/[0-9a-bA-Z]/.test(staticAlternations[0].match.def))
|
||
)
|
||
return opts.placeholder.charAt(pos % opts.placeholder.length);
|
||
}
|
||
return test.def;
|
||
}
|
||
return opts.placeholder.charAt(pos % opts.placeholder.length);
|
||
}
|
||
function checkVal(input, writeOut, strict, nptvl, initiatingEvent) {
|
||
function isTemplateMatch(ndx, charCodes) {
|
||
return (
|
||
-1 !==
|
||
getBufferTemplate()
|
||
.slice(ndx, seekNext(ndx))
|
||
.join("")
|
||
.indexOf(charCodes) &&
|
||
!isMask(ndx) &&
|
||
getTest(ndx).match.nativeDef ===
|
||
charCodes.charAt(charCodes.length - 1)
|
||
);
|
||
}
|
||
var inputValue = nptvl.slice(),
|
||
charCodes = "",
|
||
initialNdx = -1,
|
||
result = undefined;
|
||
if ((resetMaskSet(), strict || !0 === opts.autoUnmask))
|
||
initialNdx = seekNext(initialNdx);
|
||
else {
|
||
var staticInput = getBufferTemplate().slice(0, seekNext(-1)).join(""),
|
||
matches = inputValue
|
||
.join("")
|
||
.match(new RegExp("^" + Inputmask.escapeRegex(staticInput), "g"));
|
||
matches &&
|
||
matches.length > 0 &&
|
||
(inputValue.splice(0, matches.length * staticInput.length),
|
||
(initialNdx = seekNext(initialNdx)));
|
||
}
|
||
if (
|
||
(-1 === initialNdx
|
||
? ((getMaskSet().p = seekNext(initialNdx)), (initialNdx = 0))
|
||
: (getMaskSet().p = initialNdx),
|
||
$.each(inputValue, function (ndx, charCode) {
|
||
if (charCode !== undefined)
|
||
if (
|
||
getMaskSet().validPositions[ndx] === undefined &&
|
||
inputValue[ndx] === getPlaceholder(ndx) &&
|
||
isMask(ndx, !0) &&
|
||
!1 === isValid(ndx, inputValue[ndx], !0, undefined, undefined, !0)
|
||
)
|
||
getMaskSet().p++;
|
||
else {
|
||
var keypress = new $.Event("_checkval");
|
||
(keypress.which = charCode.charCodeAt(0)),
|
||
(charCodes += charCode);
|
||
var lvp = getLastValidPosition(undefined, !0),
|
||
lvTest = getMaskSet().validPositions[lvp],
|
||
nextTest = getTestTemplate(
|
||
lvp + 1,
|
||
lvTest ? lvTest.locator.slice() : undefined,
|
||
lvp
|
||
);
|
||
if (
|
||
!isTemplateMatch(initialNdx, charCodes) ||
|
||
strict ||
|
||
opts.autoUnmask
|
||
) {
|
||
var pos = strict
|
||
? ndx
|
||
: null == nextTest.match.fn &&
|
||
nextTest.match.optionality &&
|
||
lvp + 1 < getMaskSet().p
|
||
? lvp + 1
|
||
: getMaskSet().p;
|
||
(result = EventHandlers.keypressEvent.call(
|
||
input,
|
||
keypress,
|
||
!0,
|
||
!1,
|
||
strict,
|
||
pos
|
||
)),
|
||
(initialNdx = pos + 1),
|
||
(charCodes = "");
|
||
} else
|
||
result = EventHandlers.keypressEvent.call(
|
||
input,
|
||
keypress,
|
||
!0,
|
||
!1,
|
||
!0,
|
||
lvp + 1
|
||
);
|
||
if (
|
||
!1 !== result &&
|
||
!strict &&
|
||
$.isFunction(opts.onBeforeWrite)
|
||
) {
|
||
var origResult = result;
|
||
if (
|
||
((result = opts.onBeforeWrite.call(
|
||
inputmask,
|
||
keypress,
|
||
getBuffer(),
|
||
result.forwardPosition,
|
||
opts
|
||
)),
|
||
(result = $.extend(origResult, result)) &&
|
||
result.refreshFromBuffer)
|
||
) {
|
||
var refresh = result.refreshFromBuffer;
|
||
refreshFromBuffer(
|
||
!0 === refresh ? refresh : refresh.start,
|
||
refresh.end,
|
||
result.buffer
|
||
),
|
||
resetMaskSet(!0),
|
||
result.caret &&
|
||
((getMaskSet().p = result.caret),
|
||
(result.forwardPosition = result.caret));
|
||
}
|
||
}
|
||
}
|
||
}),
|
||
writeOut)
|
||
) {
|
||
var caretPos = undefined;
|
||
document.activeElement === input &&
|
||
result &&
|
||
(caretPos = opts.numericInput
|
||
? seekPrevious(result.forwardPosition)
|
||
: result.forwardPosition),
|
||
writeBuffer(
|
||
input,
|
||
getBuffer(),
|
||
caretPos,
|
||
initiatingEvent || new $.Event("checkval"),
|
||
initiatingEvent && "input" === initiatingEvent.type
|
||
);
|
||
}
|
||
}
|
||
function unmaskedvalue(input) {
|
||
if (input) {
|
||
if (input.inputmask === undefined) return input.value;
|
||
input.inputmask &&
|
||
input.inputmask.refreshValue &&
|
||
EventHandlers.setValueEvent.call(input);
|
||
}
|
||
var umValue = [],
|
||
vps = getMaskSet().validPositions;
|
||
for (var pndx in vps)
|
||
vps[pndx].match &&
|
||
null != vps[pndx].match.fn &&
|
||
umValue.push(vps[pndx].input);
|
||
var unmaskedValue =
|
||
0 === umValue.length
|
||
? ""
|
||
: (isRTL ? umValue.reverse() : umValue).join("");
|
||
if ($.isFunction(opts.onUnMask)) {
|
||
var bufferValue = (
|
||
isRTL ? getBuffer().slice().reverse() : getBuffer()
|
||
).join("");
|
||
unmaskedValue = opts.onUnMask.call(
|
||
inputmask,
|
||
bufferValue,
|
||
unmaskedValue,
|
||
opts
|
||
);
|
||
}
|
||
return unmaskedValue;
|
||
}
|
||
function caret(input, begin, end, notranslate) {
|
||
function translatePosition(pos) {
|
||
return (
|
||
!0 === notranslate ||
|
||
!isRTL ||
|
||
"number" != typeof pos ||
|
||
(opts.greedy && "" === opts.placeholder) ||
|
||
(pos = getBuffer().join("").length - pos),
|
||
pos
|
||
);
|
||
}
|
||
var range;
|
||
if (begin === undefined)
|
||
return (
|
||
input.setSelectionRange
|
||
? ((begin = input.selectionStart), (end = input.selectionEnd))
|
||
: window.getSelection
|
||
? ((range = window.getSelection().getRangeAt(0))
|
||
.commonAncestorContainer.parentNode !== input &&
|
||
range.commonAncestorContainer !== input) ||
|
||
((begin = range.startOffset), (end = range.endOffset))
|
||
: document.selection &&
|
||
document.selection.createRange &&
|
||
(end =
|
||
(begin =
|
||
0 -
|
||
(range = document.selection.createRange())
|
||
.duplicate()
|
||
.moveStart(
|
||
"character",
|
||
-input.inputmask._valueGet().length
|
||
)) + range.text.length),
|
||
{
|
||
begin: translatePosition(begin),
|
||
end: translatePosition(end),
|
||
}
|
||
);
|
||
if (
|
||
(begin.begin !== undefined &&
|
||
((end = begin.end), (begin = begin.begin)),
|
||
"number" == typeof begin)
|
||
) {
|
||
(begin = translatePosition(begin)),
|
||
(end =
|
||
"number" == typeof (end = translatePosition(end)) ? end : begin);
|
||
var scrollCalc =
|
||
parseInt(
|
||
((input.ownerDocument.defaultView || window).getComputedStyle
|
||
? (input.ownerDocument.defaultView || window).getComputedStyle(
|
||
input,
|
||
null
|
||
)
|
||
: input.currentStyle
|
||
).fontSize
|
||
) * end;
|
||
if (
|
||
((input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0),
|
||
mobile || !1 !== opts.insertMode || begin !== end || end++,
|
||
input.setSelectionRange)
|
||
)
|
||
(input.selectionStart = begin), (input.selectionEnd = end);
|
||
else if (window.getSelection) {
|
||
if (
|
||
((range = document.createRange()),
|
||
input.firstChild === undefined || null === input.firstChild)
|
||
) {
|
||
var textNode = document.createTextNode("");
|
||
input.appendChild(textNode);
|
||
}
|
||
range.setStart(
|
||
input.firstChild,
|
||
begin < input.inputmask._valueGet().length
|
||
? begin
|
||
: input.inputmask._valueGet().length
|
||
),
|
||
range.setEnd(
|
||
input.firstChild,
|
||
end < input.inputmask._valueGet().length
|
||
? end
|
||
: input.inputmask._valueGet().length
|
||
),
|
||
range.collapse(!0);
|
||
var sel = window.getSelection();
|
||
sel.removeAllRanges(), sel.addRange(range);
|
||
} else
|
||
input.createTextRange &&
|
||
((range = input.createTextRange()).collapse(!0),
|
||
range.moveEnd("character", end),
|
||
range.moveStart("character", begin),
|
||
range.select());
|
||
renderColorMask(input, {
|
||
begin: begin,
|
||
end: end,
|
||
});
|
||
}
|
||
}
|
||
function determineLastRequiredPosition(returnDefinition) {
|
||
var pos,
|
||
testPos,
|
||
buffer = getBuffer(),
|
||
bl = buffer.length,
|
||
lvp = getLastValidPosition(),
|
||
positions = {},
|
||
lvTest = getMaskSet().validPositions[lvp],
|
||
ndxIntlzr = lvTest !== undefined ? lvTest.locator.slice() : undefined;
|
||
for (pos = lvp + 1; pos < buffer.length; pos++)
|
||
(ndxIntlzr = (testPos = getTestTemplate(
|
||
pos,
|
||
ndxIntlzr,
|
||
pos - 1
|
||
)).locator.slice()),
|
||
(positions[pos] = $.extend(!0, {}, testPos));
|
||
var lvTestAlt =
|
||
lvTest && lvTest.alternation !== undefined
|
||
? lvTest.locator[lvTest.alternation]
|
||
: undefined;
|
||
for (
|
||
pos = bl - 1;
|
||
pos > lvp &&
|
||
((testPos = positions[pos]).match.optionality ||
|
||
(testPos.match.optionalQuantifier && testPos.match.newBlockMarker) ||
|
||
(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--;
|
||
return returnDefinition
|
||
? {
|
||
l: bl,
|
||
def: positions[bl] ? positions[bl].match : undefined,
|
||
}
|
||
: bl;
|
||
}
|
||
function clearOptionalTail(buffer) {
|
||
for (
|
||
var validPos,
|
||
rl = determineLastRequiredPosition(),
|
||
bl = buffer.length,
|
||
lv = getMaskSet().validPositions[getLastValidPosition()];
|
||
rl < bl &&
|
||
!isMask(rl, !0) &&
|
||
(validPos =
|
||
lv !== undefined
|
||
? getTestTemplate(rl, lv.locator.slice(""), lv)
|
||
: getTest(rl)) &&
|
||
!0 !== validPos.match.optionality &&
|
||
((!0 !== validPos.match.optionalQuantifier &&
|
||
!0 !== validPos.match.newBlockMarker) ||
|
||
(rl + 1 === bl &&
|
||
"" ===
|
||
(lv !== undefined
|
||
? getTestTemplate(rl + 1, lv.locator.slice(""), lv)
|
||
: getTest(rl + 1)
|
||
).match.def));
|
||
|
||
)
|
||
rl++;
|
||
for (
|
||
;
|
||
(validPos = getMaskSet().validPositions[rl - 1]) &&
|
||
validPos &&
|
||
validPos.match.optionality &&
|
||
validPos.input === opts.skipOptionalPartCharacter;
|
||
|
||
)
|
||
rl--;
|
||
return buffer.splice(rl), buffer;
|
||
}
|
||
function isComplete(buffer) {
|
||
if ($.isFunction(opts.isComplete)) return opts.isComplete(buffer, opts);
|
||
if ("*" === opts.repeat) return undefined;
|
||
var complete = !1,
|
||
lrp = determineLastRequiredPosition(!0),
|
||
aml = seekPrevious(lrp.l);
|
||
if (
|
||
lrp.def === undefined ||
|
||
lrp.def.newBlockMarker ||
|
||
lrp.def.optionality ||
|
||
lrp.def.optionalQuantifier
|
||
) {
|
||
complete = !0;
|
||
for (var i = 0; i <= aml; i++) {
|
||
var test = getTestTemplate(i).match;
|
||
if (
|
||
(null !== test.fn &&
|
||
getMaskSet().validPositions[i] === undefined &&
|
||
!0 !== test.optionality &&
|
||
!0 !== test.optionalQuantifier) ||
|
||
(null === test.fn && buffer[i] !== getPlaceholder(i, test))
|
||
) {
|
||
complete = !1;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
return complete;
|
||
}
|
||
function handleRemove(input, k, pos, strict, fromIsValid) {
|
||
if (
|
||
(opts.numericInput || isRTL) &&
|
||
(k === Inputmask.keyCode.BACKSPACE
|
||
? (k = Inputmask.keyCode.DELETE)
|
||
: k === Inputmask.keyCode.DELETE && (k = Inputmask.keyCode.BACKSPACE),
|
||
isRTL)
|
||
) {
|
||
var pend = pos.end;
|
||
(pos.end = pos.begin), (pos.begin = pend);
|
||
}
|
||
k === Inputmask.keyCode.BACKSPACE &&
|
||
(pos.end - pos.begin < 1 || !1 === opts.insertMode)
|
||
? ((pos.begin = seekPrevious(pos.begin)),
|
||
getMaskSet().validPositions[pos.begin] !== undefined &&
|
||
getMaskSet().validPositions[pos.begin].input ===
|
||
opts.groupSeparator &&
|
||
pos.begin--)
|
||
: k === Inputmask.keyCode.DELETE &&
|
||
pos.begin === pos.end &&
|
||
((pos.end =
|
||
isMask(pos.end, !0) &&
|
||
getMaskSet().validPositions[pos.end] &&
|
||
getMaskSet().validPositions[pos.end].input !== opts.radixPoint
|
||
? pos.end + 1
|
||
: seekNext(pos.end) + 1),
|
||
getMaskSet().validPositions[pos.begin] !== undefined &&
|
||
getMaskSet().validPositions[pos.begin].input ===
|
||
opts.groupSeparator &&
|
||
pos.end++),
|
||
stripValidPositions(pos.begin, pos.end, !1, strict),
|
||
!0 !== strict &&
|
||
(function () {
|
||
if (opts.keepStatic) {
|
||
for (
|
||
var validInputs = [],
|
||
lastAlt = getLastValidPosition(-1, !0),
|
||
positionsClone = $.extend(
|
||
!0,
|
||
{},
|
||
getMaskSet().validPositions
|
||
),
|
||
prevAltPos = getMaskSet().validPositions[lastAlt];
|
||
lastAlt >= 0;
|
||
lastAlt--
|
||
) {
|
||
var altPos = getMaskSet().validPositions[lastAlt];
|
||
if (altPos) {
|
||
if (
|
||
(!0 !== altPos.generatedInput &&
|
||
/[0-9a-bA-Z]/.test(altPos.input) &&
|
||
validInputs.push(altPos.input),
|
||
delete getMaskSet().validPositions[lastAlt],
|
||
altPos.alternation !== undefined &&
|
||
altPos.locator[altPos.alternation] !==
|
||
prevAltPos.locator[altPos.alternation])
|
||
)
|
||
break;
|
||
prevAltPos = altPos;
|
||
}
|
||
}
|
||
if (lastAlt > -1)
|
||
for (
|
||
getMaskSet().p = seekNext(getLastValidPosition(-1, !0));
|
||
validInputs.length > 0;
|
||
|
||
) {
|
||
var keypress = new $.Event("keypress");
|
||
(keypress.which = validInputs.pop().charCodeAt(0)),
|
||
EventHandlers.keypressEvent.call(
|
||
input,
|
||
keypress,
|
||
!0,
|
||
!1,
|
||
!1,
|
||
getMaskSet().p
|
||
);
|
||
}
|
||
else
|
||
getMaskSet().validPositions = $.extend(!0, {}, positionsClone);
|
||
}
|
||
})();
|
||
var lvp = getLastValidPosition(pos.begin, !0);
|
||
if (lvp < pos.begin) getMaskSet().p = seekNext(lvp);
|
||
else if (
|
||
!0 !== strict &&
|
||
((getMaskSet().p = pos.begin), !0 !== fromIsValid)
|
||
)
|
||
for (
|
||
;
|
||
getMaskSet().p < lvp &&
|
||
getMaskSet().validPositions[getMaskSet().p] === undefined;
|
||
|
||
)
|
||
getMaskSet().p++;
|
||
}
|
||
function initializeColorMask(input) {
|
||
function findCaretPos(clientx) {
|
||
var caretPos,
|
||
e = document.createElement("span");
|
||
for (var style in computedStyle)
|
||
isNaN(style) &&
|
||
-1 !== style.indexOf("font") &&
|
||
(e.style[style] = computedStyle[style]);
|
||
(e.style.textTransform = computedStyle.textTransform),
|
||
(e.style.letterSpacing = computedStyle.letterSpacing),
|
||
(e.style.position = "absolute"),
|
||
(e.style.height = "auto"),
|
||
(e.style.width = "auto"),
|
||
(e.style.visibility = "hidden"),
|
||
(e.style.whiteSpace = "nowrap"),
|
||
document.body.appendChild(e);
|
||
var itl,
|
||
inputText = input.inputmask._valueGet(),
|
||
previousWidth = 0;
|
||
for (
|
||
caretPos = 0, itl = inputText.length;
|
||
caretPos <= itl;
|
||
caretPos++
|
||
) {
|
||
if (
|
||
((e.innerHTML += inputText.charAt(caretPos) || "_"),
|
||
e.offsetWidth >= clientx)
|
||
) {
|
||
var offset1 = clientx - previousWidth,
|
||
offset2 = e.offsetWidth - clientx;
|
||
(e.innerHTML = inputText.charAt(caretPos)),
|
||
(caretPos =
|
||
(offset1 -= e.offsetWidth / 3) < offset2
|
||
? caretPos - 1
|
||
: caretPos);
|
||
break;
|
||
}
|
||
previousWidth = e.offsetWidth;
|
||
}
|
||
return document.body.removeChild(e), caretPos;
|
||
}
|
||
var computedStyle = (
|
||
input.ownerDocument.defaultView || window
|
||
).getComputedStyle(input, null),
|
||
template = document.createElement("div");
|
||
(template.style.width = computedStyle.width),
|
||
(template.style.textAlign = computedStyle.textAlign),
|
||
((colorMask = document.createElement("div")).className =
|
||
"im-colormask"),
|
||
input.parentNode.insertBefore(colorMask, input),
|
||
input.parentNode.removeChild(input),
|
||
colorMask.appendChild(template),
|
||
colorMask.appendChild(input),
|
||
(input.style.left = template.offsetLeft + "px"),
|
||
$(input).on("click", function (e) {
|
||
return (
|
||
caret(input, findCaretPos(e.clientX)),
|
||
EventHandlers.clickEvent.call(input, [e])
|
||
);
|
||
}),
|
||
$(input).on("keydown", function (e) {
|
||
e.shiftKey ||
|
||
!1 === opts.insertMode ||
|
||
setTimeout(function () {
|
||
renderColorMask(input);
|
||
}, 0);
|
||
});
|
||
}
|
||
function renderColorMask(input, caretPos, clear) {
|
||
function handleStatic() {
|
||
isStatic || (null !== test.fn && testPos.input !== undefined)
|
||
? isStatic &&
|
||
((null !== test.fn && testPos.input !== undefined) ||
|
||
"" === test.def) &&
|
||
((isStatic = !1), (maskTemplate += "</span>"))
|
||
: ((isStatic = !0), (maskTemplate += "<span class='im-static'>"));
|
||
}
|
||
function handleCaret(force) {
|
||
(!0 !== force && pos !== caretPos.begin) ||
|
||
document.activeElement !== input ||
|
||
(maskTemplate +=
|
||
"<span class='im-caret' style='border-right-width: 1px;border-right-style: solid;'></span>");
|
||
}
|
||
var test,
|
||
testPos,
|
||
ndxIntlzr,
|
||
maskTemplate = "",
|
||
isStatic = !1,
|
||
pos = 0;
|
||
if (colorMask !== undefined) {
|
||
var buffer = getBuffer();
|
||
if (
|
||
(caretPos === undefined
|
||
? (caretPos = caret(input))
|
||
: caretPos.begin === undefined &&
|
||
(caretPos = {
|
||
begin: caretPos,
|
||
end: caretPos,
|
||
}),
|
||
!0 !== clear)
|
||
) {
|
||
var lvp = getLastValidPosition();
|
||
do {
|
||
handleCaret(),
|
||
getMaskSet().validPositions[pos]
|
||
? ((testPos = getMaskSet().validPositions[pos]),
|
||
(test = testPos.match),
|
||
(ndxIntlzr = testPos.locator.slice()),
|
||
handleStatic(),
|
||
(maskTemplate += buffer[pos]))
|
||
: ((testPos = getTestTemplate(pos, ndxIntlzr, pos - 1)),
|
||
(test = testPos.match),
|
||
(ndxIntlzr = testPos.locator.slice()),
|
||
(!1 === opts.jitMasking ||
|
||
pos < lvp ||
|
||
("number" == typeof opts.jitMasking &&
|
||
isFinite(opts.jitMasking) &&
|
||
opts.jitMasking > pos)) &&
|
||
(handleStatic(),
|
||
(maskTemplate += getPlaceholder(pos, test)))),
|
||
pos++;
|
||
} while (
|
||
((maxLength === undefined || pos < maxLength) &&
|
||
(null !== test.fn || "" !== test.def)) ||
|
||
lvp > pos ||
|
||
isStatic
|
||
);
|
||
-1 === maskTemplate.indexOf("im-caret") && handleCaret(!0),
|
||
isStatic && handleStatic();
|
||
}
|
||
var template = colorMask.getElementsByTagName("div")[0];
|
||
(template.innerHTML = maskTemplate),
|
||
input.inputmask.positionColorMask(input, template);
|
||
}
|
||
}
|
||
(maskset = maskset || this.maskset), (opts = opts || this.opts);
|
||
var undoValue,
|
||
$el,
|
||
maxLength,
|
||
colorMask,
|
||
inputmask = this,
|
||
el = this.el,
|
||
isRTL = this.isRTL,
|
||
skipKeyPressEvent = !1,
|
||
skipInputEvent = !1,
|
||
ignorable = !1,
|
||
mouseEnter = !1,
|
||
EventRuler = {
|
||
on: function (input, eventName, eventHandler) {
|
||
var ev = function (e) {
|
||
if (this.inputmask === undefined && "FORM" !== this.nodeName) {
|
||
var imOpts = $.data(this, "_inputmask_opts");
|
||
imOpts ? new Inputmask(imOpts).mask(this) : EventRuler.off(this);
|
||
} else {
|
||
if (
|
||
"setvalue" === e.type ||
|
||
"FORM" === this.nodeName ||
|
||
!(
|
||
this.disabled ||
|
||
(this.readOnly &&
|
||
!(
|
||
("keydown" === e.type && e.ctrlKey && 67 === e.keyCode) ||
|
||
(!1 === opts.tabThrough &&
|
||
e.keyCode === Inputmask.keyCode.TAB)
|
||
))
|
||
)
|
||
) {
|
||
switch (e.type) {
|
||
case "input":
|
||
if (!0 === skipInputEvent)
|
||
return (skipInputEvent = !1), e.preventDefault();
|
||
break;
|
||
|
||
case "keydown":
|
||
(skipKeyPressEvent = !1), (skipInputEvent = !1);
|
||
break;
|
||
|
||
case "keypress":
|
||
if (!0 === skipKeyPressEvent) return e.preventDefault();
|
||
skipKeyPressEvent = !0;
|
||
break;
|
||
|
||
case "click":
|
||
if (iemobile || iphone) {
|
||
var that = this,
|
||
args = arguments;
|
||
return (
|
||
setTimeout(function () {
|
||
eventHandler.apply(that, args);
|
||
}, 0),
|
||
!1
|
||
);
|
||
}
|
||
}
|
||
var returnVal = eventHandler.apply(this, arguments);
|
||
return (
|
||
!1 === returnVal && (e.preventDefault(), e.stopPropagation()),
|
||
returnVal
|
||
);
|
||
}
|
||
e.preventDefault();
|
||
}
|
||
};
|
||
(input.inputmask.events[eventName] =
|
||
input.inputmask.events[eventName] || []),
|
||
input.inputmask.events[eventName].push(ev),
|
||
-1 !== $.inArray(eventName, ["submit", "reset"])
|
||
? null !== input.form && $(input.form).on(eventName, ev)
|
||
: $(input).on(eventName, ev);
|
||
},
|
||
off: function (input, event) {
|
||
if (input.inputmask && input.inputmask.events) {
|
||
var events;
|
||
event
|
||
? ((events = [])[event] = input.inputmask.events[event])
|
||
: (events = input.inputmask.events),
|
||
$.each(events, function (eventName, evArr) {
|
||
for (; evArr.length > 0; ) {
|
||
var ev = evArr.pop();
|
||
-1 !== $.inArray(eventName, ["submit", "reset"])
|
||
? null !== input.form && $(input.form).off(eventName, ev)
|
||
: $(input).off(eventName, ev);
|
||
}
|
||
delete input.inputmask.events[eventName];
|
||
});
|
||
}
|
||
},
|
||
},
|
||
EventHandlers = {
|
||
keydownEvent: function (e) {
|
||
var input = this,
|
||
$input = $(input),
|
||
k = e.keyCode,
|
||
pos = caret(input);
|
||
if (
|
||
k === Inputmask.keyCode.BACKSPACE ||
|
||
k === Inputmask.keyCode.DELETE ||
|
||
(iphone && k === Inputmask.keyCode.BACKSPACE_SAFARI) ||
|
||
(e.ctrlKey &&
|
||
k === Inputmask.keyCode.X &&
|
||
!(function (eventName) {
|
||
var el = document.createElement("input"),
|
||
evName = "on" + eventName,
|
||
isSupported = evName in el;
|
||
return (
|
||
isSupported ||
|
||
(el.setAttribute(evName, "return;"),
|
||
(isSupported = "function" == typeof el[evName])),
|
||
(el = null),
|
||
isSupported
|
||
);
|
||
})("cut"))
|
||
)
|
||
e.preventDefault(),
|
||
handleRemove(input, k, pos),
|
||
writeBuffer(
|
||
input,
|
||
getBuffer(!0),
|
||
getMaskSet().p,
|
||
e,
|
||
input.inputmask._valueGet() !== getBuffer().join("")
|
||
),
|
||
input.inputmask._valueGet() === getBufferTemplate().join("")
|
||
? $input.trigger("cleared")
|
||
: !0 === isComplete(getBuffer()) && $input.trigger("complete");
|
||
else if (
|
||
k === Inputmask.keyCode.END ||
|
||
k === Inputmask.keyCode.PAGE_DOWN
|
||
) {
|
||
e.preventDefault();
|
||
var caretPos = seekNext(getLastValidPosition());
|
||
opts.insertMode ||
|
||
caretPos !== getMaskSet().maskLength ||
|
||
e.shiftKey ||
|
||
caretPos--,
|
||
caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, !0);
|
||
} else
|
||
(k === Inputmask.keyCode.HOME && !e.shiftKey) ||
|
||
k === Inputmask.keyCode.PAGE_UP
|
||
? (e.preventDefault(),
|
||
caret(input, 0, e.shiftKey ? pos.begin : 0, !0))
|
||
: ((opts.undoOnEscape && k === Inputmask.keyCode.ESCAPE) ||
|
||
(90 === k && e.ctrlKey)) &&
|
||
!0 !== e.altKey
|
||
? (checkVal(input, !0, !1, undoValue.split("")),
|
||
$input.trigger("click"))
|
||
: k !== Inputmask.keyCode.INSERT || e.shiftKey || e.ctrlKey
|
||
? !0 === opts.tabThrough && k === Inputmask.keyCode.TAB
|
||
? (!0 === e.shiftKey
|
||
? (null === getTest(pos.begin).match.fn &&
|
||
(pos.begin = seekNext(pos.begin)),
|
||
(pos.end = seekPrevious(pos.begin, !0)),
|
||
(pos.begin = seekPrevious(pos.end, !0)))
|
||
: ((pos.begin = seekNext(pos.begin, !0)),
|
||
(pos.end = seekNext(pos.begin, !0)),
|
||
pos.end < getMaskSet().maskLength && pos.end--),
|
||
pos.begin < getMaskSet().maskLength &&
|
||
(e.preventDefault(), caret(input, pos.begin, pos.end)))
|
||
: e.shiftKey ||
|
||
(!1 === opts.insertMode &&
|
||
(k === Inputmask.keyCode.RIGHT
|
||
? setTimeout(function () {
|
||
var caretPos = caret(input);
|
||
caret(input, caretPos.begin);
|
||
}, 0)
|
||
: k === Inputmask.keyCode.LEFT &&
|
||
setTimeout(function () {
|
||
var caretPos = caret(input);
|
||
caret(
|
||
input,
|
||
isRTL ? caretPos.begin + 1 : caretPos.begin - 1
|
||
);
|
||
}, 0)))
|
||
: ((opts.insertMode = !opts.insertMode),
|
||
caret(
|
||
input,
|
||
opts.insertMode || pos.begin !== getMaskSet().maskLength
|
||
? pos.begin
|
||
: pos.begin - 1
|
||
));
|
||
opts.onKeyDown.call(this, e, getBuffer(), caret(input).begin, opts),
|
||
(ignorable = -1 !== $.inArray(k, opts.ignorables));
|
||
},
|
||
keypressEvent: function (e, checkval, writeOut, strict, ndx) {
|
||
var input = this,
|
||
$input = $(input),
|
||
k = e.which || e.charCode || e.keyCode;
|
||
if (
|
||
!(!0 === checkval || (e.ctrlKey && e.altKey)) &&
|
||
(e.ctrlKey || e.metaKey || ignorable)
|
||
)
|
||
return (
|
||
k === Inputmask.keyCode.ENTER &&
|
||
undoValue !== getBuffer().join("") &&
|
||
((undoValue = getBuffer().join("")),
|
||
setTimeout(function () {
|
||
$input.trigger("change");
|
||
}, 0)),
|
||
!0
|
||
);
|
||
if (k) {
|
||
46 === k &&
|
||
!1 === e.shiftKey &&
|
||
"" !== opts.radixPoint &&
|
||
(k = opts.radixPoint.charCodeAt(0));
|
||
var forwardPosition,
|
||
pos = checkval
|
||
? {
|
||
begin: ndx,
|
||
end: ndx,
|
||
}
|
||
: caret(input),
|
||
c = String.fromCharCode(k);
|
||
getMaskSet().writeOutBuffer = !0;
|
||
var valResult = isValid(pos, c, strict);
|
||
if (
|
||
(!1 !== valResult &&
|
||
(resetMaskSet(!0),
|
||
(forwardPosition =
|
||
valResult.caret !== undefined
|
||
? valResult.caret
|
||
: checkval
|
||
? valResult.pos + 1
|
||
: seekNext(valResult.pos)),
|
||
(getMaskSet().p = forwardPosition)),
|
||
!1 !== writeOut &&
|
||
(setTimeout(function () {
|
||
opts.onKeyValidation.call(input, k, valResult, opts);
|
||
}, 0),
|
||
getMaskSet().writeOutBuffer && !1 !== valResult))
|
||
) {
|
||
var buffer = getBuffer();
|
||
writeBuffer(
|
||
input,
|
||
buffer,
|
||
opts.numericInput && valResult.caret === undefined
|
||
? seekPrevious(forwardPosition)
|
||
: forwardPosition,
|
||
e,
|
||
!0 !== checkval
|
||
),
|
||
!0 !== checkval &&
|
||
setTimeout(function () {
|
||
!0 === isComplete(buffer) && $input.trigger("complete");
|
||
}, 0);
|
||
}
|
||
if ((e.preventDefault(), checkval))
|
||
return (
|
||
!1 !== valResult &&
|
||
(valResult.forwardPosition = forwardPosition),
|
||
valResult
|
||
);
|
||
}
|
||
},
|
||
pasteEvent: function (e) {
|
||
var tempValue,
|
||
input = this,
|
||
ev = e.originalEvent || e,
|
||
$input = $(input),
|
||
inputValue = input.inputmask._valueGet(!0),
|
||
caretPos = caret(input);
|
||
isRTL &&
|
||
((tempValue = caretPos.end),
|
||
(caretPos.end = caretPos.begin),
|
||
(caretPos.begin = tempValue));
|
||
var valueBeforeCaret = inputValue.substr(0, caretPos.begin),
|
||
valueAfterCaret = inputValue.substr(
|
||
caretPos.end,
|
||
inputValue.length
|
||
);
|
||
if (
|
||
(valueBeforeCaret ===
|
||
(isRTL ? getBufferTemplate().reverse() : getBufferTemplate())
|
||
.slice(0, caretPos.begin)
|
||
.join("") && (valueBeforeCaret = ""),
|
||
valueAfterCaret ===
|
||
(isRTL ? getBufferTemplate().reverse() : getBufferTemplate())
|
||
.slice(caretPos.end)
|
||
.join("") && (valueAfterCaret = ""),
|
||
isRTL &&
|
||
((tempValue = valueBeforeCaret),
|
||
(valueBeforeCaret = valueAfterCaret),
|
||
(valueAfterCaret = tempValue)),
|
||
window.clipboardData && window.clipboardData.getData)
|
||
)
|
||
inputValue =
|
||
valueBeforeCaret +
|
||
window.clipboardData.getData("Text") +
|
||
valueAfterCaret;
|
||
else {
|
||
if (!ev.clipboardData || !ev.clipboardData.getData) return !0;
|
||
inputValue =
|
||
valueBeforeCaret +
|
||
ev.clipboardData.getData("text/plain") +
|
||
valueAfterCaret;
|
||
}
|
||
var pasteValue = inputValue;
|
||
if ($.isFunction(opts.onBeforePaste)) {
|
||
if (
|
||
!1 ===
|
||
(pasteValue = opts.onBeforePaste.call(
|
||
inputmask,
|
||
inputValue,
|
||
opts
|
||
))
|
||
)
|
||
return e.preventDefault();
|
||
pasteValue || (pasteValue = inputValue);
|
||
}
|
||
return (
|
||
checkVal(
|
||
input,
|
||
!1,
|
||
!1,
|
||
isRTL
|
||
? pasteValue.split("").reverse()
|
||
: pasteValue.toString().split("")
|
||
),
|
||
writeBuffer(
|
||
input,
|
||
getBuffer(),
|
||
seekNext(getLastValidPosition()),
|
||
e,
|
||
undoValue !== getBuffer().join("")
|
||
),
|
||
!0 === isComplete(getBuffer()) && $input.trigger("complete"),
|
||
e.preventDefault()
|
||
);
|
||
},
|
||
inputFallBackEvent: function (e) {
|
||
var input = this,
|
||
inputValue = input.inputmask._valueGet();
|
||
if (getBuffer().join("") !== inputValue) {
|
||
var caretPos = caret(input);
|
||
if (
|
||
!1 ===
|
||
(function (input, inputValue, caretPos) {
|
||
if (
|
||
("." === inputValue.charAt(caretPos.begin - 1) &&
|
||
"" !== opts.radixPoint &&
|
||
(((inputValue = inputValue.split(""))[caretPos.begin - 1] =
|
||
opts.radixPoint.charAt(0)),
|
||
(inputValue = inputValue.join(""))),
|
||
inputValue.charAt(caretPos.begin - 1) === opts.radixPoint &&
|
||
inputValue.length > getBuffer().length)
|
||
) {
|
||
var keypress = new $.Event("keypress");
|
||
return (
|
||
(keypress.which = opts.radixPoint.charCodeAt(0)),
|
||
EventHandlers.keypressEvent.call(
|
||
input,
|
||
keypress,
|
||
!0,
|
||
!0,
|
||
!1,
|
||
caretPos.begin - 1
|
||
),
|
||
!1
|
||
);
|
||
}
|
||
})(input, inputValue, caretPos)
|
||
)
|
||
return !1;
|
||
if (
|
||
((inputValue = inputValue.replace(
|
||
new RegExp(
|
||
"(" +
|
||
Inputmask.escapeRegex(getBufferTemplate().join("")) +
|
||
")*"
|
||
),
|
||
""
|
||
)),
|
||
!1 ===
|
||
(function (input, inputValue, caretPos) {
|
||
if (iemobile) {
|
||
var inputChar = inputValue.replace(
|
||
getBuffer().join(""),
|
||
""
|
||
);
|
||
if (1 === inputChar.length) {
|
||
var keypress = new $.Event("keypress");
|
||
return (
|
||
(keypress.which = inputChar.charCodeAt(0)),
|
||
EventHandlers.keypressEvent.call(
|
||
input,
|
||
keypress,
|
||
!0,
|
||
!0,
|
||
!1,
|
||
getMaskSet().validPositions[caretPos.begin - 1]
|
||
? caretPos.begin
|
||
: caretPos.begin - 1
|
||
),
|
||
!1
|
||
);
|
||
}
|
||
}
|
||
})(input, inputValue, caretPos))
|
||
)
|
||
return !1;
|
||
caretPos.begin > inputValue.length &&
|
||
(caret(input, inputValue.length), (caretPos = caret(input)));
|
||
var buffer = getBuffer().join(""),
|
||
frontPart = inputValue.substr(0, caretPos.begin),
|
||
backPart = inputValue.substr(caretPos.begin),
|
||
frontBufferPart = buffer.substr(0, caretPos.begin),
|
||
backBufferPart = buffer.substr(caretPos.begin),
|
||
selection = caretPos,
|
||
entries = "",
|
||
isEntry = !1;
|
||
if (frontPart !== frontBufferPart) {
|
||
selection.begin = 0;
|
||
for (
|
||
var fpl = (isEntry = frontPart.length >= frontBufferPart.length)
|
||
? frontPart.length
|
||
: frontBufferPart.length,
|
||
i = 0;
|
||
frontPart.charAt(i) === frontBufferPart.charAt(i) && i < fpl;
|
||
i++
|
||
)
|
||
selection.begin++;
|
||
isEntry &&
|
||
(entries += frontPart.slice(selection.begin, selection.end));
|
||
}
|
||
backPart !== backBufferPart &&
|
||
(backPart.length > backBufferPart.length
|
||
? isEntry && (selection.end = selection.begin)
|
||
: backPart.length < backBufferPart.length
|
||
? (selection.end += backBufferPart.length - backPart.length)
|
||
: backPart.charAt(0) !== backBufferPart.charAt(0) &&
|
||
selection.end++),
|
||
writeBuffer(input, getBuffer(), selection),
|
||
entries.length > 0
|
||
? $.each(entries.split(""), function (ndx, entry) {
|
||
var keypress = new $.Event("keypress");
|
||
(keypress.which = entry.charCodeAt(0)),
|
||
(ignorable = !1),
|
||
EventHandlers.keypressEvent.call(input, keypress);
|
||
})
|
||
: (selection.begin === selection.end - 1 &&
|
||
caret(
|
||
input,
|
||
seekPrevious(selection.begin + 1),
|
||
selection.end
|
||
),
|
||
(e.keyCode = Inputmask.keyCode.DELETE),
|
||
EventHandlers.keydownEvent.call(input, e)),
|
||
e.preventDefault();
|
||
}
|
||
},
|
||
setValueEvent: function (e) {
|
||
this.inputmask.refreshValue = !1;
|
||
var input = this,
|
||
value = input.inputmask._valueGet(!0);
|
||
$.isFunction(opts.onBeforeMask) &&
|
||
(value = opts.onBeforeMask.call(inputmask, value, opts) || value),
|
||
(value = value.split("")),
|
||
checkVal(input, !0, !1, isRTL ? value.reverse() : value),
|
||
(undoValue = getBuffer().join("")),
|
||
(opts.clearMaskOnLostFocus || opts.clearIncomplete) &&
|
||
input.inputmask._valueGet() === getBufferTemplate().join("") &&
|
||
input.inputmask._valueSet("");
|
||
},
|
||
focusEvent: function (e) {
|
||
var input = this,
|
||
nptValue = input.inputmask._valueGet();
|
||
opts.showMaskOnFocus &&
|
||
(!opts.showMaskOnHover ||
|
||
(opts.showMaskOnHover && "" === nptValue)) &&
|
||
(input.inputmask._valueGet() !== getBuffer().join("")
|
||
? writeBuffer(
|
||
input,
|
||
getBuffer(),
|
||
seekNext(getLastValidPosition())
|
||
)
|
||
: !1 === mouseEnter &&
|
||
caret(input, seekNext(getLastValidPosition()))),
|
||
!0 === opts.positionCaretOnTab &&
|
||
!1 === mouseEnter &&
|
||
"" !== nptValue &&
|
||
(writeBuffer(input, getBuffer(), caret(input)),
|
||
EventHandlers.clickEvent.apply(input, [e, !0])),
|
||
(undoValue = getBuffer().join(""));
|
||
},
|
||
mouseleaveEvent: function (e) {
|
||
var input = this;
|
||
if (
|
||
((mouseEnter = !1),
|
||
opts.clearMaskOnLostFocus && document.activeElement !== input)
|
||
) {
|
||
var buffer = getBuffer().slice(),
|
||
nptValue = input.inputmask._valueGet();
|
||
nptValue !== input.getAttribute("placeholder") &&
|
||
"" !== nptValue &&
|
||
(-1 === getLastValidPosition() &&
|
||
nptValue === getBufferTemplate().join("")
|
||
? (buffer = [])
|
||
: clearOptionalTail(buffer),
|
||
writeBuffer(input, buffer));
|
||
}
|
||
},
|
||
clickEvent: function (e, tabbed) {
|
||
function doRadixFocus(clickPos) {
|
||
if ("" !== opts.radixPoint) {
|
||
var vps = getMaskSet().validPositions;
|
||
if (
|
||
vps[clickPos] === undefined ||
|
||
vps[clickPos].input === getPlaceholder(clickPos)
|
||
) {
|
||
if (clickPos < seekNext(-1)) return !0;
|
||
var radixPos = $.inArray(opts.radixPoint, getBuffer());
|
||
if (-1 !== radixPos) {
|
||
for (var vp in vps)
|
||
if (radixPos < vp && vps[vp].input !== getPlaceholder(vp))
|
||
return !1;
|
||
return !0;
|
||
}
|
||
}
|
||
}
|
||
return !1;
|
||
}
|
||
var input = this;
|
||
setTimeout(function () {
|
||
if (document.activeElement === input) {
|
||
var selectedCaret = caret(input);
|
||
if (
|
||
(tabbed &&
|
||
(isRTL
|
||
? (selectedCaret.end = selectedCaret.begin)
|
||
: (selectedCaret.begin = selectedCaret.end)),
|
||
selectedCaret.begin === selectedCaret.end)
|
||
)
|
||
switch (opts.positionCaretOnClick) {
|
||
case "none":
|
||
break;
|
||
|
||
case "radixFocus":
|
||
if (doRadixFocus(selectedCaret.begin)) {
|
||
var radixPos = getBuffer()
|
||
.join("")
|
||
.indexOf(opts.radixPoint);
|
||
caret(
|
||
input,
|
||
opts.numericInput ? seekNext(radixPos) : radixPos
|
||
);
|
||
break;
|
||
}
|
||
|
||
default:
|
||
var clickPosition = selectedCaret.begin,
|
||
lvclickPosition = getLastValidPosition(clickPosition, !0),
|
||
lastPosition = seekNext(lvclickPosition);
|
||
if (clickPosition < lastPosition)
|
||
caret(
|
||
input,
|
||
isMask(clickPosition, !0) ||
|
||
isMask(clickPosition - 1, !0)
|
||
? clickPosition
|
||
: seekNext(clickPosition)
|
||
);
|
||
else {
|
||
var lvp = getMaskSet().validPositions[lvclickPosition],
|
||
tt = getTestTemplate(
|
||
lastPosition,
|
||
lvp ? lvp.match.locator : undefined,
|
||
lvp
|
||
),
|
||
placeholder = getPlaceholder(lastPosition, tt.match);
|
||
if (
|
||
("" !== placeholder &&
|
||
getBuffer()[lastPosition] !== placeholder &&
|
||
!0 !== tt.match.optionalQuantifier &&
|
||
!0 !== tt.match.newBlockMarker) ||
|
||
(!isMask(lastPosition, !0) &&
|
||
tt.match.def === placeholder)
|
||
) {
|
||
var newPos = seekNext(lastPosition);
|
||
(clickPosition >= newPos ||
|
||
clickPosition === lastPosition) &&
|
||
(lastPosition = newPos);
|
||
}
|
||
caret(input, lastPosition);
|
||
}
|
||
}
|
||
}
|
||
}, 0);
|
||
},
|
||
dblclickEvent: function (e) {
|
||
var input = this;
|
||
setTimeout(function () {
|
||
caret(input, 0, seekNext(getLastValidPosition()));
|
||
}, 0);
|
||
},
|
||
cutEvent: function (e) {
|
||
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);
|
||
clipboardData.setData(
|
||
"text",
|
||
isRTL ? clipData.reverse().join("") : clipData.join("")
|
||
),
|
||
document.execCommand && document.execCommand("copy"),
|
||
handleRemove(input, Inputmask.keyCode.DELETE, pos),
|
||
writeBuffer(
|
||
input,
|
||
getBuffer(),
|
||
getMaskSet().p,
|
||
e,
|
||
undoValue !== getBuffer().join("")
|
||
),
|
||
input.inputmask._valueGet() === getBufferTemplate().join("") &&
|
||
$input.trigger("cleared");
|
||
},
|
||
blurEvent: function (e) {
|
||
var $input = $(this),
|
||
input = this;
|
||
if (input.inputmask) {
|
||
var nptValue = input.inputmask._valueGet(),
|
||
buffer = getBuffer().slice();
|
||
"" !== nptValue &&
|
||
(opts.clearMaskOnLostFocus &&
|
||
(-1 === getLastValidPosition() &&
|
||
nptValue === getBufferTemplate().join("")
|
||
? (buffer = [])
|
||
: clearOptionalTail(buffer)),
|
||
!1 === isComplete(buffer) &&
|
||
(setTimeout(function () {
|
||
$input.trigger("incomplete");
|
||
}, 0),
|
||
opts.clearIncomplete &&
|
||
(resetMaskSet(),
|
||
(buffer = opts.clearMaskOnLostFocus
|
||
? []
|
||
: getBufferTemplate().slice()))),
|
||
writeBuffer(input, buffer, undefined, e)),
|
||
undoValue !== getBuffer().join("") &&
|
||
((undoValue = buffer.join("")), $input.trigger("change"));
|
||
}
|
||
},
|
||
mouseenterEvent: function (e) {
|
||
var input = this;
|
||
(mouseEnter = !0),
|
||
document.activeElement !== input &&
|
||
opts.showMaskOnHover &&
|
||
input.inputmask._valueGet() !== getBuffer().join("") &&
|
||
writeBuffer(input, getBuffer());
|
||
},
|
||
submitEvent: function (e) {
|
||
undoValue !== getBuffer().join("") && $el.trigger("change"),
|
||
opts.clearMaskOnLostFocus &&
|
||
-1 === getLastValidPosition() &&
|
||
el.inputmask._valueGet &&
|
||
el.inputmask._valueGet() === getBufferTemplate().join("") &&
|
||
el.inputmask._valueSet(""),
|
||
opts.removeMaskOnSubmit &&
|
||
(el.inputmask._valueSet(el.inputmask.unmaskedvalue(), !0),
|
||
setTimeout(function () {
|
||
writeBuffer(el, getBuffer());
|
||
}, 0));
|
||
},
|
||
resetEvent: function (e) {
|
||
(el.inputmask.refreshValue = !0),
|
||
setTimeout(function () {
|
||
$el.trigger("setvalue");
|
||
}, 0);
|
||
},
|
||
};
|
||
Inputmask.prototype.positionColorMask = function (input, template) {
|
||
input.style.left = template.offsetLeft + "px";
|
||
};
|
||
var valueBuffer;
|
||
if (actionObj !== undefined)
|
||
switch (actionObj.action) {
|
||
case "isComplete":
|
||
return (el = actionObj.el), isComplete(getBuffer());
|
||
|
||
case "unmaskedvalue":
|
||
return (
|
||
(el !== undefined && actionObj.value === undefined) ||
|
||
((valueBuffer = actionObj.value),
|
||
(valueBuffer = (
|
||
$.isFunction(opts.onBeforeMask)
|
||
? opts.onBeforeMask.call(inputmask, valueBuffer, opts) ||
|
||
valueBuffer
|
||
: valueBuffer
|
||
).split("")),
|
||
checkVal(
|
||
undefined,
|
||
!1,
|
||
!1,
|
||
isRTL ? valueBuffer.reverse() : valueBuffer
|
||
),
|
||
$.isFunction(opts.onBeforeWrite) &&
|
||
opts.onBeforeWrite.call(
|
||
inputmask,
|
||
undefined,
|
||
getBuffer(),
|
||
0,
|
||
opts
|
||
)),
|
||
unmaskedvalue(el)
|
||
);
|
||
|
||
case "mask":
|
||
!(function (elem) {
|
||
EventRuler.off(elem);
|
||
var isSupported = (function (input, opts) {
|
||
var elementType = input.getAttribute("type"),
|
||
isSupported =
|
||
("INPUT" === input.tagName &&
|
||
-1 !== $.inArray(elementType, opts.supportsInputType)) ||
|
||
input.isContentEditable ||
|
||
"TEXTAREA" === input.tagName;
|
||
if (!isSupported)
|
||
if ("INPUT" === input.tagName) {
|
||
var el = document.createElement("input");
|
||
el.setAttribute("type", elementType),
|
||
(isSupported = "text" === el.type),
|
||
(el = null);
|
||
} else isSupported = "partial";
|
||
return (
|
||
!1 !== isSupported
|
||
? (function (npt) {
|
||
function getter() {
|
||
return this.inputmask
|
||
? this.inputmask.opts.autoUnmask
|
||
? this.inputmask.unmaskedvalue()
|
||
: -1 !== getLastValidPosition() ||
|
||
!0 !== opts.nullable
|
||
? document.activeElement === this &&
|
||
opts.clearMaskOnLostFocus
|
||
? (isRTL
|
||
? clearOptionalTail(
|
||
getBuffer().slice()
|
||
).reverse()
|
||
: clearOptionalTail(getBuffer().slice())
|
||
).join("")
|
||
: valueGet.call(this)
|
||
: ""
|
||
: valueGet.call(this);
|
||
}
|
||
function setter(value) {
|
||
valueSet.call(this, value),
|
||
this.inputmask && $(this).trigger("setvalue");
|
||
}
|
||
var valueGet, valueSet;
|
||
if (!npt.inputmask.__valueGet) {
|
||
if (!0 !== opts.noValuePatching) {
|
||
if (Object.getOwnPropertyDescriptor) {
|
||
"function" != typeof Object.getPrototypeOf &&
|
||
(Object.getPrototypeOf =
|
||
"object" == typeof "test".__proto__
|
||
? function (object) {
|
||
return object.__proto__;
|
||
}
|
||
: function (object) {
|
||
return object.constructor.prototype;
|
||
});
|
||
var valueProperty = Object.getPrototypeOf
|
||
? Object.getOwnPropertyDescriptor(
|
||
Object.getPrototypeOf(npt),
|
||
"value"
|
||
)
|
||
: undefined;
|
||
valueProperty &&
|
||
valueProperty.get &&
|
||
valueProperty.set
|
||
? ((valueGet = valueProperty.get),
|
||
(valueSet = valueProperty.set),
|
||
Object.defineProperty(npt, "value", {
|
||
get: getter,
|
||
set: setter,
|
||
configurable: !0,
|
||
}))
|
||
: "INPUT" !== npt.tagName &&
|
||
((valueGet = function () {
|
||
return this.textContent;
|
||
}),
|
||
(valueSet = function (value) {
|
||
this.textContent = value;
|
||
}),
|
||
Object.defineProperty(npt, "value", {
|
||
get: getter,
|
||
set: setter,
|
||
configurable: !0,
|
||
}));
|
||
} else
|
||
document.__lookupGetter__ &&
|
||
npt.__lookupGetter__("value") &&
|
||
((valueGet = npt.__lookupGetter__("value")),
|
||
(valueSet = npt.__lookupSetter__("value")),
|
||
npt.__defineGetter__("value", getter),
|
||
npt.__defineSetter__("value", setter));
|
||
(npt.inputmask.__valueGet = valueGet),
|
||
(npt.inputmask.__valueSet = valueSet);
|
||
}
|
||
(npt.inputmask._valueGet = function (overruleRTL) {
|
||
return isRTL && !0 !== overruleRTL
|
||
? valueGet
|
||
.call(this.el)
|
||
.split("")
|
||
.reverse()
|
||
.join("")
|
||
: valueGet.call(this.el);
|
||
}),
|
||
(npt.inputmask._valueSet = function (
|
||
value,
|
||
overruleRTL
|
||
) {
|
||
valueSet.call(
|
||
this.el,
|
||
null === value || value === undefined
|
||
? ""
|
||
: !0 !== overruleRTL && isRTL
|
||
? value.split("").reverse().join("")
|
||
: value
|
||
);
|
||
}),
|
||
valueGet === undefined &&
|
||
((valueGet = function () {
|
||
return this.value;
|
||
}),
|
||
(valueSet = function (value) {
|
||
this.value = value;
|
||
}),
|
||
(function (type) {
|
||
if (
|
||
$.valHooks &&
|
||
($.valHooks[type] === undefined ||
|
||
!0 !== $.valHooks[type].inputmaskpatch)
|
||
) {
|
||
var valhookGet =
|
||
$.valHooks[type] && $.valHooks[type].get
|
||
? $.valHooks[type].get
|
||
: function (elem) {
|
||
return elem.value;
|
||
},
|
||
valhookSet =
|
||
$.valHooks[type] && $.valHooks[type].set
|
||
? $.valHooks[type].set
|
||
: function (elem, value) {
|
||
return (elem.value = value), elem;
|
||
};
|
||
$.valHooks[type] = {
|
||
get: function (elem) {
|
||
if (elem.inputmask) {
|
||
if (elem.inputmask.opts.autoUnmask)
|
||
return elem.inputmask.unmaskedvalue();
|
||
var result = valhookGet(elem);
|
||
return -1 !==
|
||
getLastValidPosition(
|
||
undefined,
|
||
undefined,
|
||
elem.inputmask.maskset.validPositions
|
||
) || !0 !== opts.nullable
|
||
? result
|
||
: "";
|
||
}
|
||
return valhookGet(elem);
|
||
},
|
||
set: function (elem, value) {
|
||
var result,
|
||
$elem = $(elem);
|
||
return (
|
||
(result = valhookSet(elem, value)),
|
||
elem.inputmask &&
|
||
$elem.trigger("setvalue"),
|
||
result
|
||
);
|
||
},
|
||
inputmaskpatch: !0,
|
||
};
|
||
}
|
||
})(npt.type),
|
||
(function (npt) {
|
||
EventRuler.on(
|
||
npt,
|
||
"mouseenter",
|
||
function (event) {
|
||
var $input = $(this);
|
||
this.inputmask._valueGet() !==
|
||
getBuffer().join("") &&
|
||
$input.trigger("setvalue");
|
||
}
|
||
);
|
||
})(npt));
|
||
}
|
||
})(input)
|
||
: (input.inputmask = undefined),
|
||
isSupported
|
||
);
|
||
})(elem, opts);
|
||
if (
|
||
!1 !== isSupported &&
|
||
((el = elem),
|
||
($el = $(el)),
|
||
-1 ===
|
||
(maxLength = el !== undefined ? el.maxLength : undefined) &&
|
||
(maxLength = undefined),
|
||
!0 === opts.colorMask && initializeColorMask(el),
|
||
android &&
|
||
(el.hasOwnProperty("inputmode") &&
|
||
((el.inputmode = opts.inputmode),
|
||
el.setAttribute("inputmode", opts.inputmode)),
|
||
"rtfm" === opts.androidHack &&
|
||
(!0 !== opts.colorMask && initializeColorMask(el),
|
||
(el.type = "password"))),
|
||
!0 === isSupported &&
|
||
(EventRuler.on(el, "submit", EventHandlers.submitEvent),
|
||
EventRuler.on(el, "reset", EventHandlers.resetEvent),
|
||
EventRuler.on(el, "mouseenter", EventHandlers.mouseenterEvent),
|
||
EventRuler.on(el, "blur", EventHandlers.blurEvent),
|
||
EventRuler.on(el, "focus", EventHandlers.focusEvent),
|
||
EventRuler.on(el, "mouseleave", EventHandlers.mouseleaveEvent),
|
||
!0 !== opts.colorMask &&
|
||
EventRuler.on(el, "click", EventHandlers.clickEvent),
|
||
EventRuler.on(el, "dblclick", EventHandlers.dblclickEvent),
|
||
EventRuler.on(el, "paste", EventHandlers.pasteEvent),
|
||
EventRuler.on(el, "dragdrop", EventHandlers.pasteEvent),
|
||
EventRuler.on(el, "drop", EventHandlers.pasteEvent),
|
||
EventRuler.on(el, "cut", EventHandlers.cutEvent),
|
||
EventRuler.on(el, "complete", opts.oncomplete),
|
||
EventRuler.on(el, "incomplete", opts.onincomplete),
|
||
EventRuler.on(el, "cleared", opts.oncleared),
|
||
android || !0 === opts.inputEventOnly
|
||
? el.removeAttribute("maxLength")
|
||
: (EventRuler.on(el, "keydown", EventHandlers.keydownEvent),
|
||
EventRuler.on(el, "keypress", EventHandlers.keypressEvent)),
|
||
EventRuler.on(el, "compositionstart", $.noop),
|
||
EventRuler.on(el, "compositionupdate", $.noop),
|
||
EventRuler.on(el, "compositionend", $.noop),
|
||
EventRuler.on(el, "keyup", $.noop),
|
||
EventRuler.on(el, "input", EventHandlers.inputFallBackEvent),
|
||
EventRuler.on(el, "beforeinput", $.noop)),
|
||
EventRuler.on(el, "setvalue", EventHandlers.setValueEvent),
|
||
(undoValue = getBufferTemplate().join("")),
|
||
"" !== el.inputmask._valueGet(!0) ||
|
||
!1 === opts.clearMaskOnLostFocus ||
|
||
document.activeElement === el)
|
||
) {
|
||
var initialValue = $.isFunction(opts.onBeforeMask)
|
||
? opts.onBeforeMask.call(
|
||
inputmask,
|
||
el.inputmask._valueGet(!0),
|
||
opts
|
||
) || el.inputmask._valueGet(!0)
|
||
: el.inputmask._valueGet(!0);
|
||
"" !== initialValue &&
|
||
checkVal(
|
||
el,
|
||
!0,
|
||
!1,
|
||
isRTL
|
||
? initialValue.split("").reverse()
|
||
: initialValue.split("")
|
||
);
|
||
var buffer = getBuffer().slice();
|
||
(undoValue = buffer.join("")),
|
||
!1 === isComplete(buffer) &&
|
||
opts.clearIncomplete &&
|
||
resetMaskSet(),
|
||
opts.clearMaskOnLostFocus &&
|
||
document.activeElement !== el &&
|
||
(-1 === getLastValidPosition()
|
||
? (buffer = [])
|
||
: clearOptionalTail(buffer)),
|
||
writeBuffer(el, buffer),
|
||
document.activeElement === el &&
|
||
caret(el, seekNext(getLastValidPosition()));
|
||
}
|
||
})(el);
|
||
break;
|
||
|
||
case "format":
|
||
return (
|
||
(valueBuffer = (
|
||
$.isFunction(opts.onBeforeMask)
|
||
? opts.onBeforeMask.call(inputmask, actionObj.value, opts) ||
|
||
actionObj.value
|
||
: actionObj.value
|
||
).split("")),
|
||
checkVal(
|
||
undefined,
|
||
!0,
|
||
!1,
|
||
isRTL ? valueBuffer.reverse() : valueBuffer
|
||
),
|
||
actionObj.metadata
|
||
? {
|
||
value: isRTL
|
||
? getBuffer().slice().reverse().join("")
|
||
: getBuffer().join(""),
|
||
metadata: maskScope.call(
|
||
this,
|
||
{
|
||
action: "getmetadata",
|
||
},
|
||
maskset,
|
||
opts
|
||
),
|
||
}
|
||
: isRTL
|
||
? getBuffer().slice().reverse().join("")
|
||
: getBuffer().join("")
|
||
);
|
||
|
||
case "isValid":
|
||
actionObj.value
|
||
? ((valueBuffer = actionObj.value.split("")),
|
||
checkVal(
|
||
undefined,
|
||
!0,
|
||
!0,
|
||
isRTL ? valueBuffer.reverse() : valueBuffer
|
||
))
|
||
: (actionObj.value = getBuffer().join(""));
|
||
for (
|
||
var buffer = getBuffer(),
|
||
rl = determineLastRequiredPosition(),
|
||
lmib = buffer.length - 1;
|
||
lmib > rl && !isMask(lmib);
|
||
lmib--
|
||
);
|
||
return (
|
||
buffer.splice(rl, lmib + 1 - rl),
|
||
isComplete(buffer) && actionObj.value === getBuffer().join("")
|
||
);
|
||
|
||
case "getemptymask":
|
||
return getBufferTemplate().join("");
|
||
|
||
case "remove":
|
||
if (el && el.inputmask) {
|
||
($el = $(el)),
|
||
el.inputmask._valueSet(
|
||
opts.autoUnmask ? unmaskedvalue(el) : el.inputmask._valueGet(!0)
|
||
),
|
||
EventRuler.off(el);
|
||
Object.getOwnPropertyDescriptor && Object.getPrototypeOf
|
||
? Object.getOwnPropertyDescriptor(
|
||
Object.getPrototypeOf(el),
|
||
"value"
|
||
) &&
|
||
el.inputmask.__valueGet &&
|
||
Object.defineProperty(el, "value", {
|
||
get: el.inputmask.__valueGet,
|
||
set: el.inputmask.__valueSet,
|
||
configurable: !0,
|
||
})
|
||
: document.__lookupGetter__ &&
|
||
el.__lookupGetter__("value") &&
|
||
el.inputmask.__valueGet &&
|
||
(el.__defineGetter__("value", el.inputmask.__valueGet),
|
||
el.__defineSetter__("value", el.inputmask.__valueSet)),
|
||
(el.inputmask = undefined);
|
||
}
|
||
return el;
|
||
|
||
case "getmetadata":
|
||
if ($.isArray(maskset.metadata)) {
|
||
var maskTarget = getMaskTemplate(!0, 0, !1).join("");
|
||
return (
|
||
$.each(maskset.metadata, function (ndx, mtdt) {
|
||
if (mtdt.mask === maskTarget) return (maskTarget = mtdt), !1;
|
||
}),
|
||
maskTarget
|
||
);
|
||
}
|
||
return maskset.metadata;
|
||
}
|
||
}
|
||
var ua = navigator.userAgent,
|
||
mobile = /mobile/i.test(ua),
|
||
iemobile = /iemobile/i.test(ua),
|
||
iphone = /iphone/i.test(ua) && !iemobile,
|
||
android = /android/i.test(ua) && !iemobile;
|
||
return (
|
||
(Inputmask.prototype = {
|
||
dataAttribute: "data-inputmask",
|
||
defaults: {
|
||
placeholder: "_",
|
||
optionalmarker: {
|
||
start: "[",
|
||
end: "]",
|
||
},
|
||
quantifiermarker: {
|
||
start: "{",
|
||
end: "}",
|
||
},
|
||
groupmarker: {
|
||
start: "(",
|
||
end: ")",
|
||
},
|
||
alternatormarker: "|",
|
||
escapeChar: "\\",
|
||
mask: null,
|
||
regex: null,
|
||
oncomplete: $.noop,
|
||
onincomplete: $.noop,
|
||
oncleared: $.noop,
|
||
repeat: 0,
|
||
greedy: !0,
|
||
autoUnmask: !1,
|
||
removeMaskOnSubmit: !1,
|
||
clearMaskOnLostFocus: !0,
|
||
insertMode: !0,
|
||
clearIncomplete: !1,
|
||
alias: null,
|
||
onKeyDown: $.noop,
|
||
onBeforeMask: null,
|
||
onBeforePaste: function (pastedValue, opts) {
|
||
return $.isFunction(opts.onBeforeMask)
|
||
? opts.onBeforeMask.call(this, pastedValue, opts)
|
||
: pastedValue;
|
||
},
|
||
onBeforeWrite: null,
|
||
onUnMask: null,
|
||
showMaskOnFocus: !0,
|
||
showMaskOnHover: !0,
|
||
onKeyValidation: $.noop,
|
||
skipOptionalPartCharacter: " ",
|
||
numericInput: !1,
|
||
rightAlign: !1,
|
||
undoOnEscape: !0,
|
||
radixPoint: "",
|
||
radixPointDefinitionSymbol: undefined,
|
||
groupSeparator: "",
|
||
keepStatic: null,
|
||
positionCaretOnTab: !0,
|
||
tabThrough: !1,
|
||
supportsInputType: ["text", "tel", "password"],
|
||
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, 0, 229,
|
||
],
|
||
isComplete: null,
|
||
canClearPosition: $.noop,
|
||
preValidation: null,
|
||
postValidation: null,
|
||
staticDefinitionSymbol: undefined,
|
||
jitMasking: !1,
|
||
nullable: !0,
|
||
inputEventOnly: !1,
|
||
noValuePatching: !1,
|
||
positionCaretOnClick: "lvp",
|
||
casing: null,
|
||
inputmode: "verbatim",
|
||
colorMask: !1,
|
||
androidHack: !1,
|
||
importDataAttributes: !0,
|
||
},
|
||
definitions: {
|
||
9: {
|
||
validator: "[0-91-9]",
|
||
cardinality: 1,
|
||
definitionSymbol: "*",
|
||
},
|
||
a: {
|
||
validator: "[A-Za-zА-яЁёÀ-ÿµ]",
|
||
cardinality: 1,
|
||
definitionSymbol: "*",
|
||
},
|
||
"*": {
|
||
validator: "[0-91-9A-Za-zА-яЁёÀ-ÿµ]",
|
||
cardinality: 1,
|
||
},
|
||
},
|
||
aliases: {},
|
||
masksCache: {},
|
||
mask: function (elems) {
|
||
function importAttributeOptions(npt, opts, userOptions, dataAttribute) {
|
||
function importOption(option, optionData) {
|
||
null !==
|
||
(optionData =
|
||
optionData !== undefined
|
||
? optionData
|
||
: npt.getAttribute(dataAttribute + "-" + option)) &&
|
||
("string" == typeof optionData &&
|
||
(0 === option.indexOf("on")
|
||
? (optionData = window[optionData])
|
||
: "false" === optionData
|
||
? (optionData = !1)
|
||
: "true" === optionData && (optionData = !0)),
|
||
(userOptions[option] = optionData));
|
||
}
|
||
if (!0 === opts.importDataAttributes) {
|
||
var option,
|
||
dataoptions,
|
||
optionData,
|
||
p,
|
||
attrOptions = npt.getAttribute(dataAttribute);
|
||
if (
|
||
(attrOptions &&
|
||
"" !== attrOptions &&
|
||
((attrOptions = attrOptions.replace(new RegExp("'", "g"), '"')),
|
||
(dataoptions = JSON.parse("{" + attrOptions + "}"))),
|
||
dataoptions)
|
||
) {
|
||
optionData = undefined;
|
||
for (p in dataoptions)
|
||
if ("alias" === p.toLowerCase()) {
|
||
optionData = dataoptions[p];
|
||
break;
|
||
}
|
||
}
|
||
importOption("alias", optionData),
|
||
userOptions.alias &&
|
||
resolveAlias(userOptions.alias, userOptions, opts);
|
||
for (option in opts) {
|
||
if (dataoptions) {
|
||
optionData = undefined;
|
||
for (p in dataoptions)
|
||
if (p.toLowerCase() === option.toLowerCase()) {
|
||
optionData = dataoptions[p];
|
||
break;
|
||
}
|
||
}
|
||
importOption(option, optionData);
|
||
}
|
||
}
|
||
return (
|
||
$.extend(!0, opts, userOptions),
|
||
("rtl" === npt.dir || opts.rightAlign) &&
|
||
(npt.style.textAlign = "right"),
|
||
("rtl" === npt.dir || opts.numericInput) &&
|
||
((npt.dir = "ltr"),
|
||
npt.removeAttribute("dir"),
|
||
(opts.isRTL = !0)),
|
||
opts
|
||
);
|
||
}
|
||
var that = this;
|
||
return (
|
||
"string" == typeof elems &&
|
||
(elems =
|
||
document.getElementById(elems) ||
|
||
document.querySelectorAll(elems)),
|
||
(elems = elems.nodeName ? [elems] : elems),
|
||
$.each(elems, function (ndx, el) {
|
||
var scopedOpts = $.extend(!0, {}, that.opts);
|
||
importAttributeOptions(
|
||
el,
|
||
scopedOpts,
|
||
$.extend(!0, {}, that.userOptions),
|
||
that.dataAttribute
|
||
);
|
||
var maskset = generateMaskSet(scopedOpts, that.noMasksCache);
|
||
maskset !== undefined &&
|
||
(el.inputmask !== undefined &&
|
||
((el.inputmask.opts.autoUnmask = !0), el.inputmask.remove()),
|
||
(el.inputmask = new Inputmask(undefined, undefined, !0)),
|
||
(el.inputmask.opts = scopedOpts),
|
||
(el.inputmask.noMasksCache = that.noMasksCache),
|
||
(el.inputmask.userOptions = $.extend(!0, {}, that.userOptions)),
|
||
(el.inputmask.isRTL =
|
||
scopedOpts.isRTL || scopedOpts.numericInput),
|
||
(el.inputmask.el = el),
|
||
(el.inputmask.maskset = maskset),
|
||
$.data(el, "_inputmask_opts", scopedOpts),
|
||
maskScope.call(el.inputmask, {
|
||
action: "mask",
|
||
}));
|
||
}),
|
||
elems && elems[0] ? elems[0].inputmask || this : this
|
||
);
|
||
},
|
||
option: function (options, noremask) {
|
||
return "string" == typeof options
|
||
? this.opts[options]
|
||
: "object" == typeof options
|
||
? ($.extend(this.userOptions, options),
|
||
this.el && !0 !== noremask && this.mask(this.el),
|
||
this)
|
||
: void 0;
|
||
},
|
||
unmaskedvalue: function (value) {
|
||
return (
|
||
(this.maskset =
|
||
this.maskset || generateMaskSet(this.opts, this.noMasksCache)),
|
||
maskScope.call(this, {
|
||
action: "unmaskedvalue",
|
||
value: value,
|
||
})
|
||
);
|
||
},
|
||
remove: function () {
|
||
return maskScope.call(this, {
|
||
action: "remove",
|
||
});
|
||
},
|
||
getemptymask: function () {
|
||
return (
|
||
(this.maskset =
|
||
this.maskset || generateMaskSet(this.opts, this.noMasksCache)),
|
||
maskScope.call(this, {
|
||
action: "getemptymask",
|
||
})
|
||
);
|
||
},
|
||
hasMaskedValue: function () {
|
||
return !this.opts.autoUnmask;
|
||
},
|
||
isComplete: function () {
|
||
return (
|
||
(this.maskset =
|
||
this.maskset || generateMaskSet(this.opts, this.noMasksCache)),
|
||
maskScope.call(this, {
|
||
action: "isComplete",
|
||
})
|
||
);
|
||
},
|
||
getmetadata: function () {
|
||
return (
|
||
(this.maskset =
|
||
this.maskset || generateMaskSet(this.opts, this.noMasksCache)),
|
||
maskScope.call(this, {
|
||
action: "getmetadata",
|
||
})
|
||
);
|
||
},
|
||
isValid: function (value) {
|
||
return (
|
||
(this.maskset =
|
||
this.maskset || generateMaskSet(this.opts, this.noMasksCache)),
|
||
maskScope.call(this, {
|
||
action: "isValid",
|
||
value: value,
|
||
})
|
||
);
|
||
},
|
||
format: function (value, metadata) {
|
||
return (
|
||
(this.maskset =
|
||
this.maskset || generateMaskSet(this.opts, this.noMasksCache)),
|
||
maskScope.call(this, {
|
||
action: "format",
|
||
value: value,
|
||
metadata: metadata,
|
||
})
|
||
);
|
||
},
|
||
analyseMask: function (mask, regexMask, opts) {
|
||
function MaskToken(isGroup, isOptional, isQuantifier, isAlternator) {
|
||
(this.matches = []),
|
||
(this.openGroup = isGroup || !1),
|
||
(this.alternatorGroup = !1),
|
||
(this.isGroup = isGroup || !1),
|
||
(this.isOptional = isOptional || !1),
|
||
(this.isQuantifier = isQuantifier || !1),
|
||
(this.isAlternator = isAlternator || !1),
|
||
(this.quantifier = {
|
||
min: 1,
|
||
max: 1,
|
||
});
|
||
}
|
||
function insertTestDefinition(mtoken, element, position) {
|
||
position = position !== undefined ? position : mtoken.matches.length;
|
||
var prevMatch = mtoken.matches[position - 1];
|
||
if (regexMask)
|
||
0 === element.indexOf("[") ||
|
||
(escaped && /\\d|\\s|\\w]/i.test(element)) ||
|
||
"." === element
|
||
? mtoken.matches.splice(position++, 0, {
|
||
fn: new RegExp(element, opts.casing ? "i" : ""),
|
||
cardinality: 1,
|
||
optionality: mtoken.isOptional,
|
||
newBlockMarker:
|
||
prevMatch === undefined || prevMatch.def !== element,
|
||
casing: null,
|
||
def: element,
|
||
placeholder: undefined,
|
||
nativeDef: element,
|
||
})
|
||
: (escaped && (element = element[element.length - 1]),
|
||
$.each(element.split(""), function (ndx, lmnt) {
|
||
(prevMatch = mtoken.matches[position - 1]),
|
||
mtoken.matches.splice(position++, 0, {
|
||
fn: null,
|
||
cardinality: 0,
|
||
optionality: mtoken.isOptional,
|
||
newBlockMarker:
|
||
prevMatch === undefined ||
|
||
(prevMatch.def !== lmnt && null !== prevMatch.fn),
|
||
casing: null,
|
||
def: opts.staticDefinitionSymbol || lmnt,
|
||
placeholder:
|
||
opts.staticDefinitionSymbol !== undefined
|
||
? lmnt
|
||
: undefined,
|
||
nativeDef: lmnt,
|
||
});
|
||
})),
|
||
(escaped = !1);
|
||
else {
|
||
var maskdef =
|
||
(opts.definitions ? opts.definitions[element] : undefined) ||
|
||
Inputmask.prototype.definitions[element];
|
||
if (maskdef && !escaped) {
|
||
for (
|
||
var prevalidators = maskdef.prevalidator,
|
||
prevalidatorsL = prevalidators ? prevalidators.length : 0,
|
||
i = 1;
|
||
i < maskdef.cardinality;
|
||
i++
|
||
) {
|
||
var prevalidator =
|
||
prevalidatorsL >= i ? prevalidators[i - 1] : [],
|
||
validator = prevalidator.validator,
|
||
cardinality = prevalidator.cardinality;
|
||
mtoken.matches.splice(position++, 0, {
|
||
fn: validator
|
||
? "string" == typeof validator
|
||
? new RegExp(validator, opts.casing ? "i" : "")
|
||
: new (function () {
|
||
this.test = validator;
|
||
})()
|
||
: new RegExp("."),
|
||
cardinality: cardinality || 1,
|
||
optionality: mtoken.isOptional,
|
||
newBlockMarker:
|
||
prevMatch === undefined ||
|
||
prevMatch.def !== (maskdef.definitionSymbol || element),
|
||
casing: maskdef.casing,
|
||
def: maskdef.definitionSymbol || element,
|
||
placeholder: maskdef.placeholder,
|
||
nativeDef: element,
|
||
}),
|
||
(prevMatch = mtoken.matches[position - 1]);
|
||
}
|
||
mtoken.matches.splice(position++, 0, {
|
||
fn: maskdef.validator
|
||
? "string" == typeof maskdef.validator
|
||
? new RegExp(maskdef.validator, opts.casing ? "i" : "")
|
||
: new (function () {
|
||
this.test = maskdef.validator;
|
||
})()
|
||
: new RegExp("."),
|
||
cardinality: maskdef.cardinality,
|
||
optionality: mtoken.isOptional,
|
||
newBlockMarker:
|
||
prevMatch === undefined ||
|
||
prevMatch.def !== (maskdef.definitionSymbol || element),
|
||
casing: maskdef.casing,
|
||
def: maskdef.definitionSymbol || element,
|
||
placeholder: maskdef.placeholder,
|
||
nativeDef: element,
|
||
});
|
||
} else
|
||
mtoken.matches.splice(position++, 0, {
|
||
fn: null,
|
||
cardinality: 0,
|
||
optionality: mtoken.isOptional,
|
||
newBlockMarker:
|
||
prevMatch === undefined ||
|
||
(prevMatch.def !== element && null !== prevMatch.fn),
|
||
casing: null,
|
||
def: opts.staticDefinitionSymbol || element,
|
||
placeholder:
|
||
opts.staticDefinitionSymbol !== undefined
|
||
? element
|
||
: undefined,
|
||
nativeDef: element,
|
||
}),
|
||
(escaped = !1);
|
||
}
|
||
}
|
||
function verifyGroupMarker(maskToken) {
|
||
maskToken &&
|
||
maskToken.matches &&
|
||
$.each(maskToken.matches, function (ndx, token) {
|
||
var nextToken = maskToken.matches[ndx + 1];
|
||
(nextToken === undefined ||
|
||
nextToken.matches === undefined ||
|
||
!1 === nextToken.isQuantifier) &&
|
||
token &&
|
||
token.isGroup &&
|
||
((token.isGroup = !1),
|
||
regexMask ||
|
||
(insertTestDefinition(token, opts.groupmarker.start, 0),
|
||
!0 !== token.openGroup &&
|
||
insertTestDefinition(token, opts.groupmarker.end))),
|
||
verifyGroupMarker(token);
|
||
});
|
||
}
|
||
function defaultCase() {
|
||
if (openenings.length > 0) {
|
||
if (
|
||
((currentOpeningToken = openenings[openenings.length - 1]),
|
||
insertTestDefinition(currentOpeningToken, m),
|
||
currentOpeningToken.isAlternator)
|
||
) {
|
||
alternator = openenings.pop();
|
||
for (var mndx = 0; mndx < alternator.matches.length; mndx++)
|
||
alternator.matches[mndx].isGroup = !1;
|
||
openenings.length > 0
|
||
? (currentOpeningToken =
|
||
openenings[openenings.length - 1]).matches.push(alternator)
|
||
: currentToken.matches.push(alternator);
|
||
}
|
||
} else insertTestDefinition(currentToken, m);
|
||
}
|
||
function reverseTokens(maskToken) {
|
||
maskToken.matches = maskToken.matches.reverse();
|
||
for (var match in maskToken.matches)
|
||
if (maskToken.matches.hasOwnProperty(match)) {
|
||
var intMatch = parseInt(match);
|
||
if (
|
||
maskToken.matches[match].isQuantifier &&
|
||
maskToken.matches[intMatch + 1] &&
|
||
maskToken.matches[intMatch + 1].isGroup
|
||
) {
|
||
var qt = maskToken.matches[match];
|
||
maskToken.matches.splice(match, 1),
|
||
maskToken.matches.splice(intMatch + 1, 0, qt);
|
||
}
|
||
maskToken.matches[match].matches !== undefined
|
||
? (maskToken.matches[match] = reverseTokens(
|
||
maskToken.matches[match]
|
||
))
|
||
: (maskToken.matches[match] = (function (st) {
|
||
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),
|
||
st
|
||
);
|
||
})(maskToken.matches[match]));
|
||
}
|
||
return maskToken;
|
||
}
|
||
var match,
|
||
m,
|
||
openingToken,
|
||
currentOpeningToken,
|
||
alternator,
|
||
lastMatch,
|
||
groupToken,
|
||
tokenizer =
|
||
/(?:[?*+]|\{[0-9\+\*]+(?:,[0-9\+\*]*)?\})|[^.?*+^${[]()|\\]+|./g,
|
||
regexTokenizer =
|
||
/\[\^?]?(?:[^\\\]]+|\\[\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,
|
||
escaped = !1,
|
||
currentToken = new MaskToken(),
|
||
openenings = [],
|
||
maskTokens = [];
|
||
for (
|
||
regexMask &&
|
||
((opts.optionalmarker.start = undefined),
|
||
(opts.optionalmarker.end = undefined));
|
||
(match = regexMask
|
||
? regexTokenizer.exec(mask)
|
||
: tokenizer.exec(mask));
|
||
|
||
) {
|
||
if (((m = match[0]), regexMask))
|
||
switch (m.charAt(0)) {
|
||
case "?":
|
||
m = "{0,1}";
|
||
break;
|
||
|
||
case "+":
|
||
case "*":
|
||
m = "{" + m + "}";
|
||
}
|
||
if (escaped) defaultCase();
|
||
else
|
||
switch (m.charAt(0)) {
|
||
case opts.escapeChar:
|
||
(escaped = !0), regexMask && defaultCase();
|
||
break;
|
||
|
||
case opts.optionalmarker.end:
|
||
case opts.groupmarker.end:
|
||
if (
|
||
((openingToken = openenings.pop()),
|
||
(openingToken.openGroup = !1),
|
||
openingToken !== undefined)
|
||
)
|
||
if (openenings.length > 0) {
|
||
if (
|
||
((currentOpeningToken =
|
||
openenings[openenings.length - 1]).matches.push(
|
||
openingToken
|
||
),
|
||
currentOpeningToken.isAlternator)
|
||
) {
|
||
alternator = openenings.pop();
|
||
for (
|
||
var mndx = 0;
|
||
mndx < alternator.matches.length;
|
||
mndx++
|
||
)
|
||
(alternator.matches[mndx].isGroup = !1),
|
||
(alternator.matches[mndx].alternatorGroup = !1);
|
||
openenings.length > 0
|
||
? (currentOpeningToken =
|
||
openenings[openenings.length - 1]).matches.push(
|
||
alternator
|
||
)
|
||
: currentToken.matches.push(alternator);
|
||
}
|
||
} else currentToken.matches.push(openingToken);
|
||
else defaultCase();
|
||
break;
|
||
|
||
case opts.optionalmarker.start:
|
||
openenings.push(new MaskToken(!1, !0));
|
||
break;
|
||
|
||
case opts.groupmarker.start:
|
||
openenings.push(new MaskToken(!0));
|
||
break;
|
||
|
||
case opts.quantifiermarker.start:
|
||
var quantifier = new MaskToken(!1, !1, !0),
|
||
mq = (m = m.replace(/[{}]/g, "")).split(","),
|
||
mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]),
|
||
mq1 =
|
||
1 === mq.length
|
||
? mq0
|
||
: isNaN(mq[1])
|
||
? mq[1]
|
||
: parseInt(mq[1]);
|
||
if (
|
||
(("*" !== mq1 && "+" !== mq1) || (mq0 = "*" === mq1 ? 0 : 1),
|
||
(quantifier.quantifier = {
|
||
min: mq0,
|
||
max: mq1,
|
||
}),
|
||
openenings.length > 0)
|
||
) {
|
||
var matches = openenings[openenings.length - 1].matches;
|
||
(match = matches.pop()).isGroup ||
|
||
((groupToken = new MaskToken(!0)).matches.push(match),
|
||
(match = groupToken)),
|
||
matches.push(match),
|
||
matches.push(quantifier);
|
||
} else
|
||
(match = currentToken.matches.pop()).isGroup ||
|
||
(regexMask &&
|
||
null === match.fn &&
|
||
"." === match.def &&
|
||
(match.fn = new RegExp(
|
||
match.def,
|
||
opts.casing ? "i" : ""
|
||
)),
|
||
(groupToken = new MaskToken(!0)).matches.push(match),
|
||
(match = groupToken)),
|
||
currentToken.matches.push(match),
|
||
currentToken.matches.push(quantifier);
|
||
break;
|
||
|
||
case opts.alternatormarker:
|
||
if (openenings.length > 0) {
|
||
var subToken = (currentOpeningToken =
|
||
openenings[openenings.length - 1]).matches[
|
||
currentOpeningToken.matches.length - 1
|
||
];
|
||
lastMatch =
|
||
currentOpeningToken.openGroup &&
|
||
(subToken.matches === undefined ||
|
||
(!1 === subToken.isGroup && !1 === subToken.isAlternator))
|
||
? openenings.pop()
|
||
: currentOpeningToken.matches.pop();
|
||
} else lastMatch = currentToken.matches.pop();
|
||
if (lastMatch.isAlternator) openenings.push(lastMatch);
|
||
else if (
|
||
(lastMatch.alternatorGroup
|
||
? ((alternator = openenings.pop()),
|
||
(lastMatch.alternatorGroup = !1))
|
||
: (alternator = new MaskToken(!1, !1, !1, !0)),
|
||
alternator.matches.push(lastMatch),
|
||
openenings.push(alternator),
|
||
lastMatch.openGroup)
|
||
) {
|
||
lastMatch.openGroup = !1;
|
||
var alternatorGroup = new MaskToken(!0);
|
||
(alternatorGroup.alternatorGroup = !0),
|
||
openenings.push(alternatorGroup);
|
||
}
|
||
break;
|
||
|
||
default:
|
||
defaultCase();
|
||
}
|
||
}
|
||
for (; openenings.length > 0; )
|
||
(openingToken = openenings.pop()),
|
||
currentToken.matches.push(openingToken);
|
||
return (
|
||
currentToken.matches.length > 0 &&
|
||
(verifyGroupMarker(currentToken), maskTokens.push(currentToken)),
|
||
(opts.numericInput || opts.isRTL) && reverseTokens(maskTokens[0]),
|
||
maskTokens
|
||
);
|
||
},
|
||
}),
|
||
(Inputmask.extendDefaults = function (options) {
|
||
$.extend(!0, Inputmask.prototype.defaults, options);
|
||
}),
|
||
(Inputmask.extendDefinitions = function (definition) {
|
||
$.extend(!0, Inputmask.prototype.definitions, definition);
|
||
}),
|
||
(Inputmask.extendAliases = function (alias) {
|
||
$.extend(!0, Inputmask.prototype.aliases, alias);
|
||
}),
|
||
(Inputmask.format = function (value, options, metadata) {
|
||
return Inputmask(options).format(value, metadata);
|
||
}),
|
||
(Inputmask.unmask = function (value, options) {
|
||
return Inputmask(options).unmaskedvalue(value);
|
||
}),
|
||
(Inputmask.isValid = function (value, options) {
|
||
return Inputmask(options).isValid(value);
|
||
}),
|
||
(Inputmask.remove = function (elems) {
|
||
$.each(elems, function (ndx, el) {
|
||
el.inputmask && el.inputmask.remove();
|
||
});
|
||
}),
|
||
(Inputmask.escapeRegex = function (str) {
|
||
var specials = [
|
||
"/",
|
||
".",
|
||
"*",
|
||
"+",
|
||
"?",
|
||
"|",
|
||
"(",
|
||
")",
|
||
"[",
|
||
"]",
|
||
"{",
|
||
"}",
|
||
"\\",
|
||
"$",
|
||
"^",
|
||
];
|
||
return str.replace(
|
||
new RegExp("(\\" + specials.join("|\\") + ")", "gim"),
|
||
"\\$1"
|
||
);
|
||
}),
|
||
(Inputmask.keyCode = {
|
||
ALT: 18,
|
||
BACKSPACE: 8,
|
||
BACKSPACE_SAFARI: 127,
|
||
CAPS_LOCK: 20,
|
||
COMMA: 188,
|
||
COMMAND: 91,
|
||
COMMAND_LEFT: 91,
|
||
COMMAND_RIGHT: 93,
|
||
CONTROL: 17,
|
||
DELETE: 46,
|
||
DOWN: 40,
|
||
END: 35,
|
||
ENTER: 13,
|
||
ESCAPE: 27,
|
||
HOME: 36,
|
||
INSERT: 45,
|
||
LEFT: 37,
|
||
MENU: 93,
|
||
NUMPAD_ADD: 107,
|
||
NUMPAD_DECIMAL: 110,
|
||
NUMPAD_DIVIDE: 111,
|
||
NUMPAD_ENTER: 108,
|
||
NUMPAD_MULTIPLY: 106,
|
||
NUMPAD_SUBTRACT: 109,
|
||
PAGE_DOWN: 34,
|
||
PAGE_UP: 33,
|
||
PERIOD: 190,
|
||
RIGHT: 39,
|
||
SHIFT: 16,
|
||
SPACE: 32,
|
||
TAB: 9,
|
||
UP: 38,
|
||
WINDOWS: 91,
|
||
X: 88,
|
||
}),
|
||
Inputmask
|
||
);
|
||
});
|