use-mask-input 3.9.0 → 3.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/antd.cjs +14 -12
  3. package/dist/antd.cjs.map +1 -1
  4. package/dist/antd.d.cts +3 -2
  5. package/dist/antd.d.ts +3 -2
  6. package/dist/antd.js +6 -4
  7. package/dist/antd.js.map +1 -1
  8. package/dist/chunk-PMBRAXS4.cjs +5876 -0
  9. package/dist/chunk-PMBRAXS4.cjs.map +1 -0
  10. package/dist/chunk-XSTQDKDU.js +5866 -0
  11. package/dist/chunk-XSTQDKDU.js.map +1 -0
  12. package/dist/{index-BoaVtWUr.d.cts → index-D8KkaDbQ.d.cts} +7 -3
  13. package/dist/{index-BoaVtWUr.d.ts → index-D8KkaDbQ.d.ts} +7 -3
  14. package/dist/index.cjs +45 -38
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.d.cts +5 -4
  17. package/dist/index.d.ts +5 -4
  18. package/dist/index.js +30 -23
  19. package/dist/index.js.map +1 -1
  20. package/package.json +1 -1
  21. package/src/antd/useMaskInputAntd.spec.tsx +24 -2
  22. package/src/antd/useMaskInputAntd.ts +11 -7
  23. package/src/api/useHookFormMask.spec.ts +2 -2
  24. package/src/api/useHookFormMask.ts +4 -1
  25. package/src/api/useMaskInput.spec.tsx +20 -2
  26. package/src/api/useMaskInput.ts +11 -5
  27. package/src/api/withHookFormMask.spec.ts +45 -76
  28. package/src/api/withHookFormMask.ts +18 -10
  29. package/src/api/withMask.spec.ts +18 -2
  30. package/src/api/withMask.ts +12 -9
  31. package/src/api/withTanStackFormMask.spec.ts +2 -2
  32. package/src/api/withTanStackFormMask.ts +19 -10
  33. package/src/core/inputmask.spec.ts +21 -0
  34. package/src/core/inputmask.ts +10 -0
  35. package/src/core/maskEngine.spec.ts +2 -2
  36. package/src/core/maskEngine.ts +2 -2
  37. package/src/index.tsx +2 -0
  38. package/src/types/index.ts +8 -2
  39. package/src/utils/index.ts +6 -1
  40. package/src/utils/maskHelpers.ts +46 -1
  41. package/dist/chunk-ICLWBMH4.js +0 -3865
  42. package/dist/chunk-ICLWBMH4.js.map +0 -1
  43. package/dist/chunk-X5SEJVSB.cjs +0 -3873
  44. package/dist/chunk-X5SEJVSB.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/defaults.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/definitions.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/global/window.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/dependencyLibs/data.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/dependencyLibs/extend.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/dependencyLibs/events.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/dependencyLibs/inputmask.dependencyLib.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/environment.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/keycode.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/validation-tests.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/validation.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/positioning.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/eventhandlers.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/inputHandling.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/eventruler.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/mask.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/escapeRegex.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/masktoken.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/mask-lexer.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/inputmask.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/extensions/inputmask.extensions.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/extensions/inputmask.date.i18n.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/extensions/inputmask.date.extensions.js","../../../node_modules/.pnpm/inputmask@5.0.10-beta.61/node_modules/inputmask/lib/extensions/inputmask.numeric.extensions.js","../src/core/inputmask.ts","../src/core/maskConfig.ts","../src/utils/flow.ts","../src/utils/isServer.ts","../src/utils/moduleInterop.ts","../src/core/elementResolver.ts","../src/utils/maskHelpers.ts","../src/api/withMask.ts","../src/core/maskEngine.ts"],"names":["document","handler","clearOptionalTail","tst","$","ndxInitializer","loopNdx","quantifierRecurse","latestMatch","match","pos","matches","alternateToken","c","strict","inputmask","input","inputValue","pastedValue","buffer","caretPos","charCodes","opts","npt","isSupported","el","mask","lastMatch","analyseMask","isSelection","inputmask_default"],"mappings":"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","file":"chunk-XSTQDKDU.js","sourcesContent":["export default {\r\n _maxTestPos: 500,\r\n placeholder: \"_\",\r\n optionalmarker: [\"[\", \"]\"],\r\n quantifiermarker: [\"{\", \"}\"],\r\n groupmarker: [\"(\", \")\"],\r\n alternatormarker: \"|\",\r\n escapeChar: \"\\\\\",\r\n mask: null, // needs tobe null instead of undefined as the extend method does not consider props with the undefined value\r\n regex: null, // regular expression as a mask\r\n oncomplete: () => {}, // executes when the mask is complete\r\n onincomplete: () => {}, // executes when the mask is incomplete and focus is lost\r\n oncleared: () => {}, // executes when the mask is cleared\r\n repeat: 0, // repetitions of the mask: * ~ forever, otherwise specify an integer\r\n greedy: false, // true: allocated buffer for the mask and repetitions - false: allocate only if needed\r\n autoUnmask: false, // automatically unmask when retrieving the value with $.fn.val or value if the browser supports __lookupGetter__ or getOwnPropertyDescriptor\r\n removeMaskOnSubmit: false, // remove the mask before submitting the form.\r\n clearMaskOnLostFocus: true,\r\n insertMode: true, // insert the input or overwrite the input\r\n insertModeVisual: true, // show selected caret when insertmode = false\r\n clearIncomplete: false, // clear the incomplete input on blur\r\n alias: null,\r\n onKeyDown: () => {}, // callback to implement autocomplete on certain keys for example. args => event, buffer, caretPos, opts\r\n onBeforeMask: null, // executes before masking the initial value to allow preprocessing of the initial value.\targs => initialValue, opts => return processedValue\r\n onBeforePaste: function (pastedValue, opts) {\r\n return typeof opts.onBeforeMask === \"function\"\r\n ? opts.onBeforeMask.call(this, pastedValue, opts)\r\n : pastedValue;\r\n }, // executes before masking the pasted value to allow preprocessing of the pasted value.\targs => pastedValue, opts => return processedValue\r\n onBeforeWrite: null, // executes before writing to the masked element. args => event, opts\r\n onUnMask: null, // executes after unmasking to allow postprocessing of the unmaskedvalue.\targs => maskedValue, unmaskedValue, opts\r\n outputMask: null, // mask to apply when unmasking\r\n showMaskOnFocus: true, // show the mask-placeholder when the input has focus\r\n showMaskOnHover: true, // show the mask-placeholder when hovering the empty input\r\n onKeyValidation: () => {}, // executes on every key-press with the result of isValid. Params: key, result, opts\r\n skipOptionalPartCharacter: \" \", // a character which can be used to skip an optional part of a mask\r\n numericInput: false, // numericInput input direction style (input shifts to the left while holding the caret position)\r\n rightAlign: false, // align to the right\r\n undoOnEscape: true, // pressing escape reverts the value to the value before focus\r\n // numeric basic properties\r\n radixPoint: \"\", // \".\", // | \",\"\r\n _radixDance: false, // dance around the radixPoint\r\n groupSeparator: \"\", // \",\", // | \".\"\r\n // numeric basic properties\r\n keepStatic: null, // try to keep the mask static while typing. Decisions to alter the mask will be posponed if possible\r\n positionCaretOnTab: true, // when enabled the caret position is set after the latest valid position on TAB\r\n tabThrough: false, // allows for tabbing through the different parts of the masked field\r\n supportsInputType: [\"text\", \"tel\", \"url\", \"password\", \"search\"], // list with the supported input types\r\n isComplete: null, // override for isComplete - args => buffer, opts - return true || false\r\n preValidation: null, // hook to preValidate the input. Usefull for validating regardless the definition.\targs => buffer, pos, char, isSelection, opts, maskset, caretPos, strict => return true/false/command object\r\n postValidation: null, // hook to postValidate the result from isValid.\tUsefull for validating the entry as a whole.\targs => buffer, pos, c, currentResult, opts, maskset, strict, fromCheckval, fromAlternate => return true/false/json\r\n staticDefinitionSymbol: undefined, // specify a definitionSymbol for static content, used to make matches for alternators\r\n jitMasking: false, // just in time masking ~ only mask while typing, can n (number), true or false\r\n nullable: true, // return nothing instead of the buffertemplate when the user hasn't entered anything.\r\n inputEventOnly: false, // dev option - testing inputfallback behavior\r\n noValuePatching: false, // disable value property patching\r\n positionCaretOnClick: \"lvp\", // none, lvp (based on the last valid position (default), radixFocus (position caret to radixpoint on initial click), select (select the whole input), ignore (ignore the click and continue the mask)\r\n casing: null, // mask-level casing. Options: null, \"upper\", \"lower\" or \"title\" or callback args => elem, test, pos, validPositions return charValue\r\n inputmode: \"text\", // specify the inputmode\r\n importDataAttributes: true, // import data-inputmask attributes\r\n shiftPositions: true, // shift position of the mask entries on entry and deletion.\r\n usePrototypeDefinitions: true, // use the default defined definitions from the prototype\r\n validationEventTimeOut: 3000, // Time to show validation error on form submit\r\n substitutes: {} // define character substitutes\r\n};\r\n","export default {\r\n 9: {\r\n validator: \"\\\\p{N}\",\r\n definitionSymbol: \"*\"\r\n },\r\n a: {\r\n validator: \"\\\\p{L}\",\r\n definitionSymbol: \"*\"\r\n },\r\n \"*\": {\r\n validator: \"[\\\\p{L}\\\\p{N}]\"\r\n }\r\n};\r\n","const canUseDOM = !!(\r\n typeof window !== \"undefined\" &&\r\n window.document &&\r\n window.document.createElement\r\n);\r\n\r\nexport default canUseDOM ? window : {};\r\n","export default function (owner, key, value) {\r\n if (value === undefined) {\r\n return owner.__data ? owner.__data[key] : null;\r\n } else {\r\n owner.__data = owner.__data || {};\r\n owner.__data[key] = value;\r\n }\r\n}\r\n","export default function extend() {\r\n let options,\r\n name,\r\n src,\r\n copy,\r\n copyIsArray,\r\n clone,\r\n target = arguments[0] || {},\r\n i = 1,\r\n length = arguments.length,\r\n deep = false;\r\n\r\n // Handle a deep copy situation\r\n if (typeof target === \"boolean\") {\r\n deep = target;\r\n\r\n // Skip the boolean and the target\r\n target = arguments[i] || {};\r\n i++;\r\n }\r\n\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if (typeof target !== \"object\" && typeof target !== \"function\") {\r\n target = {};\r\n }\r\n\r\n for (; i < length; i++) {\r\n // Only deal with non-null/undefined values\r\n if ((options = arguments[i]) != null) {\r\n // Extend the base object\r\n for (name in options) {\r\n src = target[name];\r\n copy = options[name];\r\n\r\n // Prevent never-ending loop\r\n if (target === copy) {\r\n continue;\r\n }\r\n\r\n // Recurse if we're merging plain objects or arrays\r\n if (\r\n deep &&\r\n copy &&\r\n (Object.prototype.toString.call(copy) === \"[object Object]\" ||\r\n (copyIsArray = Array.isArray(copy)))\r\n ) {\r\n if (copyIsArray) {\r\n copyIsArray = false;\r\n clone = src && Array.isArray(src) ? src : [];\r\n } else {\r\n clone =\r\n src && Object.prototype.toString.call(src) === \"[object Object]\"\r\n ? src\r\n : {};\r\n }\r\n\r\n // Never move original objects, clone them\r\n target[name] = extend(deep, clone, copy);\r\n\r\n // Don't bring in undefined values\r\n } else if (copy !== undefined) {\r\n target[name] = copy;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Return the modified object\r\n return target;\r\n}\r\n","import window from \"../global/window\";\r\n\r\nimport data from \"./data\";\r\nimport extend from \"./extend\";\r\nimport DependencyLib from \"./inputmask.dependencyLib\";\r\n\r\nexport { on, off, trigger, Evnt as Event };\r\n\r\nconst document = window.document;\r\n\r\nfunction isValidElement(elem) {\r\n return elem instanceof Element && data(elem, \"events\");\r\n}\r\n\r\nlet Evnt;\r\nif (typeof window.CustomEvent === \"function\") {\r\n Evnt = window.CustomEvent;\r\n} else if (window.Event && document && document.createEvent) {\r\n Evnt = function (event, params) {\r\n params = params || {\r\n bubbles: false,\r\n cancelable: false,\r\n composed: true,\r\n detail: undefined\r\n };\r\n const evt = document.createEvent(\"CustomEvent\");\r\n evt.initCustomEvent(\r\n event,\r\n params.bubbles,\r\n params.cancelable,\r\n params.detail\r\n );\r\n return evt;\r\n };\r\n Evnt.prototype = window.Event.prototype;\r\n} else if (typeof Event !== \"undefined\") {\r\n // nodejs\r\n Evnt = Event;\r\n}\r\n\r\nfunction on(events, handler) {\r\n if (!this[0] || !isValidElement(this[0])) {\r\n return this; // Early return if no valid element\r\n }\r\n\r\n const elem = this[0],\r\n eventRegistry = data(elem, \"events\"),\r\n addEvent = (ev, namespace) => {\r\n // register domevent\r\n if (elem.addEventListener) {\r\n // all browsers except IE before version 9\r\n elem.addEventListener(ev, handler, false);\r\n } else if (elem.attachEvent) {\r\n // IE before version 9\r\n elem.attachEvent(`on${ev}`, handler);\r\n }\r\n eventRegistry[ev] = eventRegistry[ev] || {};\r\n eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || [];\r\n eventRegistry[ev][namespace].push(handler);\r\n };\r\n\r\n events.split(\" \").forEach((event) => {\r\n const [ev, namespace = \"global\"] = event.split(\".\");\r\n addEvent(ev, namespace);\r\n });\r\n\r\n return this;\r\n}\r\n\r\nfunction off(events, handler) {\r\n let eventRegistry, elem;\r\n\r\n function removeEvent(ev, namespace, handler) {\r\n if (ev in eventRegistry === true) {\r\n // unbind to dom events\r\n if (elem.removeEventListener) {\r\n // all browsers except IE before version 9\r\n elem.removeEventListener(ev, handler, false);\r\n } else if (elem.detachEvent) {\r\n // IE before version 9\r\n elem.detachEvent(`on${ev}`, handler);\r\n }\r\n // when the namespace is not defined (global namespace), we need to clean up all events in all namespaces\r\n if (namespace === \"global\") {\r\n for (const nmsp in eventRegistry[ev]) {\r\n eventRegistry[ev][nmsp].splice(\r\n eventRegistry[ev][nmsp].indexOf(handler),\r\n 1\r\n );\r\n }\r\n } else {\r\n eventRegistry[ev][namespace].splice(\r\n eventRegistry[ev][namespace].indexOf(handler),\r\n 1\r\n );\r\n }\r\n }\r\n }\r\n\r\n function resolveNamespace(ev, namespace) {\r\n const evts = [];\r\n let hndx, hndL;\r\n if (ev.length > 0) {\r\n const namespaces = namespace\r\n ? [namespace]\r\n : Object.keys(eventRegistry[ev]);\r\n for (let nsi = 0; nsi < namespaces.length; nsi++) {\r\n namespace = namespaces[nsi];\r\n if (handler === undefined) {\r\n for (\r\n hndx = 0, hndL = eventRegistry[ev][namespace]?.length || 0;\r\n hndx < hndL;\r\n hndx++\r\n ) {\r\n evts.push({\r\n ev,\r\n namespace,\r\n handler: eventRegistry[ev][namespace][hndx]\r\n });\r\n }\r\n } else {\r\n evts.push({\r\n ev,\r\n namespace,\r\n handler\r\n });\r\n }\r\n }\r\n } else if (namespace.length > 0) {\r\n for (const evNdx in eventRegistry) {\r\n if (eventRegistry[evNdx][namespace]) {\r\n if (handler === undefined) {\r\n for (\r\n hndx = 0, hndL = eventRegistry[evNdx][namespace].length;\r\n hndx < hndL;\r\n hndx++\r\n ) {\r\n evts.push({\r\n ev: evNdx,\r\n namespace,\r\n handler: eventRegistry[evNdx][namespace][hndx]\r\n });\r\n }\r\n } else {\r\n evts.push({\r\n ev: evNdx,\r\n namespace,\r\n handler\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n return evts;\r\n }\r\n\r\n if (isValidElement(this[0])) {\r\n eventRegistry = data(this[0], \"events\");\r\n elem = this[0];\r\n // if no events defined, remove all events\r\n events = events || Object.keys(eventRegistry).join(\" \");\r\n\r\n if (events !== \"\") {\r\n events.split(\" \").forEach((event) => {\r\n const [ev, namespace] = event.split(\".\");\r\n resolveNamespace(ev, namespace).forEach(\r\n ({ ev: ev1, handler: handler1, namespace: namespace1 }) => {\r\n removeEvent(ev1, namespace1, handler1);\r\n }\r\n );\r\n });\r\n }\r\n }\r\n return this;\r\n}\r\n\r\nfunction trigger(events /* , args... */) {\r\n if (isValidElement(this[0])) {\r\n const eventRegistry = data(this[0], \"events\"),\r\n elem = this[0],\r\n _events = typeof events === \"string\" ? events.split(\" \") : [events.type];\r\n for (let endx = 0; endx < _events.length; endx++) {\r\n const nsEvent = _events[endx].split(\".\"),\r\n ev = nsEvent[0],\r\n namespace = nsEvent[1] || \"global\";\r\n if (document !== undefined) {\r\n // trigger domevent\r\n let evnt;\r\n const params = {\r\n bubbles: true,\r\n cancelable: true,\r\n composed: true,\r\n detail: arguments[1]\r\n };\r\n // The custom event that will be created\r\n if (document.createEvent) {\r\n try {\r\n switch (ev) {\r\n case \"input\":\r\n params.inputType = \"insertText\";\r\n evnt = new InputEvent(ev, params);\r\n break;\r\n default:\r\n evnt = new CustomEvent(ev, params);\r\n }\r\n } catch (e) {\r\n evnt = document.createEvent(\"CustomEvent\");\r\n evnt.initCustomEvent(\r\n ev,\r\n params.bubbles,\r\n params.cancelable,\r\n params.detail\r\n );\r\n }\r\n if (events.type) extend(evnt, events);\r\n elem.dispatchEvent(evnt);\r\n } else {\r\n evnt = document.createEventObject();\r\n evnt.eventType = ev;\r\n evnt.detail = arguments[1];\r\n if (events.type) extend(evnt, events);\r\n elem.fireEvent(\"on\" + evnt.eventType, evnt);\r\n }\r\n } else if (eventRegistry[ev] !== undefined) {\r\n arguments[0] = arguments[0].type\r\n ? arguments[0]\r\n : DependencyLib.Event(arguments[0]);\r\n arguments[0].detail = arguments.slice(1);\r\n\r\n const registry = eventRegistry[ev],\r\n handlers =\r\n namespace === \"global\"\r\n ? Object.values(registry).flat()\r\n : registry[namespace];\r\n handlers.forEach((handler) => handler.apply(elem, arguments));\r\n }\r\n }\r\n }\r\n return this;\r\n}\r\n","/*\r\n Input Mask plugin dependencyLib\r\n http://github.com/RobinHerbots/jquery.inputmask\r\n Copyright (c) Robin Herbots\r\n Licensed under the MIT license\r\n */\r\n\r\nimport window from \"../global/window\";\r\n\r\nimport data from \"./data\";\r\nimport { on, off, trigger, Event } from \"./events\";\r\nimport extend from \"./extend\";\r\n\r\nconst document = window.document;\r\n\r\nfunction DependencyLib(elem) {\r\n if (elem instanceof DependencyLib) {\r\n return elem;\r\n }\r\n if (!(this instanceof DependencyLib)) {\r\n return new DependencyLib(elem);\r\n }\r\n if (elem !== undefined && elem !== null && elem !== window) {\r\n this[0] = elem.nodeName\r\n ? elem\r\n : elem[0] !== undefined && elem[0].nodeName\r\n ? elem[0]\r\n : document.querySelector(elem);\r\n if (this[0] !== undefined && this[0] !== null) {\r\n data(this[0], \"events\", data(this[0], \"events\") || {});\r\n }\r\n }\r\n}\r\n\r\nDependencyLib.prototype = {\r\n on,\r\n off,\r\n trigger\r\n};\r\n\r\n// static\r\nDependencyLib.extend = extend;\r\nDependencyLib.data = data;\r\nDependencyLib.Event = Event;\r\n\r\nexport default DependencyLib;\r\n","import window from \"./global/window\";\r\n\r\nconst ua = (window.navigator && window.navigator.userAgent) || \"\",\r\n ie = ua.indexOf(\"MSIE \") > 0 || ua.indexOf(\"Trident/\") > 0,\r\n mobile =\r\n (window.navigator &&\r\n window.navigator.userAgentData &&\r\n window.navigator.userAgentData.mobile) ||\r\n (window.navigator && window.navigator.maxTouchPoints) ||\r\n \"ontouchstart\" in window, // not entirely correct but will currently do\r\n iphone = /iphone/i.test(ua);\r\n\r\nexport { ie, mobile, iphone };\r\n","export { keyCode, toKey, toKeyCode, keys };\r\n\r\nconst ignorables = {\r\n Alt: 18,\r\n AltGraph: 18,\r\n ArrowDown: 40,\r\n ArrowLeft: 37,\r\n ArrowRight: 39,\r\n ArrowUp: 38,\r\n Backspace: 8,\r\n CapsLock: 20,\r\n Control: 17,\r\n ContextMenu: 93,\r\n Dead: 221,\r\n Delete: 46,\r\n End: 35,\r\n Escape: 27,\r\n F1: 112,\r\n F2: 113,\r\n F3: 114,\r\n F4: 115,\r\n F5: 116,\r\n F6: 117,\r\n F7: 118,\r\n F8: 119,\r\n F9: 120,\r\n F10: 121,\r\n F11: 122,\r\n F12: 123,\r\n Home: 36,\r\n Insert: 45,\r\n NumLock: 144,\r\n PageDown: 34,\r\n PageUp: 33,\r\n Pause: 19,\r\n PrintScreen: 44,\r\n Process: 229,\r\n Shift: 16,\r\n ScrollLock: 145,\r\n Tab: 9,\r\n Unidentified: 229\r\n },\r\n keyCode = {\r\n c: 67,\r\n x: 88,\r\n z: 90,\r\n BACKSPACE_SAFARI: 127,\r\n Enter: 13,\r\n Meta_LEFT: 91,\r\n Meta_RIGHT: 92,\r\n Space: 32,\r\n ...ignorables\r\n },\r\n keyCodeRev = Object.entries(keyCode).reduce(\r\n (acc, [key, value]) =>\r\n (\r\n // eslint-disable-next-line no-sequences\r\n (acc[value] = acc[value] === undefined ? key : acc[value]), acc\r\n ),\r\n {}\r\n ),\r\n keys = Object.entries(keyCode).reduce(\r\n // eslint-disable-next-line no-sequences\r\n (acc, [key, value]) => ((acc[key] = key === \"Space\" ? \" \" : key), acc),\r\n {}\r\n );\r\n\r\nfunction toKey(keyCode, shiftKey) {\r\n return (\r\n keyCodeRev[keyCode] ||\r\n (shiftKey\r\n ? String.fromCharCode(keyCode)\r\n : String.fromCharCode(keyCode).toLowerCase())\r\n );\r\n}\r\n\r\nfunction toKeyCode(key) {\r\n return keyCode[key];\r\n}\r\n","import Inputmask from \"./inputmask\";\r\nimport { getLastValidPosition, seekNext } from \"./positioning\";\r\n\r\nexport {\r\n determineTestTemplate,\r\n getDecisionTaker,\r\n getMaskTemplate,\r\n getPlaceholder,\r\n getTest,\r\n getTests,\r\n getTestTemplate,\r\n isSubsetOf\r\n};\r\n\r\nfunction getLocator(tst, align) {\r\n // need to align the locators to be correct\r\n let locator = (\r\n tst.alternation != undefined\r\n ? tst.mloc[`${getDecisionTaker(tst)}:${tst.alternation}`] || tst.locator\r\n : tst.locator\r\n ).join(\"\");\r\n if (locator !== \"\") {\r\n locator = locator.split(\":\")[0]; // strip off alternation marker\r\n while (locator.length < align) locator += \"0\";\r\n }\r\n return locator;\r\n}\r\n\r\nfunction getDecisionTaker(tst) {\r\n let decisionTaker = tst.locator[tst.alternation];\r\n if (typeof decisionTaker === \"string\" && decisionTaker.length > 0) {\r\n // no decision taken ~ take smallest as decider\r\n decisionTaker = decisionTaker.split(\",\").sort((a, b) => a - b)[0];\r\n }\r\n return decisionTaker !== undefined ? decisionTaker.toString() : \"\";\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction getPlaceholder(pos, test, returnPL) {\r\n const inputmask = this,\r\n opts = this.opts,\r\n maskset = this.maskset;\r\n\r\n test = test || getTest.call(inputmask, pos).match;\r\n\r\n if (test.placeholder !== undefined || returnPL === true) {\r\n if (\r\n test.placeholder !== \"\" &&\r\n test.static === true &&\r\n test.generated !== true\r\n ) {\r\n // static and not dynamically generated ~ does not occur in regex mask ~ numeric alias def is not a valid entry\r\n const lvp = getLastValidPosition.call(inputmask, pos),\r\n nextPos = seekNext.call(inputmask, lvp);\r\n return (returnPL ? pos <= nextPos : pos < nextPos)\r\n ? opts.staticDefinitionSymbol && test.static\r\n ? test.nativeDef\r\n : test.def\r\n : typeof test.placeholder === \"function\"\r\n ? test.placeholder(opts)\r\n : test.placeholder;\r\n } else {\r\n return typeof test.placeholder === \"function\"\r\n ? test.placeholder(opts)\r\n : test.placeholder;\r\n }\r\n } else if (test.static === true) {\r\n if (pos > -1 && maskset.validPositions[pos] === undefined) {\r\n let tests = getTests.call(inputmask, pos),\r\n staticAlternations = [],\r\n prevTest;\r\n if (\r\n typeof opts.placeholder === \"string\" &&\r\n tests.length > 1 + (tests[tests.length - 1].match.def === \"\" ? 1 : 0)\r\n ) {\r\n for (let i = 0; i < tests.length; i++) {\r\n if (\r\n tests[i].match.def !== \"\" &&\r\n tests[i].match.optionality !== true &&\r\n tests[i].match.optionalQuantifier !== true &&\r\n (tests[i].match.static === true ||\r\n prevTest === undefined ||\r\n tests[i].match.fn.test(\r\n prevTest.match.def,\r\n maskset,\r\n pos,\r\n true,\r\n opts\r\n ) !== false)\r\n ) {\r\n staticAlternations.push(tests[i]);\r\n if (tests[i].match.static === true) prevTest = tests[i];\r\n if (staticAlternations.length > 1) {\r\n if (/[0-9a-bA-Z]/.test(staticAlternations[0].match.def)) {\r\n return opts.placeholder.charAt(pos % opts.placeholder.length);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return test.def;\r\n }\r\n\r\n return typeof opts.placeholder === \"object\"\r\n ? test.def\r\n : opts.placeholder.charAt(pos % opts.placeholder.length);\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction getMaskTemplate(\r\n baseOnInput,\r\n minimalPos,\r\n includeMode,\r\n noJit,\r\n clearOptionalTail\r\n) {\r\n // includeMode true => input, undefined => placeholder, false => mask\r\n\r\n const inputmask = this,\r\n opts = this.opts,\r\n maskset = this.maskset,\r\n greedy = opts.greedy;\r\n if (clearOptionalTail && opts.greedy) {\r\n opts.greedy = false;\r\n inputmask.maskset.tests = {};\r\n }\r\n minimalPos = minimalPos || 0;\r\n let maskTemplate = [],\r\n ndxIntlzr,\r\n pos = 0,\r\n test,\r\n testPos,\r\n jitRenderStatic;\r\n do {\r\n if (baseOnInput === true && maskset.validPositions[pos]) {\r\n testPos =\r\n clearOptionalTail &&\r\n maskset.validPositions[pos].match.optionality &&\r\n maskset.validPositions[pos + 1] === undefined &&\r\n (maskset.validPositions[pos].generatedInput === true ||\r\n (maskset.validPositions[pos].input ==\r\n opts.skipOptionalPartCharacter &&\r\n pos > 0))\r\n ? determineTestTemplate.call(\r\n inputmask,\r\n pos,\r\n getTests.call(inputmask, pos, ndxIntlzr, pos - 1)\r\n )\r\n : maskset.validPositions[pos];\r\n test = testPos.match;\r\n ndxIntlzr = testPos.locator.slice();\r\n maskTemplate.push(\r\n includeMode === true\r\n ? testPos.input\r\n : includeMode === false\r\n ? test.nativeDef\r\n : getPlaceholder.call(inputmask, pos, test)\r\n );\r\n } else {\r\n testPos = getTestTemplate.call(inputmask, pos, ndxIntlzr, pos - 1);\r\n test = testPos.match;\r\n ndxIntlzr = testPos.locator.slice();\r\n const jitMasking =\r\n noJit === true\r\n ? false\r\n : opts.jitMasking !== false\r\n ? opts.jitMasking\r\n : test.jit;\r\n // check for groupSeparator is a hack for the numerics as we don't want the render of the groupSeparator beforehand\r\n jitRenderStatic =\r\n (jitRenderStatic ||\r\n maskset.validPositions[\r\n pos - 1\r\n ]) /* && getTest.call(inputmask, pos + 1).match.def == \"\" */ &&\r\n test.static &&\r\n test.def !== opts.groupSeparator &&\r\n test.fn === null;\r\n\r\n if (\r\n jitRenderStatic ||\r\n jitMasking === false ||\r\n jitMasking === undefined /* || pos < lvp */ ||\r\n (typeof jitMasking === \"number\" &&\r\n isFinite(jitMasking) &&\r\n jitMasking > pos)\r\n ) {\r\n maskTemplate.push(\r\n includeMode === false\r\n ? test.nativeDef\r\n : getPlaceholder.call(inputmask, maskTemplate.length, test)\r\n );\r\n } else {\r\n jitRenderStatic = false;\r\n }\r\n }\r\n\r\n pos++;\r\n } while (test.static !== true || test.def !== \"\" || minimalPos > pos);\r\n if (maskTemplate[maskTemplate.length - 1] === \"\") {\r\n maskTemplate.pop(); // drop the last one which is empty\r\n }\r\n if (\r\n includeMode !== false || // do not alter the masklength when just retrieving the maskdefinition\r\n maskset.maskLength === undefined\r\n ) {\r\n // just make sure the maskLength gets initialized in all cases (needed for isValid)\r\n maskset.maskLength = pos - 1;\r\n }\r\n\r\n opts.greedy = greedy;\r\n return maskTemplate;\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction getTestTemplate(pos, ndxIntlzr, tstPs) {\r\n const inputmask = this,\r\n maskset = this.maskset;\r\n\r\n return (\r\n maskset.validPositions[pos] ||\r\n determineTestTemplate.call(\r\n inputmask,\r\n pos,\r\n getTests.call(\r\n inputmask,\r\n pos,\r\n ndxIntlzr ? ndxIntlzr.slice() : ndxIntlzr,\r\n tstPs\r\n )\r\n )\r\n );\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction determineTestTemplate(pos, tests) {\r\n const inputmask = this,\r\n opts = inputmask.opts,\r\n optionalityLevel = determineOptionalityLevel(pos, tests);\r\n\r\n pos = pos > 0 ? pos - 1 : 0;\r\n const longestLocator = Math.max(\r\n ...tests.map((tst) =>\r\n tst.locator === undefined ? 0 : tst.locator.length\r\n )\r\n ),\r\n prevTest = getTest.call(inputmask, pos),\r\n prevLocator = getLocator(prevTest, longestLocator);\r\n\r\n let lenghtOffset = 0,\r\n tstLocator,\r\n closest,\r\n bestMatch;\r\n\r\n if (\r\n opts.greedy &&\r\n tests.length > 1 &&\r\n tests[tests.length - 1].match.def === \"\"\r\n )\r\n lenghtOffset = 1;\r\n // console.log(\" optionality = \" + optionalityLevel);\r\n // console.log(\" - \" + JSON.stringify(tests));\r\n for (let ndx = 0; ndx < tests.length - lenghtOffset; ndx++) {\r\n // find best matching\r\n const tst = tests[ndx];\r\n tstLocator = getLocator(tst, longestLocator);\r\n const distance = Number(tstLocator) - Number(prevLocator); // find the closest match to the previous one\r\n // console.log(\"distance\", distance, tstLocator, prevLocator);\r\n\r\n if (\r\n tst.unMatchedAlternationStopped !== true ||\r\n tests.filter((tst) => tst.unMatchedAlternationStopped !== true).length <=\r\n 1\r\n ) {\r\n // only skip when there are choices outside the alternation\r\n if (\r\n closest === undefined ||\r\n (tstLocator !== \"\" && distance < closest) ||\r\n (bestMatch &&\r\n !opts.greedy &&\r\n bestMatch.match.optionality &&\r\n bestMatch.match.optionality - optionalityLevel > 0 &&\r\n bestMatch.match.newBlockMarker === \"master\" &&\r\n (!tst.match.optionality ||\r\n tst.match.optionality - optionalityLevel < 1 ||\r\n !tst.match.newBlockMarker)) ||\r\n (bestMatch &&\r\n !opts.greedy &&\r\n bestMatch.match.optionalQuantifier &&\r\n !tst.match.optionalQuantifier)\r\n ) {\r\n closest = distance;\r\n bestMatch = tst;\r\n }\r\n }\r\n }\r\n return bestMatch;\r\n}\r\n\r\nfunction determineOptionalityLevel(pos, tests) {\r\n let optionalityLevel = 0,\r\n differentOptionalLevels = false;\r\n tests.forEach((test) => {\r\n if (test.match.optionality) {\r\n if (optionalityLevel !== 0 && optionalityLevel !== test.match.optionality)\r\n differentOptionalLevels = true;\r\n if (optionalityLevel === 0 || optionalityLevel > test.match.optionality) {\r\n optionalityLevel = test.match.optionality;\r\n }\r\n }\r\n });\r\n if (optionalityLevel) {\r\n if (pos == 0) optionalityLevel = 0;\r\n else if (tests.length == 1) optionalityLevel = 0;\r\n else if (!differentOptionalLevels) optionalityLevel = 0;\r\n }\r\n return optionalityLevel;\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction getTest(pos, tests) {\r\n const inputmask = this,\r\n maskset = this.maskset;\r\n\r\n if (maskset.validPositions[pos]) {\r\n return maskset.validPositions[pos];\r\n }\r\n return (tests || getTests.call(inputmask, pos))[0];\r\n}\r\n\r\nfunction isSubsetOf(source, target, opts) {\r\n function expand(pattern) {\r\n let expanded = [],\r\n start = -1,\r\n end;\r\n for (let i = 0, l = pattern.length; i < l; i++) {\r\n if (pattern.charAt(i) === \"-\") {\r\n end = pattern.charCodeAt(i + 1);\r\n while (++start < end) expanded.push(String.fromCharCode(start));\r\n } else {\r\n start = pattern.charCodeAt(i);\r\n expanded.push(pattern.charAt(i));\r\n }\r\n }\r\n return expanded.join(\"\");\r\n }\r\n\r\n if (source.match.def === target.match.nativeDef) return true;\r\n\r\n if (\r\n (opts.regex ||\r\n (source.match.fn instanceof RegExp &&\r\n target.match.fn instanceof RegExp)) &&\r\n source.match.static !== true &&\r\n target.match.static !== true\r\n ) {\r\n // is regex a subset\r\n if (target.match.fn.source === \".\") return true;\r\n return (\r\n expand(target.match.fn.source.replace(/[[\\]/]/g, \"\")).indexOf(\r\n expand(source.match.fn.source.replace(/[[\\]/]/g, \"\"))\r\n ) !== -1\r\n );\r\n }\r\n return false;\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction getTests(pos, ndxIntlzr, tstPs) {\r\n let inputmask = this,\r\n $ = this.dependencyLib,\r\n maskset = this.maskset,\r\n opts = this.opts,\r\n el = this.el,\r\n maskTokens = maskset.maskToken,\r\n testPos = ndxIntlzr ? tstPs : 0,\r\n ndxInitializer = ndxIntlzr ? ndxIntlzr.slice() : [0],\r\n matches = [],\r\n insertStop = false,\r\n latestMatch,\r\n cacheDependency = ndxIntlzr ? ndxIntlzr.join(\"\") : \"\",\r\n unMatchedAlternation = false;\r\n\r\n function resolveTestFromToken(\r\n maskToken,\r\n ndxInitializer,\r\n loopNdx,\r\n quantifierRecurse\r\n ) {\r\n // ndxInitializer contains a set of indexes to speedup searches in the mtokens\r\n function handleMatch(match, loopNdx, quantifierRecurse) {\r\n function isFirstMatch(latestMatch, tokenGroup) {\r\n let firstMatch = tokenGroup.matches.indexOf(latestMatch) === 0;\r\n if (!firstMatch) {\r\n tokenGroup.matches.every(function (match, ndx) {\r\n if (match.isQuantifier === true) {\r\n firstMatch = isFirstMatch(\r\n latestMatch,\r\n tokenGroup.matches[ndx - 1]\r\n );\r\n } else if (Object.prototype.hasOwnProperty.call(match, \"matches\"))\r\n firstMatch = isFirstMatch(latestMatch, match);\r\n if (firstMatch) return false;\r\n\r\n return true;\r\n });\r\n }\r\n return firstMatch;\r\n }\r\n\r\n function resolveNdxInitializer(pos, alternateNdx, targetAlternation) {\r\n let bestMatch,\r\n distance,\r\n locator,\r\n newAlternateMloc,\r\n alternateMloc = `${alternateNdx}:${targetAlternation}`;\r\n\r\n if (maskset.tests[pos] || maskset.validPositions[pos]) {\r\n (maskset.validPositions[pos]\r\n ? [maskset.validPositions[pos]]\r\n : maskset.tests[pos]\r\n ).every(function (lmnt, ndx) {\r\n if (lmnt.mloc[alternateMloc]) {\r\n bestMatch = lmnt;\r\n return false; // break\r\n }\r\n\r\n // check if an entry in mloc match the alternateNdx on targetAlternation\r\n const mlocMatches = Object.values(lmnt.mloc).filter(\r\n // eslint-disable-next-line eqeqeq\r\n (m) => m[targetAlternation] == alternateNdx\r\n );\r\n // for each mlocMatch check the calculated distance\r\n mlocMatches.every((mlocMatch) => {\r\n let mlocMatchL = mlocMatch.join(\"\").split(\":\")[0]; // strip off alternation marker\r\n locator = locator || mlocMatchL;\r\n while (mlocMatchL.length < locator.length) mlocMatchL += \"0\";\r\n\r\n const mlocDistance = Number(mlocMatchL);\r\n // console.log(\"mlocDistance\", mlocDistance);\r\n if (bestMatch === undefined || mlocDistance < distance) {\r\n distance = mlocDistance;\r\n bestMatch = lmnt;\r\n\r\n // key from mlocMatch\r\n newAlternateMloc = Object.entries(lmnt.mloc).find(\r\n (entry) => entry[1].toString() === mlocMatch.toString()\r\n )[0];\r\n }\r\n\r\n return true; // continue\r\n });\r\n\r\n return true;\r\n });\r\n }\r\n if (bestMatch) {\r\n if (targetAlternation === undefined) {\r\n alternateMloc = `${alternateNdx}:${bestMatch.alternation}`;\r\n }\r\n const bestMatchAltIndex = `${\r\n bestMatch.locator[bestMatch.alternation]\r\n }:${bestMatch.alternation}`,\r\n slocator =\r\n bestMatch.mloc[newAlternateMloc || alternateMloc] ||\r\n bestMatch.mloc[bestMatchAltIndex] ||\r\n bestMatch.locator;\r\n if (slocator[slocator.length - 1].toString().indexOf(\":\") !== -1) {\r\n // eslint-disable-next-line no-unused-vars\r\n const alternation = slocator.pop();\r\n // targetAlternation = parseInt(alternation.substring(1));\r\n }\r\n\r\n const sliceStart =\r\n parseInt(\r\n // newAlternateMloc\r\n // ? newAlternateMloc.split(\":\")[1]\r\n // : targetAlternation ||\r\n bestMatch.alternation\r\n ) + 1;\r\n\r\n // console.log(\r\n // \"resolveNdxInitializer\",\r\n // pos,\r\n // alternateNdx,\r\n // targetAlternation,\r\n // slocator,\r\n // sliceStart,\r\n // bestMatch\r\n // );\r\n\r\n return slocator.slice(sliceStart);\r\n } else {\r\n return targetAlternation !== undefined\r\n ? resolveNdxInitializer(pos, alternateNdx)\r\n : undefined;\r\n }\r\n }\r\n\r\n function staticCanMatchDefinition(source, target) {\r\n return source.match.static === true && target.match.static !== true\r\n ? target.match.fn.test(\r\n source.match.def,\r\n maskset,\r\n pos,\r\n false,\r\n opts,\r\n false\r\n )\r\n : false;\r\n }\r\n\r\n // mergelocators for retrieving the correct locator match when merging\r\n function setMergeLocators(targetMatch, altMatch) {\r\n function mergeLoc(altNdx) {\r\n targetMatch.mloc = targetMatch.mloc || {};\r\n let locNdx = targetMatch.locator[altNdx];\r\n if (locNdx === undefined) {\r\n targetMatch.alternation = undefined;\r\n } else {\r\n if (altMatch === undefined) {\r\n if (typeof locNdx === \"string\") locNdx = locNdx.split(\",\")[0];\r\n locNdx = `${locNdx}:${altNdx}`;\r\n if (targetMatch.mloc[locNdx] === undefined) {\r\n targetMatch.mloc[locNdx] = targetMatch.locator.slice();\r\n targetMatch.mloc[locNdx].push(`:${altNdx}`); // add alternation index\r\n }\r\n } else {\r\n let offset = 0;\r\n for (const ndx in altMatch.mloc) {\r\n // if (typeof ndx === \"string\") ndx = parseInt(ndx.split(\",\")[0]);\r\n if (targetMatch.mloc[ndx] === undefined) {\r\n targetMatch.mloc[ndx] = altMatch.mloc[ndx];\r\n } else {\r\n do {\r\n if (targetMatch.mloc[ndx + offset] === undefined) {\r\n targetMatch.mloc[ndx + offset] = altMatch.mloc[ndx];\r\n break;\r\n }\r\n } while (targetMatch.mloc[ndx + offset++] !== undefined);\r\n }\r\n }\r\n\r\n targetMatch.locator = mergeLocators(testPos, [\r\n targetMatch,\r\n altMatch\r\n ]);\r\n }\r\n if (targetMatch.alternation > altNdx) {\r\n // if the alternation index is higher than the current one resolve it to the alternation\r\n targetMatch.alternation = altNdx;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n let alternationNdx = targetMatch.alternation,\r\n shouldMerge =\r\n altMatch === undefined ||\r\n (alternationNdx <= altMatch.alternation &&\r\n targetMatch.locator[alternationNdx]\r\n .toString()\r\n .indexOf(altMatch.locator[alternationNdx]) === -1);\r\n if (!shouldMerge && alternationNdx > altMatch.alternation) {\r\n for (let i = 0; i < alternationNdx; i++) {\r\n if (targetMatch.locator[i] !== altMatch.locator[i]) {\r\n alternationNdx = i;\r\n shouldMerge = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (shouldMerge) {\r\n return mergeLoc(alternationNdx);\r\n }\r\n return false;\r\n }\r\n\r\n function handleGroup() {\r\n match = handleMatch(\r\n maskToken.matches[maskToken.matches.indexOf(match) + 1],\r\n loopNdx,\r\n quantifierRecurse\r\n );\r\n if (match) return true;\r\n }\r\n\r\n function handleOptional() {\r\n const optionalToken = match,\r\n mtchsNdx = matches.length;\r\n match = resolveTestFromToken(\r\n match,\r\n ndxInitializer,\r\n loopNdx,\r\n quantifierRecurse\r\n );\r\n if (matches.length > 0) {\r\n // check on matches.length instead of match to handle quantifier in a recursive call\r\n // mark optionality in matches\r\n matches.forEach(function (mtch, ndx) {\r\n if (ndx >= mtchsNdx) {\r\n mtch.match.optionality = mtch.match.optionality\r\n ? mtch.match.optionality + 1\r\n : 1;\r\n }\r\n });\r\n latestMatch = matches[matches.length - 1].match;\r\n\r\n if (\r\n quantifierRecurse === undefined &&\r\n isFirstMatch(latestMatch, optionalToken)\r\n ) {\r\n // prevent loop see #698\r\n insertStop = true; // insert a stop\r\n testPos = pos; // match the position after the group\r\n } else {\r\n return match; // make the loop continue when it is deliberately by a quantifier\r\n }\r\n }\r\n }\r\n\r\n function handleAlternator() {\r\n function calculateMatchesLength(matches) {\r\n let matchesLength = 0;\r\n for (let ndx = 0; ndx < matches.length; ndx++) {\r\n const match = matches[ndx];\r\n if (match.isQuantifier && !isNaN(match.quantifier.max)) {\r\n matchesLength += match.quantifier.max;\r\n } else {\r\n matchesLength++;\r\n }\r\n }\r\n return matchesLength;\r\n }\r\n function isUnmatchedAlternation(alternateToken) {\r\n const matchesLength = alternateToken.matches[0].matches\r\n ? calculateMatchesLength(alternateToken.matches[0].matches)\r\n : 1;\r\n let matchesNewLength;\r\n for (let alndx = 0; alndx < alternateToken.matches.length; alndx++) {\r\n matchesNewLength = alternateToken.matches[alndx].matches\r\n ? calculateMatchesLength(alternateToken.matches[alndx].matches)\r\n : 1;\r\n if (matchesLength !== matchesNewLength) {\r\n break;\r\n }\r\n }\r\n\r\n return matchesLength !== matchesNewLength;\r\n }\r\n\r\n inputmask.hasAlternator = true;\r\n const alternateToken = match,\r\n malternateMatches = [],\r\n currentMatches = matches.slice(),\r\n loopNdxCnt = loopNdx.length,\r\n altIndex = ndxInitializer.length > 0 ? ndxInitializer.shift() : -1;\r\n let maltMatches;\r\n if (altIndex === -1 || typeof altIndex === \"string\") {\r\n const currentPos = testPos,\r\n ndxInitializerClone = ndxInitializer.slice();\r\n let altIndexArr = [],\r\n amndx;\r\n if (typeof altIndex === \"string\") {\r\n altIndexArr = altIndex.split(\",\");\r\n } else {\r\n for (amndx = 0; amndx < alternateToken.matches.length; amndx++) {\r\n altIndexArr.push(amndx.toString());\r\n }\r\n }\r\n\r\n if (maskset.excludes[pos] !== undefined) {\r\n const altIndexArrClone = altIndexArr.slice();\r\n for (let i = 0, exl = maskset.excludes[pos].length; i < exl; i++) {\r\n const excludeSet = maskset.excludes[pos][i].toString().split(\":\");\r\n if (loopNdx.length == excludeSet[1]) {\r\n altIndexArr.splice(altIndexArr.indexOf(excludeSet[0]), 1);\r\n }\r\n }\r\n if (altIndexArr.length === 0) {\r\n // fully alternated => reset\r\n delete maskset.excludes[pos];\r\n altIndexArr = altIndexArrClone;\r\n }\r\n }\r\n if (\r\n opts.keepStatic === true ||\r\n (isFinite(parseInt(opts.keepStatic)) &&\r\n currentPos >= opts.keepStatic)\r\n )\r\n altIndexArr = altIndexArr.slice(0, 1);\r\n for (let ndx = 0; ndx < altIndexArr.length; ndx++) {\r\n amndx = parseInt(altIndexArr[ndx]);\r\n matches = [];\r\n // set the correct ndxInitializer\r\n ndxInitializer =\r\n typeof altIndex === \"string\"\r\n ? resolveNdxInitializer(testPos, amndx, loopNdxCnt) ||\r\n ndxInitializerClone.slice()\r\n : ndxInitializerClone.slice();\r\n // console.log(\"ndxInit\", ndxInitializer);\r\n const tokenMatch = alternateToken.matches[amndx];\r\n if (\r\n tokenMatch &&\r\n handleMatch(\r\n tokenMatch,\r\n [amndx].concat(loopNdx),\r\n quantifierRecurse\r\n )\r\n ) {\r\n match = true;\r\n } else {\r\n // if (currentPos !== 0) {\r\n // only check with the first alternate\r\n unMatchedAlternation = isUnmatchedAlternation(alternateToken);\r\n // }\r\n if (\r\n tokenMatch &&\r\n tokenMatch.matches &&\r\n tokenMatch.matches.length >\r\n alternateToken.matches[0].matches.length\r\n ) {\r\n break;\r\n }\r\n }\r\n\r\n maltMatches = matches.slice();\r\n testPos = currentPos;\r\n matches = [];\r\n\r\n // fuzzy merge matches\r\n for (let ndx1 = 0; ndx1 < maltMatches.length; ndx1++) {\r\n let altMatch = maltMatches[ndx1],\r\n dropMatch = false;\r\n altMatch.alternation = altMatch.alternation || loopNdxCnt;\r\n setMergeLocators(altMatch);\r\n for (let ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) {\r\n const altMatch2 = malternateMatches[ndx2];\r\n if (\r\n typeof altIndex !== \"string\" ||\r\n (altMatch.alternation !== undefined &&\r\n altIndex.indexOf(\r\n altMatch.locator[altMatch.alternation].toString()\r\n ) !== -1)\r\n ) {\r\n if (altMatch.match.nativeDef === altMatch2.match.nativeDef) {\r\n dropMatch = true;\r\n setMergeLocators(altMatch2, altMatch);\r\n break;\r\n } else if (isSubsetOf(altMatch, altMatch2, opts)) {\r\n if (setMergeLocators(altMatch, altMatch2)) {\r\n dropMatch = true;\r\n malternateMatches.splice(\r\n malternateMatches.indexOf(altMatch2),\r\n 0,\r\n altMatch\r\n );\r\n }\r\n break;\r\n } else if (isSubsetOf(altMatch2, altMatch, opts)) {\r\n setMergeLocators(altMatch2, altMatch);\r\n break;\r\n } else if (staticCanMatchDefinition(altMatch, altMatch2)) {\r\n if (setMergeLocators(altMatch, altMatch2)) {\r\n // insert match above general match\r\n dropMatch = true;\r\n malternateMatches.splice(\r\n malternateMatches.indexOf(altMatch2),\r\n 0,\r\n altMatch\r\n );\r\n }\r\n break;\r\n } else if (staticCanMatchDefinition(altMatch2, altMatch)) {\r\n setMergeLocators(altMatch2, altMatch);\r\n // hackery to solve a mask like ([0]9)|(2a) ~ note the static 0 is optional ~ see unittest ivaninDarpatov\r\n // this needs a better solution, but his will do for now\r\n if (\r\n altMatch2.match.optionality &&\r\n el.inputmask.userOptions.keepStatic === undefined\r\n ) {\r\n opts.keepStatic = currentPos;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n if (!dropMatch) {\r\n malternateMatches.push(altMatch);\r\n }\r\n }\r\n }\r\n\r\n matches = currentMatches.concat(malternateMatches);\r\n\r\n testPos = pos;\r\n insertStop = matches.length > 0 && unMatchedAlternation; // insert a stopelemnt when there is an alternate - needed for non-greedy option\r\n match = malternateMatches.length > 0 && !unMatchedAlternation; // set correct match state\r\n\r\n if (unMatchedAlternation && insertStop && !match) {\r\n // mark matches with unMatchedAlternationStopped\r\n matches.forEach(function (mtch, ndx) {\r\n mtch.unMatchedAlternationStopped = true;\r\n });\r\n }\r\n\r\n // cloneback\r\n ndxInitializer = ndxInitializerClone.slice();\r\n } else {\r\n match = handleMatch(\r\n alternateToken.matches[altIndex] || maskToken.matches[altIndex],\r\n [altIndex].concat(loopNdx),\r\n quantifierRecurse\r\n );\r\n }\r\n if (match) {\r\n return true;\r\n }\r\n }\r\n\r\n function handleQuantifier() {\r\n const qt = match;\r\n let breakloop = false;\r\n for (\r\n let qndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0;\r\n qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max) &&\r\n testPos <= pos;\r\n qndx++\r\n ) {\r\n const tokenGroup =\r\n maskToken.matches[maskToken.matches.indexOf(qt) - 1];\r\n match = handleMatch(tokenGroup, [qndx].concat(loopNdx), tokenGroup); // set the tokenGroup as quantifierRecurse marker\r\n if (match) {\r\n matches.forEach(function (mtch, ndx) {\r\n if (IsMatchOf(tokenGroup, mtch.match)) latestMatch = mtch.match;\r\n else latestMatch = matches[matches.length - 1].match;\r\n\r\n // mark optionality\r\n // TODO FIX RECURSIVE QUANTIFIERS\r\n latestMatch.optionalQuantifier = qndx >= qt.quantifier.min;\r\n // console.log(pos + \" \" + qt.quantifier.min + \" \" + latestMatch.optionalQuantifier);\r\n // qndx + 1 as the index starts from 0\r\n latestMatch.jit =\r\n (qndx + 1) * (tokenGroup.matches.indexOf(latestMatch) + 1) >\r\n qt.quantifier.jit;\r\n if (\r\n latestMatch.optionalQuantifier &&\r\n isFirstMatch(latestMatch, tokenGroup)\r\n ) {\r\n insertStop = true;\r\n testPos = pos; // match the position after the group\r\n if (\r\n opts.greedy &&\r\n maskset.validPositions[pos - 1] == undefined &&\r\n qndx > qt.quantifier.min &&\r\n [\"*\", \"+\"].indexOf(qt.quantifier.max) != -1\r\n ) {\r\n matches.pop();\r\n cacheDependency = undefined;\r\n }\r\n breakloop = true; // stop quantifierloop && search for next possible match\r\n match = false; // mark match to false to make sure the loop in optionals continues\r\n }\r\n if (\r\n !breakloop &&\r\n latestMatch.jit /* && !latestMatch.optionalQuantifier */\r\n ) {\r\n // always set jitOffset, isvalid checks when to apply\r\n maskset.jitOffset[pos] =\r\n tokenGroup.matches.length -\r\n tokenGroup.matches.indexOf(latestMatch);\r\n }\r\n });\r\n if (breakloop) break; // search for next possible match\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n if (testPos > pos + opts._maxTestPos) {\r\n throw new Error(\r\n `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. ${maskset.mask}`\r\n );\r\n }\r\n if (testPos === pos && match.matches === undefined) {\r\n matches.push({\r\n match,\r\n locator: loopNdx.reverse(),\r\n cd: cacheDependency,\r\n mloc: {}\r\n });\r\n if (\r\n match.optionality &&\r\n quantifierRecurse === undefined &&\r\n ((opts.definitions &&\r\n opts.definitions[match.nativeDef] &&\r\n opts.definitions[match.nativeDef].optional) ||\r\n (Inputmask.prototype.definitions[match.nativeDef] &&\r\n Inputmask.prototype.definitions[match.nativeDef].optional))\r\n ) {\r\n // prevent loop see #698\r\n insertStop = true; // insert a stop\r\n testPos = pos; // match the position after the group\r\n } else {\r\n return true;\r\n }\r\n } else if (match.matches !== undefined) {\r\n if (match.isGroup && quantifierRecurse !== match) {\r\n // when a group pass along to the quantifier\r\n return handleGroup();\r\n } else if (match.isOptional) {\r\n return handleOptional();\r\n } else if (match.isAlternator) {\r\n return handleAlternator();\r\n } else if (\r\n match.isQuantifier &&\r\n quantifierRecurse !==\r\n maskToken.matches[maskToken.matches.indexOf(match) - 1]\r\n ) {\r\n return handleQuantifier();\r\n } else {\r\n match = resolveTestFromToken(\r\n match,\r\n ndxInitializer,\r\n loopNdx,\r\n quantifierRecurse\r\n );\r\n if (match) return true;\r\n }\r\n } else {\r\n testPos++;\r\n }\r\n }\r\n\r\n // the offset is set in the quantifierloop when git masking is used\r\n for (\r\n let tndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0;\r\n tndx < maskToken.matches.length;\r\n tndx++\r\n ) {\r\n if (maskToken.matches[tndx].isQuantifier !== true) {\r\n const match = handleMatch(\r\n maskToken.matches[tndx],\r\n [tndx].concat(loopNdx),\r\n quantifierRecurse\r\n );\r\n if (match && testPos === pos) {\r\n return match;\r\n } else if (testPos > pos) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function IsMatchOf(tokenGroup, match) {\r\n let isMatch = tokenGroup.matches.indexOf(match) != -1;\r\n if (!isMatch) {\r\n tokenGroup.matches.forEach((mtch, ndx) => {\r\n if (mtch.matches !== undefined && !isMatch) {\r\n isMatch = IsMatchOf(mtch, match);\r\n }\r\n });\r\n }\r\n return isMatch;\r\n }\r\n\r\n function mergeLocators(pos, tests) {\r\n let locator = [];\r\n if (!Array.isArray(tests)) tests = [tests];\r\n\r\n if (tests.length > 0) {\r\n if (\r\n tests[0].alternation === undefined ||\r\n opts.keepStatic === true ||\r\n (isFinite(parseInt(opts.keepStatic)) && pos >= opts.keepStatic)\r\n ) {\r\n locator = determineTestTemplate\r\n .call(inputmask, pos, tests.slice())\r\n .locator.slice();\r\n if (locator.length === 0) locator = tests[0].locator.slice();\r\n } else {\r\n // alternation = tests[0].locator.length - 1;\r\n tests.forEach((mtch) => {\r\n Object.values(mtch.mloc).forEach((mloc) => {\r\n mloc.forEach((loc, locNdx) => {\r\n // if (locNdx > alternation) return;\r\n const mergedPos = locator[locNdx];\r\n if (\r\n loc.toString().includes(\":\") ||\r\n (mergedPos && mergedPos.toString().includes(\":\"))\r\n )\r\n return;\r\n if (mergedPos === undefined) {\r\n locator[locNdx] = loc;\r\n } else if (!mergedPos.toString().includes(loc)) {\r\n locator[locNdx] = locator[locNdx] + \",\" + loc;\r\n }\r\n });\r\n });\r\n });\r\n }\r\n }\r\n // console.log(\"mergeLocators\", pos, tests, locator);\r\n return locator;\r\n }\r\n\r\n if (pos > -1) {\r\n if (ndxIntlzr === undefined) {\r\n // determine index initializer\r\n let previousPos = pos - 1,\r\n test;\r\n while (\r\n (test =\r\n maskset.validPositions[previousPos] || maskset.tests[previousPos]) ===\r\n undefined &&\r\n previousPos > -1\r\n ) {\r\n previousPos--;\r\n }\r\n if (test !== undefined && previousPos > -1) {\r\n ndxInitializer = mergeLocators(previousPos, test);\r\n cacheDependency = ndxInitializer.join(\"\");\r\n testPos = previousPos;\r\n }\r\n }\r\n if (maskset.tests[pos] && maskset.tests[pos][0].cd === cacheDependency) {\r\n // cacheDependency is set on all tests, just check on the first\r\n return maskset.tests[pos];\r\n }\r\n for (\r\n let mtndx = ndxInitializer.shift();\r\n mtndx < maskTokens.length;\r\n mtndx++\r\n ) {\r\n const match = resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [\r\n mtndx\r\n ]);\r\n if ((match && testPos === pos) || testPos > pos) {\r\n break;\r\n }\r\n }\r\n }\r\n if (matches.length === 0 || insertStop) {\r\n matches.push({\r\n match: {\r\n fn: null,\r\n static: true,\r\n optionality: false,\r\n casing: null,\r\n def: \"\",\r\n placeholder: \"\"\r\n },\r\n // mark when there are unmatched alternations ex: mask: \"(a|aa)\"\r\n // this will result in the least distance to select the correct test result in determineTestTemplate\r\n locator:\r\n unMatchedAlternation &&\r\n matches.filter((tst) => tst.unMatchedAlternationStopped !== true)\r\n .length === 0\r\n ? [0]\r\n : [],\r\n mloc: {},\r\n cd: cacheDependency\r\n });\r\n }\r\n let result;\r\n if (ndxIntlzr !== undefined && maskset.tests[pos]) {\r\n // prioritize full tests for caching\r\n result = $.extend(true, [], matches);\r\n } else {\r\n // console.log(\"stored \" + pos + \" - \" + JSON.stringify(matches));\r\n maskset.tests[pos] = $.extend(true, [], matches); // set a clone to prevent overwriting some props\r\n result = maskset.tests[pos];\r\n }\r\n\r\n // console.log(pos, JSON.stringify(matches));\r\n // cleanup optionality marking\r\n matches.forEach((t) => {\r\n t.match.optionality = t.match.defOptionality || false;\r\n });\r\n\r\n return result;\r\n}\r\n","import { EventHandlers } from \"./eventhandlers\";\r\nimport { keyCode, keys } from \"./keycode.js\";\r\nimport {\r\n determineLastRequiredPosition,\r\n determineNewCaretPosition,\r\n getBuffer,\r\n getLastValidPosition,\r\n isMask,\r\n resetMaskSet,\r\n seekNext,\r\n seekPrevious\r\n} from \"./positioning\";\r\nimport {\r\n determineTestTemplate,\r\n getDecisionTaker,\r\n getPlaceholder,\r\n getTest,\r\n getTests,\r\n getTestTemplate\r\n} from \"./validation-tests\";\r\n\r\nexport {\r\n alternate,\r\n checkAlternationMatch,\r\n isComplete,\r\n isSelection,\r\n isValid,\r\n refreshFromBuffer,\r\n revalidateMask,\r\n handleRemove\r\n};\r\n\r\n// tobe put on prototype?\r\nfunction alternate(maskPos, c, strict, fromIsValid, rAltPos, selection) {\r\n // pos == true => generalize\r\n const inputmask = this,\r\n $ = this.dependencyLib,\r\n opts = this.opts,\r\n maskset = inputmask.maskset;\r\n\r\n if (!inputmask.hasAlternator) return false;\r\n\r\n const validPsClone = $.extend(true, [], maskset.validPositions),\r\n tstClone = $.extend(true, {}, maskset.tests);\r\n let lastAlt,\r\n alternation,\r\n isValidRslt = false,\r\n returnRslt = false,\r\n altPos,\r\n prevAltPos,\r\n i,\r\n validPos,\r\n decisionPos,\r\n lAltPos =\r\n rAltPos !== undefined ? rAltPos : getLastValidPosition.call(inputmask),\r\n nextPos,\r\n input,\r\n begin,\r\n end;\r\n\r\n if (selection) {\r\n begin = selection.begin;\r\n end = selection.end;\r\n if (selection.begin > selection.end) {\r\n begin = selection.end;\r\n end = selection.begin;\r\n }\r\n }\r\n\r\n if (lAltPos === -1 && rAltPos === undefined) {\r\n // do not recurse when already passed the beginning\r\n lastAlt = 0;\r\n prevAltPos = getTest.call(inputmask, lastAlt);\r\n alternation = prevAltPos.alternation;\r\n } else {\r\n // find last modified alternation\r\n for (; lAltPos >= 0; lAltPos--) {\r\n altPos =\r\n lAltPos === 0\r\n ? getTest.call(inputmask, 0)\r\n : maskset.validPositions[lAltPos];\r\n if (altPos && altPos.alternation !== undefined) {\r\n if (\r\n lAltPos <= (maskPos || 0) &&\r\n prevAltPos &&\r\n prevAltPos.locator[altPos.alternation] !==\r\n altPos.locator[altPos.alternation]\r\n ) {\r\n break;\r\n }\r\n lastAlt = lAltPos;\r\n alternation = altPos.alternation;\r\n prevAltPos = altPos;\r\n }\r\n }\r\n }\r\n\r\n if (alternation !== undefined) {\r\n decisionPos = parseInt(lastAlt);\r\n maskset.excludes[decisionPos] = maskset.excludes[decisionPos] || [];\r\n // generalize\r\n if (maskPos !== true) {\r\n maskset.excludes[decisionPos].push(\r\n getDecisionTaker(prevAltPos) + \":\" + prevAltPos.alternation\r\n );\r\n }\r\n\r\n const validInputs = [];\r\n let resultPos = -1;\r\n for (\r\n i = decisionPos;\r\n decisionPos < getLastValidPosition.call(inputmask, undefined, true) + 1;\r\n i++\r\n ) {\r\n if (resultPos === -1 && maskPos <= i && c !== undefined) {\r\n validInputs.push(c);\r\n resultPos = validInputs.length - 1;\r\n }\r\n validPos = maskset.validPositions[decisionPos];\r\n if (\r\n validPos &&\r\n validPos.generatedInput !== true &&\r\n (decisionPos !== 0 ||\r\n validPos.input !== opts.skipOptionalPartCharacter) &&\r\n (selection === undefined || i < begin || i >= end)\r\n ) {\r\n validInputs.push(validPos.input);\r\n }\r\n // delete maskset.validPositions[i++];\r\n maskset.validPositions.splice(decisionPos, 1);\r\n }\r\n if (resultPos === -1 && c !== undefined) {\r\n validInputs.push(c);\r\n resultPos = validInputs.length - 1;\r\n }\r\n\r\n while (\r\n maskset.excludes[decisionPos] !== undefined &&\r\n maskset.excludes[decisionPos].length < 10\r\n ) {\r\n // maskset.tests[decisionPos] = undefined; //clear decisionPos\r\n maskset.tests = {}; // clear all\r\n resetMaskSet.call(inputmask, true); // clear getbuffer\r\n isValidRslt = true;\r\n for (i = 0; i < validInputs.length; i++) {\r\n nextPos =\r\n isValidRslt.caret ||\r\n (opts.insertMode == false && nextPos != undefined)\r\n ? seekNext.call(inputmask, nextPos)\r\n : getLastValidPosition.call(inputmask, undefined, true) + 1;\r\n input = validInputs[i];\r\n // nextPos = translatePosition.call(inputmask, nextPos);\r\n if (\r\n !(isValidRslt = isValid.call(\r\n inputmask,\r\n nextPos,\r\n input,\r\n false,\r\n fromIsValid,\r\n true\r\n ))\r\n ) {\r\n if (isComplete.call(inputmask, getBuffer.call(inputmask))) {\r\n isValidRslt = returnRslt; // keep previous result if any\r\n }\r\n break;\r\n }\r\n if (i === resultPos) {\r\n returnRslt = isValidRslt;\r\n }\r\n if (maskPos == true && isValidRslt) {\r\n // return validposition on generalise\r\n returnRslt = { caretPos: i };\r\n }\r\n }\r\n if (!isValidRslt) {\r\n resetMaskSet.call(inputmask);\r\n prevAltPos = getTest.call(inputmask, decisionPos); // get the current decisionPos to exclude ~ needs to be before restoring the initial validation\r\n // reset & revert\r\n maskset.validPositions = $.extend(true, [], validPsClone);\r\n maskset.tests = $.extend(true, {}, tstClone); // refresh tests after possible alternating\r\n returnRslt = false;\r\n if (maskset.excludes[decisionPos]) {\r\n if (prevAltPos.alternation != undefined) {\r\n const decisionTaker = getDecisionTaker(prevAltPos);\r\n if (\r\n maskset.excludes[decisionPos].indexOf(\r\n decisionTaker + \":\" + prevAltPos.alternation\r\n ) !== -1\r\n ) {\r\n returnRslt = alternate.call(\r\n inputmask,\r\n maskPos,\r\n c,\r\n strict,\r\n fromIsValid,\r\n decisionPos - 1,\r\n selection\r\n );\r\n break;\r\n }\r\n maskset.excludes[decisionPos].push(\r\n decisionTaker + \":\" + prevAltPos.alternation\r\n );\r\n for (\r\n i = decisionPos;\r\n i < getLastValidPosition.call(inputmask, undefined, true) + 1;\r\n i++\r\n )\r\n maskset.validPositions.splice(decisionPos);\r\n } else delete maskset.excludes[decisionPos];\r\n } else {\r\n // latest alternation\r\n returnRslt = alternate.call(\r\n inputmask,\r\n maskPos,\r\n c,\r\n strict,\r\n fromIsValid,\r\n decisionPos - 1,\r\n selection\r\n );\r\n break;\r\n }\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // reset alternation excludes\r\n if (!returnRslt || opts.keepStatic !== false) {\r\n delete maskset.excludes[decisionPos];\r\n }\r\n return returnRslt;\r\n}\r\n\r\nfunction casing(elem, test, pos) {\r\n const opts = this.opts,\r\n maskset = this.maskset;\r\n\r\n switch (opts.casing || test.casing) {\r\n case \"upper\":\r\n elem = elem.toLocaleUpperCase();\r\n break;\r\n case \"lower\":\r\n elem = elem.toLocaleLowerCase();\r\n break;\r\n case \"title\":\r\n var posBefore = maskset.validPositions[pos - 1];\r\n if (\r\n pos === 0 ||\r\n (posBefore && posBefore.input === String.fromCharCode(keyCode.Space))\r\n ) {\r\n elem = elem.toLocaleUpperCase();\r\n } else {\r\n elem = elem.toLocaleLowerCase();\r\n }\r\n break;\r\n default:\r\n if (typeof opts.casing === \"function\") {\r\n const args = Array.prototype.slice.call(arguments);\r\n args.push(maskset.validPositions);\r\n elem = opts.casing.apply(this, args);\r\n }\r\n }\r\n\r\n return elem;\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction checkAlternationMatch(altArr1, altArr2, na) {\r\n const opts = this.opts;\r\n\r\n let altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1),\r\n isMatch = false,\r\n naArr = na !== undefined ? na.split(\",\") : [],\r\n naNdx;\r\n\r\n // remove no alternate indexes from alternation array\r\n for (let i = 0; i < naArr.length; i++) {\r\n if ((naNdx = altArr1.indexOf(naArr[i])) !== -1) {\r\n altArr1.splice(naNdx, 1);\r\n }\r\n }\r\n\r\n for (let alndx = 0; alndx < altArr1.length; alndx++) {\r\n if (altArrC.includes(altArr1[alndx])) {\r\n isMatch = true;\r\n break;\r\n }\r\n }\r\n return isMatch;\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction handleRemove(input, c, pos, strict, fromIsValid) {\r\n const inputmask = this,\r\n maskset = this.maskset,\r\n opts = this.opts;\r\n\r\n if (opts.numericInput || inputmask.isRTL) {\r\n if (c === keys.Backspace) {\r\n c = keys.Delete;\r\n } else if (c === keys.Delete) {\r\n c = keys.Backspace;\r\n }\r\n\r\n if (inputmask.isRTL) {\r\n const pend = pos.end;\r\n pos.end = pos.begin;\r\n pos.begin = pend;\r\n }\r\n }\r\n\r\n const lvp = getLastValidPosition.call(inputmask, undefined, true);\r\n if (pos.end >= getBuffer.call(inputmask).length && lvp >= pos.end) {\r\n // handle numeric negate symbol offset, due to dynamic jit masking\r\n pos.end = lvp + 1;\r\n }\r\n\r\n if (c === keys.Backspace) {\r\n if (pos.end - pos.begin < 1) {\r\n pos.begin = seekPrevious.call(inputmask, pos.begin);\r\n }\r\n } else if (c === keys.Delete) {\r\n if (pos.begin === pos.end) {\r\n pos.end = isMask.call(inputmask, pos.end, true, true)\r\n ? pos.end + 1\r\n : seekNext.call(inputmask, pos.end) + 1;\r\n }\r\n }\r\n let offset;\r\n if ((offset = revalidateMask.call(inputmask, pos)) !== false) {\r\n if (\r\n (strict !== true && opts.keepStatic !== false) ||\r\n (opts.regex !== null &&\r\n getTest.call(inputmask, pos.begin).match.def.indexOf(\"|\") !== -1)\r\n ) {\r\n // TODO NEEDS BETTER CHECK WHEN TO ALTERNATE ~ opts regex isn\"t good enough\r\n alternate.call(inputmask, true);\r\n }\r\n\r\n if (strict !== true) {\r\n maskset.p = c === keys.Delete ? pos.begin + offset : pos.begin;\r\n maskset.p = determineNewCaretPosition.call(\r\n inputmask,\r\n {\r\n begin: maskset.p,\r\n end: maskset.p\r\n },\r\n false,\r\n opts.insertMode === false && c === keys.Backspace ? \"none\" : undefined\r\n ).begin;\r\n }\r\n }\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction isComplete(buffer) {\r\n // return true / false / undefined (repeat *)\r\n const inputmask = this,\r\n opts = this.opts,\r\n maskset = this.maskset;\r\n\r\n if (typeof opts.isComplete === \"function\")\r\n return opts.isComplete(buffer, opts);\r\n if (opts.repeat === \"*\") return undefined;\r\n let complete = false,\r\n lrp = determineLastRequiredPosition.call(inputmask, true),\r\n aml = lrp.l; // seekPrevious.call(inputmask, lrp.l);\r\n\r\n if (\r\n lrp.def === undefined ||\r\n lrp.def.newBlockMarker ||\r\n lrp.def.optionality ||\r\n lrp.def.optionalQuantifier\r\n ) {\r\n complete = true;\r\n for (let i = 0; i <= aml; i++) {\r\n const test = getTestTemplate.call(inputmask, i).match;\r\n if (\r\n (test.static !== true &&\r\n maskset.validPositions[i] === undefined &&\r\n (test.optionality === false ||\r\n test.optionality === undefined ||\r\n (test.optionality && test.newBlockMarker == false)) &&\r\n (test.optionalQuantifier === false ||\r\n test.optionalQuantifier === undefined)) ||\r\n (test.static === true &&\r\n test.def != \"\" &&\r\n buffer[i] !== getPlaceholder.call(inputmask, i, test))\r\n ) {\r\n complete = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return complete;\r\n}\r\n\r\nfunction isSelection(posObj) {\r\n const inputmask = this,\r\n opts = this.opts,\r\n insertModeOffset = opts.insertMode ? 0 : 1;\r\n return inputmask.isRTL\r\n ? posObj.begin - posObj.end > insertModeOffset\r\n : posObj.end - posObj.begin > insertModeOffset;\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction isValid(\r\n pos,\r\n c,\r\n strict,\r\n fromIsValid,\r\n fromAlternate,\r\n validateOnly,\r\n fromCheckval\r\n) {\r\n // strict true ~ no correction or autofill\r\n const inputmask = this,\r\n $ = this.dependencyLib,\r\n opts = this.opts,\r\n maskset = inputmask.maskset;\r\n\r\n strict = strict === true; // always set a value to strict to prevent possible strange behavior in the extensions\r\n\r\n let maskPos = pos;\r\n if (pos.begin !== undefined) {\r\n // position was a position object - used to handle a delete by typing over a selection\r\n maskPos = inputmask.isRTL ? pos.end : pos.begin;\r\n }\r\n\r\n function processCommandObject(commandObj) {\r\n if (commandObj !== undefined) {\r\n if (commandObj.remove !== undefined) {\r\n // remove position(s)\r\n if (!Array.isArray(commandObj.remove))\r\n commandObj.remove = [commandObj.remove];\r\n commandObj.remove\r\n .sort(function (a, b) {\r\n return inputmask.isRTL ? a.pos - b.pos : b.pos - a.pos;\r\n })\r\n .forEach(function (lmnt) {\r\n revalidateMask.call(inputmask, { begin: lmnt, end: lmnt + 1 });\r\n });\r\n commandObj.remove = undefined;\r\n }\r\n if (commandObj.insert !== undefined) {\r\n // insert position(s)\r\n if (!Array.isArray(commandObj.insert))\r\n commandObj.insert = [commandObj.insert];\r\n commandObj.insert\r\n .sort(function (a, b) {\r\n return inputmask.isRTL ? b.pos - a.pos : a.pos - b.pos;\r\n })\r\n .forEach(function (lmnt) {\r\n if (lmnt.c !== \"\") {\r\n isValid.call(\r\n inputmask,\r\n lmnt.pos,\r\n lmnt.c,\r\n lmnt.strict !== undefined ? lmnt.strict : true,\r\n lmnt.fromIsValid !== undefined ? lmnt.fromIsValid : fromIsValid\r\n );\r\n }\r\n });\r\n commandObj.insert = undefined;\r\n }\r\n\r\n if (commandObj.refreshFromBuffer && commandObj.buffer) {\r\n const refresh = commandObj.refreshFromBuffer;\r\n refreshFromBuffer.call(\r\n inputmask,\r\n refresh === true ? refresh : refresh.start,\r\n refresh.end,\r\n commandObj.buffer\r\n );\r\n commandObj.refreshFromBuffer = undefined;\r\n }\r\n\r\n if (commandObj.rewritePosition !== undefined) {\r\n maskPos = commandObj.rewritePosition;\r\n // commandObj.rewritePosition = undefined;\r\n commandObj = true; // see prevalidation in isValid\r\n }\r\n }\r\n return commandObj;\r\n }\r\n\r\n function _isValid(position, c, strict) {\r\n let rslt = false;\r\n getTests.call(inputmask, position).every(function (tst, ndx) {\r\n const test = tst.match;\r\n // make sure the buffer is set and correct\r\n getBuffer.call(inputmask, true);\r\n if (\r\n test.jit &&\r\n maskset.validPositions[seekPrevious.call(inputmask, position)] ===\r\n undefined\r\n ) {\r\n // ignore if jit is not desirable\r\n rslt = false;\r\n } else {\r\n // return is false or a json object => { pos: ??, c: ??} or true\r\n rslt =\r\n test.fn != null\r\n ? test.fn.test(\r\n c,\r\n maskset,\r\n position,\r\n strict,\r\n opts,\r\n isSelection.call(inputmask, pos)\r\n )\r\n : (c === test.def || c === opts.skipOptionalPartCharacter) &&\r\n test.def !== \"\" // non mask\r\n ? {\r\n c:\r\n getPlaceholder.call(inputmask, position, test, true) ||\r\n test.def,\r\n pos: position\r\n }\r\n : false;\r\n }\r\n if (rslt !== false) {\r\n let elem = rslt.c !== undefined ? rslt.c : c,\r\n validatedPos = position;\r\n elem =\r\n elem === opts.skipOptionalPartCharacter && test.static === true\r\n ? getPlaceholder.call(inputmask, position, test, true) || test.def\r\n : elem;\r\n\r\n rslt = processCommandObject(rslt);\r\n\r\n if (rslt !== true && rslt.pos !== undefined && rslt.pos !== position) {\r\n // their is a position offset\r\n validatedPos = rslt.pos;\r\n }\r\n\r\n if (rslt !== true && rslt.pos === undefined && rslt.c === undefined) {\r\n return false; // breakout if nothing to insert\r\n }\r\n\r\n if (\r\n revalidateMask.call(\r\n inputmask,\r\n pos,\r\n $.extend({}, tst, {\r\n input: casing.call(inputmask, elem, test, validatedPos)\r\n }),\r\n fromIsValid,\r\n validatedPos\r\n ) === false\r\n ) {\r\n rslt = false;\r\n }\r\n return false; // break from loop\r\n }\r\n\r\n return true;\r\n });\r\n return rslt;\r\n }\r\n\r\n let result = true,\r\n positionsClone = $.extend(true, [], maskset.validPositions); // clone the currentPositions\r\n\r\n if (\r\n opts.keepStatic === false &&\r\n maskset.excludes[maskPos] !== undefined &&\r\n fromAlternate !== true &&\r\n fromIsValid !== true\r\n ) {\r\n for (let i = maskPos; i < (inputmask.isRTL ? pos.begin : pos.end); i++) {\r\n if (maskset.excludes[i] !== undefined) {\r\n maskset.excludes[i] = undefined;\r\n delete maskset.tests[i];\r\n }\r\n }\r\n }\r\n\r\n if (\r\n typeof opts.preValidation === \"function\" &&\r\n fromIsValid !== true &&\r\n validateOnly !== true\r\n ) {\r\n result = opts.preValidation.call(\r\n inputmask,\r\n getBuffer.call(inputmask),\r\n maskPos,\r\n c,\r\n isSelection.call(inputmask, pos),\r\n opts,\r\n maskset,\r\n pos,\r\n strict || fromAlternate\r\n );\r\n result = processCommandObject(result);\r\n }\r\n if (result === true) {\r\n // preValidation result\r\n result = _isValid(maskPos, c, strict);\r\n if (\r\n (!strict || fromIsValid === true) &&\r\n result === false &&\r\n validateOnly !== true\r\n ) {\r\n const currentPosValid = maskset.validPositions[maskPos];\r\n if (\r\n currentPosValid &&\r\n currentPosValid.match.static === true &&\r\n (currentPosValid.match.def === c ||\r\n c === opts.skipOptionalPartCharacter)\r\n ) {\r\n result = {\r\n caret: seekNext.call(inputmask, maskPos)\r\n };\r\n } else {\r\n if (\r\n opts.insertMode ||\r\n maskset.validPositions[seekNext.call(inputmask, maskPos)] ===\r\n undefined ||\r\n pos.end > maskPos\r\n ) {\r\n // does the input match on a further position?\r\n let skip = false;\r\n if (\r\n maskset.jitOffset[maskPos] &&\r\n maskset.validPositions[seekNext.call(inputmask, maskPos)] ===\r\n undefined\r\n ) {\r\n result = isValid.call(\r\n inputmask,\r\n maskPos + maskset.jitOffset[maskPos],\r\n c,\r\n true,\r\n true\r\n );\r\n if (result !== false) {\r\n if (fromAlternate !== true) result.caret = maskPos;\r\n skip = true;\r\n }\r\n }\r\n if (pos.end > maskPos) {\r\n maskset.validPositions[maskPos] = undefined;\r\n }\r\n if (\r\n !skip &&\r\n !isMask.call(inputmask, maskPos, opts.keepStatic && maskPos === 0)\r\n ) {\r\n for (\r\n let nPos = maskPos + 1,\r\n snPos = seekNext.call(inputmask, maskPos, false, maskPos !== 0);\r\n nPos <= snPos;\r\n nPos++\r\n ) {\r\n // if (!isMask(nPos, true)) {\r\n // \tcontinue;\r\n // }\r\n result = _isValid(nPos, c, strict);\r\n if (result !== false) {\r\n result =\r\n trackbackPositions.call(\r\n inputmask,\r\n maskPos,\r\n result.pos !== undefined ? result.pos : nPos\r\n ) || result;\r\n maskPos = nPos;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (inputmask.hasAlternator && fromAlternate !== true && !strict) {\r\n fromAlternate = true; // stop possible loop\r\n if (result === false) {\r\n // try alternating when the validation fails\r\n if (\r\n opts.keepStatic === true ||\r\n (isFinite(parseInt(opts.keepStatic)) && maskPos >= opts.keepStatic)\r\n ) {\r\n // console.log(\"alternate 0\");\r\n result = alternate.call(\r\n inputmask,\r\n maskPos,\r\n c,\r\n strict,\r\n fromIsValid,\r\n undefined,\r\n pos\r\n );\r\n }\r\n } else if (result === true) {\r\n // try alternating when the validation succeeds\r\n // selection clears an alternated keepstatic mask ~ #2189\r\n if (\r\n isSelection.call(inputmask, pos) &&\r\n maskset.tests[maskPos] &&\r\n maskset.tests[maskPos].length > 1 &&\r\n opts.keepStatic\r\n ) {\r\n // console.log(\"alternate 1\");\r\n result = alternate.call(inputmask, true) || result;\r\n }\r\n // alternate by adding extra input in between\r\n else if (\r\n opts.numericInput !== true &&\r\n maskset.tests[maskPos] &&\r\n maskset.tests[maskPos].length > 1 &&\r\n getLastValidPosition.call(inputmask, undefined, true) > maskPos\r\n ) {\r\n // console.log(\"alternate 2\");\r\n result = alternate.call(inputmask, true) || result;\r\n }\r\n }\r\n }\r\n\r\n if (result === true) {\r\n result = {\r\n pos: maskPos\r\n };\r\n }\r\n\r\n if (\r\n typeof opts.postValidation === \"function\" &&\r\n fromIsValid !== true &&\r\n validateOnly !== true\r\n ) {\r\n const postResult = opts.postValidation.call(\r\n inputmask,\r\n getBuffer.call(inputmask, true),\r\n pos.begin !== undefined ? (inputmask.isRTL ? pos.end : pos.begin) : pos,\r\n c,\r\n result,\r\n opts,\r\n maskset,\r\n strict,\r\n fromCheckval,\r\n fromAlternate\r\n );\r\n if (postResult !== undefined) {\r\n result = postResult === true ? result : postResult;\r\n }\r\n }\r\n }\r\n\r\n if (result && result.pos === undefined) {\r\n result.pos = maskPos;\r\n }\r\n\r\n if (result === false || validateOnly === true) {\r\n resetMaskSet.call(inputmask, true);\r\n maskset.validPositions = $.extend(true, [], positionsClone); // revert validation changes\r\n } else {\r\n trackbackPositions.call(inputmask, undefined, maskPos, true);\r\n }\r\n\r\n let endResult = processCommandObject(result);\r\n // console.log(\"returned result \" + JSON.stringify(endResult));\r\n if (inputmask.maxLength !== undefined) {\r\n const buffer = getBuffer.call(inputmask);\r\n if (buffer.length > inputmask.maxLength && !fromIsValid) {\r\n resetMaskSet.call(inputmask, true);\r\n maskset.validPositions = $.extend(true, [], positionsClone); // revert validation changes\r\n endResult = false;\r\n }\r\n }\r\n return endResult;\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction positionCanMatchDefinition(pos, testDefinition, opts) {\r\n const inputmask = this,\r\n maskset = this.maskset;\r\n\r\n let valid = false,\r\n tests = getTests.call(inputmask, pos);\r\n for (let tndx = 0; tndx < tests.length; tndx++) {\r\n if (\r\n tests[tndx].match &&\r\n ((tests[tndx].match.nativeDef ===\r\n testDefinition.match[opts.shiftPositions ? \"def\" : \"nativeDef\"] &&\r\n (!opts.shiftPositions || !testDefinition.match.static)) ||\r\n tests[tndx].match.nativeDef === testDefinition.match.nativeDef ||\r\n (opts.regex &&\r\n !tests[tndx].match.static &&\r\n tests[tndx].match.fn.test(\r\n testDefinition.input,\r\n maskset,\r\n pos,\r\n false,\r\n opts\r\n )))\r\n ) {\r\n valid = true;\r\n break;\r\n } else if (\r\n tests[tndx].match &&\r\n tests[tndx].match.def === testDefinition.match.nativeDef\r\n ) {\r\n valid = undefined;\r\n break;\r\n }\r\n }\r\n if (valid === false) {\r\n if (maskset.jitOffset[pos] !== undefined) {\r\n valid = positionCanMatchDefinition.call(\r\n inputmask,\r\n pos + maskset.jitOffset[pos],\r\n testDefinition,\r\n opts\r\n );\r\n }\r\n }\r\n return valid;\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction refreshFromBuffer(start, end, buffer) {\r\n const inputmask = this,\r\n maskset = this.maskset,\r\n opts = this.opts,\r\n $ = this.dependencyLib;\r\n // checkVal.call(inputmask, el, false, true, isRTL ? buffer.reverse() : buffer);\r\n let i,\r\n p,\r\n skipOptionalPartCharacter = opts.skipOptionalPartCharacter,\r\n bffr = inputmask.isRTL ? buffer.slice().reverse() : buffer;\r\n opts.skipOptionalPartCharacter = \"\";\r\n if (start === true) {\r\n resetMaskSet.call(inputmask, false);\r\n start = 0;\r\n end = buffer.length;\r\n p = determineNewCaretPosition.call(\r\n inputmask,\r\n { begin: 0, end: 0 },\r\n false\r\n ).begin;\r\n } else {\r\n for (i = start; i < end; i++) {\r\n delete maskset.validPositions[i];\r\n }\r\n p = start;\r\n }\r\n\r\n const keypress = new $.Event(\"keypress\");\r\n for (i = start; i < end; i++) {\r\n keypress.key = bffr[i].toString();\r\n inputmask.ignorable = false; // make sure ignorable is ignored ;-)\r\n const valResult = EventHandlers.keypressEvent.call(\r\n inputmask,\r\n keypress,\r\n true,\r\n false,\r\n false,\r\n p\r\n );\r\n if (valResult !== false && valResult !== undefined) {\r\n p = valResult.forwardPosition;\r\n }\r\n }\r\n\r\n opts.skipOptionalPartCharacter = skipOptionalPartCharacter;\r\n}\r\n\r\n// tobe put on prototype?\r\n// fill in best positions according the current input\r\nfunction trackbackPositions(originalPos, newPos, fillOnly) {\r\n const inputmask = this,\r\n maskset = this.maskset,\r\n $ = this.dependencyLib;\r\n\r\n // console.log(\"trackbackPositions \" + originalPos + \" \" + newPos);\r\n if (originalPos === undefined) {\r\n // find previous valid\r\n for (originalPos = newPos - 1; originalPos > 0; originalPos--) {\r\n if (maskset.validPositions[originalPos]) break;\r\n }\r\n }\r\n for (let ps = originalPos; ps < newPos; ps++) {\r\n if (\r\n maskset.validPositions[ps] === undefined &&\r\n !isMask.call(inputmask, ps, false)\r\n ) {\r\n const vp =\r\n ps == 0 ? getTest.call(inputmask, ps) : maskset.validPositions[ps - 1];\r\n if (vp) {\r\n const tests = getTests.call(inputmask, ps).slice();\r\n if (tests[tests.length - 1].match.def === \"\") tests.pop();\r\n var bestMatch = determineTestTemplate.call(inputmask, ps, tests),\r\n np;\r\n if (\r\n bestMatch &&\r\n (bestMatch.match.jit !== true ||\r\n (bestMatch.match.newBlockMarker === \"master\" &&\r\n (np = maskset.validPositions[ps + 1]) &&\r\n np.match.optionalQuantifier === true))\r\n ) {\r\n bestMatch = $.extend({}, bestMatch, {\r\n input:\r\n getPlaceholder.call(inputmask, ps, bestMatch.match, true) ||\r\n bestMatch.match.def\r\n });\r\n bestMatch.generatedInput = true;\r\n revalidateMask.call(inputmask, ps, bestMatch, true);\r\n\r\n if (fillOnly !== true) {\r\n // revalidate the new position to update the locator value\r\n const cvpInput = maskset.validPositions[newPos].input;\r\n maskset.validPositions[newPos] = undefined;\r\n return isValid.call(inputmask, newPos, cvpInput, true, true);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction revalidateMask(pos, validTest, fromIsValid, validatedPos) {\r\n // console.log(\"revalidateMask \" + fromIsValid);\r\n const inputmask = this,\r\n maskset = this.maskset,\r\n opts = this.opts,\r\n $ = this.dependencyLib;\r\n\r\n function IsEnclosedStatic(pos, valids, selection) {\r\n const posMatch = valids[pos];\r\n if (\r\n posMatch !== undefined &&\r\n posMatch.match.static === true &&\r\n posMatch.match.optionality !== true &&\r\n (valids[0] === undefined || valids[0].alternation === undefined)\r\n ) {\r\n const prevMatch =\r\n selection.begin <= pos - 1\r\n ? valids[pos - 1] &&\r\n valids[pos - 1].match.static === true &&\r\n valids[pos - 1]\r\n : valids[pos - 1],\r\n nextMatch =\r\n selection.end > pos + 1\r\n ? valids[pos + 1] &&\r\n valids[pos + 1].match.static === true &&\r\n valids[pos + 1]\r\n : valids[pos + 1];\r\n return prevMatch && nextMatch;\r\n }\r\n return false;\r\n }\r\n\r\n let offset = 0,\r\n begin = pos.begin !== undefined ? pos.begin : pos,\r\n end = pos.end !== undefined ? pos.end : pos,\r\n valid = true;\r\n if (pos.begin > pos.end) {\r\n begin = pos.end;\r\n end = pos.begin;\r\n }\r\n\r\n validatedPos = validatedPos !== undefined ? validatedPos : begin;\r\n if (\r\n fromIsValid === undefined &&\r\n (begin !== end ||\r\n (opts.insertMode && maskset.validPositions[validatedPos] !== undefined) ||\r\n validTest === undefined ||\r\n validTest.match.optionalQuantifier ||\r\n validTest.match.optionality)\r\n ) {\r\n // reposition & revalidate others\r\n let positionsClone = $.extend(true, [], maskset.validPositions),\r\n lvp = getLastValidPosition.call(inputmask, undefined, true),\r\n i;\r\n maskset.p = begin; // needed for alternated position after overtype selection\r\n\r\n const clearpos = isSelection.call(inputmask, pos) ? begin : validatedPos;\r\n for (i = lvp; i >= clearpos; i--) {\r\n maskset.validPositions.splice(i, 1);\r\n if (validTest === undefined) delete maskset.tests[i + 1];\r\n }\r\n\r\n let j = validatedPos,\r\n posMatch = j,\r\n t,\r\n canMatch,\r\n test;\r\n\r\n if (validTest) {\r\n maskset.validPositions[validatedPos] = $.extend(true, {}, validTest);\r\n posMatch++;\r\n j++;\r\n }\r\n\r\n if (positionsClone[end] == undefined && maskset.jitOffset[end]) {\r\n end += maskset.jitOffset[end] + 1;\r\n }\r\n for (i = validTest ? end : end - 1; i <= lvp; i++) {\r\n if (\r\n (t = positionsClone[i]) !== undefined &&\r\n t.generatedInput !== true &&\r\n (i >= end ||\r\n (i >= begin &&\r\n IsEnclosedStatic(i, positionsClone, {\r\n begin,\r\n end\r\n })))\r\n ) {\r\n while (\r\n ((test = getTest.call(inputmask, posMatch)), test.match.def !== \"\")\r\n ) {\r\n // loop needed to match further positions\r\n if (\r\n (canMatch = positionCanMatchDefinition.call(\r\n inputmask,\r\n posMatch,\r\n t,\r\n opts\r\n )) !== false ||\r\n t.match.def === \"+\"\r\n ) {\r\n // validated match //we still need some hackery for the + validator (numeric alias)\r\n if (t.match.def === \"+\") getBuffer.call(inputmask, true);\r\n const result = isValid.call(\r\n inputmask,\r\n posMatch,\r\n t.input,\r\n t.match.def !== \"+\",\r\n /* t.match.def !== \"+\" */ true\r\n );\r\n valid = result !== false;\r\n j = (result.pos || posMatch) + 1;\r\n if (!valid && canMatch) break;\r\n } else {\r\n valid = false;\r\n }\r\n if (valid) {\r\n if (validTest === undefined && t.match.static && i === pos.begin)\r\n offset++;\r\n break;\r\n }\r\n if (\r\n (!valid && getBuffer.call(inputmask), posMatch > maskset.maskLength)\r\n ) {\r\n break;\r\n }\r\n posMatch++;\r\n }\r\n if (getTest.call(inputmask, posMatch).match.def == \"\") {\r\n valid = false;\r\n }\r\n // restore position\r\n posMatch = j;\r\n }\r\n if (!valid) break;\r\n }\r\n if (!valid) {\r\n maskset.validPositions = $.extend(true, [], positionsClone);\r\n resetMaskSet.call(inputmask, true);\r\n return false;\r\n }\r\n } else if (\r\n validTest &&\r\n getTest.call(inputmask, validatedPos).match.cd === validTest.match.cd\r\n ) {\r\n maskset.validPositions[validatedPos] = $.extend(true, {}, validTest);\r\n }\r\n\r\n resetMaskSet.call(inputmask, true);\r\n return offset;\r\n}\r\n","import window from \"./global/window\";\r\nimport { checkAlternationMatch } from \"./validation\";\r\nimport {\r\n determineTestTemplate,\r\n getMaskTemplate,\r\n getPlaceholder,\r\n getTest,\r\n getTests,\r\n getTestTemplate\r\n} from \"./validation-tests\";\r\n\r\nexport {\r\n caret,\r\n determineLastRequiredPosition,\r\n determineNewCaretPosition,\r\n getBuffer,\r\n getBufferTemplate,\r\n getLastValidPosition,\r\n isMask,\r\n resetMaskSet,\r\n seekNext,\r\n seekPrevious,\r\n translatePosition\r\n};\r\n\r\n// tobe put on prototype?\r\nfunction caret(input, begin, end, notranslate, isDelete) {\r\n const inputmask = this,\r\n opts = this.opts;\r\n\r\n let range;\r\n if (begin !== undefined) {\r\n if (Array.isArray(begin)) {\r\n end = inputmask.isRTL ? begin[0] : begin[1];\r\n begin = inputmask.isRTL ? begin[1] : begin[0];\r\n }\r\n if (begin.begin !== undefined) {\r\n end = inputmask.isRTL ? begin.begin : begin.end;\r\n begin = inputmask.isRTL ? begin.end : begin.begin;\r\n }\r\n if (typeof begin === \"number\") {\r\n begin = notranslate ? begin : translatePosition.call(inputmask, begin);\r\n end = notranslate ? end : translatePosition.call(inputmask, end);\r\n end = typeof end === \"number\" ? end : begin;\r\n // if (!$(input).is(\":visible\")) {\r\n // \treturn;\r\n // }\r\n\r\n const scrollCalc =\r\n parseInt(\r\n ((input.ownerDocument.defaultView || window).getComputedStyle\r\n ? (input.ownerDocument.defaultView || window).getComputedStyle(\r\n input,\r\n null\r\n )\r\n : input.currentStyle\r\n ).fontSize\r\n ) * end;\r\n input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0;\r\n input.inputmask.caretPos = { begin, end }; // track caret internally\r\n if (opts.insertModeVisual && opts.insertMode === false && begin === end) {\r\n if (!isDelete) {\r\n end++; // set visualization for insert/overwrite mode\r\n }\r\n }\r\n if (input === input.getRootNode().activeElement) {\r\n if (\"setSelectionRange\" in input) {\r\n input.setSelectionRange(begin, end);\r\n } else if (window.getSelection) {\r\n range = document.createRange();\r\n if (input.firstChild === undefined || input.firstChild === null) {\r\n const textNode = document.createTextNode(\"\");\r\n input.appendChild(textNode);\r\n }\r\n range.setStart(\r\n input.firstChild,\r\n begin < input.inputmask._valueGet().length\r\n ? begin\r\n : input.inputmask._valueGet().length\r\n );\r\n range.setEnd(\r\n input.firstChild,\r\n end < input.inputmask._valueGet().length\r\n ? end\r\n : input.inputmask._valueGet().length\r\n );\r\n range.collapse(true);\r\n const sel = window.getSelection();\r\n sel.removeAllRanges();\r\n sel.addRange(range);\r\n // input.focus();\r\n } else if (input.createTextRange) {\r\n range = input.createTextRange();\r\n range.collapse(true);\r\n range.moveEnd(\"character\", end);\r\n range.moveStart(\"character\", begin);\r\n range.select();\r\n }\r\n\r\n input.inputmask.caretHook === undefined ||\r\n input.inputmask.caretHook.call(inputmask, { begin, end });\r\n }\r\n }\r\n } else {\r\n if (\"selectionStart\" in input && \"selectionEnd\" in input) {\r\n begin = input.selectionStart;\r\n end = input.selectionEnd;\r\n } else if (window.getSelection) {\r\n range = window.getSelection().getRangeAt(0);\r\n if (\r\n range.commonAncestorContainer.parentNode === input ||\r\n range.commonAncestorContainer === input\r\n ) {\r\n begin = range.startOffset;\r\n end = range.endOffset;\r\n }\r\n } else if (document.selection && document.selection.createRange) {\r\n range = document.selection.createRange();\r\n begin =\r\n 0 -\r\n range\r\n .duplicate()\r\n .moveStart(\"character\", -input.inputmask._valueGet().length);\r\n end = begin + range.text.length;\r\n }\r\n\r\n // if (opts.insertModeVisual && opts.insertMode === false && begin === (end - 1)) end--; //correct caret for insert/overwrite mode\r\n\r\n /* eslint-disable consistent-return */\r\n return {\r\n begin: notranslate ? begin : translatePosition.call(inputmask, begin),\r\n end: notranslate ? end : translatePosition.call(inputmask, end)\r\n };\r\n /* eslint-enable consistent-return */\r\n }\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction determineLastRequiredPosition(returnDefinition) {\r\n const inputmask = this,\r\n { maskset, dependencyLib: $ } = inputmask,\r\n lvp = getLastValidPosition.call(inputmask),\r\n positions = {},\r\n lvTest = maskset.validPositions[lvp],\r\n buffer = getMaskTemplate.call(\r\n inputmask,\r\n true,\r\n getLastValidPosition.call(inputmask),\r\n true,\r\n true\r\n );\r\n let bl = buffer.length,\r\n pos,\r\n ndxIntlzr = lvTest !== undefined ? lvTest.locator.slice() : undefined,\r\n testPos;\r\n for (pos = lvp + 1; pos < buffer.length; pos++) {\r\n testPos = getTestTemplate.call(inputmask, pos, ndxIntlzr, pos - 1);\r\n ndxIntlzr = testPos.locator.slice();\r\n positions[pos] = $.extend(true, {}, testPos);\r\n }\r\n\r\n const lvTestAlt =\r\n lvTest && lvTest.alternation !== undefined\r\n ? lvTest.locator[lvTest.alternation]\r\n : undefined;\r\n for (pos = bl - 1; pos > lvp; pos--) {\r\n testPos = positions[pos];\r\n if (\r\n (testPos.match.optionality ||\r\n (testPos.match.optionalQuantifier && testPos.match.newBlockMarker) ||\r\n (lvTestAlt &&\r\n ((lvTestAlt !== positions[pos].locator[lvTest.alternation] &&\r\n testPos.match.static !== true) ||\r\n (testPos.match.static === true &&\r\n testPos.locator[lvTest.alternation] &&\r\n checkAlternationMatch.call(\r\n inputmask,\r\n testPos.locator[lvTest.alternation].toString().split(\",\"),\r\n lvTestAlt.toString().split(\",\")\r\n ) &&\r\n getTests.call(inputmask, pos)[0].def !== \"\")))) &&\r\n buffer[pos] === getPlaceholder.call(inputmask, pos, testPos.match)\r\n ) {\r\n bl--;\r\n if (testPos.match.optionality) {\r\n // find the last position that is not optional ~ isoptional and newblockmarker == \"master\"\r\n let prevPos = pos;\r\n while (prevPos > 0) {\r\n const test = getTest.call(inputmask, prevPos);\r\n if (\r\n test.match.newBlockMarker === \"master\" ||\r\n test.match.newBlockMarker === true\r\n ) {\r\n break;\r\n }\r\n prevPos--;\r\n }\r\n if (maskset.validPositions[prevPos] !== undefined) {\r\n break;\r\n }\r\n }\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // no extra required positions\r\n if (pos === lvp) {\r\n bl = pos;\r\n }\r\n\r\n return returnDefinition\r\n ? {\r\n l: bl,\r\n def: positions[bl] ? positions[bl].match : undefined\r\n }\r\n : bl;\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction determineNewCaretPosition(\r\n selectedCaret,\r\n tabbed,\r\n positionCaretOnClick\r\n) {\r\n const inputmask = this,\r\n { maskset, opts } = inputmask;\r\n let clickPosition, lvclickPosition, lastPosition;\r\n\r\n function doRadixFocus(clickPos) {\r\n if (opts.radixPoint !== \"\" && opts.digits !== 0) {\r\n const vps = maskset.validPositions;\r\n if (vps[clickPos] === undefined || vps[clickPos].input === undefined) {\r\n if (clickPos < seekNext.call(inputmask, -1)) return true;\r\n const radixPos = getBuffer.call(inputmask).indexOf(opts.radixPoint);\r\n if (radixPos !== -1) {\r\n for (let vp = 0, vpl = vps.length; vp < vpl; vp++) {\r\n if (\r\n vps[vp] &&\r\n radixPos < vp &&\r\n vps[vp].input !== getPlaceholder.call(inputmask, vp)\r\n ) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n if (tabbed) {\r\n if (inputmask.isRTL) {\r\n selectedCaret.end = selectedCaret.begin;\r\n } else {\r\n selectedCaret.begin = selectedCaret.end;\r\n }\r\n }\r\n if (selectedCaret.begin === selectedCaret.end) {\r\n positionCaretOnClick = positionCaretOnClick || opts.positionCaretOnClick;\r\n switch (positionCaretOnClick) {\r\n case \"none\":\r\n break;\r\n case \"select\":\r\n selectedCaret = { begin: 0, end: getBuffer.call(inputmask).length };\r\n break;\r\n case \"ignore\":\r\n selectedCaret.end = selectedCaret.begin = seekNext.call(\r\n inputmask,\r\n getLastValidPosition.call(inputmask)\r\n );\r\n break;\r\n case \"radixFocus\":\r\n if (inputmask.clicked > 1 && maskset.validPositions.length === 0) break;\r\n if (doRadixFocus(selectedCaret.begin)) {\r\n const radixPos = getBuffer\r\n .call(inputmask)\r\n .join(\"\")\r\n .indexOf(opts.radixPoint);\r\n selectedCaret.end = selectedCaret.begin = opts.numericInput\r\n ? seekNext.call(inputmask, radixPos)\r\n : radixPos;\r\n break;\r\n } // fallback to lvp\r\n // eslint-disable-next-line no-fallthrough\r\n default: // lvp:\r\n clickPosition = selectedCaret.begin;\r\n lvclickPosition = getLastValidPosition.call(\r\n inputmask,\r\n clickPosition,\r\n true\r\n );\r\n lastPosition = seekNext.call(\r\n inputmask,\r\n lvclickPosition === -1 && !isMask.call(inputmask, 0)\r\n ? -1\r\n : lvclickPosition\r\n );\r\n\r\n if (clickPosition <= lastPosition) {\r\n selectedCaret.end = selectedCaret.begin = !isMask.call(\r\n inputmask,\r\n clickPosition,\r\n false,\r\n true\r\n )\r\n ? seekNext.call(inputmask, clickPosition)\r\n : clickPosition;\r\n } else {\r\n const lvp = maskset.validPositions[lvclickPosition],\r\n tt = getTestTemplate.call(\r\n inputmask,\r\n lastPosition,\r\n lvp ? lvp.match.locator : undefined,\r\n lvp\r\n ),\r\n placeholder = getPlaceholder.call(\r\n inputmask,\r\n lastPosition,\r\n tt.match\r\n );\r\n if (\r\n (placeholder !== \"\" &&\r\n getBuffer.call(inputmask)[lastPosition] !== placeholder &&\r\n tt.match.optionalQuantifier !== true &&\r\n tt.match.newBlockMarker !== true) ||\r\n (!isMask.call(inputmask, lastPosition, opts.keepStatic, true) &&\r\n tt.match.def === placeholder)\r\n ) {\r\n const newPos = seekNext.call(inputmask, lastPosition);\r\n if (clickPosition >= newPos || clickPosition === lastPosition) {\r\n lastPosition = newPos;\r\n }\r\n }\r\n selectedCaret.end = selectedCaret.begin = lastPosition;\r\n }\r\n }\r\n\r\n return selectedCaret;\r\n }\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction getBuffer(noCache) {\r\n const inputmask = this,\r\n { maskset } = inputmask;\r\n\r\n if (maskset.buffer === undefined || noCache === true) {\r\n maskset.buffer = getMaskTemplate.call(\r\n inputmask,\r\n true,\r\n getLastValidPosition.call(inputmask),\r\n true\r\n );\r\n if (maskset._buffer === undefined) maskset._buffer = maskset.buffer.slice();\r\n }\r\n return maskset.buffer;\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction getBufferTemplate() {\r\n const inputmask = this,\r\n maskset = this.maskset;\r\n\r\n if (maskset._buffer === undefined) {\r\n // generate template\r\n maskset._buffer = getMaskTemplate.call(inputmask, false, 1);\r\n if (maskset.buffer === undefined) maskset.buffer = maskset._buffer.slice();\r\n }\r\n return maskset._buffer;\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction getLastValidPosition(closestTo, strict, validPositions) {\r\n const maskset = this.maskset;\r\n\r\n let before = -1,\r\n after = -1;\r\n const valids = validPositions || maskset.validPositions; // for use in valhook ~ context switch\r\n if (closestTo === undefined) closestTo = -1;\r\n for (let psNdx = 0, vpl = valids.length; psNdx < vpl; psNdx++) {\r\n if (valids[psNdx] && (strict || valids[psNdx].generatedInput !== true)) {\r\n if (psNdx <= closestTo) before = psNdx;\r\n if (psNdx >= closestTo) after = psNdx;\r\n }\r\n }\r\n return before === -1 || before === closestTo\r\n ? after\r\n : after === -1\r\n ? before\r\n : closestTo - before < after - closestTo\r\n ? before\r\n : after;\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction isMask(pos, strict, fuzzy) {\r\n const inputmask = this,\r\n maskset = this.maskset;\r\n\r\n let test = getTestTemplate.call(inputmask, pos).match;\r\n if (test.def === \"\") test = getTest.call(inputmask, pos).match;\r\n\r\n if (test.static !== true) {\r\n return test.fn;\r\n }\r\n if (\r\n fuzzy === true &&\r\n maskset.validPositions[pos] !== undefined &&\r\n maskset.validPositions[pos].generatedInput !== true\r\n ) {\r\n return true;\r\n }\r\n\r\n if (strict !== true && pos > -1) {\r\n if (fuzzy) {\r\n // check on the number of tests\r\n const tests = getTests.call(inputmask, pos);\r\n return (\r\n tests.length > 1 + (tests[tests.length - 1].match.def === \"\" ? 1 : 0)\r\n );\r\n }\r\n // else based on the template\r\n const testTemplate = determineTestTemplate.call(\r\n inputmask,\r\n pos,\r\n getTests.call(inputmask, pos)\r\n ),\r\n testPlaceHolder = getPlaceholder.call(inputmask, pos, testTemplate.match);\r\n return testTemplate.match.def !== testPlaceHolder;\r\n }\r\n return false;\r\n}\r\n\r\n// tobe put on prototype?\r\n// soft ~ undefined reset validpositions; soft = false also reset tests; soft = true only reset the maskset\r\nfunction resetMaskSet(soft) {\r\n const maskset = this.maskset;\r\n\r\n maskset.buffer = undefined;\r\n if (soft !== true) {\r\n maskset.validPositions = [];\r\n maskset.p = 0;\r\n }\r\n if (soft === false) {\r\n maskset.tests = {};\r\n maskset.jitOffset = {};\r\n }\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction seekNext(pos, newBlock, fuzzy) {\r\n const inputmask = this;\r\n\r\n if (fuzzy === undefined) fuzzy = true;\r\n let position = pos + 1;\r\n while (\r\n getTest.call(inputmask, position).match.def !== \"\" &&\r\n ((newBlock === true &&\r\n (getTest.call(inputmask, position).match.newBlockMarker !== true ||\r\n !isMask.call(inputmask, position, undefined, true))) ||\r\n (newBlock !== true &&\r\n !isMask.call(inputmask, position, undefined, fuzzy)))\r\n ) {\r\n position++;\r\n }\r\n return position;\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction seekPrevious(pos, newBlock) {\r\n const inputmask = this;\r\n\r\n let position = pos - 1;\r\n if (pos <= 0) return 0;\r\n\r\n while (\r\n position > 0 &&\r\n ((newBlock === true &&\r\n (getTest.call(inputmask, position).match.newBlockMarker !== true ||\r\n !isMask.call(inputmask, position, undefined, true))) ||\r\n (newBlock !== true && !isMask.call(inputmask, position, undefined, true)))\r\n ) {\r\n position--;\r\n }\r\n return position;\r\n}\r\n\r\n// tobe put on prototype?\r\nfunction translatePosition(pos) {\r\n const inputmask = this,\r\n opts = this.opts,\r\n el = this.el;\r\n\r\n if (\r\n inputmask.isRTL &&\r\n typeof pos === \"number\" &&\r\n (!opts.greedy || opts.placeholder !== \"\") &&\r\n el\r\n ) {\r\n pos = inputmask._valueGet().length - pos;\r\n if (pos < 0) pos = 0;\r\n }\r\n return pos;\r\n}\r\n","import { iphone, mobile } from \"./environment\";\r\nimport window from \"./global/window\";\r\nimport {\r\n applyInputValue,\r\n checkVal,\r\n clearOptionalTail,\r\n HandleNativePlaceholder,\r\n writeBuffer\r\n} from \"./inputHandling\";\r\nimport { keys } from \"./keycode.js\";\r\nimport {\r\n caret,\r\n determineNewCaretPosition,\r\n getBuffer,\r\n getBufferTemplate,\r\n getLastValidPosition,\r\n isMask,\r\n resetMaskSet,\r\n seekNext,\r\n seekPrevious,\r\n translatePosition\r\n} from \"./positioning\";\r\nimport { handleRemove, isComplete, isSelection, isValid } from \"./validation\";\r\nimport { getPlaceholder, getTest } from \"./validation-tests\";\r\n\r\nexport { EventHandlers };\r\n\r\nconst EventHandlers = {\r\n keyEvent: function (e, checkval, writeOut, strict, ndx) {\r\n const inputmask = this.inputmask,\r\n opts = inputmask.opts,\r\n $ = inputmask.dependencyLib,\r\n maskset = inputmask.maskset,\r\n input = this,\r\n $input = $(input),\r\n c = e.key,\r\n pos = caret.call(inputmask, input),\r\n kdResult = opts.onKeyDown.call(\r\n this,\r\n e,\r\n getBuffer.call(inputmask),\r\n pos,\r\n opts\r\n );\r\n if (kdResult !== undefined) return kdResult;\r\n\r\n // backspace, delete, and escape get special treatment\r\n if (\r\n c === keys.Backspace ||\r\n c === keys.Delete ||\r\n (iphone && c === keys.BACKSPACE_SAFARI) ||\r\n (e.ctrlKey && c === keys.x && !(\"oncut\" in input))\r\n ) {\r\n // backspace/delete\r\n e.preventDefault(); // stop default action but allow propagation\r\n handleRemove.call(inputmask, input, c, pos);\r\n writeBuffer(\r\n input,\r\n getBuffer.call(inputmask, true),\r\n maskset.p,\r\n e,\r\n input.inputmask._valueGet() !== getBuffer.call(inputmask).join(\"\")\r\n );\r\n } else if (c === keys.End || c === keys.PageDown) {\r\n // when END or PAGE_DOWN pressed set position at lastmatch\r\n e.preventDefault();\r\n const caretPos = seekNext.call(\r\n inputmask,\r\n getLastValidPosition.call(inputmask)\r\n );\r\n caret.call(\r\n inputmask,\r\n input,\r\n e.shiftKey ? pos.begin : caretPos,\r\n caretPos,\r\n true\r\n );\r\n } else if ((c === keys.Home && !e.shiftKey) || c === keys.PageUp) {\r\n // Home or page_up\r\n e.preventDefault();\r\n caret.call(inputmask, input, 0, e.shiftKey ? pos.begin : 0, true);\r\n } else if (\r\n ((opts.undoOnEscape && c === keys.Escape) ||\r\n (false && c === keys.z && e.ctrlKey)) &&\r\n e.altKey !== true\r\n ) {\r\n // escape && undo && #762\r\n checkVal(input, true, false, inputmask.undoValue.split(\"\"));\r\n $input.trigger(\"click\");\r\n } else if (\r\n c === keys.Insert &&\r\n !(e.shiftKey || e.ctrlKey) &&\r\n inputmask.userOptions.insertMode === undefined\r\n ) {\r\n // insert\r\n if (!isSelection.call(inputmask, pos)) {\r\n opts.insertMode = !opts.insertMode;\r\n caret.call(inputmask, input, pos.begin, pos.begin);\r\n } else opts.insertMode = !opts.insertMode;\r\n } else if (opts.tabThrough === true && c === keys.Tab) {\r\n if (e.shiftKey === true) {\r\n pos.end = seekPrevious.call(inputmask, pos.end, true);\r\n if (getTest.call(inputmask, pos.end - 1).match.static === true) {\r\n pos.end--;\r\n }\r\n pos.begin = seekPrevious.call(inputmask, pos.end, true);\r\n if (pos.begin >= 0 && pos.end > 0) {\r\n e.preventDefault();\r\n caret.call(inputmask, input, pos.begin, pos.end);\r\n }\r\n } else {\r\n pos.begin = seekNext.call(inputmask, pos.begin, true);\r\n pos.end = seekNext.call(inputmask, pos.begin, true);\r\n if (pos.end < maskset.maskLength) pos.end--;\r\n if (pos.begin <= maskset.maskLength) {\r\n e.preventDefault();\r\n caret.call(inputmask, input, pos.begin, pos.end);\r\n }\r\n }\r\n } else if (!e.shiftKey) {\r\n if (opts.insertModeVisual && opts.insertMode === false) {\r\n if (c === keys.ArrowRight) {\r\n setTimeout(function () {\r\n const caretPos = caret.call(inputmask, input);\r\n caret.call(inputmask, input, caretPos.begin);\r\n }, 0);\r\n } else if (c === keys.ArrowLeft) {\r\n setTimeout(function () {\r\n const caretPos = {\r\n begin: translatePosition.call(\r\n inputmask,\r\n input.inputmask.caretPos.begin\r\n ),\r\n end: translatePosition.call(\r\n inputmask,\r\n input.inputmask.caretPos.end\r\n )\r\n };\r\n if (inputmask.isRTL) {\r\n caret.call(\r\n inputmask,\r\n input,\r\n caretPos.begin + (caretPos.begin === maskset.maskLength ? 0 : 1)\r\n );\r\n } else {\r\n caret.call(\r\n inputmask,\r\n input,\r\n caretPos.begin - (caretPos.begin === 0 ? 0 : 1)\r\n );\r\n }\r\n }, 0);\r\n }\r\n } else {\r\n inputmask.keyEventHook === undefined || inputmask.keyEventHook(e);\r\n }\r\n }\r\n\r\n inputmask.isComposing = c === keys.Process || c === keys.Unidentified;\r\n\r\n inputmask.ignorable = c === undefined || c.length > 1;\r\n return EventHandlers.keypressEvent.call(\r\n inputmask,\r\n e,\r\n checkval,\r\n writeOut,\r\n strict,\r\n ndx\r\n );\r\n },\r\n keypressEvent: function (e, checkval, writeOut, strict, ndx) {\r\n const inputmask = this.inputmask || this,\r\n opts = inputmask.opts,\r\n $ = inputmask.dependencyLib,\r\n maskset = inputmask.maskset,\r\n input = inputmask.el,\r\n $input = $(input);\r\n\r\n let c = e.key;\r\n\r\n if (\r\n checkval !== true &&\r\n !(e.ctrlKey && e.altKey && !inputmask.ignorable) &&\r\n (e.ctrlKey || e.metaKey || inputmask.ignorable)\r\n ) {\r\n if (c === keys.Enter) {\r\n if (inputmask.undoValue !== inputmask._valueGet(true)) {\r\n inputmask.undoValue = inputmask._valueGet(true);\r\n setTimeout(function () {\r\n $input.trigger(\"change\");\r\n }, 0);\r\n }\r\n }\r\n } else if (c) {\r\n // special treat the decimal separator\r\n // if ((k === 44 || k === 46) && e.location === 3 && opts.radixPoint !== \"\") k = opts.radixPoint.charCodeAt(0);\r\n let pos = checkval\r\n ? {\r\n begin: ndx,\r\n end: ndx\r\n }\r\n : caret.call(inputmask, input),\r\n forwardPosition;\r\n\r\n // allow for character substitution\r\n if (!checkval) c = opts.substitutes[c] || c;\r\n maskset.writeOutBuffer = true;\r\n const valResult = isValid.call(\r\n inputmask,\r\n pos,\r\n c,\r\n strict,\r\n undefined,\r\n undefined,\r\n undefined,\r\n checkval\r\n );\r\n if (valResult !== false) {\r\n resetMaskSet.call(inputmask, true);\r\n forwardPosition =\r\n valResult.caret !== undefined\r\n ? valResult.caret\r\n : seekNext.call(\r\n inputmask,\r\n valResult.pos.begin ? valResult.pos.begin : valResult.pos\r\n );\r\n maskset.p = forwardPosition; // needed for checkval\r\n }\r\n\r\n forwardPosition =\r\n opts.numericInput && valResult.caret === undefined\r\n ? seekPrevious.call(inputmask, forwardPosition)\r\n : forwardPosition;\r\n if (writeOut !== false) {\r\n setTimeout(function () {\r\n opts.onKeyValidation.call(input, c, valResult);\r\n }, 0);\r\n if (maskset.writeOutBuffer && valResult !== false) {\r\n const buffer = getBuffer.call(inputmask);\r\n writeBuffer(input, buffer, forwardPosition, e, checkval !== true);\r\n }\r\n }\r\n\r\n e.preventDefault();\r\n\r\n if (checkval) {\r\n if (valResult !== false) valResult.forwardPosition = forwardPosition;\r\n return valResult;\r\n }\r\n }\r\n },\r\n pasteEvent: async function (e) {\r\n function handlePaste(\r\n inputmask,\r\n input,\r\n inputValue,\r\n pastedValue,\r\n onBeforePaste\r\n ) {\r\n let caretPos = caret.call(inputmask, input, undefined, undefined, true),\r\n valueBeforeCaret = inputValue.substr(0, caretPos.begin),\r\n valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length);\r\n\r\n if (\r\n valueBeforeCaret ==\r\n (inputmask.isRTL\r\n ? getBufferTemplate.call(inputmask).slice().reverse()\r\n : getBufferTemplate.call(inputmask)\r\n )\r\n .slice(0, caretPos.begin)\r\n .join(\"\")\r\n )\r\n valueBeforeCaret = \"\";\r\n if (\r\n valueAfterCaret ==\r\n (inputmask.isRTL\r\n ? getBufferTemplate.call(inputmask).slice().reverse()\r\n : getBufferTemplate.call(inputmask)\r\n )\r\n .slice(caretPos.end)\r\n .join(\"\")\r\n )\r\n valueAfterCaret = \"\";\r\n\r\n pastedValue = valueBeforeCaret + pastedValue + valueAfterCaret;\r\n if (inputmask.isRTL && opts.numericInput !== true) {\r\n pastedValue = pastedValue.split(\"\");\r\n for (const c of getBufferTemplate.call(inputmask)) {\r\n if (pastedValue[0] === c) pastedValue.shift();\r\n }\r\n pastedValue = pastedValue.reverse().join(\"\");\r\n }\r\n\r\n let pasteValue = pastedValue;\r\n if (typeof onBeforePaste === \"function\") {\r\n pasteValue = onBeforePaste.call(inputmask, pasteValue, opts);\r\n if (pasteValue === false) {\r\n return false;\r\n }\r\n if (!pasteValue) {\r\n pasteValue = inputValue;\r\n }\r\n }\r\n checkVal(input, true, false, pasteValue.toString().split(\"\"), e);\r\n }\r\n\r\n const input = this,\r\n inputmask = this.inputmask,\r\n opts = inputmask.opts;\r\n let inputValue = inputmask._valueGet(true),\r\n pastedValue;\r\n\r\n inputmask.skipInputEvent = true;\r\n if (e.clipboardData && e.clipboardData.getData) {\r\n pastedValue = e.clipboardData.getData(\"text/plain\");\r\n } else if (window.clipboardData && window.clipboardData.getData) {\r\n // IE\r\n pastedValue = window.clipboardData.getData(\"Text\");\r\n }\r\n handlePaste(inputmask, input, inputValue, pastedValue, opts.onBeforePaste);\r\n e.preventDefault();\r\n },\r\n inputFallBackEvent: function (e) {\r\n // fallback when keypress is not triggered\r\n const inputmask = this.inputmask,\r\n opts = inputmask.opts,\r\n $ = inputmask.dependencyLib;\r\n\r\n // console.log(e.inputType);\r\n\r\n function analyseChanges(inputValue, buffer, caretPos) {\r\n let frontPart = inputValue.substr(0, caretPos.begin).split(\"\"),\r\n backPart = inputValue.substr(caretPos.begin).split(\"\"),\r\n frontBufferPart = buffer.substr(0, caretPos.begin).split(\"\"),\r\n backBufferPart = buffer.substr(caretPos.begin).split(\"\"),\r\n fpl =\r\n frontPart.length >= frontBufferPart.length\r\n ? frontPart.length\r\n : frontBufferPart.length,\r\n bpl =\r\n backPart.length >= backBufferPart.length\r\n ? backPart.length\r\n : backBufferPart.length,\r\n bl,\r\n i,\r\n action = \"\",\r\n data = [],\r\n marker = \"~\",\r\n placeholder;\r\n\r\n // align buffers\r\n while (frontPart.length < fpl) frontPart.push(marker);\r\n while (frontBufferPart.length < fpl) frontBufferPart.push(marker);\r\n while (backPart.length < bpl) backPart.unshift(marker);\r\n while (backBufferPart.length < bpl) backBufferPart.unshift(marker);\r\n\r\n const newBuffer = frontPart.concat(backPart),\r\n oldBuffer = frontBufferPart.concat(backBufferPart);\r\n\r\n // console.log(\"N \" + newBuffer);\r\n // console.log(\"O \" + oldBuffer);\r\n\r\n for (i = 0, bl = newBuffer.length; i < bl; i++) {\r\n placeholder = getPlaceholder.call(\r\n inputmask,\r\n translatePosition.call(inputmask, i)\r\n );\r\n switch (action) {\r\n case \"insertText\":\r\n if (\r\n oldBuffer[i - 1] === newBuffer[i] &&\r\n caretPos.begin == newBuffer.length - 1\r\n ) {\r\n data.push(newBuffer[i]);\r\n }\r\n i = bl;\r\n break;\r\n case \"insertReplacementText\":\r\n if (newBuffer[i] === marker) {\r\n // extend selection\r\n caretPos.end++;\r\n } else {\r\n // breakout loop\r\n i = bl;\r\n }\r\n break;\r\n case \"deleteContentBackward\":\r\n if (newBuffer[i] === marker) {\r\n caretPos.end++;\r\n } else {\r\n // breakout loop\r\n i = bl;\r\n }\r\n break;\r\n default:\r\n if (newBuffer[i] !== oldBuffer[i]) {\r\n if (\r\n (newBuffer[i + 1] === marker ||\r\n newBuffer[i + 1] === placeholder ||\r\n newBuffer[i + 1] === undefined) &&\r\n ((oldBuffer[i] === placeholder &&\r\n oldBuffer[i + 1] === marker) ||\r\n oldBuffer[i] === marker)\r\n ) {\r\n // basic insert\r\n action = \"insertText\";\r\n data.push(newBuffer[i]);\r\n caretPos.begin--;\r\n caretPos.end--;\r\n } else if (\r\n oldBuffer[i + 1] === marker &&\r\n oldBuffer[i] === newBuffer[i + 1]\r\n ) {\r\n // insert between\r\n action = \"insertText\";\r\n data.push(newBuffer[i]);\r\n caretPos.begin--;\r\n caretPos.end--;\r\n } else if (\r\n newBuffer[i] !== placeholder &&\r\n newBuffer[i] !== marker &&\r\n (newBuffer[i + 1] === marker ||\r\n (oldBuffer[i] !== newBuffer[i] &&\r\n oldBuffer[i + 1] ===\r\n newBuffer[i + 1])) /* single char replacement */\r\n ) {\r\n // replace selection\r\n action = \"insertReplacementText\";\r\n data.push(newBuffer[i]);\r\n caretPos.begin--;\r\n } else if (newBuffer[i] === marker) {\r\n // delete~backspace\r\n action = \"deleteContentBackward\";\r\n if (\r\n isMask.call(\r\n inputmask,\r\n translatePosition.call(inputmask, i),\r\n true\r\n ) ||\r\n oldBuffer[i] === opts.radixPoint\r\n )\r\n caretPos.end++;\r\n } else {\r\n i = bl;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n action,\r\n data,\r\n caret: caretPos\r\n };\r\n }\r\n\r\n let input = this,\r\n inputValue = input.inputmask._valueGet(true),\r\n buffer = (\r\n inputmask.isRTL\r\n ? getBuffer.call(inputmask).slice().reverse()\r\n : getBuffer.call(inputmask)\r\n ).join(\"\"),\r\n caretPos = caret.call(inputmask, input, undefined, undefined, true),\r\n changes;\r\n\r\n if (buffer !== inputValue) {\r\n changes = analyseChanges(inputValue, buffer, caretPos);\r\n if (input.getRootNode().activeElement !== input) {\r\n input.focus();\r\n }\r\n writeBuffer(input, getBuffer.call(inputmask));\r\n caret.call(inputmask, input, caretPos.begin, caretPos.end, true);\r\n\r\n // Japanese IME hack #2662\r\n if (\r\n !mobile &&\r\n inputmask.skipNextInsert &&\r\n e.inputType === \"insertText\" &&\r\n changes.action === \"insertText\" &&\r\n inputmask.isComposing\r\n ) {\r\n return false;\r\n }\r\n if (\r\n e.inputType === \"insertCompositionText\" &&\r\n changes.action === \"insertText\" &&\r\n inputmask.isComposing\r\n ) {\r\n inputmask.skipNextInsert = true;\r\n } else {\r\n inputmask.skipNextInsert = false;\r\n }\r\n\r\n switch (changes.action) {\r\n case \"insertText\":\r\n case \"insertReplacementText\":\r\n changes.data.forEach(function (entry, ndx) {\r\n const keypress = new $.Event(\"keypress\");\r\n keypress.key = entry;\r\n inputmask.ignorable = false; // make sure ignorable is ignored ;-)\r\n EventHandlers.keypressEvent.call(input, keypress);\r\n });\r\n setTimeout(function () {\r\n // #2195 trigger keyup to help some other plugins to track changes\r\n inputmask.$el.trigger(\"keyup\");\r\n }, 0);\r\n break;\r\n case \"deleteContentBackward\":\r\n var keydown = new $.Event(\"keydown\");\r\n keydown.key = keys.Backspace;\r\n EventHandlers.keyEvent.call(input, keydown);\r\n break;\r\n default:\r\n applyInputValue(input, inputValue);\r\n caret.call(inputmask, input, caretPos.begin, caretPos.end, true);\r\n break;\r\n }\r\n\r\n e.preventDefault();\r\n }\r\n },\r\n setValueEvent: function (e) {\r\n const inputmask = this.inputmask,\r\n $ = inputmask.dependencyLib;\r\n let input = this,\r\n value = e && e.detail ? e.detail[0] : arguments[1];\r\n\r\n if (value === undefined) {\r\n value = input.inputmask._valueGet(true);\r\n }\r\n\r\n applyInputValue(\r\n input,\r\n value,\r\n new $.Event(\"input\"),\r\n (e && e.detail ? e.detail[0] : arguments[1]) !== undefined\r\n );\r\n\r\n if ((e.detail && e.detail[1] !== undefined) || arguments[2] !== undefined) {\r\n caret.call(inputmask, input, e.detail ? e.detail[1] : arguments[2]);\r\n }\r\n },\r\n focusEvent: function (e) {\r\n const inputmask = this.inputmask,\r\n opts = inputmask.opts,\r\n input = this,\r\n nptValue = inputmask && inputmask._valueGet();\r\n\r\n if (opts.showMaskOnFocus) {\r\n if (nptValue !== getBuffer.call(inputmask).join(\"\")) {\r\n writeBuffer(\r\n input,\r\n getBuffer.call(inputmask),\r\n seekNext.call(inputmask, getLastValidPosition.call(inputmask))\r\n );\r\n } /* else if (mouseEnter === false) { //only executed on focus without mouseenter\r\n\t\t\t\t\tcaret(input, seekNext(getLastValidPosition()));\r\n\t\t\t\t} */\r\n }\r\n if (\r\n opts.positionCaretOnTab === true &&\r\n inputmask.mouseEnter === false &&\r\n (!isComplete.call(inputmask, getBuffer.call(inputmask)) ||\r\n getLastValidPosition.call(inputmask) === -1)\r\n ) {\r\n EventHandlers.clickEvent.apply(input, [e, true]);\r\n }\r\n inputmask.undoValue = inputmask && inputmask._valueGet(true);\r\n },\r\n invalidEvent: function (e) {\r\n this.inputmask.validationEvent = true;\r\n },\r\n mouseleaveEvent: function () {\r\n const inputmask = this.inputmask,\r\n opts = inputmask.opts,\r\n input = this;\r\n inputmask.mouseEnter = false;\r\n if (\r\n opts.clearMaskOnLostFocus &&\r\n input.getRootNode().activeElement !== input\r\n ) {\r\n HandleNativePlaceholder(input, inputmask.originalPlaceholder);\r\n }\r\n },\r\n clickEvent: function (e, tabbed) {\r\n const inputmask = this.inputmask;\r\n inputmask.clicked++;\r\n\r\n const input = this;\r\n if (input.getRootNode().activeElement === input) {\r\n const newCaretPosition = determineNewCaretPosition.call(\r\n inputmask,\r\n caret.call(inputmask, input),\r\n tabbed\r\n );\r\n if (newCaretPosition !== undefined) {\r\n caret.call(inputmask, input, newCaretPosition);\r\n }\r\n }\r\n },\r\n cutEvent: function (e) {\r\n const inputmask = this.inputmask,\r\n maskset = inputmask.maskset,\r\n input = this,\r\n pos = caret.call(inputmask, input),\r\n // correct clipboardData\r\n clipData = inputmask.isRTL\r\n ? getBuffer.call(inputmask).slice(pos.end, pos.begin)\r\n : getBuffer.call(inputmask).slice(pos.begin, pos.end),\r\n clipDataText = inputmask.isRTL\r\n ? clipData.reverse().join(\"\")\r\n : clipData.join(\"\");\r\n if (window.navigator && window.navigator.clipboard)\r\n window.navigator.clipboard.writeText(clipDataText);\r\n else if (window.clipboardData && window.clipboardData.getData) {\r\n // IE\r\n window.clipboardData.setData(\"Text\", clipDataText);\r\n }\r\n handleRemove.call(inputmask, input, keys.Delete, pos);\r\n writeBuffer(\r\n input,\r\n getBuffer.call(inputmask),\r\n maskset.p,\r\n e,\r\n inputmask.undoValue !== inputmask._valueGet(true)\r\n );\r\n },\r\n blurEvent: function (e) {\r\n const inputmask = this.inputmask,\r\n opts = inputmask.opts,\r\n $ = inputmask.dependencyLib;\r\n inputmask.clicked = 0;\r\n\r\n const $input = $(this),\r\n input = this;\r\n if (input.inputmask) {\r\n HandleNativePlaceholder(input, inputmask.originalPlaceholder);\r\n let nptValue = input.inputmask._valueGet(),\r\n buffer = getBuffer.call(inputmask).slice();\r\n\r\n if (nptValue !== \"\") {\r\n if (opts.clearMaskOnLostFocus) {\r\n if (\r\n getLastValidPosition.call(inputmask) === -1 &&\r\n nptValue === getBufferTemplate.call(inputmask).join(\"\")\r\n ) {\r\n buffer = [];\r\n } else {\r\n // clearout optional tail of the mask\r\n clearOptionalTail.call(inputmask, buffer);\r\n }\r\n }\r\n if (isComplete.call(inputmask, buffer) === false) {\r\n setTimeout(function () {\r\n $input.trigger(\"incomplete\");\r\n }, 0);\r\n if (opts.clearIncomplete) {\r\n resetMaskSet.call(inputmask, false);\r\n if (opts.clearMaskOnLostFocus) {\r\n buffer = [];\r\n } else {\r\n buffer = getBufferTemplate.call(inputmask).slice();\r\n }\r\n }\r\n }\r\n\r\n writeBuffer(input, buffer, undefined, e);\r\n }\r\n\r\n nptValue = inputmask._valueGet(true);\r\n if (inputmask.undoValue !== nptValue) {\r\n const bufferTemplateStr = (\r\n inputmask.isRTL\r\n ? getBufferTemplate.call(inputmask).slice().reverse()\r\n : getBufferTemplate.call(inputmask)\r\n ).join(\"\");\r\n\r\n if (\r\n nptValue !== \"\" ||\r\n inputmask.undoValue !== bufferTemplateStr ||\r\n (inputmask.undoValue === bufferTemplateStr &&\r\n inputmask.maskset.validPositions.length > 0)\r\n ) {\r\n inputmask.undoValue = nptValue;\r\n $input.trigger(\"change\");\r\n }\r\n }\r\n }\r\n },\r\n mouseenterEvent: function () {\r\n const inputmask = this.inputmask,\r\n { showMaskOnHover } = inputmask.opts,\r\n input = this;\r\n inputmask.mouseEnter = true;\r\n if (input.getRootNode().activeElement !== input) {\r\n const bufferTemplate = (\r\n inputmask.isRTL\r\n ? getBufferTemplate.call(inputmask).slice().reverse()\r\n : getBufferTemplate.call(inputmask)\r\n ).join(\"\");\r\n if (showMaskOnHover) {\r\n HandleNativePlaceholder(input, bufferTemplate);\r\n }\r\n }\r\n },\r\n submitEvent: function () {\r\n // trigger change on submit if any\r\n const inputmask = this.inputmask,\r\n opts = inputmask.opts;\r\n\r\n if (inputmask.undoValue !== inputmask._valueGet(true)) {\r\n inputmask.$el.trigger(\"change\");\r\n }\r\n if (\r\n /* opts.clearMaskOnLostFocus && */ getLastValidPosition.call(\r\n inputmask\r\n ) === -1 &&\r\n inputmask._valueGet &&\r\n inputmask._valueGet() === getBufferTemplate.call(inputmask).join(\"\")\r\n ) {\r\n inputmask._valueSet(\"\"); // clear masktemplete on submit and still has focus\r\n }\r\n if (\r\n opts.clearIncomplete &&\r\n isComplete.call(inputmask, getBuffer.call(inputmask)) === false\r\n ) {\r\n inputmask._valueSet(\"\");\r\n }\r\n if (opts.removeMaskOnSubmit) {\r\n inputmask._valueSet(inputmask.unmaskedvalue(), true);\r\n setTimeout(function () {\r\n writeBuffer(inputmask.el, getBuffer.call(inputmask));\r\n }, 0);\r\n }\r\n },\r\n resetEvent: function () {\r\n const inputmask = this.inputmask;\r\n\r\n inputmask.refreshValue = true; // indicate a forced refresh when there is a call to the value before leaving the triggering event fn\r\n setTimeout(function () {\r\n applyInputValue(inputmask.el, inputmask._valueGet(true));\r\n }, 0);\r\n }\r\n};\r\n","import { ie } from \"./environment\";\r\nimport { EventHandlers } from \"./eventhandlers\";\r\nimport Inputmask from \"./inputmask.js\";\r\nimport { keys } from \"./keycode.js\";\r\nimport {\r\n caret,\r\n determineNewCaretPosition,\r\n getBuffer,\r\n getBufferTemplate,\r\n getLastValidPosition,\r\n isMask,\r\n resetMaskSet,\r\n seekNext\r\n} from \"./positioning\";\r\nimport { isComplete, refreshFromBuffer } from \"./validation\";\r\nimport { getMaskTemplate, getPlaceholder, getTest } from \"./validation-tests\";\r\n\r\nexport {\r\n applyInputValue,\r\n clearOptionalTail,\r\n checkVal,\r\n HandleNativePlaceholder,\r\n unmaskedvalue,\r\n writeBuffer\r\n};\r\n\r\nfunction applyInputValue(input, value, initialEvent, strict) {\r\n const inputmask = input ? input.inputmask : this,\r\n opts = inputmask.opts;\r\n\r\n input.inputmask.refreshValue = false;\r\n if (strict !== true && typeof opts.onBeforeMask === \"function\")\r\n value = opts.onBeforeMask.call(inputmask, value, opts) || value;\r\n value = (value || \"\").toString().split(\"\");\r\n checkVal(input, true, false, value, initialEvent);\r\n inputmask.undoValue = inputmask._valueGet(true);\r\n if (\r\n (opts.clearMaskOnLostFocus || opts.clearIncomplete) &&\r\n input.inputmask._valueGet() ===\r\n getBufferTemplate.call(inputmask).join(\"\") &&\r\n getLastValidPosition.call(inputmask) === -1\r\n ) {\r\n input.inputmask._valueSet(\"\");\r\n }\r\n}\r\n\r\n// todo put on prototype?\r\nfunction clearOptionalTail(buffer) {\r\n const inputmask = this;\r\n\r\n buffer.length = 0;\r\n let template = getMaskTemplate.call(\r\n inputmask,\r\n true,\r\n 0,\r\n true,\r\n undefined,\r\n true\r\n ),\r\n lmnt;\r\n while ((lmnt = template.shift()) !== undefined) buffer.push(lmnt);\r\n return buffer;\r\n}\r\n\r\nfunction checkVal(input, writeOut, strict, nptvl, initiatingEvent) {\r\n const inputmask = input ? input.inputmask : this,\r\n maskset = inputmask.maskset,\r\n opts = inputmask.opts,\r\n $ = inputmask.dependencyLib;\r\n\r\n let inputValue = nptvl.slice(),\r\n charCodes = \"\",\r\n initialNdx = -1,\r\n result,\r\n skipOptionalPartCharacter = opts.skipOptionalPartCharacter;\r\n opts.skipOptionalPartCharacter = \"\"; // see issue #2311\r\n\r\n function isTemplateMatch(ndx, charCodes) {\r\n let targetTemplate = getMaskTemplate\r\n .call(inputmask, true, 0)\r\n .slice(ndx, seekNext.call(inputmask, ndx, false, false))\r\n .join(\"\")\r\n .replace(/'/g, \"\"),\r\n charCodeNdx = targetTemplate.indexOf(charCodes);\r\n // strip spaces from targetTemplate\r\n while (charCodeNdx > 0 && targetTemplate[charCodeNdx - 1] === \" \")\r\n charCodeNdx--;\r\n\r\n const match =\r\n charCodeNdx === 0 &&\r\n !isMask.call(inputmask, ndx) &&\r\n (getTest.call(inputmask, ndx).match.nativeDef === charCodes.charAt(0) ||\r\n (getTest.call(inputmask, ndx).match.static === true &&\r\n getTest.call(inputmask, ndx).match.nativeDef ===\r\n \"'\" + charCodes.charAt(0)) ||\r\n (getTest.call(inputmask, ndx).match.nativeDef === \" \" &&\r\n (getTest.call(inputmask, ndx + 1).match.nativeDef ===\r\n charCodes.charAt(0) ||\r\n (getTest.call(inputmask, ndx + 1).match.static === true &&\r\n getTest.call(inputmask, ndx + 1).match.nativeDef ===\r\n \"'\" + charCodes.charAt(0)))));\r\n\r\n if (\r\n !match &&\r\n charCodeNdx > 0 &&\r\n !isMask.call(inputmask, ndx, false, true)\r\n ) {\r\n const nextPos = seekNext.call(inputmask, ndx);\r\n if (inputmask.caretPos.begin < nextPos) {\r\n inputmask.caretPos = { begin: nextPos };\r\n }\r\n }\r\n return match;\r\n }\r\n\r\n resetMaskSet.call(inputmask, false);\r\n inputmask.clicked = 0; // reset click counter to correctly determine the caretposition in checkval\r\n initialNdx = opts.radixPoint\r\n ? determineNewCaretPosition.call(\r\n inputmask,\r\n {\r\n begin: 0,\r\n end: 0\r\n },\r\n false,\r\n opts.__financeInput === false ? \"radixFocus\" : undefined\r\n ).begin\r\n : 0;\r\n maskset.p = initialNdx;\r\n inputmask.caretPos = { begin: initialNdx };\r\n\r\n let staticMatches = [],\r\n prevCaretPos = inputmask.caretPos;\r\n inputValue.forEach(function (charCode, ndx) {\r\n if (charCode !== undefined) {\r\n // inputfallback strips some elements out of the inputarray. $.each logically presents them as undefined\r\n /* if (maskset.validPositions[ndx] === undefined && inputValue[ndx] === getPlaceholder.call(inputmask, ndx) && isMask.call(inputmask, ndx, true) &&\r\n\t\t\t\tisValid.call(inputmask, ndx, inputValue[ndx], true, undefined, true, true) === false) {\r\n\t\t\t\tinputmask.caretPos.begin++;\r\n\t\t\t} else */\r\n // console.log(\"caret \" + inputmask.caretPos.begin);\r\n const keypress = new $.Event(\"_checkval\");\r\n keypress.key = charCode;\r\n charCodes += charCode;\r\n const lvp = getLastValidPosition.call(inputmask, undefined, true);\r\n if (!isTemplateMatch(initialNdx, charCodes)) {\r\n result = EventHandlers.keypressEvent.call(\r\n inputmask,\r\n keypress,\r\n true,\r\n false,\r\n strict,\r\n inputmask.caretPos.begin\r\n );\r\n\r\n if (result) {\r\n initialNdx = inputmask.caretPos.begin + 1;\r\n charCodes = \"\";\r\n }\r\n } else {\r\n result =\r\n getTest.call(inputmask, ndx).match.static === true\r\n ? EventHandlers.keypressEvent.call(\r\n inputmask,\r\n keypress,\r\n true,\r\n false,\r\n strict,\r\n lvp + 1\r\n )\r\n : false;\r\n }\r\n if (result) {\r\n if (\r\n result.pos !== undefined &&\r\n maskset.validPositions[result.pos] &&\r\n maskset.validPositions[result.pos].match.static === true &&\r\n maskset.validPositions[result.pos].alternation === undefined\r\n ) {\r\n staticMatches.push(result.pos);\r\n if (!inputmask.isRTL) {\r\n result.forwardPosition = result.pos + 1;\r\n }\r\n }\r\n writeBuffer.call(\r\n inputmask,\r\n undefined,\r\n getBuffer.call(inputmask),\r\n result.forwardPosition,\r\n keypress,\r\n false\r\n );\r\n inputmask.caretPos = {\r\n begin: result.forwardPosition,\r\n end: result.forwardPosition\r\n };\r\n prevCaretPos = inputmask.caretPos;\r\n } else {\r\n if (\r\n maskset.validPositions[ndx] === undefined &&\r\n inputValue[ndx] === getPlaceholder.call(inputmask, ndx) &&\r\n isMask.call(inputmask, ndx, true)\r\n ) {\r\n inputmask.caretPos.begin++;\r\n } else inputmask.caretPos = prevCaretPos; // restore the caret position from before the failed validation\r\n }\r\n }\r\n });\r\n if (staticMatches.length > 0) {\r\n let sndx,\r\n validPos,\r\n nextValid = seekNext.call(inputmask, -1, undefined, false);\r\n if (\r\n (!isComplete.call(inputmask, getBuffer.call(inputmask)) &&\r\n staticMatches.length <= nextValid) ||\r\n (isComplete.call(inputmask, getBuffer.call(inputmask)) &&\r\n staticMatches.length > 0 &&\r\n staticMatches.length !== nextValid &&\r\n staticMatches[0] === 0)\r\n ) {\r\n // should check if is sequence starting from 0\r\n let nextSndx = nextValid;\r\n while ((sndx = staticMatches.shift()) !== undefined) {\r\n if (sndx < nextSndx) {\r\n const keypress = new $.Event(\"_checkval\");\r\n validPos = maskset.validPositions[sndx];\r\n validPos.generatedInput = true;\r\n keypress.key = validPos.input;\r\n result = EventHandlers.keypressEvent.call(\r\n inputmask,\r\n keypress,\r\n true,\r\n false,\r\n strict,\r\n nextSndx\r\n );\r\n if (\r\n result &&\r\n result.pos !== undefined &&\r\n result.pos !== sndx &&\r\n maskset.validPositions[result.pos] &&\r\n maskset.validPositions[result.pos].match.static === true\r\n ) {\r\n staticMatches.push(result.pos);\r\n } else if (!result) break;\r\n nextSndx++;\r\n }\r\n }\r\n } else {\r\n // delete all free statics\r\n while ((sndx = staticMatches.pop())) {\r\n validPos = maskset.validPositions[sndx];\r\n if (validPos && maskset.validPositions[sndx + 1] === undefined) {\r\n delete maskset.validPositions[sndx];\r\n }\r\n }\r\n }\r\n }\r\n if (writeOut) {\r\n writeBuffer.call(\r\n inputmask,\r\n input,\r\n getBuffer.call(inputmask),\r\n result ? result.forwardPosition : inputmask.caretPos.begin,\r\n initiatingEvent || new $.Event(\"checkval\"),\r\n initiatingEvent &&\r\n ((initiatingEvent.type === \"input\" &&\r\n inputmask.undoValue !== getBuffer.call(inputmask).join(\"\")) ||\r\n initiatingEvent.type === \"paste\")\r\n );\r\n // for (var vndx in maskset.validPositions) {\r\n // \tif (maskset.validPositions[vndx].match.generated !== true) { //only remove non forced generated\r\n // \t\tdelete maskset.validPositions[vndx].generatedInput; //clear generated markings ~ consider initializing with a value as fully typed\r\n // \t}\r\n // }\r\n }\r\n opts.skipOptionalPartCharacter = skipOptionalPartCharacter;\r\n}\r\n\r\nfunction HandleNativePlaceholder(npt, value) {\r\n const inputmask = npt ? npt.inputmask : this;\r\n\r\n if (ie) {\r\n if (\r\n npt.inputmask._valueGet() !== value &&\r\n (npt.placeholder !== value || npt.placeholder === \"\")\r\n ) {\r\n let buffer = getBuffer.call(inputmask).slice(),\r\n nptValue = npt.inputmask._valueGet();\r\n if (nptValue !== value) {\r\n const lvp = getLastValidPosition.call(inputmask);\r\n if (\r\n lvp === -1 &&\r\n nptValue === getBufferTemplate.call(inputmask).join(\"\")\r\n ) {\r\n buffer = [];\r\n } else if (lvp !== -1) {\r\n // clearout optional tail of the mask\r\n clearOptionalTail.call(inputmask, buffer);\r\n }\r\n writeBuffer(npt, buffer);\r\n }\r\n }\r\n } else if (npt.placeholder !== value) {\r\n npt.placeholder = value;\r\n if (npt.placeholder === \"\") npt.removeAttribute(\"placeholder\");\r\n }\r\n}\r\n\r\nfunction unmaskedvalue(input) {\r\n const inputmask = input ? input.inputmask : this,\r\n opts = inputmask.opts,\r\n maskset = inputmask.maskset;\r\n\r\n if (input) {\r\n if (input.inputmask === undefined) {\r\n return input.value;\r\n }\r\n if (input.inputmask && input.inputmask.refreshValue) {\r\n // forced refresh from the value form.reset\r\n applyInputValue(input, input.inputmask._valueGet(true));\r\n }\r\n }\r\n const umValue = [],\r\n vps = maskset.validPositions;\r\n for (let pndx = 0, vpl = vps.length; pndx < vpl; pndx++) {\r\n if (\r\n vps[pndx] &&\r\n vps[pndx].match &&\r\n (vps[pndx].match.static != true ||\r\n (opts.keepStatic !== true &&\r\n Array.isArray(maskset.metadata) &&\r\n vps[pndx].generatedInput !== true))\r\n ) {\r\n // only include non generated input with multiple masks (check on metadata) and without keepStatic true\r\n umValue.push(vps[pndx].input);\r\n }\r\n }\r\n let unmaskedValue =\r\n umValue.length === 0\r\n ? \"\"\r\n : (inputmask.isRTL ? umValue.reverse() : umValue).join(\"\");\r\n if (typeof opts.onUnMask === \"function\") {\r\n const bufferValue = (\r\n inputmask.isRTL\r\n ? getBuffer.call(inputmask).slice().reverse()\r\n : getBuffer.call(inputmask)\r\n ).join(\"\");\r\n unmaskedValue = opts.onUnMask.call(\r\n inputmask,\r\n bufferValue,\r\n unmaskedValue,\r\n opts\r\n );\r\n }\r\n\r\n if (opts.outputMask && unmaskedValue.length > 0) {\r\n return Inputmask.format(unmaskedValue, {\r\n ...opts,\r\n mask: opts.outputMask,\r\n alias: null\r\n });\r\n }\r\n\r\n return unmaskedValue;\r\n}\r\n\r\nfunction writeBuffer(input, buffer, caretPos, event, triggerEvents) {\r\n const inputmask = input ? input.inputmask : this,\r\n opts = inputmask.opts,\r\n $ = inputmask.dependencyLib;\r\n\r\n if (event && typeof opts.onBeforeWrite === \"function\") {\r\n // buffer = buffer.slice(); //prevent uncontrolled manipulation of the internal buffer\r\n const result = opts.onBeforeWrite.call(\r\n inputmask,\r\n event,\r\n buffer,\r\n caretPos,\r\n opts\r\n );\r\n if (result) {\r\n if (result.refreshFromBuffer) {\r\n const refresh = result.refreshFromBuffer;\r\n refreshFromBuffer.call(\r\n inputmask,\r\n refresh === true ? refresh : refresh.start,\r\n refresh.end,\r\n result.buffer || buffer\r\n );\r\n buffer = getBuffer.call(inputmask, true);\r\n }\r\n if (caretPos !== undefined)\r\n caretPos = result.caret !== undefined ? result.caret : caretPos;\r\n }\r\n }\r\n if (input !== undefined) {\r\n input.inputmask._valueSet(buffer.join(\"\"));\r\n if (\r\n caretPos !== undefined &&\r\n (event === undefined || event.type !== \"blur\")\r\n ) {\r\n // console.log(caretPos);\r\n caret.call(\r\n inputmask,\r\n input,\r\n caretPos,\r\n undefined,\r\n undefined,\r\n event !== undefined &&\r\n event.type === \"keydown\" &&\r\n (event.key === keys.Delete || event.key === keys.Backspace)\r\n );\r\n }\r\n input.inputmask.writeBufferHook === undefined ||\r\n input.inputmask.writeBufferHook(caretPos);\r\n if (triggerEvents === true) {\r\n const $input = $(input),\r\n nptVal = input.inputmask._valueGet();\r\n input.inputmask.skipInputEvent = true;\r\n $input.trigger(\"input\");\r\n setTimeout(function () {\r\n // timeout needed for IE\r\n if (nptVal === getBufferTemplate.call(inputmask).join(\"\")) {\r\n $input.trigger(\"cleared\");\r\n } else if (isComplete.call(inputmask, buffer) === true) {\r\n $input.trigger(\"complete\");\r\n }\r\n }, 0);\r\n }\r\n }\r\n}\r\n","import { HandleNativePlaceholder } from \"./inputHandling\";\r\nimport Inputmask from \"./inputmask\";\r\nimport { keys } from \"./keycode.js\";\r\nimport { getBufferTemplate } from \"./positioning\";\r\n\r\nexport { EventRuler };\r\n\r\nconst EventRuler = {\r\n on: function (input, eventName, eventHandler) {\r\n const $ = input.inputmask.dependencyLib;\r\n\r\n let ev = function (e) {\r\n if (e.originalEvent) {\r\n e = e.originalEvent || e; // get original event from jquery event\r\n arguments[0] = e;\r\n }\r\n // console.log(e.type);\r\n const that = this,\r\n inputmask = that.inputmask,\r\n opts = inputmask ? inputmask.opts : undefined;\r\n let args;\r\n if (inputmask === undefined && this.nodeName !== \"FORM\") {\r\n // happens when cloning an object with jquery.clone\r\n const imOpts = $.data(that, \"_inputmask_opts\");\r\n $(that).off(); // unbind all events\r\n if (imOpts) {\r\n new Inputmask(imOpts).mask(that);\r\n }\r\n } else if (\r\n ![\"submit\", \"reset\", \"setvalue\"].includes(e.type) &&\r\n this.nodeName !== \"FORM\" &&\r\n (that.disabled ||\r\n (that.readOnly &&\r\n !(\r\n (e.type === \"keydown\" && e.ctrlKey && e.key === keys.c) ||\r\n (opts.tabThrough === false && e.key === keys.Tab)\r\n )))\r\n ) {\r\n e.preventDefault();\r\n } else {\r\n switch (e.type) {\r\n case \"input\":\r\n if (inputmask.skipInputEvent === true) {\r\n inputmask.skipInputEvent = false;\r\n return e.preventDefault();\r\n }\r\n\r\n // #2855\r\n // Prevent duplicate input processing between keyEvent and inputFallBackEvent\r\n // This fixes Chinese IME duplication issue on Safari where both events fire for the same input\r\n // if (\r\n // inputmask.lastInputEvent &&\r\n // Date.now() - inputmask.lastInputEvent.time < 10 &&\r\n // inputmask.lastInputEvent.data === e.data\r\n // ) {\r\n // return;\r\n // }\r\n // Mark input as processed to prevent duplicate handling by keyEvent\r\n // This fixes Chinese IME duplication issue on Safari #2855\r\n inputmask.lastInputEvent = {\r\n time: Date.now(),\r\n data: e.data\r\n };\r\n\r\n // if (mobile) { //this causes problem see #2220\r\n // \targs = arguments;\r\n // \tsetTimeout(function () { //needed for caret selection when entering a char on Android 8 - #1818\r\n // \t\teventHandler.apply(that, args);\r\n // \t\tcaret(that, that.inputmask.caretPos, undefined, true);\r\n // \t}, 0);\r\n // \treturn false;\r\n // }\r\n break;\r\n case \"keydown\":\r\n // Prevent duplicate input processing between keyEvent and inputFallBackEvent #2855\r\n // This fixes Chinese IME duplication issue on Safari where both events fire for the same input\r\n if (\r\n inputmask.lastInputEvent &&\r\n Date.now() - inputmask.lastInputEvent.time < 10 &&\r\n inputmask.lastInputEvent.data === e.key\r\n ) {\r\n return false;\r\n }\r\n break;\r\n case \"click\":\r\n case \"focus\":\r\n if (inputmask.validationEvent) {\r\n // #841\r\n inputmask.validationEvent = false;\r\n input.blur();\r\n HandleNativePlaceholder(\r\n input,\r\n (inputmask.isRTL\r\n ? getBufferTemplate.call(inputmask).slice().reverse()\r\n : getBufferTemplate.call(inputmask)\r\n ).join(\"\")\r\n );\r\n setTimeout(function () {\r\n input.focus();\r\n }, opts.validationEventTimeOut);\r\n return false;\r\n }\r\n args = arguments;\r\n setTimeout(function () {\r\n // needed for Chrome ~ initial selection clears after the clickevent\r\n if (!input.inputmask) {\r\n // `inputmask.remove()` was called before this callback\r\n return;\r\n }\r\n eventHandler.apply(that, args);\r\n }, 0);\r\n return /* false */; // #2423\r\n }\r\n const returnVal = eventHandler.apply(that, arguments);\r\n if (returnVal === false) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n return returnVal;\r\n }\r\n };\r\n // add inputmask namespace to event\r\n eventName = `${eventName}.inputmask`;\r\n if ([\"submit.inputmask\", \"reset.inputmask\"].includes(eventName)) {\r\n ev = ev.bind(input); // bind creates a new eventhandler (wrap)\r\n if (input.form !== null) $(input.form).on(eventName, ev);\r\n } else {\r\n $(input).on(eventName, ev);\r\n }\r\n },\r\n off: function (input, event) {\r\n if (input.inputmask) {\r\n const $ = input.inputmask.dependencyLib;\r\n $(input).off(event || \".inputmask\");\r\n }\r\n }\r\n};\r\n","import { iphone, mobile } from \"./environment\";\r\nimport { EventHandlers } from \"./eventhandlers\";\r\nimport { EventRuler } from \"./eventruler\";\r\nimport {\r\n applyInputValue,\r\n clearOptionalTail,\r\n writeBuffer\r\n} from \"./inputHandling\";\r\nimport {\r\n caret,\r\n getBuffer,\r\n getBufferTemplate,\r\n getLastValidPosition,\r\n resetMaskSet,\r\n seekNext\r\n} from \"./positioning\";\r\nimport { isComplete } from \"./validation\";\r\n\r\nexport { mask };\r\n\r\n// todo put on the prototype?\r\nfunction mask() {\r\n const inputmask = this,\r\n opts = this.opts,\r\n el = this.el,\r\n $ = this.dependencyLib;\r\n\r\n function isElementTypeSupported(input, opts) {\r\n function patchValueProperty(npt) {\r\n let valueGet, valueSet;\r\n\r\n function patchValhook(type) {\r\n if (\r\n $.valHooks &&\r\n ($.valHooks[type] === undefined ||\r\n $.valHooks[type].inputmaskpatch !== true)\r\n ) {\r\n const valhookGet =\r\n $.valHooks[type] && $.valHooks[type].get\r\n ? $.valHooks[type].get\r\n : function (elem) {\r\n return elem.value;\r\n },\r\n valhookSet =\r\n $.valHooks[type] && $.valHooks[type].set\r\n ? $.valHooks[type].set\r\n : function (elem, value) {\r\n elem.value = value;\r\n return elem;\r\n };\r\n\r\n $.valHooks[type] = {\r\n get: function (elem) {\r\n if (elem.inputmask) {\r\n if (elem.inputmask.opts.autoUnmask) {\r\n return elem.inputmask.unmaskedvalue();\r\n } else {\r\n const result = valhookGet(elem);\r\n return getLastValidPosition.call(\r\n inputmask,\r\n undefined,\r\n undefined,\r\n elem.inputmask.maskset.validPositions\r\n ) !== -1 || opts.nullable !== true\r\n ? result\r\n : \"\";\r\n }\r\n } else {\r\n return valhookGet(elem);\r\n }\r\n },\r\n set: function (elem, value) {\r\n const result = valhookSet(elem, value);\r\n if (elem.inputmask) {\r\n applyInputValue(elem, value);\r\n }\r\n return result;\r\n },\r\n inputmaskpatch: true\r\n };\r\n }\r\n }\r\n\r\n function getter() {\r\n if (this.inputmask) {\r\n return this.inputmask.opts.autoUnmask\r\n ? this.inputmask.unmaskedvalue()\r\n : getLastValidPosition.call(inputmask) !== -1 ||\r\n opts.nullable !== true\r\n ? this.getRootNode().activeElement === this &&\r\n opts.clearMaskOnLostFocus\r\n ? (inputmask.isRTL\r\n ? clearOptionalTail\r\n .call(inputmask, getBuffer.call(inputmask).slice())\r\n .reverse()\r\n : clearOptionalTail.call(\r\n inputmask,\r\n getBuffer.call(inputmask).slice()\r\n )\r\n ).join(\"\")\r\n : valueGet.call(this)\r\n : \"\";\r\n } else {\r\n return valueGet.call(this);\r\n }\r\n }\r\n\r\n function setter(value) {\r\n valueSet.call(this, value);\r\n if (this.inputmask) {\r\n applyInputValue(this, value);\r\n }\r\n }\r\n\r\n function installNativeValueSetFallback(npt) {\r\n EventRuler.on(npt, \"mouseenter\", function () {\r\n const input = this,\r\n value = input.inputmask._valueGet(true),\r\n bufferValue = (\r\n input.inputmask.isRTL\r\n ? getBuffer.call(input.inputmask).slice().reverse()\r\n : getBuffer.call(input.inputmask)\r\n ).join(\"\");\r\n if (value != bufferValue) {\r\n applyInputValue(input, value);\r\n }\r\n });\r\n }\r\n\r\n if (!npt.inputmask.__valueGet) {\r\n if (opts.noValuePatching !== true) {\r\n if (Object.getOwnPropertyDescriptor) {\r\n const valueProperty = Object.getPrototypeOf\r\n ? Object.getOwnPropertyDescriptor(\r\n Object.getPrototypeOf(npt),\r\n \"value\"\r\n )\r\n : undefined;\r\n if (valueProperty && valueProperty.get && valueProperty.set) {\r\n valueGet = valueProperty.get;\r\n valueSet = valueProperty.set;\r\n Object.defineProperty(npt, \"value\", {\r\n get: getter,\r\n set: setter,\r\n configurable: true\r\n });\r\n } else if (npt.tagName.toLowerCase() !== \"input\") {\r\n valueGet = function () {\r\n return this.textContent;\r\n };\r\n valueSet = function (value) {\r\n this.textContent = value;\r\n };\r\n Object.defineProperty(npt, \"value\", {\r\n get: getter,\r\n set: setter,\r\n configurable: true\r\n });\r\n }\r\n } else if (\r\n document.__lookupGetter__ &&\r\n npt.__lookupGetter__(\"value\")\r\n ) {\r\n valueGet = npt.__lookupGetter__(\"value\");\r\n valueSet = npt.__lookupSetter__(\"value\");\r\n\r\n npt.__defineGetter__(\"value\", getter);\r\n npt.__defineSetter__(\"value\", setter);\r\n }\r\n npt.inputmask.__valueGet = valueGet; // store native property getter\r\n npt.inputmask.__valueSet = valueSet; // store native property setter\r\n }\r\n npt.inputmask._valueGet = function (overruleRTL) {\r\n return inputmask.isRTL && overruleRTL !== true\r\n ? valueGet.call(this.el).split(\"\").reverse().join(\"\")\r\n : valueGet.call(this.el);\r\n };\r\n npt.inputmask._valueSet = function (value, overruleRTL) {\r\n // null check is needed for IE8 => otherwise converts to \"null\"\r\n valueSet.call(\r\n this.el,\r\n value === null || value === undefined\r\n ? \"\"\r\n : overruleRTL !== true && inputmask.isRTL\r\n ? value.split(\"\").reverse().join(\"\")\r\n : value\r\n );\r\n };\r\n\r\n if (valueGet === undefined) {\r\n // jquery.val fallback\r\n valueGet = function () {\r\n return this.value;\r\n };\r\n valueSet = function (value) {\r\n this.value = value;\r\n };\r\n patchValhook(npt.type);\r\n installNativeValueSetFallback(npt);\r\n }\r\n }\r\n }\r\n\r\n let elementType = input.getAttribute(\"type\"),\r\n isSupported =\r\n (input.tagName.toLowerCase() === \"input\" &&\r\n opts.supportsInputType.includes(elementType)) ||\r\n input.isContentEditable ||\r\n input.tagName.toLowerCase() === \"textarea\";\r\n if (!isSupported) {\r\n if (input.tagName.toLowerCase() === \"input\") {\r\n let el = document.createElement(\"input\");\r\n el.setAttribute(\"type\", elementType);\r\n isSupported = el.type === \"text\"; // apply mask only if the type is not natively supported\r\n el = null;\r\n } else {\r\n isSupported = \"partial\";\r\n }\r\n }\r\n if (isSupported !== false) {\r\n patchValueProperty(input);\r\n } else {\r\n input.inputmask = undefined;\r\n }\r\n return isSupported;\r\n }\r\n\r\n // unbind all events - to make sure that no other mask will interfere when re-masking\r\n EventRuler.off(el);\r\n const isSupported = isElementTypeSupported(el, opts);\r\n if (isSupported !== false) {\r\n inputmask.originalPlaceholder = el.placeholder;\r\n\r\n // read maxlength prop from el\r\n inputmask.maxLength = el !== undefined ? el.maxLength : undefined;\r\n if (inputmask.maxLength === -1) inputmask.maxLength = undefined;\r\n if (\"inputMode\" in el && el.getAttribute(\"inputmode\") === null) {\r\n el.inputMode = opts.inputmode;\r\n el.setAttribute(\"inputmode\", opts.inputmode);\r\n }\r\n\r\n if (isSupported === true) {\r\n opts.showMaskOnFocus =\r\n opts.showMaskOnFocus &&\r\n [\"cc-number\", \"cc-exp\"].indexOf(el.autocomplete) === -1;\r\n if (iphone) {\r\n // selecting the caret shows as a selection on iphone\r\n opts.insertModeVisual = false;\r\n // disable autocorrect\r\n el.setAttribute(\"autocorrect\", \"off\");\r\n }\r\n\r\n // bind events\r\n EventRuler.on(el, \"submit\", EventHandlers.submitEvent);\r\n EventRuler.on(el, \"reset\", EventHandlers.resetEvent);\r\n EventRuler.on(el, \"blur\", EventHandlers.blurEvent);\r\n EventRuler.on(el, \"focus\", EventHandlers.focusEvent);\r\n EventRuler.on(el, \"invalid\", EventHandlers.invalidEvent);\r\n EventRuler.on(el, \"click\", EventHandlers.clickEvent);\r\n EventRuler.on(el, \"mouseleave\", EventHandlers.mouseleaveEvent);\r\n EventRuler.on(el, \"mouseenter\", EventHandlers.mouseenterEvent);\r\n EventRuler.on(el, \"paste\", EventHandlers.pasteEvent);\r\n EventRuler.on(el, \"cut\", EventHandlers.cutEvent);\r\n EventRuler.on(el, \"complete\", opts.oncomplete);\r\n EventRuler.on(el, \"incomplete\", opts.onincomplete);\r\n EventRuler.on(el, \"cleared\", opts.oncleared);\r\n if (opts.inputEventOnly !== true) {\r\n EventRuler.on(el, \"keydown\", EventHandlers.keyEvent);\r\n }\r\n if (mobile || opts.inputEventOnly) {\r\n el.removeAttribute(\"maxLength\");\r\n }\r\n EventRuler.on(el, \"input\", EventHandlers.inputFallBackEvent);\r\n // EventRuler.on(el, \"beforeinput\", EventHandlers.beforeInputEvent); //https://github.com/w3c/input-events - to implement\r\n }\r\n EventRuler.on(el, \"setvalue\", EventHandlers.setValueEvent);\r\n\r\n // apply mask\r\n inputmask.applyMaskHook === undefined || inputmask.applyMaskHook();\r\n\r\n getBufferTemplate.call(inputmask).join(\"\"); // initialize the buffer and getmasklength\r\n inputmask.undoValue = inputmask._valueGet(true);\r\n const activeElement = el.getRootNode().activeElement;\r\n if (\r\n el.inputmask._valueGet(true) !== \"\" ||\r\n opts.clearMaskOnLostFocus === false ||\r\n activeElement === el\r\n ) {\r\n applyInputValue(el, el.inputmask._valueGet(true));\r\n let buffer = getBuffer.call(inputmask).slice();\r\n if (isComplete.call(inputmask, buffer) === false) {\r\n if (opts.clearIncomplete) {\r\n resetMaskSet.call(inputmask, false);\r\n }\r\n }\r\n if (opts.clearMaskOnLostFocus && activeElement !== el) {\r\n if (getLastValidPosition.call(inputmask) === -1) {\r\n buffer = [];\r\n } else {\r\n clearOptionalTail.call(inputmask, buffer);\r\n }\r\n }\r\n if (\r\n opts.clearMaskOnLostFocus === false ||\r\n (opts.showMaskOnFocus && activeElement === el) ||\r\n el.inputmask._valueGet(true) !== \"\"\r\n ) {\r\n writeBuffer(el, buffer);\r\n }\r\n if (activeElement === el) {\r\n // position the caret when in focus\r\n caret.call(\r\n inputmask,\r\n el,\r\n seekNext.call(inputmask, getLastValidPosition.call(inputmask))\r\n );\r\n } else {\r\n caret.call(inputmask, el, 0);\r\n }\r\n }\r\n }\r\n}\r\n","const escapeRegexRegex = new RegExp(\r\n \"(\\\\\" +\r\n [\r\n \"/\",\r\n \".\",\r\n \"*\",\r\n \"+\",\r\n \"?\",\r\n \"|\",\r\n \"(\",\r\n \")\",\r\n \"[\",\r\n \"]\",\r\n \"{\",\r\n \"}\",\r\n \"\\\\\",\r\n \"$\",\r\n \"^\"\r\n ].join(\"|\\\\\") +\r\n \")\",\r\n \"gim\"\r\n);\r\nexport function escapeRegex(str) {\r\n return str.replace(escapeRegexRegex, \"\\\\$1\");\r\n}","export default function (isGroup, isOptional, isQuantifier, isAlternator) {\r\n this.matches = [];\r\n this.openGroup = isGroup || false;\r\n this.alternatorGroup = false;\r\n this.isGroup = isGroup || false;\r\n this.isOptional = isOptional || false;\r\n this.isQuantifier = isQuantifier || false;\r\n this.isAlternator = isAlternator || false;\r\n this.quantifier = {\r\n min: 1,\r\n max: 1\r\n };\r\n}\r\n","import $ from \"./dependencyLibs/inputmask.dependencyLib\";\r\nimport { escapeRegex } from \"./escapeRegex\";\r\nimport Inputmask from \"./inputmask\";\r\nimport MaskToken from \"./masktoken\";\r\n\r\nexport { generateMaskSet, analyseMask };\r\n\r\nfunction generateMaskSet(opts, nocache) {\r\n let ms;\r\n\r\n function preProcessMask(\r\n mask,\r\n { repeat, groupmarker, quantifiermarker, keepStatic }\r\n ) {\r\n if (repeat > 0 || repeat === \"*\" || repeat === \"+\") {\r\n const repeatStart = repeat === \"*\" ? 0 : repeat === \"+\" ? 1 : repeat;\r\n if (repeatStart !== repeat) {\r\n mask =\r\n groupmarker[0] +\r\n mask +\r\n groupmarker[1] +\r\n quantifiermarker[0] +\r\n repeatStart +\r\n \",\" +\r\n repeat +\r\n quantifiermarker[1];\r\n } else {\r\n // repeat the mask n times\r\n const msk = mask;\r\n for (let i = 1; i < repeatStart; i++) {\r\n mask += msk;\r\n }\r\n }\r\n }\r\n if (keepStatic === true) {\r\n const optionalRegex = \"(.)\\\\[([^\\\\]]*)\\\\]\", // \"(?<p1>.)\\\\[(?<p2>[^\\\\]]*)\\\\]\", remove named capture group @2428\r\n maskMatches = mask.match(new RegExp(optionalRegex, \"g\"));\r\n maskMatches &&\r\n maskMatches.forEach((m, i) => {\r\n let [p1, p2] = m.split(\"[\");\r\n p2 = p2.replace(\"]\", \"\");\r\n mask = mask.replace(\r\n new RegExp(`${escapeRegex(p1)}\\\\[${escapeRegex(p2)}\\\\]`),\r\n p1.charAt(0) === p2.charAt(0)\r\n ? `(${p1}|${p1}${p2})`\r\n : `${p1}[${p2}]`\r\n );\r\n // console.log(mask);\r\n });\r\n }\r\n\r\n return mask;\r\n }\r\n\r\n function generateMask(mask, metadata, opts) {\r\n let regexMask = false;\r\n if (mask === null || mask === \"\") {\r\n regexMask = opts.regex !== null;\r\n if (regexMask) {\r\n mask = opts.regex;\r\n mask = mask.replace(/^(\\^)(.*)(\\$)$/, \"$2\");\r\n } else {\r\n regexMask = true;\r\n mask = \".*\";\r\n }\r\n }\r\n if (mask.length === 1 && opts.greedy === false && opts.repeat !== 0) {\r\n opts.placeholder = \"\";\r\n } // hide placeholder with single non-greedy mask\r\n mask = preProcessMask(mask, opts);\r\n\r\n // console.log(mask);\r\n let masksetDefinition, maskdefKey;\r\n maskdefKey = regexMask\r\n ? \"regex_\" + opts.regex\r\n : opts.numericInput\r\n ? mask.split(\"\").reverse().join(\"\")\r\n : mask;\r\n if (opts.keepStatic !== null) {\r\n // keepstatic modifies the output from the testdefinitions ~ so differentiate in the maskcache\r\n maskdefKey = \"ks_\" + opts.keepStatic + maskdefKey;\r\n }\r\n if (typeof opts.placeholder === \"object\") {\r\n // placeholder object modifies the output from the testdefinitions ~ so differentiate in the maskcache\r\n maskdefKey = \"ph_\" + JSON.stringify(opts.placeholder) + maskdefKey;\r\n }\r\n\r\n if (\r\n Inputmask.prototype.masksCache[maskdefKey] === undefined ||\r\n nocache === true\r\n ) {\r\n masksetDefinition = {\r\n mask,\r\n maskToken: Inputmask.prototype.analyseMask(mask, regexMask, opts),\r\n validPositions: [],\r\n _buffer: undefined,\r\n buffer: undefined,\r\n tests: {},\r\n excludes: {}, // excluded alternations\r\n metadata,\r\n maskLength: undefined,\r\n jitOffset: {}\r\n };\r\n if (nocache !== true) {\r\n Inputmask.prototype.masksCache[maskdefKey] = masksetDefinition;\r\n masksetDefinition = $.extend(\r\n true,\r\n {},\r\n Inputmask.prototype.masksCache[maskdefKey]\r\n );\r\n }\r\n } else {\r\n masksetDefinition = $.extend(\r\n true,\r\n {},\r\n Inputmask.prototype.masksCache[maskdefKey]\r\n );\r\n }\r\n\r\n return masksetDefinition;\r\n }\r\n\r\n if (typeof opts.mask === \"function\") {\r\n // allow mask to be a preprocessing fn - should return a valid mask\r\n opts.mask = opts.mask(opts);\r\n }\r\n if (Array.isArray(opts.mask)) {\r\n if (opts.mask.length > 1) {\r\n if (opts.keepStatic === null) {\r\n // enable by default when passing multiple masks when the option is not explicitly specified\r\n opts.keepStatic = true;\r\n }\r\n let altMask = opts.groupmarker[0];\r\n (opts.isRTL ? opts.mask.reverse() : opts.mask).forEach(function (msk) {\r\n if (altMask.length > 1) {\r\n altMask += opts.alternatormarker;\r\n }\r\n if (msk.mask !== undefined && typeof msk.mask !== \"function\") {\r\n altMask += msk.mask;\r\n } else {\r\n altMask += msk;\r\n }\r\n });\r\n altMask += opts.groupmarker[1];\r\n // console.log(altMask);\r\n return generateMask(altMask, opts.mask, opts);\r\n } else {\r\n opts.mask = opts.mask.pop();\r\n }\r\n }\r\n if (\r\n opts.mask &&\r\n opts.mask.mask !== undefined &&\r\n typeof opts.mask.mask !== \"function\"\r\n ) {\r\n ms = generateMask(opts.mask.mask, opts.mask, opts);\r\n } else {\r\n ms = generateMask(opts.mask, opts.mask, opts);\r\n }\r\n if (opts.keepStatic === null) {\r\n opts.keepStatic = false;\r\n }\r\n return ms;\r\n}\r\n\r\nfunction analyseMask(mask, regexMask, opts) {\r\n const tokenizer =\r\n /(?:[?*+]|\\{[0-9+*]+(?:,[0-9+*]*)?(?:\\|[0-9+*]*)?\\})|[^.?*+^${[]()|\\\\]+|./g,\r\n // Thx to https://github.com/slevithan/regex-colorizer for the regexTokenizer regex\r\n regexTokenizer =\r\n /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\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,\r\n currentToken = new MaskToken(),\r\n openenings = [],\r\n maskTokens = [];\r\n let escaped = false,\r\n match,\r\n m,\r\n openingToken,\r\n currentOpeningToken,\r\n alternator,\r\n lastMatch,\r\n closeRegexGroup = false;\r\n\r\n // test definition => {fn: RegExp/function, static: true/false optionality: bool, newBlockMarker: bool, casing: null/upper/lower, def: definitionSymbol, placeholder: placeholder, mask: real maskDefinition}\r\n function insertTestDefinition(mtoken, element, position) {\r\n position = position !== undefined ? position : mtoken.matches.length;\r\n // console.log(element, position, currentToken.matches.length);\r\n // if (typeof opts.placeholder === \"string\")\r\n // \tconsole.log(opts.placeholder.charAt(currentToken.matches.length % opts.placeholder.length));\r\n let prevMatch = mtoken.matches[position - 1],\r\n flag = opts.casing ? \"i\" : \"\";\r\n if (regexMask) {\r\n if (\r\n element.indexOf(\"[\") === 0 ||\r\n (escaped && /\\\\d|\\\\s|\\\\w|\\\\p/i.test(element)) ||\r\n element === \".\"\r\n ) {\r\n if (/\\\\p\\{.*}/i.test(element)) flag += \"u\";\r\n mtoken.matches.splice(position++, 0, {\r\n fn: new RegExp(element, flag),\r\n static: false,\r\n optionality: false,\r\n newBlockMarker:\r\n prevMatch === undefined ? \"master\" : prevMatch.def !== element,\r\n casing: null,\r\n def: element,\r\n placeholder:\r\n typeof opts.placeholder === \"object\"\r\n ? opts.placeholder[currentToken.matches.length]\r\n : undefined,\r\n nativeDef: element\r\n });\r\n } else {\r\n if (escaped) element = element[element.length - 1];\r\n element.split(\"\").forEach(function (lmnt, ndx) {\r\n prevMatch = mtoken.matches[position - 1];\r\n mtoken.matches.splice(position++, 0, {\r\n fn: /[a-z]/i.test(opts.staticDefinitionSymbol || lmnt)\r\n ? new RegExp(\r\n \"[\" + (opts.staticDefinitionSymbol || lmnt) + \"]\",\r\n flag\r\n )\r\n : null,\r\n static: true,\r\n optionality: false,\r\n newBlockMarker:\r\n prevMatch === undefined\r\n ? \"master\"\r\n : prevMatch.def !== lmnt && prevMatch.static !== true,\r\n casing: null,\r\n def: opts.staticDefinitionSymbol || lmnt,\r\n placeholder:\r\n opts.staticDefinitionSymbol !== undefined\r\n ? lmnt\r\n : typeof opts.placeholder === \"object\"\r\n ? opts.placeholder[currentToken.matches.length]\r\n : undefined,\r\n nativeDef: (escaped ? \"'\" : \"\") + lmnt\r\n });\r\n });\r\n }\r\n escaped = false;\r\n } else {\r\n const maskdef =\r\n (opts.definitions && opts.definitions[element]) ||\r\n (opts.usePrototypeDefinitions &&\r\n Inputmask.prototype.definitions[element]);\r\n if (maskdef && !escaped) {\r\n if (\r\n typeof maskdef.validator === \"string\" &&\r\n /\\\\p\\{.*}/i.test(maskdef.validator)\r\n )\r\n flag += \"u\";\r\n mtoken.matches.splice(position++, 0, {\r\n fn: maskdef.validator\r\n ? typeof maskdef.validator === \"string\"\r\n ? new RegExp(maskdef.validator, flag)\r\n : new (function () {\r\n this.test = maskdef.validator;\r\n })()\r\n : /./,\r\n static: maskdef.static || false,\r\n optionality: maskdef.optional || false,\r\n defOptionality: maskdef.optional || false, // indicator for an optional from the definition\r\n newBlockMarker:\r\n prevMatch === undefined || maskdef.optional\r\n ? \"master\"\r\n : prevMatch.def !== (maskdef.definitionSymbol || element),\r\n casing: maskdef.casing,\r\n def: maskdef.definitionSymbol || element,\r\n placeholder: maskdef.placeholder,\r\n nativeDef: element,\r\n generated: maskdef.generated\r\n });\r\n } else {\r\n mtoken.matches.splice(position++, 0, {\r\n fn: /[a-z]/i.test(opts.staticDefinitionSymbol || element)\r\n ? new RegExp(\r\n \"[\" + (opts.staticDefinitionSymbol || element) + \"]\",\r\n flag\r\n )\r\n : null,\r\n static: true,\r\n optionality: false,\r\n newBlockMarker:\r\n prevMatch === undefined\r\n ? \"master\"\r\n : prevMatch.def !== element && prevMatch.static !== true,\r\n casing: null,\r\n def: opts.staticDefinitionSymbol || element,\r\n placeholder:\r\n opts.staticDefinitionSymbol !== undefined ? element : undefined,\r\n nativeDef: (escaped ? \"'\" : \"\") + element\r\n });\r\n escaped = false;\r\n }\r\n }\r\n }\r\n\r\n function verifyGroupMarker(maskToken) {\r\n if (maskToken && maskToken.matches) {\r\n maskToken.matches.forEach(function (token, ndx) {\r\n const nextToken = maskToken.matches[ndx + 1];\r\n if (\r\n (nextToken === undefined ||\r\n nextToken.matches === undefined ||\r\n nextToken.isQuantifier === false) &&\r\n token &&\r\n token.isGroup\r\n ) {\r\n // this is not a group but a normal mask => convert\r\n token.isGroup = false;\r\n if (!regexMask) {\r\n insertTestDefinition(token, opts.groupmarker[0], 0);\r\n if (token.openGroup !== true) {\r\n insertTestDefinition(token, opts.groupmarker[1]);\r\n }\r\n }\r\n }\r\n verifyGroupMarker(token);\r\n });\r\n }\r\n }\r\n\r\n function defaultCase() {\r\n if (openenings.length > 0) {\r\n currentOpeningToken = openenings[openenings.length - 1];\r\n insertTestDefinition(currentOpeningToken, m);\r\n if (currentOpeningToken.isAlternator) {\r\n // handle alternator a | b case\r\n alternator = openenings.pop();\r\n for (let mndx = 0; mndx < alternator.matches.length; mndx++) {\r\n if (alternator.matches[mndx].isGroup)\r\n alternator.matches[mndx].isGroup = false; // don't mark alternate groups as group\r\n }\r\n if (openenings.length > 0) {\r\n currentOpeningToken = openenings[openenings.length - 1];\r\n currentOpeningToken.matches.push(alternator);\r\n } else {\r\n currentToken.matches.push(alternator);\r\n }\r\n }\r\n } else {\r\n insertTestDefinition(currentToken, m);\r\n }\r\n }\r\n\r\n function reverseTokens(maskToken) {\r\n function reverseStatic(st) {\r\n if (st === opts.optionalmarker[0]) {\r\n st = opts.optionalmarker[1];\r\n } else if (st === opts.optionalmarker[1]) {\r\n st = opts.optionalmarker[0];\r\n } else if (st === opts.groupmarker[0]) {\r\n st = opts.groupmarker[1];\r\n } else if (st === opts.groupmarker[1]) st = opts.groupmarker[0];\r\n\r\n return st;\r\n }\r\n\r\n maskToken.matches = maskToken.matches.reverse();\r\n for (const match in maskToken.matches) {\r\n if (Object.prototype.hasOwnProperty.call(maskToken.matches, match)) {\r\n const intMatch = parseInt(match);\r\n if (\r\n maskToken.matches[match].isQuantifier &&\r\n maskToken.matches[intMatch + 1] &&\r\n maskToken.matches[intMatch + 1].isGroup\r\n ) {\r\n // reposition quantifier\r\n const qt = maskToken.matches[match];\r\n maskToken.matches.splice(match, 1);\r\n maskToken.matches.splice(intMatch + 1, 0, qt);\r\n }\r\n if (maskToken.matches[match].matches !== undefined) {\r\n maskToken.matches[match] = reverseTokens(maskToken.matches[match]);\r\n } else {\r\n maskToken.matches[match] = reverseStatic(maskToken.matches[match]);\r\n }\r\n }\r\n }\r\n\r\n return maskToken;\r\n }\r\n\r\n function groupify(matches) {\r\n const groupToken = new MaskToken(true);\r\n groupToken.openGroup = false;\r\n groupToken.matches = matches;\r\n return groupToken;\r\n }\r\n\r\n function closeGroup() {\r\n // Group closing\r\n openingToken = openenings.pop();\r\n openingToken.openGroup = false; // mark group as complete\r\n if (openingToken !== undefined) {\r\n if (openenings.length > 0) {\r\n currentOpeningToken = openenings[openenings.length - 1];\r\n currentOpeningToken.matches.push(openingToken);\r\n if (currentOpeningToken.isAlternator) {\r\n // handle alternator (a) | (b) case\r\n alternator = openenings.pop();\r\n for (let mndx = 0; mndx < alternator.matches.length; mndx++) {\r\n alternator.matches[mndx].isGroup = false; // don't mark alternate groups as group\r\n alternator.matches[mndx].alternatorGroup = false;\r\n }\r\n if (openenings.length > 0) {\r\n currentOpeningToken = openenings[openenings.length - 1];\r\n currentOpeningToken.matches.push(alternator);\r\n } else {\r\n currentToken.matches.push(alternator);\r\n }\r\n }\r\n } else {\r\n currentToken.matches.push(openingToken);\r\n }\r\n } else {\r\n defaultCase();\r\n }\r\n }\r\n\r\n function groupQuantifier(matches) {\r\n let lastMatch = matches.pop();\r\n if (lastMatch.isQuantifier) {\r\n lastMatch = groupify([matches.pop(), lastMatch]);\r\n }\r\n return lastMatch;\r\n }\r\n\r\n if (regexMask) {\r\n opts.optionalmarker[0] = undefined;\r\n opts.optionalmarker[1] = undefined;\r\n }\r\n // console.log(mask);\r\n while (\r\n (match = regexMask ? regexTokenizer.exec(mask) : tokenizer.exec(mask))\r\n ) {\r\n // console.log(match);\r\n m = match[0];\r\n\r\n if (regexMask) {\r\n switch (m.charAt(0)) {\r\n // Quantifier\r\n case \"?\":\r\n m = \"{0,1}\";\r\n break;\r\n case \"+\":\r\n case \"*\":\r\n m = \"{\" + m + \"}\";\r\n break;\r\n case \"|\":\r\n // regex mask alternator ex: [01][0-9]|2[0-3] => ([01][0-9]|2[0-3])\r\n if (openenings.length === 0) {\r\n // wrap the mask in a group to form a regex alternator ([01][0-9]|2[0-3])\r\n const altRegexGroup = groupify(currentToken.matches);\r\n altRegexGroup.openGroup = true;\r\n openenings.push(altRegexGroup);\r\n currentToken.matches = [];\r\n closeRegexGroup = true;\r\n }\r\n break;\r\n }\r\n switch (m) {\r\n case \"\\\\d\":\r\n m = \"[0-9]\";\r\n break;\r\n case \"\\\\p\": // Unicode Categories\r\n m += regexTokenizer.exec(mask)[0]; // {\r\n m += regexTokenizer.exec(mask)[0]; // ?}\r\n break;\r\n case \"(?:\": // non capturing group\r\n case \"(?=\": // lookahead\r\n case \"(?!\": // negative lookahead\r\n case \"(?<=\": // lookbehind\r\n case \"(?<!\": // negative lookbehind\r\n // treat as group\r\n break;\r\n }\r\n }\r\n\r\n if (escaped) {\r\n defaultCase();\r\n continue;\r\n }\r\n switch (m.charAt(0)) {\r\n case \"$\":\r\n case \"^\":\r\n // ignore beginswith and endswith as in masking this makes no point\r\n if (!regexMask) {\r\n defaultCase();\r\n }\r\n break;\r\n case opts.escapeChar:\r\n escaped = true;\r\n if (regexMask) defaultCase();\r\n break;\r\n // optional closing\r\n case opts.optionalmarker[1]:\r\n case opts.groupmarker[1]:\r\n closeGroup();\r\n break;\r\n case opts.optionalmarker[0]:\r\n // optional opening\r\n openenings.push(new MaskToken(false, true));\r\n break;\r\n case opts.groupmarker[0]:\r\n // Group opening\r\n openenings.push(new MaskToken(true));\r\n break;\r\n case opts.quantifiermarker[0]:\r\n {\r\n // Quantifier\r\n const quantifier = new MaskToken(false, false, true);\r\n\r\n m = m.replace(/[{}?]/g, \"\"); // ? matches lazy quantifiers\r\n const mqj = m.split(\"|\"),\r\n mq = mqj[0].split(\",\");\r\n let mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]);\r\n const mq1 =\r\n mq.length === 1 ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]),\r\n mqJit = isNaN(mqj[1]) ? mqj[1] : parseInt(mqj[1]);\r\n if (mq0 === \"*\" || mq0 === \"+\") {\r\n mq0 = mq1 === \"*\" ? 0 : 1;\r\n }\r\n quantifier.quantifier = {\r\n min: mq0,\r\n max: mq1,\r\n jit: mqJit\r\n };\r\n const matches =\r\n openenings.length > 0\r\n ? openenings[openenings.length - 1].matches\r\n : currentToken.matches;\r\n match = matches.pop();\r\n // if (match.isAlternator) { //handle quantifier in an alternation [0-9]{2}|[0-9]{3}\r\n // matches.push(match); //push back alternator\r\n // matches = match.matches; //remap target matches\r\n // var groupToken = new MaskToken(true);\r\n // var tmpMatch = matches.pop();\r\n // matches.push(groupToken); //push the group\r\n // matches = groupToken.matches;\r\n // match = tmpMatch;\r\n // }\r\n if (!match.isGroup) {\r\n match = groupify([match]);\r\n }\r\n matches.push(match);\r\n matches.push(quantifier);\r\n }\r\n break;\r\n case opts.alternatormarker:\r\n if (openenings.length > 0) {\r\n currentOpeningToken = openenings[openenings.length - 1];\r\n const subToken =\r\n currentOpeningToken.matches[currentOpeningToken.matches.length - 1];\r\n if (\r\n currentOpeningToken.openGroup && // regexp alt syntax\r\n (subToken.matches === undefined ||\r\n (subToken.isGroup === false && subToken.isAlternator === false))\r\n ) {\r\n // alternations within group\r\n lastMatch = openenings.pop();\r\n } else {\r\n lastMatch = groupQuantifier(currentOpeningToken.matches);\r\n }\r\n } else {\r\n lastMatch = groupQuantifier(currentToken.matches);\r\n }\r\n if (lastMatch.isAlternator) {\r\n openenings.push(lastMatch);\r\n } else {\r\n if (lastMatch.alternatorGroup) {\r\n alternator = openenings.pop();\r\n lastMatch.alternatorGroup = false;\r\n } else {\r\n alternator = new MaskToken(false, false, false, true);\r\n }\r\n alternator.matches.push(lastMatch);\r\n openenings.push(alternator);\r\n if (lastMatch.openGroup) {\r\n // regexp alt syntax\r\n lastMatch.openGroup = false;\r\n const alternatorGroup = new MaskToken(true);\r\n alternatorGroup.alternatorGroup = true;\r\n openenings.push(alternatorGroup);\r\n }\r\n }\r\n break;\r\n default:\r\n defaultCase();\r\n }\r\n }\r\n\r\n if (closeRegexGroup) closeGroup();\r\n\r\n while (openenings.length > 0) {\r\n openingToken = openenings.pop();\r\n currentToken.matches.push(openingToken);\r\n }\r\n if (currentToken.matches.length > 0) {\r\n verifyGroupMarker(currentToken);\r\n maskTokens.push(currentToken);\r\n }\r\n\r\n if (opts.numericInput || opts.isRTL) {\r\n reverseTokens(maskTokens[0]);\r\n }\r\n // console.log(JSON.stringify(maskTokens));\r\n return maskTokens;\r\n}\r\n","/*\r\n * Input Mask Core\r\n * http://github.com/RobinHerbots/jquery.inputmask\r\n * Copyright (c) Robin Herbots\r\n * Licensed under the MIT license\r\n */\r\n\r\nimport defaults from \"./defaults\";\r\nimport definitions from \"./definitions\";\r\nimport $ from \"./dependencyLibs/inputmask.dependencyLib\";\r\nimport { EventRuler } from \"./eventruler\";\r\nimport window from \"./global/window\";\r\nimport { checkVal, clearOptionalTail, unmaskedvalue } from \"./inputHandling\";\r\nimport { mask } from \"./mask\";\r\nimport { generateMaskSet, analyseMask } from \"./mask-lexer\";\r\nimport { getBuffer, getBufferTemplate } from \"./positioning\";\r\nimport { isComplete } from \"./validation\";\r\nimport { getMaskTemplate } from \"./validation-tests\";\r\n\r\nconst document = window.document,\r\n dataKey = \"_inputmask_opts\";\r\n\r\nfunction Inputmask(alias, options, internal) {\r\n // allow instanciating without new\r\n if (!(this instanceof Inputmask)) {\r\n return new Inputmask(alias, options, internal);\r\n }\r\n\r\n this.dependencyLib = $;\r\n this.el = undefined;\r\n this.events = {};\r\n this.maskset = undefined;\r\n\r\n if (internal !== true) {\r\n // init options\r\n if (Object.prototype.toString.call(alias) === \"[object Object]\") {\r\n options = alias;\r\n } else {\r\n options = options || {};\r\n if (alias) options.alias = alias;\r\n }\r\n this.opts = $.extend(true, {}, this.defaults, options);\r\n this.noMasksCache = options && options.definitions !== undefined;\r\n this.userOptions = options || {}; // user passed options\r\n resolveAlias(this.opts.alias, options, this.opts);\r\n }\r\n\r\n // maskscope properties\r\n this.refreshValue = false; // indicate a refresh from the inputvalue is needed (form.reset)\r\n this.undoValue = undefined;\r\n this.$el = undefined;\r\n this.skipInputEvent = false; // skip when triggered from within inputmask\r\n this.validationEvent = false;\r\n this.ignorable = false;\r\n // eslint-disable-next-line no-unused-expressions\r\n this.maxLength;\r\n this.mouseEnter = false;\r\n this.clicked = 0;\r\n this.originalPlaceholder = undefined; // needed for FF\r\n this.isComposing = false; // keydowncode == 229 compositionevent fallback\r\n this.lastInputEvent = null; // track last input event to prevent duplicates #2855\r\n this.hasAlternator = false;\r\n}\r\n\r\nInputmask.prototype = {\r\n dataAttribute: \"data-inputmask\", // data attribute prefix used for attribute binding\r\n // options default\r\n defaults,\r\n definitions,\r\n aliases: {}, // aliases definitions\r\n masksCache: {},\r\n i18n: {},\r\n get isRTL() {\r\n return this.opts.isRTL || this.opts.numericInput;\r\n },\r\n mask: function (elems) {\r\n const that = this;\r\n if (typeof elems === \"string\") {\r\n elems =\r\n document.getElementById(elems) || document.querySelectorAll(elems);\r\n }\r\n elems = elems.nodeName\r\n ? [elems]\r\n : Array.isArray(elems)\r\n ? elems\r\n : [].slice.call(elems); // [].slice as alternate for Array.from (Yandex browser)\r\n elems.forEach(function (el, ndx) {\r\n const scopedOpts = $.extend(true, {}, that.opts);\r\n if (\r\n importAttributeOptions(\r\n el,\r\n scopedOpts,\r\n $.extend(true, {}, that.userOptions),\r\n that.dataAttribute\r\n )\r\n ) {\r\n const maskset = generateMaskSet(scopedOpts, that.noMasksCache);\r\n if (maskset !== undefined) {\r\n if (el.inputmask !== undefined) {\r\n el.inputmask.opts.autoUnmask = true; // force autounmasking when remasking\r\n el.inputmask.remove();\r\n }\r\n // store inputmask instance on the input with element reference\r\n el.inputmask = new Inputmask(undefined, undefined, true);\r\n el.inputmask.opts = scopedOpts;\r\n el.inputmask.noMasksCache = that.noMasksCache;\r\n el.inputmask.userOptions = $.extend(true, {}, that.userOptions);\r\n // el.inputmask.isRTL = scopedOpts.isRTL || scopedOpts.numericInput;\r\n el.inputmask.el = el;\r\n el.inputmask.$el = $(el);\r\n el.inputmask.maskset = maskset;\r\n\r\n $.data(el, dataKey, that.userOptions);\r\n mask.call(el.inputmask);\r\n }\r\n }\r\n });\r\n return elems && elems[0] ? elems[0].inputmask || this : this;\r\n },\r\n option: function (options, noremask) {\r\n // set extra options || retrieve value of a current option\r\n if (typeof options === \"string\") {\r\n return this.opts[options];\r\n } else if (typeof options === \"object\") {\r\n $.extend(this.userOptions, options); // user passed options\r\n // remask\r\n if (this.el && noremask !== true) {\r\n this.mask(this.el);\r\n }\r\n return this;\r\n }\r\n },\r\n unmaskedvalue: function (value) {\r\n this.maskset =\r\n this.maskset || generateMaskSet(this.opts, this.noMasksCache);\r\n if (this.el === undefined || value !== undefined) {\r\n const valueBuffer = (\r\n typeof this.opts.onBeforeMask === \"function\"\r\n ? this.opts.onBeforeMask.call(this, value, this.opts) || value\r\n : value\r\n ).split(\"\");\r\n checkVal.call(this, undefined, false, false, valueBuffer);\r\n if (typeof this.opts.onBeforeWrite === \"function\")\r\n this.opts.onBeforeWrite.call(\r\n this,\r\n undefined,\r\n getBuffer.call(this),\r\n 0,\r\n this.opts\r\n );\r\n }\r\n return unmaskedvalue.call(this, this.el);\r\n },\r\n remove: function () {\r\n if (this.el) {\r\n $.data(this.el, dataKey, null); // invalidate\r\n // writeout the value\r\n const cv = this.opts.autoUnmask\r\n ? unmaskedvalue(this.el)\r\n : this._valueGet(this.opts.autoUnmask);\r\n if (cv !== getBufferTemplate.call(this).join(\"\"))\r\n this._valueSet(cv, this.opts.autoUnmask);\r\n else this._valueSet(\"\");\r\n // unbind all events\r\n EventRuler.off(this.el);\r\n\r\n // restore the value property\r\n let valueProperty;\r\n if (Object.getOwnPropertyDescriptor && Object.getPrototypeOf) {\r\n valueProperty = Object.getOwnPropertyDescriptor(\r\n Object.getPrototypeOf(this.el),\r\n \"value\"\r\n );\r\n if (valueProperty) {\r\n if (this.__valueGet) {\r\n Object.defineProperty(this.el, \"value\", {\r\n get: this.__valueGet,\r\n set: this.__valueSet,\r\n configurable: true\r\n });\r\n }\r\n }\r\n } else if (\r\n document.__lookupGetter__ &&\r\n this.el.__lookupGetter__(\"value\")\r\n ) {\r\n if (this.__valueGet) {\r\n this.el.__defineGetter__(\"value\", this.__valueGet);\r\n this.el.__defineSetter__(\"value\", this.__valueSet);\r\n }\r\n }\r\n // clear data\r\n this.el.inputmask = undefined;\r\n }\r\n return this.el;\r\n },\r\n getemptymask: function () {\r\n // return the default (empty) mask value, usefull for setting the default value in validation\r\n this.maskset =\r\n this.maskset || generateMaskSet(this.opts, this.noMasksCache);\r\n return (\r\n this.isRTL\r\n ? getBufferTemplate.call(this).reverse()\r\n : getBufferTemplate.call(this)\r\n ).join(\"\");\r\n },\r\n hasMaskedValue: function () {\r\n // check wheter the returned value is masked or not; currently only works reliable when using jquery.val fn to retrieve the value\r\n return !this.opts.autoUnmask;\r\n },\r\n isComplete: function () {\r\n this.maskset =\r\n this.maskset || generateMaskSet(this.opts, this.noMasksCache);\r\n return isComplete.call(this, getBuffer.call(this));\r\n },\r\n getmetadata: function () {\r\n // return mask metadata if exists\r\n this.maskset =\r\n this.maskset || generateMaskSet(this.opts, this.noMasksCache);\r\n if (Array.isArray(this.maskset.metadata)) {\r\n let maskTarget = getMaskTemplate.call(this, true, 0, false).join(\"\");\r\n this.maskset.metadata.forEach(function (mtdt) {\r\n if (mtdt.mask === maskTarget) {\r\n maskTarget = mtdt;\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n return maskTarget;\r\n }\r\n return this.maskset.metadata;\r\n },\r\n isValid: function (value) {\r\n this.maskset =\r\n this.maskset || generateMaskSet(this.opts, this.noMasksCache);\r\n if (value) {\r\n const valueBuffer = (\r\n typeof this.opts.onBeforeMask === \"function\"\r\n ? this.opts.onBeforeMask.call(this, value, this.opts) || value\r\n : value\r\n ).split(\"\");\r\n checkVal.call(this, undefined, true, false, valueBuffer);\r\n }\r\n\r\n const buffer = clearOptionalTail.call(this, []),\r\n isC = isComplete.call(this, buffer),\r\n isc2 =\r\n value === (this.isRTL ? buffer.reverse().join(\"\") : buffer.join(\"\"));\r\n\r\n return isC && (value === undefined || isc2);\r\n },\r\n format: function (value, metadata) {\r\n this.maskset =\r\n this.maskset || generateMaskSet(this.opts, this.noMasksCache);\r\n const valueBuffer = (\r\n typeof this.opts.onBeforeMask === \"function\"\r\n ? this.opts.onBeforeMask.call(this, value, this.opts) || value\r\n : value\r\n ).split(\"\");\r\n checkVal.call(this, undefined, true, false, valueBuffer);\r\n const formattedValue = this.isRTL\r\n ? getBuffer.call(this).slice().reverse().join(\"\")\r\n : getBuffer.call(this).join(\"\");\r\n return metadata\r\n ? {\r\n value: formattedValue,\r\n metadata: this.getmetadata()\r\n }\r\n : formattedValue;\r\n },\r\n setValue: function (value) {\r\n if (this.el) {\r\n $(this.el).trigger(\"setvalue\", [value]);\r\n }\r\n },\r\n analyseMask\r\n};\r\n\r\nfunction resolveAlias(aliasStr, options, opts) {\r\n const aliasDefinition = Inputmask.prototype.aliases[aliasStr];\r\n if (aliasDefinition) {\r\n if (aliasDefinition.alias)\r\n resolveAlias(aliasDefinition.alias, undefined, opts); // alias is another alias\r\n $.extend(true, opts, aliasDefinition); // merge alias definition in the options\r\n $.extend(true, opts, options); // reapply extra given options\r\n return true;\r\n } // alias not found - try as mask\r\n else if (opts.mask === null) {\r\n opts.mask = aliasStr;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction importAttributeOptions(npt, opts, userOptions, dataAttribute) {\r\n function importOption(option, optionData) {\r\n const attrOption =\r\n dataAttribute === \"\" ? option : dataAttribute + \"-\" + option;\r\n optionData =\r\n optionData !== undefined ? optionData : npt.getAttribute(attrOption);\r\n if (optionData !== null) {\r\n if (typeof optionData === \"string\") {\r\n if (option.startsWith(\"on\")) {\r\n // get function definition\r\n optionData = window[optionData];\r\n } else if (optionData === \"false\") optionData = false;\r\n else if (optionData === \"true\") optionData = true;\r\n else if (option === \"mask\")\r\n optionData = optionData.replace(/\\\\\\\\/g, \"\\\\\");\r\n }\r\n userOptions[option] = optionData;\r\n }\r\n }\r\n\r\n if (opts.importDataAttributes === true) {\r\n let attrOptions = npt.getAttribute(dataAttribute),\r\n option,\r\n dataoptions,\r\n optionData,\r\n p;\r\n\r\n if (attrOptions && attrOptions !== \"\") {\r\n attrOptions = attrOptions.replace(/'/g, '\"');\r\n dataoptions = JSON.parse(\"{\" + attrOptions + \"}\");\r\n }\r\n\r\n // resolve aliases\r\n if (dataoptions) {\r\n // pickup alias from dataAttribute\r\n optionData = undefined;\r\n for (p in dataoptions) {\r\n if (p.toLowerCase() === \"alias\") {\r\n optionData = dataoptions[p];\r\n break;\r\n }\r\n }\r\n }\r\n importOption(\"alias\", optionData); // pickup alias from dataAttribute-alias\r\n if (userOptions.alias) {\r\n resolveAlias(userOptions.alias, userOptions, opts);\r\n }\r\n\r\n for (option in opts) {\r\n if (dataoptions) {\r\n optionData = undefined;\r\n for (p in dataoptions) {\r\n if (p.toLowerCase() === option.toLowerCase()) {\r\n optionData = dataoptions[p];\r\n break;\r\n }\r\n }\r\n }\r\n importOption(option, optionData);\r\n }\r\n }\r\n $.extend(true, opts, userOptions);\r\n\r\n // handle dir=rtl\r\n if (npt.dir === \"rtl\" || opts.rightAlign) {\r\n npt.style.textAlign = \"right\";\r\n }\r\n\r\n if (npt.dir === \"rtl\" || opts.numericInput) {\r\n npt.dir = \"ltr\";\r\n npt.removeAttribute(\"dir\");\r\n opts.isRTL = true;\r\n }\r\n\r\n return Object.keys(userOptions).length;\r\n}\r\n\r\n// apply defaults, definitions, aliases\r\nInputmask.extendDefaults = function (options) {\r\n $.extend(true, Inputmask.prototype.defaults, options);\r\n};\r\nInputmask.extendDefinitions = function (definition) {\r\n $.extend(true, Inputmask.prototype.definitions, definition);\r\n};\r\nInputmask.extendAliases = function (alias) {\r\n $.extend(true, Inputmask.prototype.aliases, alias);\r\n};\r\n// static fn on inputmask\r\nInputmask.format = function (value, options, metadata) {\r\n return Inputmask(options).format(value, metadata);\r\n};\r\nInputmask.unmask = function (value, options) {\r\n return Inputmask(options).unmaskedvalue(value);\r\n};\r\nInputmask.isValid = function (value, options) {\r\n return Inputmask(options).isValid(value);\r\n};\r\nInputmask.remove = function (elems) {\r\n if (typeof elems === \"string\") {\r\n elems = document.getElementById(elems) || document.querySelectorAll(elems);\r\n }\r\n elems = elems.nodeName ? [elems] : elems;\r\n for (let i = 0; i < elems.length; i++) {\r\n if (elems[i].inputmask) elems[i].inputmask.remove();\r\n }\r\n};\r\nInputmask.setValue = function (elems, value) {\r\n if (typeof elems === \"string\") {\r\n elems = document.getElementById(elems) || document.querySelectorAll(elems);\r\n }\r\n elems = elems.nodeName ? [elems] : elems;\r\n elems.forEach(function (el) {\r\n if (el.inputmask) el.inputmask.setValue(value);\r\n else $(el).trigger(\"setvalue\", [value]);\r\n });\r\n};\r\n\r\nInputmask.dependencyLib = $;\r\n\r\n// make inputmask available\r\nwindow.Inputmask = Inputmask;\r\nexport default Inputmask;\r\n","/*\r\n Input Mask plugin extensions\r\n http://github.com/RobinHerbots/inputmask\r\n Copyright (c) Robin Herbots\r\n Licensed under the MIT license\r\n */\r\nimport Inputmask from \"../inputmask\";\r\nimport { getLastValidPosition } from \"../positioning\";\r\nimport { getMaskTemplate } from \"../validation-tests\";\r\n// extra definitions\r\nInputmask.extendDefinitions({\r\n A: {\r\n validator: \"[A-Za-z\\u0410-\\u044F\\u0401\\u0451\\u00C0-\\u00FF\\u00B5]\",\r\n casing: \"upper\" // auto uppercasing\r\n },\r\n \"&\": {\r\n // alfanumeric uppercasing\r\n validator: \"[0-9A-Za-z\\u0410-\\u044F\\u0401\\u0451\\u00C0-\\u00FF\\u00B5]\",\r\n casing: \"upper\"\r\n },\r\n \"#\": {\r\n // hexadecimal\r\n validator: \"[0-9A-Fa-f]\",\r\n casing: \"upper\"\r\n }\r\n});\r\n\r\nconst ipValidatorRegex = /25[0-5]|2[0-4][0-9]|[01][0-9][0-9]/;\r\n\r\nfunction ipValidator(chrs, maskset, pos, strict, opts) {\r\n if (pos - 1 > -1 && maskset.buffer[pos - 1] !== \".\") {\r\n chrs = maskset.buffer[pos - 1] + chrs;\r\n if (pos - 2 > -1 && maskset.buffer[pos - 2] !== \".\") {\r\n chrs = maskset.buffer[pos - 2] + chrs;\r\n } else chrs = \"0\" + chrs;\r\n } else chrs = \"00\" + chrs;\r\n if (\r\n opts.greedy &&\r\n parseInt(chrs) > 255 &&\r\n ipValidatorRegex.test(\"00\" + chrs.charAt(2))\r\n ) {\r\n const buffer = [...maskset.buffer.slice(0, pos), \".\", chrs.charAt(2)];\r\n if (buffer.join(\"\").match(/\\./g).length < 4) {\r\n return {\r\n refreshFromBuffer: true,\r\n buffer,\r\n caret: pos + 2\r\n };\r\n }\r\n }\r\n return ipValidatorRegex.test(chrs);\r\n}\r\n\r\nInputmask.extendAliases({\r\n cssunit: {\r\n regex: \"[+-]?[0-9]+\\\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)\"\r\n },\r\n url: {\r\n // needs update => https://en.wikipedia.org/wiki/URL\r\n regex: \"(https?|ftp)://.*\",\r\n autoUnmask: false,\r\n keepStatic: false,\r\n tabThrough: true\r\n },\r\n ip: {\r\n // ip-address mask\r\n mask: \"i{1,3}.j{1,3}.k{1,3}.l{1,3}\",\r\n definitions: {\r\n i: {\r\n validator: ipValidator\r\n },\r\n j: {\r\n validator: ipValidator\r\n },\r\n k: {\r\n validator: ipValidator\r\n },\r\n l: {\r\n validator: ipValidator\r\n }\r\n },\r\n onUnMask: function (maskedValue, unmaskedValue, opts) {\r\n return maskedValue;\r\n },\r\n inputmode: \"decimal\",\r\n substitutes: { \",\": \".\" }\r\n },\r\n email: {\r\n // https://en.wikipedia.org/wiki/Domain_name#Domain_name_space\r\n // https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names\r\n // should be extended with the toplevel domains at the end\r\n mask: function ({ separator, quantifier }) {\r\n let emailMask =\r\n \"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]\",\r\n mask = emailMask;\r\n if (separator) {\r\n for (let i = 0; i < quantifier; i++) {\r\n mask += `[${separator}${emailMask}]`;\r\n }\r\n }\r\n return mask;\r\n },\r\n greedy: false,\r\n casing: \"lower\",\r\n separator: null,\r\n quantifier: 5,\r\n skipOptionalPartCharacter: \"\",\r\n onBeforePaste: function (pastedValue, opts) {\r\n pastedValue = pastedValue.toLowerCase();\r\n return pastedValue.replace(\"mailto:\", \"\");\r\n },\r\n definitions: {\r\n \"*\": {\r\n validator:\r\n \"[0-9\\uFF11-\\uFF19A-Za-z\\u0410-\\u044F\\u0401\\u0451\\u00C0-\\u00FF\\u00B5!#$%&'*+/=?^_`{|}~-]\"\r\n },\r\n \"-\": {\r\n validator: \"[0-9A-Za-z-]\"\r\n }\r\n },\r\n onUnMask: function (maskedValue, unmaskedValue, opts) {\r\n return maskedValue;\r\n },\r\n inputmode: \"email\"\r\n },\r\n mac: {\r\n mask: \"##:##:##:##:##:##\"\r\n }, // https://en.wikipedia.org/wiki/Vehicle_identification_number\r\n // see issue #1199\r\n vin: {\r\n mask: \"V{13}9{4}\",\r\n definitions: {\r\n V: {\r\n validator: \"[A-HJ-NPR-Za-hj-npr-z\\\\d]\",\r\n casing: \"upper\"\r\n }\r\n },\r\n clearIncomplete: true,\r\n autoUnmask: true\r\n }, // http://rion.io/2013/09/10/validating-social-security-numbers-through-regular-expressions-2/\r\n // https://en.wikipedia.org/wiki/Social_Security_number\r\n ssn: {\r\n mask: \"999-99-9999\",\r\n postValidation: function (\r\n buffer,\r\n pos,\r\n c,\r\n currentResult,\r\n opts,\r\n maskset,\r\n strict\r\n ) {\r\n const bffr = getMaskTemplate.call(\r\n this,\r\n true,\r\n getLastValidPosition.call(this),\r\n true,\r\n true\r\n );\r\n return /^(?!219-09-9999|078-05-1120)(?!666|000|9.{2}).{3}-(?!00).{2}-(?!0{4}).{4}$/.test(\r\n bffr.join(\"\")\r\n );\r\n }\r\n }\r\n});\r\n","/*\r\n Input Mask plugin extensions\r\n http://github.com/RobinHerbots/inputmask\r\n Copyright (c) Robin Herbots\r\n Licensed under the MIT license\r\n */\r\nimport Inputmask from \"../inputmask\";\r\n\r\nconst $ = Inputmask.dependencyLib;\r\n\r\n$.extend(true, Inputmask.prototype.i18n, {\r\n dayNames: [\r\n \"Mon\",\r\n \"Tue\",\r\n \"Wed\",\r\n \"Thu\",\r\n \"Fri\",\r\n \"Sat\",\r\n \"Sun\",\r\n \"Monday\",\r\n \"Tuesday\",\r\n \"Wednesday\",\r\n \"Thursday\",\r\n \"Friday\",\r\n \"Saturday\",\r\n \"Sunday\"\r\n ],\r\n monthNames: [\r\n \"Jan\",\r\n \"Feb\",\r\n \"Mar\",\r\n \"Apr\",\r\n \"May\",\r\n \"Jun\",\r\n \"Jul\",\r\n \"Aug\",\r\n \"Sep\",\r\n \"Oct\",\r\n \"Nov\",\r\n \"Dec\",\r\n \"January\",\r\n \"February\",\r\n \"March\",\r\n \"April\",\r\n \"May\",\r\n \"June\",\r\n \"July\",\r\n \"August\",\r\n \"September\",\r\n \"October\",\r\n \"November\",\r\n \"December\"\r\n ],\r\n ordinalSuffix: [\"st\", \"nd\", \"rd\", \"th\"]\r\n});\r\n","/*\r\n Input Mask plugin extensions\r\n http://github.com/RobinHerbots/inputmask\r\n Copyright (c) Robin Herbots\r\n Licensed under the MIT license\r\n */\r\nimport { escapeRegex } from \"../escapeRegex\";\r\nimport Inputmask from \"../inputmask\";\r\nimport { keyCode, keys } from \"../keycode.js\";\r\nimport { seekNext } from \"../positioning\";\r\nimport { getMaskTemplate, getTest } from \"../validation-tests\";\r\nimport \"./inputmask.date.i18n\";\r\n\r\nconst $ = Inputmask.dependencyLib;\r\n\r\nclass DateObject {\r\n constructor(mask, format, opts, inputmask) {\r\n this.mask = mask;\r\n this.format = format;\r\n this.opts = opts;\r\n this.inputmask = inputmask;\r\n this._date = new Date(1, 0, 1);\r\n this.initDateObject(mask, this.opts, this.inputmask);\r\n }\r\n\r\n get date() {\r\n if (this._date === undefined) {\r\n this._date = new Date(1, 0, 1);\r\n this.initDateObject(undefined, this.opts, this.inputmask);\r\n }\r\n return this._date;\r\n }\r\n\r\n initDateObject(mask, opts, inputmask) {\r\n let match,\r\n lastNdx = -1;\r\n getTokenizer(opts).lastIndex = 0;\r\n while ((match = getTokenizer(opts).exec(this.format))) {\r\n if (match.index >= lastNdx) {\r\n let dynMatches = /\\d+$/.exec(match[0]),\r\n fcode = dynMatches ? match[0][0] + \"x\" : match[0],\r\n value;\r\n if (mask !== undefined) {\r\n // console.log(\"mask\", mask);\r\n if (dynMatches) {\r\n const lastIndex = getTokenizer(opts).lastIndex,\r\n tokenMatch = getTokenMatch.call(\r\n inputmask,\r\n match.index,\r\n opts,\r\n inputmask && inputmask.maskset\r\n );\r\n getTokenizer(opts).lastIndex = lastIndex;\r\n value = mask.slice(0, mask.indexOf(tokenMatch.nextMatch[0]));\r\n } else {\r\n let targetSymbol = match[0][0],\r\n ndx = match.index;\r\n while (\r\n inputmask &&\r\n (opts.placeholder[\r\n `${match.index}'${\r\n getTest.call(inputmask, ndx).match.placeholder\r\n }`\r\n ] || getTest.call(inputmask, ndx).match.placeholder) ===\r\n targetSymbol\r\n ) {\r\n ndx++;\r\n }\r\n lastNdx = ndx;\r\n const targetMatchLength = ndx - match.index;\r\n value = mask.slice(\r\n 0,\r\n targetMatchLength ||\r\n (formatcode(fcode) && formatcode(fcode)[4]) ||\r\n fcode.length\r\n );\r\n }\r\n mask = mask.slice(value.length);\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(formatCode, fcode)) {\r\n this.setValue(\r\n this,\r\n value,\r\n fcode,\r\n formatcode(fcode)[2],\r\n formatcode(fcode)[1]\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n setValue(dateObj, value, fcode, targetProp, dateOperation) {\r\n if (value !== undefined) {\r\n switch (targetProp) {\r\n case \"ampm\":\r\n dateObj[targetProp] = value;\r\n dateObj[\"raw\" + targetProp] = value.replace(/\\s/g, \"_\");\r\n break;\r\n case \"month\":\r\n if (fcode === \"MMM\" || fcode === \"MMMM\") {\r\n fcode === \"MMM\"\r\n ? (dateObj[targetProp] = pad(\r\n i18n.monthNames\r\n .slice(0, 12)\r\n .findIndex(\r\n (item) => value.toLowerCase() === item.toLowerCase()\r\n ) + 1,\r\n 2\r\n ))\r\n : (dateObj[targetProp] = pad(\r\n i18n.monthNames\r\n .slice(12, 24)\r\n .findIndex(\r\n (item) => value.toLowerCase() === item.toLowerCase()\r\n ) + 1,\r\n 2\r\n ));\r\n dateObj[targetProp] =\r\n dateObj[targetProp] === \"00\"\r\n ? \"\"\r\n : dateObj[targetProp].toString();\r\n dateObj[\"raw\" + targetProp] = dateObj[targetProp];\r\n break;\r\n }\r\n // eslint-disable-next-line no-fallthrough\r\n default:\r\n dateObj[targetProp] = value.replace(/[^0-9]/g, \"0\");\r\n dateObj[\"raw\" + targetProp] = value.replace(/\\s/g, \"_\");\r\n }\r\n }\r\n if (dateOperation !== undefined) {\r\n let datavalue = dateObj[targetProp];\r\n if (\r\n (targetProp === \"day\" && parseInt(datavalue) === 29) ||\r\n (targetProp === \"month\" && parseInt(datavalue) === 2)\r\n ) {\r\n if (\r\n parseInt(dateObj.day) === 29 &&\r\n parseInt(dateObj.month) === 2 &&\r\n (dateObj.year === \"\" || dateObj.year === undefined)\r\n ) {\r\n // set temporary leap year in dateObj\r\n dateObj._date.setFullYear(2012, 1, 29);\r\n }\r\n }\r\n if (targetProp === \"day\") {\r\n useDateObject = true;\r\n if (parseInt(datavalue) === 0) datavalue = 1;\r\n }\r\n if (targetProp === \"month\") useDateObject = true;\r\n if (targetProp === \"year\") {\r\n useDateObject = true;\r\n if (datavalue.length < formatcode(fcode)[4])\r\n datavalue = pad(datavalue, formatcode(fcode)[4], true);\r\n }\r\n if ((datavalue !== \"\" && !isNaN(datavalue)) || targetProp === \"ampm\")\r\n dateOperation.call(dateObj._date, datavalue);\r\n }\r\n }\r\n\r\n reset() {\r\n this._date = new Date(1, 0, 1);\r\n }\r\n\r\n reInit() {\r\n this._date = undefined;\r\n // eslint-disable-next-line no-unused-expressions\r\n this.date;\r\n }\r\n}\r\n\r\nlet useDateObject = false;\r\nconst currentYear = new Date().getFullYear(),\r\n i18n = Inputmask.prototype.i18n,\r\n // supported codes for formatting\r\n // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date-time-string-format\r\n // https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings?view=netframework-4.7\r\n // https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\r\n formatCode = {\r\n // regex, valueSetter, type, displayformatter, #entries (optional)\r\n d: [\r\n \"[1-9]|[12][0-9]|3[01]\",\r\n Date.prototype.setDate,\r\n \"day\",\r\n Date.prototype.getDate\r\n ], // Day of the month as digits; no leading zero for single-digit days.\r\n dd: [\r\n \"0[1-9]|[12][0-9]|3[01]\",\r\n Date.prototype.setDate,\r\n \"day\",\r\n function () {\r\n return pad(Date.prototype.getDate.call(this), 2);\r\n }\r\n ], // Day of the month as digits; leading zero for single-digit days.\r\n ddd: [\"\"], // Day of the week as a three-letter abbreviation.\r\n dddd: [\"\"], // Day of the week as its full name.\r\n M: [\r\n \"[1-9]|1[012]\",\r\n function (val) {\r\n let mval = val ? parseInt(val) : 0;\r\n if (mval > 0) mval--;\r\n return Date.prototype.setMonth.call(this, mval);\r\n },\r\n \"month\",\r\n function () {\r\n return Date.prototype.getMonth.call(this) + 1;\r\n }\r\n ], // Month as digits; no leading zero for single-digit months.\r\n MM: [\r\n \"0[1-9]|1[012]\",\r\n function (val) {\r\n let mval = val ? parseInt(val) : 0;\r\n if (mval > 0) mval--;\r\n return Date.prototype.setMonth.call(this, mval);\r\n },\r\n \"month\",\r\n function () {\r\n return pad(Date.prototype.getMonth.call(this) + 1, 2);\r\n }\r\n ], // Month as digits; leading zero for single-digit months.\r\n MMM: [\r\n i18n.monthNames.slice(0, 12).join(\"|\"),\r\n function (val) {\r\n const mval = i18n.monthNames\r\n .slice(0, 12)\r\n .findIndex((item) => val.toLowerCase() === item.toLowerCase());\r\n return mval !== -1 ? Date.prototype.setMonth.call(this, mval) : false;\r\n },\r\n \"month\",\r\n function () {\r\n return i18n.monthNames.slice(0, 12)[Date.prototype.getMonth.call(this)];\r\n }\r\n ], // Month as a three-letter abbreviation.\r\n MMMM: [\r\n i18n.monthNames.slice(12, 24).join(\"|\"),\r\n function (val) {\r\n const mval = i18n.monthNames\r\n .slice(12, 24)\r\n .findIndex((item) => val.toLowerCase() === item.toLowerCase());\r\n return mval !== -1 ? Date.prototype.setMonth.call(this, mval) : false;\r\n },\r\n \"month\",\r\n function () {\r\n return i18n.monthNames.slice(12, 24)[\r\n Date.prototype.getMonth.call(this)\r\n ];\r\n }\r\n ], // Month as its full name.\r\n yy: [\r\n \"[0-9]{2}\",\r\n function (val) {\r\n const centuryPart = new Date().getFullYear().toString().slice(0, 2);\r\n Date.prototype.setFullYear.call(this, `${centuryPart}${val}`);\r\n },\r\n \"year\",\r\n function () {\r\n return pad(Date.prototype.getFullYear.call(this), 2);\r\n },\r\n 2\r\n ], // Year as last two digits; leading zero for years less than 10.\r\n yyyy: [\r\n \"[0-9]{4}\",\r\n Date.prototype.setFullYear,\r\n \"year\",\r\n function () {\r\n return pad(Date.prototype.getFullYear.call(this), 4);\r\n },\r\n 4\r\n ],\r\n h: [\r\n \"[1-9]|1[0-2]\",\r\n Date.prototype.setHours,\r\n \"hours\",\r\n Date.prototype.getHours\r\n ], // Hours; no leading zero for single-digit hours (12-hour clock).\r\n hh: [\r\n \"0[1-9]|1[0-2]\",\r\n Date.prototype.setHours,\r\n \"hours\",\r\n function () {\r\n return pad(Date.prototype.getHours.call(this), 2);\r\n }\r\n ], // Hours; leading zero for single-digit hours (12-hour clock).\r\n hx: [\r\n function (x) {\r\n return `[0-9]{${x}}`;\r\n },\r\n Date.prototype.setHours,\r\n \"hours\",\r\n function (x) {\r\n return Date.prototype.getHours;\r\n }\r\n ], // Hours; no limit; set maximum digits\r\n H: [\r\n \"1?[0-9]|2[0-3]\",\r\n Date.prototype.setHours,\r\n \"hours\",\r\n Date.prototype.getHours\r\n ], // Hours; no leading zero for single-digit hours (24-hour clock).\r\n HH: [\r\n \"0[0-9]|1[0-9]|2[0-3]\",\r\n Date.prototype.setHours,\r\n \"hours\",\r\n function () {\r\n return pad(Date.prototype.getHours.call(this), 2);\r\n }\r\n ], // Hours; leading zero for single-digit hours (24-hour clock).\r\n Hx: [\r\n function (x) {\r\n return `[0-9]{${x}}`;\r\n },\r\n Date.prototype.setHours,\r\n \"hours\",\r\n function (x) {\r\n return function () {\r\n return pad(Date.prototype.getHours.call(this), x);\r\n };\r\n }\r\n ], // Hours; no limit; set maximum digits\r\n m: [\r\n \"[1-5]?[0-9]\",\r\n Date.prototype.setMinutes,\r\n \"minutes\",\r\n Date.prototype.getMinutes\r\n ], // Minutes; no leading zero for single-digit minutes. Uppercase M unlike CF timeFormat's m to avoid conflict with months.\r\n mm: [\r\n \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\",\r\n Date.prototype.setMinutes,\r\n \"minutes\",\r\n function () {\r\n return pad(Date.prototype.getMinutes.call(this), 2);\r\n }\r\n ], // Minutes; leading zero for single-digit minutes. Uppercase MM unlike CF timeFormat's mm to avoid conflict with months.\r\n s: [\r\n \"[1-5]?[0-9]\",\r\n Date.prototype.setSeconds,\r\n \"seconds\",\r\n Date.prototype.getSeconds\r\n ], // Seconds; no leading zero for single-digit seconds.\r\n ss: [\r\n \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\",\r\n Date.prototype.setSeconds,\r\n \"seconds\",\r\n function () {\r\n return pad(Date.prototype.getSeconds.call(this), 2);\r\n }\r\n ], // Seconds; leading zero for single-digit seconds.\r\n l: [\r\n \"[0-9]{3}\",\r\n Date.prototype.setMilliseconds,\r\n \"milliseconds\",\r\n function () {\r\n return pad(Date.prototype.getMilliseconds.call(this), 3);\r\n },\r\n 3\r\n ], // Milliseconds. 3 digits.\r\n L: [\r\n \"[0-9]{2}\",\r\n Date.prototype.setMilliseconds,\r\n \"milliseconds\",\r\n function () {\r\n return pad(Date.prototype.getMilliseconds.call(this), 2);\r\n },\r\n 2\r\n ], // Milliseconds. 2 digits.\r\n t: [\"[ap]\", setAMPM, \"ampm\", getAMPM, 1], // Lowercase, single-character time marker string: a or p.\r\n tt: [\"[ap]m\", setAMPM, \"ampm\", getAMPM, 2], // two-character time marker string: am or pm.\r\n T: [\"[AP]\", setAMPM, \"ampm\", getAMPM, 1], // single-character time marker string: A or P.\r\n TT: [\"[AP]M\", setAMPM, \"ampm\", getAMPM, 2], // two-character time marker string: AM or PM.\r\n Z: [\".*\", undefined, \"Z\", getTimeZoneAbbreviated], // US timezone abbreviation, e.g. EST or MDT. With non-US timezones or in the Opera browser, the GMT/UTC offset is returned, e.g. GMT-0500\r\n o: [\"\"], // GMT/UTC timezone offset, e.g. -0500 or +0230.\r\n S: [\"\"] // The date's ordinal suffix (st, nd, rd, or th).\r\n },\r\n formatCodeAlias = {\r\n D: \"d\",\r\n DD: \"dd\",\r\n DDD: \"ddd\",\r\n DDDD: \"dddd\",\r\n YY: \"yy\",\r\n YYYY: \"yyyy\",\r\n sss: \"L\"\r\n },\r\n formatAlias = {\r\n isoDate: \"yyyy-MM-dd\", // 2007-06-09\r\n isoTime: \"HH:mm:ss\", // 17:46:21\r\n isoDateTime: \"yyyy-MM-dd\\\\THH:mm:ss\", // 2007-06-09T17:46:21\r\n isoUtcDateTime: \"UTC:yyyy-MM-dd\\\\THH:mm:ss\\\\Z\" // 2007-06-09T22:46:21Z\r\n };\r\n\r\nfunction setAMPM(value) {\r\n const hours = this.getHours();\r\n if (value.toLowerCase().includes(\"p\")) {\r\n this.setHours(hours + 12);\r\n // console.log(\"setAMPM + 12\");\r\n } else if (value.toLowerCase().includes(\"a\") && hours >= 12) {\r\n this.setHours(hours - 12);\r\n }\r\n}\r\n\r\nfunction getAMPM() {\r\n let date = this,\r\n hours = date.getHours();\r\n hours = hours || 12;\r\n return hours >= 12 ? \"PM\" : \"AM\";\r\n}\r\n\r\nfunction getTimeZoneAbbreviated() {\r\n // not perfect, but ok for now\r\n let date = this,\r\n { 1: tz } = date.toString().match(/\\((.+)\\)/);\r\n if (tz.includes(\" \")) {\r\n tz = tz.replace(\"-\", \" \").toUpperCase();\r\n tz = tz\r\n .split(\" \")\r\n .map(([first]) => first)\r\n .join(\"\");\r\n }\r\n return tz;\r\n}\r\n\r\nfunction formatcode(match) {\r\n const fcMatch = formatCodeAlias[match] || match,\r\n dynMatches = /\\d+$/.exec(fcMatch);\r\n if (dynMatches && dynMatches[0] !== undefined) {\r\n const fcode = formatCode[fcMatch[0] + \"x\"].slice(\"\");\r\n fcode[0] = fcode[0](dynMatches[0]);\r\n fcode[3] = fcode[3](dynMatches[0]);\r\n\r\n return fcode;\r\n } else if (formatCode[fcMatch]) {\r\n return formatCode[fcMatch];\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nfunction getTokenizer(opts) {\r\n if (!opts.tokenizer) {\r\n const tokens = [],\r\n dyntokens = [],\r\n formatCodeKeys = Object.keys(formatCode).concat(\r\n Object.keys(formatCodeAlias)\r\n );\r\n\r\n for (const ndx of formatCodeKeys) {\r\n if (/\\.*x$/.test(ndx)) {\r\n const dynToken = ndx[0] + \"\\\\d+\";\r\n if (dyntokens.indexOf(dynToken) === -1) {\r\n dyntokens.push(dynToken);\r\n }\r\n } else if (tokens.indexOf(ndx[0]) === -1) {\r\n tokens.push(ndx[0]);\r\n }\r\n }\r\n opts.tokenizer =\r\n \"(\" +\r\n (dyntokens.length > 0 ? dyntokens.join(\"|\") + \"|\" : \"\") +\r\n tokens.join(\"+|\") +\r\n \"+)+?|.\";\r\n opts.tokenizer = new RegExp(opts.tokenizer, \"g\");\r\n }\r\n\r\n return opts.tokenizer;\r\n}\r\n\r\nfunction prefillYear(dateParts, currentResult, opts) {\r\n if (dateParts.year !== dateParts.rawyear) {\r\n const crrntyear = currentYear.toString(),\r\n enteredPart = dateParts.rawyear.replace(/[^0-9]/g, \"\"),\r\n currentYearPart = crrntyear.slice(0, enteredPart.length),\r\n currentYearNextPart = crrntyear.slice(enteredPart.length);\r\n if (enteredPart.length === 2 && enteredPart === currentYearPart) {\r\n const entryCurrentYear = new Date(\r\n currentYear,\r\n dateParts.month - 1,\r\n dateParts.day\r\n );\r\n if (\r\n dateParts.day == entryCurrentYear.getDate() &&\r\n (!opts.max || opts.max.date.getTime() >= entryCurrentYear.getTime())\r\n ) {\r\n // update dateParts\r\n dateParts.date.setFullYear(currentYear);\r\n dateParts.year = crrntyear;\r\n // update result\r\n currentResult.insert = [\r\n {\r\n pos: currentResult.pos + 1,\r\n c: currentYearNextPart[0]\r\n },\r\n {\r\n pos: currentResult.pos + 2,\r\n c: currentYearNextPart[1]\r\n }\r\n ];\r\n }\r\n }\r\n }\r\n\r\n return currentResult;\r\n}\r\n\r\nfunction isValidDate(dateParts, currentResult, opts) {\r\n const inputmask = this;\r\n if (!useDateObject) return true;\r\n if (\r\n dateParts.rawday === undefined ||\r\n (!isFinite(dateParts.rawday) &&\r\n new Date(\r\n dateParts.date.getFullYear(),\r\n isFinite(dateParts.rawmonth)\r\n ? dateParts.month\r\n : dateParts.date.getMonth() + 1,\r\n 0\r\n ).getDate() >= dateParts.day) ||\r\n (dateParts.day == \"29\" &&\r\n (!isFinite(dateParts.rawyear) ||\r\n dateParts.rawyear === undefined ||\r\n dateParts.rawyear === \"\")) ||\r\n new Date(\r\n dateParts.date.getFullYear(),\r\n isFinite(dateParts.rawmonth)\r\n ? dateParts.month\r\n : dateParts.date.getMonth() + 1,\r\n 0\r\n ).getDate() >= dateParts.day\r\n ) {\r\n return currentResult;\r\n } else {\r\n // take corrective action if possible\r\n if (dateParts.day == \"29\") {\r\n const tokenMatch = getTokenMatch.call(\r\n inputmask,\r\n currentResult.pos,\r\n opts,\r\n inputmask.maskset\r\n );\r\n if (\r\n tokenMatch.targetMatch &&\r\n [\"yyyy\", \"YYYY\"].includes(tokenMatch.targetMatch[0]) &&\r\n currentResult.pos - tokenMatch.targetMatchIndex === 2\r\n ) {\r\n currentResult.remove = currentResult.pos + 1;\r\n return currentResult;\r\n }\r\n } else if (\r\n dateParts.date.getMonth() == 2 &&\r\n dateParts.day == \"30\" &&\r\n currentResult.c !== undefined\r\n ) {\r\n dateParts.day = \"03\";\r\n dateParts.date.setDate(3);\r\n dateParts.date.setMonth(1);\r\n currentResult.insert = [\r\n { pos: currentResult.pos, c: \"0\" },\r\n { pos: currentResult.pos + 1, c: currentResult.c }\r\n ];\r\n currentResult.caret = seekNext.call(this, currentResult.pos + 1);\r\n return currentResult;\r\n }\r\n return false;\r\n }\r\n}\r\n\r\nfunction isDateInRange(dateParts, result, opts, maskset, fromCheckval) {\r\n if (!result) return result;\r\n if (result && opts.min) {\r\n if (\r\n /* useDateObject && (dateParts[\"year\"] === undefined || dateParts[\"yearSet\"]) && */ !isNaN(\r\n opts.min.date.getTime()\r\n )\r\n ) {\r\n let match;\r\n dateParts.reset();\r\n getTokenizer(opts).lastIndex = 0;\r\n while ((match = getTokenizer(opts).exec(opts.inputFormat))) {\r\n var fcode;\r\n if ((fcode = formatcode(match[0]))) {\r\n if (fcode[3]) {\r\n let setFn = fcode[1],\r\n current = dateParts[fcode[2]],\r\n minVal = opts.min[fcode[2]],\r\n maxVal = opts.max ? opts.max[fcode[2]] : minVal + 1,\r\n curVal = [],\r\n forceCurrentValue = false;\r\n for (let i = 0; i < minVal.length; i++) {\r\n if (\r\n maskset.validPositions[i + match.index] === undefined &&\r\n !forceCurrentValue\r\n ) {\r\n if (i + match.index == 0 && current[i] < minVal[i]) {\r\n curVal[i] = current[i];\r\n forceCurrentValue = true;\r\n } else {\r\n curVal[i] = minVal[i];\r\n }\r\n // ADD +1 to whole\r\n if (\r\n fcode[2] === \"year\" &&\r\n current.length - 1 == i &&\r\n minVal != maxVal\r\n )\r\n curVal = (parseInt(curVal.join(\"\")) + 1).toString().split(\"\");\r\n if (\r\n fcode[2] === \"ampm\" &&\r\n minVal != maxVal &&\r\n opts.min.date.getTime() > dateParts.date.getTime()\r\n )\r\n curVal[i] = maxVal[i];\r\n } else {\r\n curVal[i] = current[i];\r\n forceCurrentValue = forceCurrentValue || current[i] > minVal[i];\r\n }\r\n }\r\n\r\n setFn.call(dateParts._date, curVal.join(\"\"));\r\n }\r\n }\r\n }\r\n\r\n result = opts.min.date.getTime() <= dateParts.date.getTime();\r\n dateParts.reInit();\r\n }\r\n }\r\n\r\n if (result && opts.max) {\r\n if (!isNaN(opts.max.date.getTime())) {\r\n result = opts.max.date.getTime() >= dateParts.date.getTime();\r\n }\r\n }\r\n return result;\r\n}\r\n\r\n// parse the given format and return a mask pattern\r\n// when a dateObjValue is passed a datestring in the requested format is returned\r\nfunction parse(format, dateObjValue, opts) {\r\n // parse format to regex string\r\n let mask = \"\",\r\n match,\r\n fcode,\r\n ndx = 0,\r\n escaped = false;\r\n const placeHolder = {};\r\n getTokenizer(opts).lastIndex = 0;\r\n while ((match = getTokenizer(opts).exec(format))) {\r\n if (match[0] === opts.escapeChar) {\r\n escaped = true;\r\n } else {\r\n if (dateObjValue === undefined) {\r\n if (!escaped && (fcode = formatcode(match[0]))) {\r\n mask += \"(\" + fcode[0] + \")\";\r\n // map placeholder to placeholder object and set placeholder mappings\r\n if (opts.placeholder && opts.placeholder !== \"\") {\r\n placeHolder[ndx] =\r\n opts.placeholder[match.index % opts.placeholder.length];\r\n // internal use of datetime alias\r\n placeHolder[\r\n `${match.index}'${\r\n opts.placeholder[match.index % opts.placeholder.length]\r\n }`\r\n ] = match[0].charAt(0);\r\n } else {\r\n placeHolder[ndx] = match[0].charAt(0);\r\n }\r\n } else {\r\n switch (match[0]) {\r\n case \"[\":\r\n mask += \"(\";\r\n break;\r\n case \"]\":\r\n mask += \")?\";\r\n break;\r\n default:\r\n mask += escapeRegex(match[0]);\r\n placeHolder[ndx] = match[0].charAt(0);\r\n }\r\n }\r\n } else {\r\n if (!escaped && (fcode = formatcode(match[0]))) {\r\n if (fcode[3]) {\r\n const getFn = fcode[3];\r\n mask += getFn.call(dateObjValue.date);\r\n } else if (fcode[2] && dateObjValue[\"raw\" + fcode[2]] !== undefined) {\r\n mask += dateObjValue[\"raw\" + fcode[2]];\r\n } else {\r\n mask += match[0];\r\n }\r\n } else {\r\n mask += match[0];\r\n }\r\n }\r\n ndx++;\r\n escaped = false;\r\n }\r\n }\r\n if (dateObjValue === undefined) {\r\n // console.log(JSON.stringify(placeHolder));\r\n opts.placeholder = placeHolder;\r\n }\r\n return mask;\r\n}\r\n\r\n// padding function\r\nfunction pad(val, len, right) {\r\n val = String(val);\r\n len = len || 2;\r\n while (val.length < len) val = right ? val + \"0\" : \"0\" + val;\r\n return val;\r\n}\r\n\r\nfunction analyseMask(mask, format, opts) {\r\n const inputmask = this;\r\n\r\n if (typeof mask === \"string\") {\r\n return new DateObject(mask, format, opts, inputmask);\r\n } else if (\r\n mask &&\r\n typeof mask === \"object\" &&\r\n Object.prototype.hasOwnProperty.call(mask, \"date\")\r\n ) {\r\n return mask;\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction importDate(dateObj, opts) {\r\n return parse(opts.inputFormat, { date: dateObj }, opts);\r\n}\r\n\r\nfunction getTokenMatch(pos, opts, maskset) {\r\n let inputmask = this,\r\n calcPos = 0,\r\n targetMatch,\r\n match,\r\n matchLength = 0;\r\n\r\n getTokenizer(opts).lastIndex = 0;\r\n while ((match = getTokenizer(opts).exec(opts.inputFormat))) {\r\n // console.log(`match.index ${match.index}`);\r\n const dynMatches = /\\d+$/.exec(match[0]);\r\n if (dynMatches) {\r\n matchLength = parseInt(dynMatches[0]);\r\n } else {\r\n let targetSymbol = match[0][0],\r\n ndx = calcPos;\r\n while (\r\n inputmask &&\r\n (opts.placeholder[\r\n `${match.index}'${getTest.call(inputmask, ndx).match.placeholder}`\r\n ] || getTest.call(inputmask, ndx).match.placeholder) === targetSymbol\r\n ) {\r\n ndx++;\r\n }\r\n matchLength = ndx - calcPos;\r\n if (matchLength === 0) matchLength = match[0].length;\r\n }\r\n\r\n calcPos += matchLength;\r\n // console.log(`calcPos ${calcPos}`);\r\n\r\n if (calcPos >= pos + 1) {\r\n let masksetHint = \"\";\r\n if (maskset && maskset.tests[pos]) {\r\n const filteredPlaceholders = Object.keys(opts.placeholder).filter(\r\n (value) => {\r\n for (let i = match.index - 1; i < calcPos; i++) {\r\n if (value === `${i}'${maskset.tests[pos][0].match.placeholder}`) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n );\r\n\r\n masksetHint =\r\n filteredPlaceholders.length > 0\r\n ? opts.placeholder[filteredPlaceholders[0]]\r\n : maskset.tests[pos][0].match.placeholder;\r\n }\r\n // console.log(masksetHint);\r\n if (match[0].indexOf(masksetHint) !== -1) {\r\n // console.log(`match ${masksetHint} ${calcPos} >= ${pos + 1}`);\r\n targetMatch = match;\r\n match = getTokenizer(opts).exec(opts.inputFormat);\r\n break;\r\n } else {\r\n // console.log(`no match ${masksetHint} ${calcPos} >= ${pos + 1}`);\r\n }\r\n }\r\n }\r\n return {\r\n targetMatchIndex: calcPos - matchLength,\r\n nextMatch: match,\r\n targetMatch\r\n };\r\n}\r\n\r\nInputmask.extendAliases({\r\n datetime: {\r\n mask: function (opts) {\r\n // do not allow numeric input in datetime alias\r\n opts.numericInput = false;\r\n\r\n // localize\r\n formatCode.S = i18n.ordinalSuffix.join(\"|\");\r\n\r\n opts.inputFormat = formatAlias[opts.inputFormat] || opts.inputFormat; // resolve possible formatAlias\r\n if (opts.repeat) {\r\n opts.repeat = parseInt(opts.repeat.toString());\r\n if (opts.repeat > 0) {\r\n let inputFormat = \"\";\r\n for (let i = 0; i < opts.repeat; i++) {\r\n inputFormat = inputFormat + opts.inputFormat;\r\n }\r\n opts.inputFormat = inputFormat;\r\n opts.repeat = 0;\r\n }\r\n }\r\n opts.displayFormat =\r\n formatAlias[opts.displayFormat] ||\r\n opts.displayFormat ||\r\n opts.inputFormat; // resolve possible formatAlias\r\n opts.outputFormat =\r\n formatAlias[opts.outputFormat] || opts.outputFormat || opts.inputFormat; // resolve possible formatAlias\r\n // opts.placeholder = opts.placeholder !== \"\" ? opts.placeholder : opts.inputFormat.replace(/[[\\]]/, \"\");\r\n opts.regex = parse(opts.inputFormat, undefined, opts);\r\n // console.log(\"inputFormat\", opts.regex);\r\n opts.min = analyseMask(opts.min, opts.inputFormat, opts);\r\n opts.max = analyseMask(opts.max, opts.inputFormat, opts);\r\n return null; // migrate to regex mask\r\n },\r\n placeholder: \"\", // set default as none (~ auto); when a custom placeholder is passed it will be used\r\n inputFormat: \"isoDateTime\", // format used to input the date\r\n displayFormat: null, // visual format when the input looses focus\r\n outputFormat: null, // unmasking format\r\n min: null, // needs to be in the same format as the inputfornat\r\n max: null, // needs to be in the same format as the inputfornat,\r\n skipOptionalPartCharacter: \"\",\r\n preValidation: function (\r\n buffer,\r\n pos,\r\n c,\r\n isSelection,\r\n opts,\r\n maskset,\r\n caretPos,\r\n strict\r\n ) {\r\n const inputmask = this;\r\n if (strict) return true;\r\n if (isNaN(c) && buffer[pos] !== c) {\r\n const tokenMatch = getTokenMatch.call(inputmask, pos, opts, maskset);\r\n if (\r\n tokenMatch.nextMatch &&\r\n tokenMatch.nextMatch[0] === c &&\r\n tokenMatch.targetMatch[0].length > 1\r\n ) {\r\n const validator = formatcode(tokenMatch.targetMatch[0])[0];\r\n if (new RegExp(validator).test(\"0\" + buffer[pos - 1])) {\r\n buffer[pos] = buffer[pos - 1];\r\n buffer[pos - 1] = \"0\";\r\n return {\r\n fuzzy: true,\r\n buffer,\r\n refreshFromBuffer: { start: pos - 1, end: pos + 1 },\r\n pos: pos + 1\r\n };\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n postValidation: function (\r\n buffer,\r\n pos,\r\n c,\r\n currentResult,\r\n opts,\r\n maskset,\r\n strict,\r\n fromCheckval\r\n ) {\r\n const inputmask = this;\r\n\r\n if (strict) return true;\r\n let tokenMatch, validator;\r\n if (currentResult === false) {\r\n // try some shifting\r\n tokenMatch = getTokenMatch.call(inputmask, pos + 1, opts, maskset);\r\n if (\r\n tokenMatch.targetMatch &&\r\n tokenMatch.targetMatchIndex === pos &&\r\n tokenMatch.targetMatch[0].length > 1 &&\r\n formatcode(tokenMatch.targetMatch[0]) !== undefined\r\n ) {\r\n validator = formatcode(tokenMatch.targetMatch[0])[0];\r\n } else {\r\n tokenMatch = getTokenMatch.call(inputmask, pos + 2, opts, maskset);\r\n if (\r\n tokenMatch.targetMatch &&\r\n tokenMatch.targetMatchIndex === pos + 1 &&\r\n tokenMatch.targetMatch[0].length > 1 &&\r\n formatcode(tokenMatch.targetMatch[0]) !== undefined\r\n ) {\r\n validator = formatcode(tokenMatch.targetMatch[0]);\r\n }\r\n }\r\n if (validator !== undefined) {\r\n // correct position ~ pos in front of shifted targetMatch\r\n pos = tokenMatch.targetMatchIndex;\r\n if (\r\n maskset.validPositions[pos + 1] !== undefined &&\r\n new RegExp(validator).test(c + \"0\")\r\n ) {\r\n buffer[pos] = c;\r\n buffer[pos + 1] = \"0\";\r\n currentResult = {\r\n // insert: [{pos: pos, c: \"0\"}, {pos: pos + 1, c: c}],\r\n pos: pos + 2, // this will triggeer a refreshfrombuffer\r\n caret: pos + 1\r\n };\r\n } else if (new RegExp(validator).test(\"0\" + c)) {\r\n buffer[pos] = \"0\";\r\n buffer[pos + 1] = c;\r\n currentResult = {\r\n // insert: [{pos: pos, c: \"0\"}, {pos: pos + 1, c: c}],\r\n pos: pos + 2 // this will triggeer a refreshfrombuffer\r\n };\r\n }\r\n }\r\n\r\n if (currentResult === false) return currentResult;\r\n }\r\n\r\n if (currentResult.fuzzy) {\r\n buffer = currentResult.buffer;\r\n pos = currentResult.pos;\r\n }\r\n\r\n // full validate target\r\n tokenMatch = getTokenMatch.call(inputmask, pos, opts, maskset);\r\n if (\r\n tokenMatch.targetMatch &&\r\n tokenMatch.targetMatch[0] &&\r\n formatcode(tokenMatch.targetMatch[0]) !== undefined\r\n ) {\r\n const fcode = formatcode(tokenMatch.targetMatch[0]);\r\n validator = fcode[0];\r\n const part = buffer.slice(\r\n tokenMatch.targetMatchIndex,\r\n tokenMatch.targetMatchIndex + tokenMatch.targetMatch[0].length\r\n );\r\n if (\r\n new RegExp(validator).test(part.join(\"\")) === false &&\r\n tokenMatch.targetMatch[0].length === 2 &&\r\n maskset.validPositions[tokenMatch.targetMatchIndex] &&\r\n maskset.validPositions[tokenMatch.targetMatchIndex + 1]\r\n ) {\r\n maskset.validPositions[tokenMatch.targetMatchIndex + 1].input = \"0\";\r\n }\r\n if (fcode[2] == \"year\") {\r\n const _buffer = getMaskTemplate.call(\r\n inputmask,\r\n false,\r\n 1,\r\n undefined,\r\n true\r\n );\r\n for (let i = pos + 1; i < buffer.length; i++) {\r\n buffer[i] = _buffer[i];\r\n maskset.validPositions.splice(pos + 1, 1);\r\n }\r\n }\r\n }\r\n\r\n let result = currentResult,\r\n dateParts = analyseMask.call(\r\n inputmask,\r\n buffer.join(\"\"),\r\n opts.inputFormat,\r\n opts\r\n );\r\n if (result && !isNaN(dateParts.date.getTime())) {\r\n // check for a valid date ~ an invalid date returns NaN which isn't equal\r\n if (opts.prefillYear) result = prefillYear(dateParts, result, opts);\r\n result = isValidDate.call(inputmask, dateParts, result, opts);\r\n result = isDateInRange(dateParts, result, opts, maskset, fromCheckval);\r\n }\r\n\r\n if (pos !== undefined && result && currentResult.pos !== pos) {\r\n return {\r\n buffer: parse(opts.inputFormat, dateParts, opts).split(\"\"),\r\n refreshFromBuffer: { start: pos, end: currentResult.pos },\r\n pos:\r\n currentResult.caret !== undefined\r\n ? currentResult.caret\r\n : currentResult.pos // correct caret position\r\n };\r\n }\r\n\r\n return result;\r\n },\r\n onKeyDown: function (e, buffer, caretPos, opts) {\r\n const input = this;\r\n if (e.ctrlKey && e.key === keys.ArrowRight) {\r\n input.inputmask._valueSet(importDate(new Date(), opts));\r\n $(input).trigger(\"setvalue\");\r\n }\r\n },\r\n onUnMask: function (maskedValue, unmaskedValue, opts) {\r\n const inputmask = this;\r\n return unmaskedValue\r\n ? parse(\r\n opts.outputFormat,\r\n analyseMask.call(inputmask, maskedValue, opts.inputFormat, opts),\r\n opts\r\n )\r\n : unmaskedValue;\r\n },\r\n casing: function (elem, test, pos, validPositions) {\r\n if (test.nativeDef.indexOf(\"[ap]\") == 0) return elem.toLowerCase();\r\n if (test.nativeDef.indexOf(\"[AP]\") == 0) return elem.toUpperCase();\r\n\r\n const posBefore = getTest.call(this, [pos - 1]);\r\n if (posBefore.match.def.indexOf(\"[AP]\") == 0) return elem.toUpperCase();\r\n\r\n if (\r\n pos === 0 ||\r\n (posBefore && posBefore.input === String.fromCharCode(keyCode.Space)) ||\r\n (posBefore &&\r\n posBefore.match.def === String.fromCharCode(keyCode.Space))\r\n ) {\r\n return elem.toUpperCase();\r\n }\r\n\r\n if (test.static && test.def === test.def.toUpperCase())\r\n return elem.toUpperCase();\r\n\r\n return elem.toLowerCase();\r\n },\r\n onBeforeMask: function (initialValue, opts) {\r\n if (Object.prototype.toString.call(initialValue) === \"[object Date]\") {\r\n initialValue = importDate(initialValue, opts);\r\n }\r\n\r\n return initialValue;\r\n },\r\n insertMode: false,\r\n insertModeVisual: false,\r\n shiftPositions: false,\r\n keepStatic: false,\r\n inputmode: \"numeric\",\r\n prefillYear: true // Allows to disable prefill for datetime year.\r\n }\r\n});\r\n","/*\r\n Input Mask plugin extensions\r\n http://github.com/RobinHerbots/inputmask\r\n Copyright (c) Robin Herbots\r\n Licensed under the MIT license\r\n */\r\nimport { escapeRegex } from \"../escapeRegex\";\r\nimport Inputmask from \"../inputmask\";\r\nimport { keys } from \"../keycode\";\r\nimport { seekNext } from \"../positioning\";\r\n\r\nconst $ = Inputmask.dependencyLib;\r\n\r\nfunction autoEscape(txt, opts) {\r\n let escapedTxt = \"\";\r\n for (let i = 0; i < txt.length; i++) {\r\n if (\r\n Inputmask.prototype.definitions[txt.charAt(i)] ||\r\n opts.definitions[txt.charAt(i)] ||\r\n opts.optionalmarker[0] === txt.charAt(i) ||\r\n opts.optionalmarker[1] === txt.charAt(i) ||\r\n opts.quantifiermarker[0] === txt.charAt(i) ||\r\n opts.quantifiermarker[1] === txt.charAt(i) ||\r\n opts.groupmarker[0] === txt.charAt(i) ||\r\n opts.groupmarker[1] === txt.charAt(i) ||\r\n opts.alternatormarker === txt.charAt(i)\r\n ) {\r\n escapedTxt += \"\\\\\" + txt.charAt(i);\r\n } else {\r\n escapedTxt += txt.charAt(i);\r\n }\r\n }\r\n return escapedTxt;\r\n}\r\n\r\nfunction alignDigits(buffer, digits, opts, force) {\r\n if (buffer.length > 0 && digits > 0 && (!opts.digitsOptional || force)) {\r\n var radixPosition = buffer.indexOf(opts.radixPoint),\r\n negationBack = false;\r\n if (opts.negationSymbol.back === buffer[buffer.length - 1]) {\r\n negationBack = true;\r\n buffer.length--;\r\n }\r\n\r\n if (radixPosition === -1) {\r\n buffer.push(opts.radixPoint);\r\n radixPosition = buffer.length - 1;\r\n }\r\n for (let i = 1; i <= digits; i++) {\r\n if (!isFinite(buffer[radixPosition + i])) {\r\n buffer[radixPosition + i] = \"0\";\r\n }\r\n }\r\n }\r\n\r\n if (negationBack) buffer.push(opts.negationSymbol.back);\r\n return buffer;\r\n}\r\n\r\nfunction findValidator(symbol, maskset) {\r\n let posNdx = 0;\r\n if (symbol === \"+\") {\r\n posNdx = seekNext.call(this, maskset.validPositions.length - 1);\r\n }\r\n for (let tstNdx in maskset.tests) {\r\n tstNdx = parseInt(tstNdx);\r\n if (tstNdx >= posNdx) {\r\n for (\r\n let ndx = 0, ndxl = maskset.tests[tstNdx].length;\r\n ndx < ndxl;\r\n ndx++\r\n ) {\r\n if (\r\n (maskset.validPositions[tstNdx] === undefined || symbol === \"-\") &&\r\n maskset.tests[tstNdx][ndx].match.def === symbol\r\n ) {\r\n return (\r\n tstNdx +\r\n (maskset.validPositions[tstNdx] !== undefined && symbol !== \"-\"\r\n ? 1\r\n : 0)\r\n );\r\n }\r\n }\r\n }\r\n }\r\n return posNdx;\r\n}\r\n\r\nfunction findValid(symbol, maskset) {\r\n let ret = -1;\r\n for (let ndx = 0, vpl = maskset.validPositions.length; ndx < vpl; ndx++) {\r\n const tst = maskset.validPositions[ndx];\r\n if (tst && tst.match.def === symbol) {\r\n ret = ndx;\r\n break;\r\n }\r\n }\r\n return ret;\r\n}\r\n\r\nfunction parseMinMaxOptions(opts) {\r\n if (opts.parseMinMaxOptions === undefined) {\r\n // convert min and max options\r\n if (opts.min !== null) {\r\n opts.min = opts.min\r\n .toString()\r\n .replace(new RegExp(escapeRegex(opts.groupSeparator), \"g\"), \"\");\r\n if (opts.radixPoint === \",\")\r\n opts.min = opts.min.replace(opts.radixPoint, \".\");\r\n opts.min = isFinite(opts.min) ? parseFloat(opts.min) : NaN;\r\n if (isNaN(opts.min)) opts.min = Number.MIN_VALUE;\r\n }\r\n if (opts.max !== null) {\r\n opts.max = opts.max\r\n .toString()\r\n .replace(new RegExp(escapeRegex(opts.groupSeparator), \"g\"), \"\");\r\n if (opts.radixPoint === \",\")\r\n opts.max = opts.max.replace(opts.radixPoint, \".\");\r\n opts.max = isFinite(opts.max) ? parseFloat(opts.max) : NaN;\r\n if (isNaN(opts.max)) opts.max = Number.MAX_VALUE;\r\n }\r\n opts.parseMinMaxOptions = \"done\";\r\n }\r\n}\r\n\r\nfunction genMask(opts) {\r\n opts.repeat = 0;\r\n // treat equal separator and radixpoint\r\n if (\r\n opts.groupSeparator === opts.radixPoint &&\r\n opts.digits &&\r\n opts.digits !== \"0\"\r\n ) {\r\n if (opts.radixPoint === \".\") {\r\n opts.groupSeparator = \",\";\r\n } else if (opts.radixPoint === \",\") {\r\n opts.groupSeparator = \".\";\r\n } else {\r\n opts.groupSeparator = \"\";\r\n }\r\n }\r\n // prevent conflict with default skipOptionalPartCharacter\r\n if (opts.groupSeparator === \" \") {\r\n opts.skipOptionalPartCharacter = undefined;\r\n }\r\n\r\n // enforce placeholder to single\r\n if (opts.placeholder.length > 1) {\r\n opts.placeholder = opts.placeholder.charAt(0);\r\n }\r\n // only allow radixfocus when placeholder = 0\r\n if (opts.positionCaretOnClick === \"radixFocus\" && opts.placeholder === \"\") {\r\n opts.positionCaretOnClick = \"lvp\";\r\n }\r\n\r\n let decimalDef = \"0\",\r\n radixPointDef = opts.radixPoint;\r\n if (opts.numericInput === true && opts.__financeInput === undefined) {\r\n // finance people input style\r\n decimalDef = \"1\";\r\n opts.positionCaretOnClick =\r\n opts.positionCaretOnClick === \"radixFocus\"\r\n ? \"lvp\"\r\n : opts.positionCaretOnClick;\r\n opts.digitsOptional = false;\r\n if (isNaN(opts.digits))\r\n opts.digits =\r\n opts.digits.indexOf(\",\") !== -1 ? opts.digits.split(\",\")[0] : 2;\r\n opts._radixDance = false;\r\n radixPointDef = opts.radixPoint === \",\" ? \"?\" : \"!\";\r\n if (\r\n opts.radixPoint !== \"\" &&\r\n opts.definitions[radixPointDef] === undefined\r\n ) {\r\n // update separator definition\r\n opts.definitions[radixPointDef] = {};\r\n opts.definitions[radixPointDef].validator = \"[\" + opts.radixPoint + \"]\";\r\n opts.definitions[radixPointDef].placeholder = opts.radixPoint;\r\n opts.definitions[radixPointDef].static = true;\r\n opts.definitions[radixPointDef].generated = true; // forced marker as generated input\r\n }\r\n } else {\r\n opts.__financeInput = false; // needed to keep original selection when remasking\r\n opts.numericInput = true;\r\n }\r\n\r\n let mask = \"[+]\",\r\n altMask;\r\n mask += autoEscape(opts.prefix, opts);\r\n if (opts.groupSeparator !== \"\") {\r\n if (opts.definitions[opts.groupSeparator] === undefined) {\r\n // update separator definition\r\n opts.definitions[opts.groupSeparator] = {};\r\n opts.definitions[opts.groupSeparator].validator =\r\n \"[\" + opts.groupSeparator + \"]\";\r\n opts.definitions[opts.groupSeparator].placeholder = opts.groupSeparator;\r\n opts.definitions[opts.groupSeparator].static = true;\r\n opts.definitions[opts.groupSeparator].generated = true; // forced marker as generated input\r\n }\r\n mask += opts._mask(opts);\r\n } else {\r\n mask += \"9{+}\";\r\n }\r\n if (opts.digits !== undefined && opts.digits !== 0) {\r\n const dq = opts.digits.toString().split(\",\");\r\n if (isFinite(dq[0]) && dq[1] && isFinite(dq[1])) {\r\n mask += radixPointDef + decimalDef + \"{\" + opts.digits + \"}\";\r\n } else if (isNaN(opts.digits) || parseInt(opts.digits) > 0) {\r\n if (opts.digitsOptional || opts.jitMasking) {\r\n altMask = mask + radixPointDef + decimalDef + \"{0,\" + opts.digits + \"}\";\r\n // mask += \"[\" + opts.radixPoint + \"]\";\r\n opts.keepStatic = true;\r\n } else {\r\n mask += radixPointDef + decimalDef + \"{\" + opts.digits + \"}\";\r\n }\r\n }\r\n } else {\r\n opts.inputmode = \"numeric\";\r\n }\r\n mask += autoEscape(opts.suffix, opts);\r\n mask += \"[-]\";\r\n\r\n if (altMask) {\r\n mask = [altMask + autoEscape(opts.suffix, opts) + \"[-]\", mask];\r\n }\r\n\r\n opts.greedy = false; // enforce greedy false\r\n\r\n parseMinMaxOptions(opts);\r\n if (opts.radixPoint !== \"\" && opts.substituteRadixPoint)\r\n opts.substitutes[opts.radixPoint == \".\" ? \",\" : \".\"] = opts.radixPoint;\r\n // console.log(mask);\r\n return mask;\r\n}\r\n\r\nfunction handleRadixDance(pos, c, radixPos, maskset, opts) {\r\n if (opts._radixDance && opts.numericInput && c !== opts.negationSymbol.back) {\r\n if (\r\n pos <= radixPos &&\r\n (radixPos > 0 || c == opts.radixPoint) &&\r\n (maskset.validPositions[pos - 1] === undefined ||\r\n maskset.validPositions[pos - 1].input !== opts.negationSymbol.back)\r\n ) {\r\n pos -= 1;\r\n }\r\n }\r\n return pos;\r\n}\r\n\r\nfunction decimalValidator(chrs, maskset, pos, strict, opts) {\r\n const radixPos = maskset.buffer\r\n ? maskset.buffer.indexOf(opts.radixPoint)\r\n : -1,\r\n result =\r\n (radixPos !== -1 || (strict && opts.jitMasking)) &&\r\n new RegExp(opts.definitions[\"9\"].validator).test(chrs);\r\n if (\r\n !strict &&\r\n opts._radixDance &&\r\n radixPos !== -1 &&\r\n result &&\r\n maskset.validPositions[radixPos] == undefined\r\n ) {\r\n return {\r\n insert: {\r\n pos: radixPos === pos ? radixPos + 1 : radixPos,\r\n c: opts.radixPoint\r\n },\r\n pos\r\n };\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction checkForLeadingZeroes(buffer, opts) {\r\n // check leading zeros\r\n let numberMatches = new RegExp(\r\n \"(^\" +\r\n (opts.negationSymbol.front !== \"\"\r\n ? escapeRegex(opts.negationSymbol.front) + \"?\"\r\n : \"\") +\r\n escapeRegex(opts.prefix) +\r\n \")(.*)(\" +\r\n escapeRegex(opts.suffix) +\r\n (opts.negationSymbol.back != \"\"\r\n ? escapeRegex(opts.negationSymbol.back) + \"?\"\r\n : \"\") +\r\n \"$)\"\r\n ).exec(buffer.slice().reverse().join(\"\")),\r\n number = numberMatches ? numberMatches[2] : \"\",\r\n leadingzeroes = false;\r\n if (number) {\r\n number = number.split(opts.radixPoint.charAt(0))[0];\r\n leadingzeroes = new RegExp(\"^[0\" + opts.groupSeparator + \"]*\").exec(number);\r\n }\r\n return leadingzeroes &&\r\n (leadingzeroes[0].length > 1 ||\r\n (leadingzeroes[0].length > 0 && leadingzeroes[0].length < number.length))\r\n ? leadingzeroes\r\n : false;\r\n}\r\n\r\n// number aliases\r\nInputmask.extendAliases({\r\n numeric: {\r\n mask: genMask,\r\n _mask: function (opts) {\r\n return \"(\" + opts.groupSeparator + \"999){+|1}\";\r\n },\r\n digits: \"*\", // number of fractionalDigits\r\n digitsOptional: true,\r\n enforceDigitsOnBlur: false,\r\n radixPoint: \".\",\r\n positionCaretOnClick: \"radixFocus\",\r\n _radixDance: true,\r\n groupSeparator: \"\",\r\n allowMinus: true,\r\n negationSymbol: {\r\n front: \"-\", // \"(\"\r\n back: \"\" // \")\"\r\n },\r\n prefix: \"\",\r\n suffix: \"\",\r\n min: null, // minimum value\r\n max: null, // maximum value\r\n SetMaxOnOverflow: false,\r\n step: 1,\r\n inputType: \"text\", // number ~ specify that values which are set are in textform (radix point is same as in the options) or in numberform (radixpoint = .)\r\n unmaskAsNumber: false,\r\n roundingFN: Math.round, // Math.floor , fn(x)\r\n inputmode: \"decimal\",\r\n shortcuts: { k: \"1000\", m: \"1000000\" },\r\n // global options\r\n placeholder: \"0\",\r\n greedy: false,\r\n rightAlign: true,\r\n insertMode: true,\r\n autoUnmask: false,\r\n skipOptionalPartCharacter: \"\",\r\n usePrototypeDefinitions: false,\r\n stripLeadingZeroes: true,\r\n substituteRadixPoint: true,\r\n definitions: {\r\n 0: {\r\n validator: decimalValidator\r\n },\r\n 1: {\r\n validator: decimalValidator,\r\n definitionSymbol: \"9\"\r\n },\r\n 9: {\r\n // \\uFF11-\\uFF19 #1606\r\n validator: \"[0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9]\",\r\n definitionSymbol: \"*\"\r\n },\r\n \"+\": {\r\n validator: function (chrs, maskset, pos, strict, opts) {\r\n return (\r\n opts.allowMinus &&\r\n (chrs === \"-\" || chrs === opts.negationSymbol.front)\r\n );\r\n }\r\n },\r\n \"-\": {\r\n validator: function (chrs, maskset, pos, strict, opts) {\r\n return opts.allowMinus && chrs === opts.negationSymbol.back;\r\n }\r\n }\r\n },\r\n preValidation: function (\r\n buffer,\r\n pos,\r\n c,\r\n isSelection,\r\n opts,\r\n maskset,\r\n caretPos,\r\n strict\r\n ) {\r\n const inputmask = this;\r\n\r\n if (opts.__financeInput !== false && c === opts.radixPoint) return false;\r\n const radixPos = buffer.indexOf(opts.radixPoint),\r\n initPos = pos;\r\n pos = handleRadixDance(pos, c, radixPos, maskset, opts);\r\n if (c === \"-\" || c === opts.negationSymbol.front) {\r\n if (opts.allowMinus !== true) return false;\r\n let isNegative = false,\r\n front = findValid(\"+\", maskset),\r\n back = findValid(\"-\", maskset);\r\n if (front !== -1) {\r\n isNegative = [front];\r\n if (back !== -1) isNegative.push(back);\r\n }\r\n\r\n return isNegative !== false\r\n ? {\r\n remove: isNegative,\r\n caret: initPos - opts.negationSymbol.back.length\r\n }\r\n : {\r\n insert: [\r\n {\r\n pos: findValidator.call(inputmask, \"+\", maskset),\r\n c: opts.negationSymbol.front,\r\n fromIsValid: true\r\n },\r\n {\r\n pos: findValidator.call(inputmask, \"-\", maskset),\r\n c: opts.negationSymbol.back,\r\n fromIsValid: undefined\r\n }\r\n ],\r\n caret: initPos + opts.negationSymbol.back.length\r\n };\r\n }\r\n\r\n if (c === opts.groupSeparator) {\r\n return { caret: initPos };\r\n }\r\n\r\n if (strict) return true;\r\n if (\r\n radixPos !== -1 &&\r\n opts._radixDance === true &&\r\n isSelection === false &&\r\n c === opts.radixPoint &&\r\n opts.digits !== undefined &&\r\n (isNaN(opts.digits) || parseInt(opts.digits) > 0) &&\r\n radixPos !== pos\r\n ) {\r\n const radixValidatorPos = findValidator.call(\r\n inputmask,\r\n opts.radixPoint,\r\n maskset\r\n );\r\n if (maskset.validPositions[radixValidatorPos]) {\r\n maskset.validPositions[radixValidatorPos].generatedInput =\r\n maskset.validPositions[radixValidatorPos].generated || false;\r\n }\r\n return {\r\n caret:\r\n opts._radixDance && pos === radixPos - 1 ? radixPos + 1 : radixPos\r\n };\r\n }\r\n if (opts.__financeInput === false) {\r\n if (isSelection) {\r\n if (opts.digitsOptional) {\r\n return { rewritePosition: caretPos.end };\r\n } else if (!opts.digitsOptional) {\r\n if (caretPos.begin > radixPos && caretPos.end <= radixPos) {\r\n if (c === opts.radixPoint) {\r\n return {\r\n insert: { pos: radixPos + 1, c: \"0\", fromIsValid: true },\r\n rewritePosition: radixPos\r\n };\r\n } else {\r\n return { rewritePosition: radixPos + 1 };\r\n }\r\n } else if (caretPos.begin < radixPos) {\r\n return { rewritePosition: caretPos.begin - 1 };\r\n }\r\n }\r\n } else if (\r\n !opts.showMaskOnHover &&\r\n !opts.showMaskOnFocus &&\r\n !opts.digitsOptional &&\r\n opts.digits > 0 &&\r\n this.__valueGet.call(this.el) === \"\"\r\n ) {\r\n return { rewritePosition: radixPos };\r\n }\r\n }\r\n return { rewritePosition: pos };\r\n },\r\n postValidation: function (\r\n buffer,\r\n pos,\r\n c,\r\n currentResult,\r\n opts,\r\n maskset,\r\n strict,\r\n fromCheckval,\r\n fromAlternate\r\n ) {\r\n if (currentResult === false) return currentResult;\r\n if (strict) return true;\r\n if (opts.min !== null || opts.max !== null) {\r\n const unmasked = opts.onUnMask(\r\n buffer.slice().reverse().join(\"\"),\r\n undefined,\r\n $.extend({}, opts, {\r\n unmaskAsNumber: true\r\n })\r\n );\r\n if (\r\n opts.min !== null &&\r\n unmasked < opts.min &&\r\n fromAlternate !== true &&\r\n (unmasked.toString().length > opts.min.toString().length || // > instead of >= because we want to allow to type a bigger number\r\n buffer[0] === opts.radixPoint || // disallow radixpoint when value is smaller than min\r\n unmasked < 0)\r\n ) {\r\n return false;\r\n // return {\r\n // \trefreshFromBuffer: true,\r\n // \tbuffer: alignDigits(opts.min.toString().replace(\".\", opts.radixPoint).split(\"\"), opts.digits, opts).reverse()\r\n // };\r\n }\r\n\r\n if (opts.max !== null && opts.max >= 0 && unmasked > opts.max) {\r\n return opts.SetMaxOnOverflow\r\n ? {\r\n refreshFromBuffer: true,\r\n buffer: alignDigits(\r\n opts.max.toString().replace(\".\", opts.radixPoint).split(\"\"),\r\n opts.digits,\r\n opts\r\n ).reverse()\r\n }\r\n : false;\r\n }\r\n }\r\n\r\n return currentResult;\r\n },\r\n onUnMask: function (maskedValue, unmaskedValue, opts) {\r\n if (unmaskedValue === \"\" && opts.nullable === true) {\r\n return unmaskedValue;\r\n }\r\n let processValue = maskedValue.replace(opts.prefix, \"\");\r\n processValue = processValue.replace(opts.suffix, \"\");\r\n processValue = processValue.replace(\r\n new RegExp(escapeRegex(opts.groupSeparator), \"g\"),\r\n \"\"\r\n );\r\n if (opts.placeholder.charAt(0) !== \"\") {\r\n processValue = processValue.replace(\r\n new RegExp(opts.placeholder.charAt(0), \"g\"),\r\n \"0\"\r\n );\r\n }\r\n if (opts.unmaskAsNumber) {\r\n if (\r\n opts.radixPoint !== \"\" &&\r\n processValue.indexOf(opts.radixPoint) !== -1\r\n )\r\n processValue = processValue.replace(\r\n escapeRegex.call(this, opts.radixPoint),\r\n \".\"\r\n );\r\n processValue = processValue.replace(\r\n new RegExp(\"^\" + escapeRegex(opts.negationSymbol.front)),\r\n \"-\"\r\n );\r\n processValue = processValue.replace(\r\n new RegExp(escapeRegex(opts.negationSymbol.back) + \"$\"),\r\n \"\"\r\n );\r\n return Number(processValue);\r\n }\r\n return processValue;\r\n },\r\n isComplete: function (buffer, opts) {\r\n let maskedValue = (\r\n opts.numericInput ? buffer.slice().reverse() : buffer\r\n ).join(\"\");\r\n maskedValue = maskedValue.replace(\r\n new RegExp(\"^\" + escapeRegex(opts.negationSymbol.front)),\r\n \"-\"\r\n );\r\n maskedValue = maskedValue.replace(\r\n new RegExp(escapeRegex(opts.negationSymbol.back) + \"$\"),\r\n \"\"\r\n );\r\n maskedValue = maskedValue.replace(opts.prefix, \"\");\r\n maskedValue = maskedValue.replace(opts.suffix, \"\");\r\n maskedValue = maskedValue.replace(\r\n new RegExp(escapeRegex(opts.groupSeparator) + \"([0-9]{3})\", \"g\"),\r\n \"$1\"\r\n );\r\n if (opts.radixPoint === \",\")\r\n maskedValue = maskedValue.replace(escapeRegex(opts.radixPoint), \".\");\r\n return isFinite(maskedValue);\r\n },\r\n onBeforeMask: function (initialValue, opts) {\r\n initialValue = initialValue ?? \"\";\r\n const radixPoint = opts.radixPoint || \",\";\r\n if (isFinite(opts.digits)) opts.digits = parseInt(opts.digits);\r\n\r\n if (\r\n (typeof initialValue === \"number\" || opts.inputType === \"number\") &&\r\n radixPoint !== \"\"\r\n ) {\r\n initialValue = initialValue.toString().replace(\".\", radixPoint);\r\n }\r\n const isNegative =\r\n initialValue.charAt(0) === \"-\" ||\r\n initialValue.charAt(0) === opts.negationSymbol.front,\r\n valueParts = initialValue.split(radixPoint),\r\n integerPart = valueParts[0].replace(/[^\\-0-9]/g, \"\"),\r\n decimalPart =\r\n valueParts.length > 1 ? valueParts[1].replace(/[^0-9]/g, \"\") : \"\",\r\n forceDigits = valueParts.length > 1;\r\n\r\n initialValue =\r\n integerPart +\r\n (decimalPart !== \"\" ? radixPoint + decimalPart : decimalPart);\r\n\r\n let digits = 0;\r\n if (radixPoint !== \"\") {\r\n digits = !opts.digitsOptional\r\n ? opts.digits\r\n : opts.digits < decimalPart.length\r\n ? opts.digits\r\n : decimalPart.length;\r\n if (decimalPart !== \"\" || !opts.digitsOptional) {\r\n const digitsFactor = Math.pow(10, digits || 1);\r\n\r\n // make the initialValue a valid javascript number for the parsefloat\r\n initialValue = initialValue.replace(escapeRegex(radixPoint), \".\");\r\n if (!isNaN(parseFloat(initialValue))) {\r\n initialValue = (\r\n opts.roundingFN(parseFloat(initialValue) * digitsFactor) /\r\n digitsFactor\r\n ).toFixed(digits);\r\n }\r\n initialValue = initialValue.toString().replace(\".\", radixPoint);\r\n }\r\n }\r\n // this needs to be in a separate part and not directly in decimalPart to allow rounding\r\n if (opts.digits === 0 && initialValue.indexOf(radixPoint) !== -1) {\r\n initialValue = initialValue.substring(\r\n 0,\r\n initialValue.indexOf(radixPoint)\r\n );\r\n }\r\n\r\n if (initialValue !== \"\" && (opts.min !== null || opts.max !== null)) {\r\n const numberValue = initialValue.toString().replace(radixPoint, \".\");\r\n if (opts.min !== null && numberValue < opts.min) {\r\n initialValue = opts.min.toString().replace(\".\", radixPoint);\r\n } else if (opts.max !== null && numberValue > opts.max) {\r\n initialValue = opts.max.toString().replace(\".\", radixPoint);\r\n }\r\n }\r\n\r\n if (isNegative && initialValue.charAt(0) !== \"-\") {\r\n initialValue = \"-\" + initialValue;\r\n }\r\n return alignDigits(\r\n initialValue.toString().split(\"\"),\r\n digits,\r\n opts,\r\n forceDigits\r\n ).join(\"\");\r\n },\r\n onBeforeWrite: function (e, buffer, caretPos, opts) {\r\n function stripBuffer(buffer, stripRadix) {\r\n if (opts.__financeInput !== false || stripRadix) {\r\n var position = buffer.indexOf(opts.radixPoint);\r\n if (position !== -1) {\r\n buffer.splice(position, 1);\r\n }\r\n }\r\n if (opts.groupSeparator !== \"\") {\r\n while ((position = buffer.indexOf(opts.groupSeparator)) !== -1) {\r\n buffer.splice(position, 1);\r\n }\r\n }\r\n\r\n return buffer;\r\n }\r\n\r\n let result, leadingzeroes;\r\n if (\r\n opts.stripLeadingZeroes &&\r\n (leadingzeroes = checkForLeadingZeroes(buffer, opts))\r\n ) {\r\n const caretNdx =\r\n buffer\r\n .join(\"\")\r\n .lastIndexOf(leadingzeroes[0].split(\"\").reverse().join(\"\")) -\r\n (leadingzeroes[0] == leadingzeroes.input ? 0 : 1),\r\n offset = leadingzeroes[0] == leadingzeroes.input ? 1 : 0;\r\n for (let i = leadingzeroes[0].length - offset; i > 0; i--) {\r\n this.maskset.validPositions.splice(caretNdx + i, 1);\r\n delete buffer[caretNdx + i];\r\n }\r\n }\r\n\r\n if (e) {\r\n switch (e.type) {\r\n case \"blur\":\r\n case \"checkval\":\r\n if (opts.min !== null || opts.max !== null) {\r\n const unmasked = opts.onUnMask(\r\n buffer.slice().reverse().join(\"\"),\r\n undefined,\r\n $.extend({}, opts, {\r\n unmaskAsNumber: true\r\n })\r\n );\r\n if (\r\n opts.min !== null &&\r\n unmasked < opts.min &&\r\n buffer.join() !== \"\"\r\n ) {\r\n return {\r\n refreshFromBuffer: true,\r\n buffer: alignDigits(\r\n opts.min.toString().replace(\".\", opts.radixPoint).split(\"\"),\r\n opts.digits,\r\n opts\r\n ).reverse()\r\n };\r\n } else if (opts.max !== null && unmasked > opts.max) {\r\n return {\r\n refreshFromBuffer: true,\r\n buffer: alignDigits(\r\n opts.max.toString().replace(\".\", opts.radixPoint).split(\"\"),\r\n opts.digits,\r\n opts\r\n ).reverse()\r\n };\r\n }\r\n }\r\n if (buffer[buffer.length - 1] === opts.negationSymbol.front) {\r\n // strip negation symbol on blur when value is 0\r\n const nmbrMtchs = new RegExp(\r\n \"(^\" +\r\n (opts.negationSymbol.front != \"\"\r\n ? escapeRegex(opts.negationSymbol.front) + \"?\"\r\n : \"\") +\r\n escapeRegex(opts.prefix) +\r\n \")(.*)(\" +\r\n escapeRegex(opts.suffix) +\r\n (opts.negationSymbol.back != \"\"\r\n ? escapeRegex(opts.negationSymbol.back) + \"?\"\r\n : \"\") +\r\n \"$)\"\r\n ).exec(stripBuffer(buffer.slice(), true).reverse().join(\"\")),\r\n number = nmbrMtchs ? nmbrMtchs[2] : \"\";\r\n if (number == 0) {\r\n result = { refreshFromBuffer: true, buffer: [0] };\r\n }\r\n } else if (opts.radixPoint !== \"\") {\r\n // strip radixpoint on blur when it is the latest char\r\n const radixNDX = buffer.indexOf(opts.radixPoint);\r\n if (radixNDX === opts.suffix.length) {\r\n if (result && result.buffer) {\r\n result.buffer.splice(0, 1 + opts.suffix.length);\r\n } else {\r\n buffer.splice(0, 1 + opts.suffix.length);\r\n result = {\r\n refreshFromBuffer: true,\r\n buffer: stripBuffer(buffer)\r\n };\r\n }\r\n }\r\n }\r\n\r\n if (opts.enforceDigitsOnBlur) {\r\n result = result || {};\r\n const bffr = ((result && result.buffer) || buffer)\r\n .slice()\r\n .reverse();\r\n result.refreshFromBuffer = true;\r\n result.buffer = alignDigits(\r\n bffr,\r\n opts.digits,\r\n opts,\r\n true\r\n ).reverse();\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n },\r\n onKeyDown: function (e, buffer, caretPos, opts) {\r\n let $input = $(this),\r\n bffr;\r\n if (e.location != 3) {\r\n let pattern,\r\n c = e.key;\r\n if ((pattern = opts.shortcuts && opts.shortcuts[c])) {\r\n if (pattern.length > 1) {\r\n this.inputmask.__valueSet.call(\r\n this,\r\n parseFloat(this.inputmask.unmaskedvalue()) * parseInt(pattern)\r\n );\r\n $input.trigger(\"setvalue\");\r\n return false;\r\n }\r\n }\r\n }\r\n if (e.ctrlKey) {\r\n switch (e.key) {\r\n case keys.ArrowUp:\r\n this.inputmask.__valueSet.call(\r\n this,\r\n parseFloat(this.inputmask.unmaskedvalue()) + parseInt(opts.step)\r\n );\r\n $input.trigger(\"setvalue\");\r\n return false;\r\n case keys.ArrowDown:\r\n this.inputmask.__valueSet.call(\r\n this,\r\n parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step)\r\n );\r\n $input.trigger(\"setvalue\");\r\n return false;\r\n }\r\n }\r\n if (\r\n !e.shiftKey &&\r\n (e.key === keys.Delete ||\r\n e.key === keys.Backspace ||\r\n e.key === keys.BACKSPACE_SAFARI) &&\r\n caretPos.begin !== buffer.length\r\n ) {\r\n if (\r\n buffer[e.key === keys.Delete ? caretPos.begin - 1 : caretPos.end] ===\r\n opts.negationSymbol.front\r\n ) {\r\n bffr = buffer.slice().reverse();\r\n if (opts.negationSymbol.front !== \"\") bffr.shift();\r\n if (opts.negationSymbol.back !== \"\") bffr.pop();\r\n $input.trigger(\"setvalue\", [bffr.join(\"\"), caretPos.begin]);\r\n return false;\r\n } else if (opts._radixDance === true) {\r\n const radixPos = buffer.indexOf(opts.radixPoint);\r\n if (!opts.digitsOptional) {\r\n if (\r\n radixPos !== -1 &&\r\n (caretPos.begin < radixPos ||\r\n caretPos.end < radixPos ||\r\n (e.key === keys.Delete &&\r\n (caretPos.begin === radixPos ||\r\n caretPos.begin - 1 === radixPos)))\r\n ) {\r\n let restoreCaretPos;\r\n if (caretPos.begin === caretPos.end) {\r\n // only adjust when not a selection\r\n if (e.key === keys.Backspace || e.key === keys.BACKSPACE_SAFARI)\r\n caretPos.begin++;\r\n else if (\r\n e.key === keys.Delete &&\r\n caretPos.begin - 1 === radixPos\r\n ) {\r\n restoreCaretPos = $.extend({}, caretPos);\r\n caretPos.begin--;\r\n caretPos.end--;\r\n }\r\n }\r\n bffr = buffer.slice().reverse();\r\n bffr.splice(\r\n bffr.length - caretPos.begin,\r\n caretPos.begin - caretPos.end || 1\r\n );\r\n if (e.key === keys.Backspace || e.key === keys.BACKSPACE_SAFARI)\r\n bffr.splice(bffr.length - caretPos.end + 1, 0, \"0\");\r\n // console.log(caretPos);\r\n bffr = alignDigits(bffr, opts.digits, opts).join(\"\");\r\n if (restoreCaretPos) {\r\n caretPos = restoreCaretPos;\r\n }\r\n $input.trigger(\"setvalue\", [\r\n bffr,\r\n caretPos.begin >= bffr.length ? radixPos + 1 : caretPos.begin\r\n ]);\r\n return false;\r\n }\r\n } else if (radixPos === 0) {\r\n bffr = buffer.slice().reverse();\r\n bffr.pop();\r\n $input.trigger(\"setvalue\", [\r\n bffr.join(\"\"),\r\n caretPos.begin >= bffr.length ? bffr.length : caretPos.begin\r\n ]);\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n },\r\n currency: {\r\n prefix: \"\", // \"$ \",\r\n groupSeparator: \",\",\r\n alias: \"numeric\",\r\n digits: 2,\r\n digitsOptional: false\r\n },\r\n decimal: {\r\n alias: \"numeric\"\r\n },\r\n integer: {\r\n alias: \"numeric\",\r\n inputmode: \"numeric\",\r\n digits: 0\r\n },\r\n percentage: {\r\n alias: \"numeric\",\r\n min: 0,\r\n max: 100,\r\n suffix: \" %\",\r\n digits: 0,\r\n allowMinus: false\r\n },\r\n indianns: {\r\n // indian numbering system\r\n alias: \"numeric\",\r\n _mask: function (opts) {\r\n return (\r\n \"(\" +\r\n opts.groupSeparator +\r\n \"99){*|1}(\" +\r\n opts.groupSeparator +\r\n \"999){1|1}\"\r\n );\r\n },\r\n groupSeparator: \",\",\r\n radixPoint: \".\",\r\n placeholder: \"0\",\r\n digits: 2,\r\n digitsOptional: false\r\n }\r\n});\r\n","/* eslint-disable import-x/no-extraneous-dependencies, import/no-unassigned-import */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore Inputmask exposes this ESM file but not its subpath types in app builds.\nimport Inputmask from 'inputmask/lib/inputmask.js';\n\nimport 'inputmask/lib/extensions/inputmask.extensions.js';\nimport 'inputmask/lib/extensions/inputmask.date.extensions.js';\nimport 'inputmask/lib/extensions/inputmask.numeric.extensions.js';\n\nexport default Inputmask;\n","/* eslint-disable import-x/prefer-default-export */\nimport type { Mask, Options } from '../types';\nimport type { Options as InputmaskOptions } from '../types/inputmask.types';\n\n/** Base config for built-in mask aliases. Merged with user options in getMaskOptions. */\nconst ALIAS_MASKS: Record<string, InputmaskOptions> = {\n datetime: { alias: 'datetime' },\n email: { alias: 'email', placeholder: '' },\n numeric: { alias: 'numeric', placeholder: '' },\n currency: { alias: 'currency', prefix: '$ ', placeholder: '' },\n decimal: { alias: 'decimal', placeholder: '' },\n integer: { alias: 'integer', placeholder: '' },\n percentage: { alias: 'percentage', placeholder: ' %', suffix: ' %' },\n url: { alias: 'url', placeholder: 'https://' },\n ip: { alias: 'ip' },\n mac: { alias: 'mac' },\n ssn: { alias: 'ssn' },\n 'brl-currency': {\n alias: 'currency',\n prefix: 'R$ ',\n placeholder: '0,00',\n displayFormat: 'currency',\n radixPoint: ',',\n groupSeparator: '.',\n autoUnmask: true,\n },\n cpf: { mask: '999.999.999-99', placeholder: '___.___.___-__' },\n cnpj: {\n mask: ['A|9{2}.A|9{3}.A|9{3}/A|9{4}-9{2}'],\n placeholder: '__.___.___/____-__',\n },\n 'br-bank-account': {\n mask: [\n '9{4,10}[-]9', // Most common formats: 1234567-9, 12345678-9, 123456789-9, 1234567890-1\n '999999[-][9]', // Optional separator: 123456-7 or 1234567\n '[999]9{7,8}[-]9', // Caixa and Nu Pagamentos: (001)12345678-9 or (001)1234567-9\n '[9999]9{8}[-]9', // Caixa longer: (0001)12345678-9\n ],\n placeholder: '',\n greedy: false,\n },\n 'br-bank-agency': {\n mask: '9{1,5}[-][9]', // Agency numbers: 1234, 12345, 1234-5\n placeholder: '',\n },\n};\n\n/**\n * Converts mask and options into Inputmask configuration.\n * Has some ready aliases to make life easier.\n *\n * @param mask - The mask pattern or alias\n * @param _options - Optional configuration options\n * @returns Inputmask configuration object\n */\nexport function getMaskOptions(mask?: Mask, _options?: Options): Options {\n const options: Options = {\n jitMasking: false,\n ..._options,\n };\n if (!mask) return options;\n\n if (typeof mask === 'string' && ALIAS_MASKS[mask]) {\n return { ...ALIAS_MASKS[mask], ...options } as Options;\n }\n\n return {\n mask,\n ...options,\n };\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-function-type */\n/* eslint-disable @typescript-eslint/no-unsafe-return */\nexport default function flow(...funcs: Function[]): Function {\n const { length } = funcs;\n let index = length;\n while (index > 0) {\n index -= 1;\n if (typeof funcs[index] !== 'function') {\n throw new TypeError('Expected a function');\n }\n }\n return (...args: Function[]) => {\n let i = 0;\n let result = length ? funcs[i].apply(undefined, args) : args[0];\n while (i + 1 < length) {\n i += 1;\n result = funcs[i].call(undefined, result);\n }\n return result;\n };\n}\n","const isServer = !(\n typeof window !== 'undefined'\n && window.document?.createElement\n);\n\nexport default isServer;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Synchronously resolve the default value of a module.\n */\nexport default function interopDefaultSync<T = any>(module: T): T {\n if (typeof module === 'object' && module !== null) {\n if ('default' in module) {\n return module.default as T;\n }\n return module;\n }\n return module;\n}\n","import type { Input } from '../types';\n\n/**\n * Checks if an element is a valid DOM element (or at least looks like one).\n *\n * @param element - The element to check\n * @returns True if it's a valid HTMLElement\n */\nexport function isHTMLElement(element: unknown): element is HTMLElement {\n return (\n element !== null\n && typeof element === 'object'\n && 'nodeType' in element\n && 'querySelector' in element\n && typeof (element as HTMLElement).querySelector === 'function'\n );\n}\n\n/**\n * Finds the actual input element from various component structures.\n * Finds the actual input inside wrappers (ant design, etc). Like a detective.\n *\n * @param element - The element to search in\n * @returns The found input element or null\n */\nexport function findInputElement(element: unknown): HTMLElement | null {\n if (!element) return null;\n\n if (!isHTMLElement(element)) {\n return null;\n }\n\n // if it's already an input or textarea, return it directly\n if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n return element;\n }\n\n // tries to find input inside the wrapper\n if (!('querySelector' in element) || typeof element.querySelector !== 'function') {\n return null;\n }\n\n try {\n const inputElement = element.querySelector('input, textarea');\n\n if (inputElement && isHTMLElement(inputElement)) {\n return inputElement;\n }\n } catch {\n // if it errors, return null and move on\n return null;\n }\n\n return null;\n}\n\n/**\n * Resolves React refs to a valid HTMLInputElement.\n * Handles ref objects and direct DOM elements.\n *\n * @param input - The input reference to resolve\n * @returns A valid HTMLInputElement or null\n */\nexport function resolveInputRef(input: Input | null): HTMLInputElement | null {\n if (!input) {\n return null;\n }\n\n // react ref objects\n if (typeof input === 'object' && 'current' in input) {\n const refValue = (input as { current: HTMLElement | null }).current;\n if (isHTMLElement(refValue)) {\n return refValue as HTMLInputElement;\n }\n return null;\n }\n\n // direct dom elements\n if (isHTMLElement(input)) {\n return input as HTMLInputElement;\n }\n\n return null;\n}\n","import { findInputElement, resolveInputRef } from '../core/elementResolver';\n\nimport type { Input, Mask, UnmaskedValueApi } from '../types';\n\ntype MaskedElement = (HTMLInputElement | HTMLTextAreaElement) & {\n inputmask?: { unmaskedvalue?: () => string };\n};\n\n/**\n * Builds a stable string key from a field name and mask, used to cache ref\n * callbacks so their identity stays stable across renders.\n */\nexport function makeMaskCacheKey(fieldName: string, mask: Mask): string {\n return `${fieldName}:${Array.isArray(mask) ? mask.join(',') : String(mask)}`;\n}\n\n/**\n * Attaches the original ref as a non-enumerable `prevRef` property so it is\n * accessible internally without polluting the spread result.\n */\nexport function setPrevRef(result: object, ref: unknown): void {\n Object.defineProperty(result, 'prevRef', {\n value: ref,\n enumerable: false,\n writable: true,\n configurable: true,\n });\n}\n\nfunction resolveUnmaskedInput(input: Input | null): HTMLInputElement | HTMLTextAreaElement | null {\n const resolved = resolveInputRef(input);\n if (!resolved) return null;\n\n const inputElement = findInputElement(resolved);\n if (inputElement) {\n return inputElement as HTMLInputElement | HTMLTextAreaElement;\n }\n\n return resolved as HTMLInputElement | HTMLTextAreaElement;\n}\n\nexport function getUnmaskedValue(input: Input | null): string {\n const element = resolveUnmaskedInput(input);\n if (!element) return '';\n\n const { inputmask } = element as MaskedElement;\n\n if (inputmask && typeof inputmask.unmaskedvalue === 'function') {\n return inputmask.unmaskedvalue();\n }\n\n return 'value' in element ? element.value : '';\n}\n\nexport function setUnmaskedValue<T extends object>(\n result: T,\n getter: () => string,\n): T & UnmaskedValueApi {\n Object.defineProperty(result, 'unmaskedValue', {\n value: getter,\n enumerable: false,\n writable: true,\n configurable: true,\n });\n\n return result as T & UnmaskedValueApi;\n}\n","/* eslint-disable import-x/no-extraneous-dependencies */\nimport inputmask from '../core/inputmask';\n\nimport { getMaskOptions } from '../core/maskConfig';\nimport { getUnmaskedValue, makeMaskCacheKey, setUnmaskedValue } from '../utils';\nimport isServer from '../utils/isServer';\nimport interopDefaultSync from '../utils/moduleInterop';\n\nimport type { Input, Mask, Options, UseMaskInputReturn } from '../types';\n\nconst callbackCache = new Map<string, UseMaskInputReturn>();\n\n/**\n * Higher-order function that creates a ref callback for applying input masks.\n * Simple function to apply mask via ref. No hooks, no drama.\n *\n * @param mask - The mask pattern to apply\n * @param options - Optional mask configuration options\n * @returns A ref callback function that applies the mask\n */\nexport default function withMask(mask: Mask, options?: Options): UseMaskInputReturn {\n // without options, we cant cache, so we always return a fresh callback. :P\n if (!options) {\n const cacheKey = makeMaskCacheKey('', mask);\n if (callbackCache.has(cacheKey)) {\n return callbackCache.get(cacheKey) as UseMaskInputReturn;\n }\n }\n\n let currentInput: Input | null = null;\n\n const callback = ((input: Input | null): void => {\n if (isServer || mask === null || !input) return;\n\n currentInput = input;\n const maskInput = interopDefaultSync(inputmask)(getMaskOptions(mask, options));\n maskInput.mask(input as HTMLElement);\n }) as UseMaskInputReturn;\n\n if (!options) {\n const cacheKey = makeMaskCacheKey('', mask);\n callbackCache.set(cacheKey, callback);\n }\n\n return setUnmaskedValue(callback, () => getUnmaskedValue(currentInput));\n}\n","/* eslint-disable import-x/no-extraneous-dependencies */\nimport inputmask from './inputmask';\n\nimport { getMaskOptions } from './maskConfig';\nimport { moduleInterop } from '../utils';\n\nimport type { Mask, Options } from '../types';\n\n/**\n * Creates a mask instance with the given mask and options.\n * Like a factory, but simpler.\n *\n * @param mask - The mask pattern\n * @param options - Optional configuration options\n * @returns A mask instance\n */\nexport function createMaskInstance(mask: Mask, options?: Options): ReturnType<typeof inputmask> {\n const inputmaskInstance = moduleInterop(inputmask);\n return inputmaskInstance(getMaskOptions(mask, options));\n}\n\n/**\n * Applies a mask to an input element.\n * If it's not a direct input, searches inside.\n *\n * @param element - The element to apply mask to\n * @param mask - The mask pattern\n * @param options - Optional configuration options\n */\nexport function applyMaskToElement(\n element: HTMLElement | null,\n mask: Mask,\n options?: Options,\n): void {\n if (!element) return;\n\n const maskInstance = createMaskInstance(mask, options);\n const inputElement = element.nodeName === 'INPUT'\n ? element\n : (element.querySelector('input') as HTMLElement);\n\n if (inputElement) {\n maskInstance.mask(inputElement);\n } else {\n maskInstance.mask(element);\n }\n}\n"]}